llvm/llvm/test/CodeGen/X86/negate-add-zero.ll

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -enable-unsafe-fp-math | FileCheck %s
; PR3374

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:128:128"
target triple = "i386-apple-darwin7"
	%struct.AtomList = type { ptr }
	%struct.AtomTree = type { ptr, %"struct.CDSList<CDSList<HingeNode*> >" }
	%"struct.CDS::DefaultAlloc" = type <{ i8 }>
	%"struct.CDS::SingularError" = type { %"struct.CDS::exception" }
	%"struct.CDS::auto_ptr<IVMAtom>" = type { ptr }
	%"struct.CDS::exception" = type { [300 x i8] }
	%"struct.CDSList<CDSList<HingeNode*> >" = type { ptr }
	%"struct.CDSList<CDSList<int> >" = type { ptr }
	%"struct.CDSList<HingeNode*>" = type { ptr }
	%"struct.CDSList<InternalDynamics::HingeSpec>" = type { ptr }
	%"struct.CDSList<Loop>" = type { ptr }
	%"struct.CDSList<Pair<int, int> >" = type { ptr }
	%"struct.CDSList<int>" = type { ptr }
	%"struct.CDSListRep<CDSList<HingeNode*> >" = type opaque
	%"struct.CDSListRep<CDSList<int> >" = type opaque
	%"struct.CDSListRep<HingeNode*>" = type { i32, i32, ptr, i32 }
	%"struct.CDSListRep<IVMAtom*>" = type { i32, i32, ptr, i32 }
	%"struct.CDSListRep<InternalDynamics::HingeSpec>" = type opaque
	%"struct.CDSListRep<Loop>" = type opaque
	%"struct.CDSListRep<Pair<int, int> >" = type opaque
	%"struct.CDSListRep<int>" = type { i32, i32, ptr, i32 }
	%"struct.CDSMatrixBase<double>" = type { ptr }
	%"struct.CDSMatrixRep<double>" = type opaque
	%"struct.CDSStringRep<char>" = type { ptr, i32, i32, i32, i32 }
	%"struct.CDSVector<Vec3,0,CDS::DefaultAlloc>" = type { %"struct.CDSVectorBase<Vec3,CDS::DefaultAlloc>" }
	%"struct.CDSVector<double,0,CDS::DefaultAlloc>" = type { %"struct.CDSVectorBase<double,CDS::DefaultAlloc>" }
	%"struct.CDSVectorBase<Vec3,CDS::DefaultAlloc>" = type { ptr }
	%"struct.CDSVectorBase<double,CDS::DefaultAlloc>" = type { ptr }
	%"struct.CDSVectorRep<Vec3,CDS::DefaultAlloc>" = type { i32, %"struct.CDS::DefaultAlloc", ptr, i32 }
	%"struct.CDSVectorRep<double,CDS::DefaultAlloc>" = type { i32, %"struct.CDS::DefaultAlloc", ptr, i32 }
	%"struct.FixedMatrix<double,1,1,0,0>" = type { %"struct.FixedMatrixBase<double,1,1>" }
	%"struct.FixedMatrix<double,1,3,0,0>" = type { %"struct.FixedMatrixBase<double,1,3>" }
	%"struct.FixedMatrix<double,1,6,0,0>" = type { %"struct.FixedMatrixBase<double,1,6>" }
	%"struct.FixedMatrix<double,2,2,0,0>" = type { %"struct.FixedMatrixBase<double,2,2>" }
	%"struct.FixedMatrix<double,2,6,0,0>" = type { %"struct.FixedMatrixBase<double,2,6>" }
	%"struct.FixedMatrix<double,3,3,0,0>" = type { %"struct.FixedMatrixBase<double,3,3>" }
	%"struct.FixedMatrix<double,3,6,0,0>" = type { %"struct.FixedMatrixBase<double,3,6>" }
	%"struct.FixedMatrix<double,5,5,0,0>" = type { %"struct.FixedMatrixBase<double,5,5>" }
	%"struct.FixedMatrix<double,5,6,0,0>" = type { %"struct.FixedMatrixBase<double,5,6>" }
	%"struct.FixedMatrixBase<double,1,1>" = type { [1 x double] }
	%"struct.FixedMatrixBase<double,1,3>" = type { [3 x double] }
	%"struct.FixedMatrixBase<double,1,6>" = type { [6 x double] }
	%"struct.FixedMatrixBase<double,2,2>" = type { [4 x double] }
	%"struct.FixedMatrixBase<double,2,6>" = type { [12 x double] }
	%"struct.FixedMatrixBase<double,3,3>" = type { [9 x double] }
	%"struct.FixedMatrixBase<double,3,6>" = type { [18 x double] }
	%"struct.FixedMatrixBase<double,5,5>" = type { [25 x double] }
	%"struct.FixedMatrixBase<double,5,6>" = type { [30 x double] }
	%"struct.FixedMatrixBase<double,6,6>" = type { [36 x double] }
	%"struct.FixedVector<double,2,0>" = type { %"struct.FixedVectorBase<double,2>" }
	%"struct.FixedVector<double,5,0>" = type { %"struct.FixedVectorBase<double,5>" }
	%"struct.FixedVectorBase<double,2>" = type { [2 x double] }
	%"struct.FixedVectorBase<double,5>" = type { [5 x double] }
	%struct.HNodeOrigin = type { %struct.HingeNode }
	%struct.HNodeRotate2 = type { %"struct.HingeNodeSpec<2>", %struct.Vec3, %struct.Vec3, %struct.Vec3, %struct.Vec3, %struct.Vec3, %struct.Mat3, %struct.Mat3, %struct.Vec3, %"struct.CDS::auto_ptr<IVMAtom>", %"struct.CDSVector<Vec3,0,CDS::DefaultAlloc>" }
	%struct.HNodeRotate3 = type { %"struct.HingeNodeSpec<3>", %struct.Vec4, %struct.Vec4, %struct.Vec4, %struct.Vec3, %"struct.CDS::auto_ptr<IVMAtom>", %"struct.CDSVector<Vec3,0,CDS::DefaultAlloc>", double, double, double, double, double, double, i8 }
	%struct.HNodeTorsion = type { %"struct.HingeNodeSpec<1>", %struct.Vec3, %"struct.CDSVector<Vec3,0,CDS::DefaultAlloc>", %struct.Vec3, %struct.Mat3 }
	%struct.HNodeTranslate = type { %"struct.HingeNodeSpec<3>", ptr, %struct.Vec3, %"struct.CDSVector<Vec3,0,CDS::DefaultAlloc>" }
	%struct.HNodeTranslateRotate2 = type { %"struct.HingeNodeSpec<5>", %struct.Vec3, %struct.Vec3, %struct.Vec3, %struct.Vec3, %struct.Vec3, %struct.Mat3, %struct.Mat3, %struct.Vec3, %"struct.CDS::auto_ptr<IVMAtom>", %"struct.CDSVector<Vec3,0,CDS::DefaultAlloc>" }
	%struct.HNodeTranslateRotate3 = type { %"struct.HingeNodeSpec<6>", %struct.Vec4, %struct.Vec4, %struct.Vec4, %struct.Vec3, %"struct.CDS::auto_ptr<IVMAtom>", %"struct.CDSVector<Vec3,0,CDS::DefaultAlloc>", double, double, double, double, double, double, i8 }
	%struct.HingeNode = type { ptr, ptr, %"struct.CDSList<HingeNode*>", i32, %struct.AtomList, %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %struct.PhiMatrix, %struct.Mat6, %struct.Mat6, %"struct.FixedMatrix<double,1,6,0,0>", %struct.Mat6, %"struct.FixedMatrix<double,1,6,0,0>", %struct.Mat3, %struct.Mat6, ptr, ptr }
	%"struct.HingeNodeSpec<1>" = type { %struct.HingeNode, i32, double, %struct.InertiaTensor, %struct.Mat6, %struct.Vec3, %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,1,0,0>", %"struct.FixedMatrix<double,1,1,0,0>", %"struct.FixedMatrix<double,1,1,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,1,0,0>", %"struct.FixedMatrix<double,1,1,0,0>", %"struct.FixedMatrix<double,1,1,0,0>", %"struct.FixedMatrix<double,1,1,0,0>", %"struct.FixedMatrix<double,1,6,0,0>" }
	%"struct.HingeNodeSpec<2>" = type { %struct.HingeNode, i32, double, %struct.InertiaTensor, %struct.Mat6, %struct.Vec3, %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedVector<double,2,0>", %"struct.FixedVector<double,2,0>", %"struct.FixedVector<double,2,0>", %"struct.FixedMatrix<double,2,6,0,0>", %"struct.FixedVector<double,2,0>", %"struct.FixedVector<double,2,0>", %"struct.FixedVector<double,2,0>", %"struct.FixedMatrix<double,2,2,0,0>", %"struct.FixedMatrix<double,2,6,0,0>" }
	%"struct.HingeNodeSpec<3>" = type { %struct.HingeNode, i32, double, %struct.InertiaTensor, %struct.Mat6, %struct.Vec3, %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,3,0,0>", %"struct.FixedMatrix<double,1,3,0,0>", %"struct.FixedMatrix<double,1,3,0,0>", %"struct.FixedMatrix<double,3,6,0,0>", %"struct.FixedMatrix<double,1,3,0,0>", %"struct.FixedMatrix<double,1,3,0,0>", %"struct.FixedMatrix<double,1,3,0,0>", %"struct.FixedMatrix<double,3,3,0,0>", %"struct.FixedMatrix<double,3,6,0,0>" }
	%"struct.HingeNodeSpec<5>" = type { %struct.HingeNode, i32, double, %struct.InertiaTensor, %struct.Mat6, %struct.Vec3, %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedVector<double,5,0>", %"struct.FixedVector<double,5,0>", %"struct.FixedVector<double,5,0>", %"struct.FixedMatrix<double,5,6,0,0>", %"struct.FixedVector<double,5,0>", %"struct.FixedVector<double,5,0>", %"struct.FixedVector<double,5,0>", %"struct.FixedMatrix<double,5,5,0,0>", %"struct.FixedMatrix<double,5,6,0,0>" }
	%"struct.HingeNodeSpec<6>" = type { %struct.HingeNode, i32, double, %struct.InertiaTensor, %struct.Mat6, %struct.Vec3, %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %struct.Mat6, %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %"struct.FixedMatrix<double,1,6,0,0>", %struct.Mat6, %struct.Mat6 }
	%struct.IVM = type { ptr, ptr, ptr, ptr, i32, i32, i32, i8, i8, i8, i8, double, double, double, double, double, double, double, double, double, i32, double, double, double, double, double, double, %"struct.CDSList<Loop>", %"struct.CDSList<Pair<int, int> >", %struct.AtomList, %"struct.CDSList<CDSList<int> >", %"struct.CDSList<InternalDynamics::HingeSpec>", %struct.String, %"struct.CDSList<int>", ptr, ptr, ptr, ptr }
	%struct.IVMAtom = type { i32, ptr, %struct.AtomList, %struct.Vec3, %struct.Vec3, %struct.Vec3, double, double }
	%struct.InertiaTensor = type { %struct.Mat3 }
	%struct.Integrator = type { ptr, %"struct.CDSVector<double,0,CDS::DefaultAlloc>", %"struct.CDSVector<double,0,CDS::DefaultAlloc>", ptr }
	%"struct.InternalDynamics::HingeSpec" = type { %struct.String, i32, i32, %"struct.CDSList<int>" }
	%struct.LengthConstraints = type { double, i32, i32, ptr, ptr }
	%struct.LengthConstraintsPrivates = type opaque
	%struct.Mat3 = type { %"struct.FixedMatrix<double,3,3,0,0>" }
	%struct.Mat6 = type { %"struct.FixedMatrixBase<double,6,6>" }
	%"struct.MatrixTools::InverseResults<FullMatrix<double> >" = type { %"struct.CDSVector<double,0,CDS::DefaultAlloc>", i32 }
	%struct.PhiMatrix = type { %struct.Vec3 }
	%struct.PhiMatrixTranspose = type { ptr }
	%struct.RMat = type { %"struct.CDSMatrixBase<double>" }
	%struct.String = type { ptr }
	%"struct.SubMatrix<FixedMatrix<double, 6, 6, 0, 0> >" = type { ptr, i32, i32, i32, i32 }
	%"struct.SubVector<CDSVector<double, 1, CDS::DefaultAlloc> >" = type { ptr, i32, i32 }
	%"struct.SubVector<FixedVector<double, 6, 0> >" = type { ptr, i32, i32 }
	%struct.Vec3 = type { %"struct.FixedMatrix<double,1,3,0,0>" }
	%struct.Vec4 = type { %"struct.FixedMatrix<double,2,2,0,0>" }
	%struct.__class_type_info_pseudo = type { %struct.__type_info_pseudo }
	%struct.__si_class_type_info_pseudo = type { %struct.__type_info_pseudo, ptr }
	%struct.__type_info_pseudo = type { ptr, ptr }
	%"struct.std::basic_ios<char,std::char_traits<char> >" = type { %"struct.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
	%"struct.std::basic_ostream<char,std::char_traits<char> >" = type { ptr, %"struct.std::basic_ios<char,std::char_traits<char> >" }
	%"struct.std::basic_streambuf<char,std::char_traits<char> >" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"struct.std::locale" }
	%"struct.std::ctype<char>" = type { %"struct.std::locale::facet", ptr, i8, ptr, ptr, ptr, i8, [256 x i8], [256 x i8], i8 }
	%"struct.std::ios_base" = type { ptr, i32, i32, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"struct.std::locale" }
	%"struct.std::ios_base::_Callback_list" = type { ptr, ptr, i32, i32 }
	%"struct.std::ios_base::_Words" = type { ptr, i32 }
	%"struct.std::locale" = type { ptr }
	%"struct.std::locale::_Impl" = type { i32, ptr, i32, ptr, ptr }
	%"struct.std::locale::facet" = type { ptr, i32 }
	%"struct.std::num_get<char,std::istreambuf_iterator<char, std::char_traits<char> > >" = type { %"struct.std::locale::facet" }
	%"struct.std::type_info" = type { ptr, ptr }
@_ZN9HingeNode7DEG2RADE = external constant double, align 8		; <ptr> [#uses=0]
@"\01LC" = external constant [8 x i8]		; <ptr> [#uses=0]
@"\01LC1" = external constant [7 x i8]		; <ptr> [#uses=0]
@"\01LC2" = external constant [10 x i8]		; <ptr> [#uses=0]
@"\01LC3" = external constant [5 x i8]		; <ptr> [#uses=0]
@"\01LC4" = external constant [8 x i8]		; <ptr> [#uses=0]
@"\01LC5" = external constant [8 x i8]		; <ptr> [#uses=0]
@"\01LC6" = external constant [7 x i8]		; <ptr> [#uses=0]
@"\01LC7" = external constant [8 x i8]		; <ptr> [#uses=0]
@"\01LC8" = external constant [3 x i8]		; <ptr> [#uses=0]
@"\01LC9" = external constant [3 x i8]		; <ptr> [#uses=0]
@"\01LC10" = external constant [3 x i8]		; <ptr> [#uses=0]
@_ZStL8__ioinit = external global %"struct.CDS::DefaultAlloc"		; <ptr> [#uses=0]
@__dso_handle = external global ptr		; <ptr> [#uses=0]
@_ZTIN9HingeNode17VirtualBaseMethodE = external constant %struct.__class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTVN10__cxxabiv117__class_type_infoE = external constant [0 x ptr]		; <ptr> [#uses=0]
@_ZTSN9HingeNode17VirtualBaseMethodE = external constant [32 x i8], align 4		; <ptr> [#uses=0]
@_ZTV9HingeNode = external constant [31 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI9HingeNode = external constant %struct.__class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS9HingeNode = external constant [11 x i8]		; <ptr> [#uses=0]
@_ZTV11HNodeOrigin = external constant [31 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI11HNodeOrigin = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTVN10__cxxabiv120__si_class_type_infoE = external constant [0 x ptr]		; <ptr> [#uses=0]
@_ZTS11HNodeOrigin = external constant [14 x i8]		; <ptr> [#uses=0]
@_ZTV13HingeNodeSpecILi1EE = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI13HingeNodeSpecILi1EE = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS13HingeNodeSpecILi1EE = external constant [22 x i8]		; <ptr> [#uses=0]
@_ZTV13HingeNodeSpecILi3EE = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI13HingeNodeSpecILi3EE = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS13HingeNodeSpecILi3EE = external constant [22 x i8]		; <ptr> [#uses=0]
@_ZTV13HingeNodeSpecILi2EE = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI13HingeNodeSpecILi2EE = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS13HingeNodeSpecILi2EE = external constant [22 x i8]		; <ptr> [#uses=0]
@_ZTV13HingeNodeSpecILi6EE = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI13HingeNodeSpecILi6EE = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS13HingeNodeSpecILi6EE = external constant [22 x i8]		; <ptr> [#uses=0]
@_ZTV13HingeNodeSpecILi5EE = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI13HingeNodeSpecILi5EE = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS13HingeNodeSpecILi5EE = external constant [22 x i8]		; <ptr> [#uses=0]
@_ZSt4cout = external global %"struct.std::basic_ostream<char,std::char_traits<char> >"		; <ptr> [#uses=0]
@"\01LC11" = external constant [10 x i8]		; <ptr> [#uses=0]
@"\01LC12" = external constant [8 x i8]		; <ptr> [#uses=0]
@"\01LC13" = external constant [10 x i8]		; <ptr> [#uses=0]
@_ZSt4cerr = external global %"struct.std::basic_ostream<char,std::char_traits<char> >"		; <ptr> [#uses=0]
@"\01LC14" = external constant [29 x i8]		; <ptr> [#uses=0]
@"\01LC15" = external constant [11 x i8]		; <ptr> [#uses=0]
@"\01LC16" = external constant [13 x i8]		; <ptr> [#uses=0]
@"\01LC17" = external constant [21 x i8]		; <ptr> [#uses=0]
@"\01LC18" = external constant [8 x i8]		; <ptr> [#uses=0]
@"\01LC19" = external constant [4 x i8]		; <ptr> [#uses=0]
@"\01LC20" = external constant [42 x i8]		; <ptr> [#uses=0]
@_ZTIN16InternalDynamics9ExceptionE = external constant %struct.__class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTSN16InternalDynamics9ExceptionE = external constant [31 x i8], align 4		; <ptr> [#uses=0]
@_ZTIN3CDS13SingularErrorE = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTSN3CDS13SingularErrorE = external constant [22 x i8]		; <ptr> [#uses=0]
@_ZTIN3CDS9exceptionE = external constant %struct.__class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTSN3CDS9exceptionE = external constant [17 x i8]		; <ptr> [#uses=0]
@_ZTV12HNodeTorsion = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI12HNodeTorsion = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS12HNodeTorsion = external constant [15 x i8]		; <ptr> [#uses=0]
@_ZTV12HNodeRotate3 = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI12HNodeRotate3 = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS12HNodeRotate3 = external constant [15 x i8]		; <ptr> [#uses=0]
@_ZTV12HNodeRotate2 = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI12HNodeRotate2 = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS12HNodeRotate2 = external constant [15 x i8]		; <ptr> [#uses=0]
@_ZTV21HNodeTranslateRotate3 = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI21HNodeTranslateRotate3 = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS21HNodeTranslateRotate3 = external constant [24 x i8]		; <ptr> [#uses=0]
@_ZTV21HNodeTranslateRotate2 = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI21HNodeTranslateRotate2 = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS21HNodeTranslateRotate2 = external constant [24 x i8]		; <ptr> [#uses=0]
@_ZTV14HNodeTranslate = external constant [33 x ptr], align 32		; <ptr> [#uses=0]
@_ZTI14HNodeTranslate = external constant %struct.__si_class_type_info_pseudo		; <ptr> [#uses=0]
@_ZTS14HNodeTranslate = external constant [17 x i8]		; <ptr> [#uses=0]
@"\01LC21" = external constant [31 x i8]		; <ptr> [#uses=0]
@"\01LC22" = external constant [6 x i8]		; <ptr> [#uses=0]
@"\01LC23" = external constant [12 x i8]		; <ptr> [#uses=0]
@"\01LC24" = external constant [5 x i8]		; <ptr> [#uses=0]
@"\01LC25" = external constant [7 x i8]		; <ptr> [#uses=0]
@"\01LC26" = external constant [7 x i8]		; <ptr> [#uses=0]
@"\01LC27" = external constant [43 x i8]		; <ptr> [#uses=0]
@"\01LC28" = external constant [15 x i8]		; <ptr> [#uses=0]
@"\01LC29" = external constant [20 x i8]		; <ptr> [#uses=0]
@"\01LC30" = external constant [41 x i8]		; <ptr> [#uses=0]

declare void @_GLOBAL__I__ZN9HingeNode7DEG2RADE() section "__TEXT,__StaticInit,regular,pure_instructions"

declare void @_ZN9HingeNode16velFromCartesianEv(ptr) nounwind

declare i32 @_ZNK9HingeNode6offsetEv(ptr) nounwind

declare i32 @_ZNK9HingeNode6getDOFEv(ptr) nounwind

declare i32 @_ZNK9HingeNode6getDimEv(ptr) nounwind

declare double @_ZN9HingeNode8kineticEEv(ptr) nounwind

declare double @_ZN9HingeNode8approxKEEv(ptr) nounwind

declare ptr @_ZN9HingeNode4typeEv(ptr) nounwind

declare ptr @_ZN11HNodeOrigin4typeEv(ptr) nounwind

declare void @_ZN11HNodeOrigin5calcPEv(ptr) nounwind

declare void @_ZN11HNodeOrigin5calcZEv(ptr) nounwind

declare void @_ZN11HNodeOrigin9calcPandZEv(ptr) nounwind

declare void @_ZN11HNodeOrigin9calcAccelEv(ptr) nounwind

declare void @_ZN11HNodeOrigin17calcInternalForceEv(ptr) nounwind

declare void @_ZN11HNodeOrigin18prepareVelInternalEv(ptr) nounwind

declare void @_ZN11HNodeOrigin13propagateSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin9setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin6setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin14setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin18enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES4_(ptr, ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin5printEi(ptr, i32) nounwind

declare void @_ZN11HNodeOrigin6getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin6getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin8getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin16getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr) nounwind

declare void @_ZN11HNodeOrigin5calcYEv(ptr) nounwind

declare ptr @_ZN14HNodeTranslate4typeEv(ptr) nounwind

declare ptr @_ZN21HNodeTranslateRotate34typeEv(ptr) nounwind

declare i32 @_ZNK21HNodeTranslateRotate36getDimEv(ptr) nounwind

declare ptr @_ZN12HNodeRotate34typeEv(ptr) nounwind

declare i32 @_ZNK12HNodeRotate36getDimEv(ptr) nounwind

declare ptr @_ZN12HNodeRotate24typeEv(ptr) nounwind

declare i32 @_ZNK12HNodeRotate26getDimEv(ptr) nounwind

declare ptr @_ZN21HNodeTranslateRotate24typeEv(ptr) nounwind

declare i32 @_ZNK21HNodeTranslateRotate26getDimEv(ptr) nounwind

declare ptr @_ZN12HNodeTorsion4typeEv(ptr) nounwind

declare fastcc double @_ZL12sumMassToTipPK9HingeNode(ptr)

declare void @_ZN13InertiaTensor4calcERK4Vec3RK7CDSListIP7IVMAtomE(ptr, ptr, ptr) nounwind

declare fastcc double @_ZL15sumInertiaToTipPK9HingeNodeRK4Vec3S4_(ptr, ptr, ptr)

declare ptr @_ZlsI11FixedVectorIdLi6ELi0EEERSoS2_RK9SubVectorIT_E(ptr, ptr)

declare ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr, i32)

declare ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr, ptr)

declare ptr @_ZNSolsEd(ptr, double)

declare void @_Z14orthoTransformIdLi3ELi3EE11FixedMatrixIT_XT1_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT0_ELi0ELi0EERKS0_IS1_XT1_EXT0_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,3,3,0,0>"), ptr, ptr)

declare void @_ZN12HNodeRotate27calcRotEv(ptr)

declare void @_ZN21HNodeTranslateRotate27calcRotEv(ptr)

declare void @_ZmlIdLi6ELi6EE11FixedVectorIT_XT0_ELi0EERK11FixedMatrixIS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,1,6,0,0>"), ptr, ptr)

declare void @_ZmlIdLi6ELi6ELi6EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare void @_ZmlIdLi6ELi6ELi3EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,3,6,0,0>"), ptr, ptr)

declare void @_ZmlIdLi6ELi6ELi2EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,2,6,0,0>"), ptr, ptr)

declare void @_ZmlIdLi5ELi6EE11FixedVectorIT_XT0_ELi0EERK11FixedMatrixIS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_ELi0EE(ptr noalias sret(%"struct.FixedVector<double,5,0>"), ptr, ptr)

declare void @_ZmlIdLi6ELi6ELi5EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,5,6,0,0>"), ptr, ptr)

declare void @_ZN12HNodeRotate39setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr)

declare void @_ZN12HNodeRotate29setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr)

declare void @_ZN21HNodeTranslateRotate39setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr)

declare void @_ZN21HNodeTranslateRotate29setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr)

declare i32 @_ZNK13HingeNodeSpecILi1EE6offsetEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi1EE5posCMEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi1EE4massEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi1EE9calcPandZEv(ptr)

declare i32 @_ZNK13HingeNodeSpecILi1EE6getDOFEv(ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi1EE6getDimEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi1EE18enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi5EE6offsetEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi5EE5posCMEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi5EE4massEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi5EE9calcPandZEv(ptr)

declare i32 @_ZNK13HingeNodeSpecILi5EE6getDOFEv(ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi5EE6getDimEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi5EE18enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi2EE6offsetEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi2EE5posCMEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi2EE4massEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi2EE9calcPandZEv(ptr)

declare i32 @_ZNK13HingeNodeSpecILi2EE6getDOFEv(ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi2EE6getDimEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi2EE18enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi3EE6offsetEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi3EE5posCMEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi3EE4massEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi3EE9calcPandZEv(ptr)

declare i32 @_ZNK13HingeNodeSpecILi3EE6getDOFEv(ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi6EE6offsetEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi6EE5posCMEv(ptr) nounwind

declare ptr @_ZNK13HingeNodeSpecILi6EE4massEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi6EE9calcPandZEv(ptr)

declare i32 @_ZNK13HingeNodeSpecILi6EE6getDOFEv(ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi6EE6getDimEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi6EE9setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES6_(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EE18enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr) nounwind

declare i32 @_ZNK13HingeNodeSpecILi3EE6getDimEv(ptr) nounwind

declare void @_ZN13HingeNodeSpecILi3EE9setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES6_(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi3EE18enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr) nounwind

declare void @_Z14orthoTransformIdLi6ELi6EE11FixedMatrixIT_XT1_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT0_ELi0ELi0EERKS0_IS1_XT1_EXT0_ELi0ELi0EE(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare double @_ZN13HingeNodeSpecILi1EE8kineticEEv(ptr)

declare double @_ZN13HingeNodeSpecILi3EE8kineticEEv(ptr)

declare double @_ZN13HingeNodeSpecILi2EE8kineticEEv(ptr)

declare double @_ZN13HingeNodeSpecILi6EE8kineticEEv(ptr)

declare double @_ZN13HingeNodeSpecILi5EE8kineticEEv(ptr)

declare void @_ZmlIdLi6ELi5ELi6EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EE9setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES6_(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EE9setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES6_(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EE9setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES6_(ptr, ptr, ptr)

declare void @_Z14orthoTransformIdLi3ELi6EE11FixedMatrixIT_XT1_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT0_ELi0ELi0EERKS0_IS1_XT1_EXT0_ELi0ELi0EE(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare void @_ZmlIdLi6ELi1ELi6EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare void @_ZmlIdLi6ELi5ELi5EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,5,6,0,0>"), ptr, ptr)

declare void @_Z14orthoTransformIdLi5ELi6EE11FixedMatrixIT_XT1_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT0_ELi0ELi0EERKS0_IS1_XT1_EXT0_ELi0ELi0EE(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare void @_Z14orthoTransformIdLi2ELi6EE11FixedMatrixIT_XT1_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT0_ELi0ELi0EERKS0_IS1_XT1_EXT0_ELi0ELi0EE(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare void @_ZmlIdLi1ELi6ELi6EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,1,6,0,0>"), ptr, ptr)

declare void @_ZmlIdLi5ELi6ELi6EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,5,6,0,0>"), ptr, ptr)

declare void @_Z14orthoTransformIdLi6ELi5EE11FixedMatrixIT_XT1_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT0_ELi0ELi0EERKS0_IS1_XT1_EXT0_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,5,5,0,0>"), ptr, ptr)

declare void @_ZmlIdLi2ELi6ELi6EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,2,6,0,0>"), ptr, ptr)

declare void @_Z14orthoTransformIdLi6ELi2EE11FixedMatrixIT_XT1_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT0_ELi0ELi0EERKS0_IS1_XT1_EXT0_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,2,2,0,0>"), ptr, ptr)

declare void @_ZmlIdLi3ELi6ELi6EE11FixedMatrixIT_XT0_EXT2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT1_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,3,6,0,0>"), ptr, ptr)

declare void @_Z14orthoTransformIdLi6ELi3EE11FixedMatrixIT_XT1_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT0_ELi0ELi0EERKS0_IS1_XT1_EXT0_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,3,3,0,0>"), ptr, ptr)

declare void @_ZNSt8ios_base4InitC1Ev(ptr)

declare i32 @__cxa_atexit(ptr, ptr, ptr) nounwind

declare void @__tcf_0(ptr nocapture)

declare void @_ZNSt8ios_base4InitD1Ev(ptr)

declare ptr @_ZlsRSoRK9HingeNode(ptr, ptr)

declare ptr @_ZlsRSoPK7IVMAtom(ptr, ptr)

declare void @_ZN9HingeNode8addChildEPS_(ptr, ptr)

declare void @_ZN7CDSListIP9HingeNodeE6appendES1_(ptr, ptr)

declare void @_ZN9HingeNode4getHEv(ptr noalias sret(%struct.RMat), ptr)

declare ptr @__cxa_allocate_exception(i32) nounwind

declare void @__cxa_throw(ptr, ptr, ptr) noreturn

declare void @_ZN9HingeNode16getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN9HingeNode9calcAccelEv(ptr)

declare void @_ZN9HingeNode8getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN9HingeNode6getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN9HingeNode6getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN9HingeNode5printEi(ptr, i32)

declare void @_ZN9HingeNode18enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES4_(ptr, ptr, ptr)

declare void @_ZN9HingeNode14setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN9HingeNode6setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN9HingeNode9setPosVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEES5_(ptr, ptr, ptr)

declare void @_ZN9HingeNode13propagateSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN9HingeNode18prepareVelInternalEv(ptr)

declare void @_ZN9HingeNode17calcInternalForceEv(ptr)

declare void @_ZN9HingeNode5calcYEv(ptr)

declare void @_ZN9HingeNode9calcPandZEv(ptr)

declare void @_ZN9HingeNode5calcZEv(ptr)

declare void @_ZN9HingeNode5calcPEv(ptr)

declare ptr @_ZNK9HingeNode4massEv(ptr)

declare ptr @_ZNK9HingeNode5posCMEv(ptr)

declare ptr @_Znam(i32)

declare void @_ZN7CDSListIP9HingeNodeEC1Eii(ptr, i32, i32)

declare ptr @_Znwm(i32)

declare void @_ZdlPv(ptr) nounwind

declare i32 @__gxx_personality_v0(...)

declare void @_Unwind_Resume_or_Rethrow(ptr)

declare void @_ZN7CDSListIP7IVMAtomEC1Eii(ptr, i32, i32)

declare void @_ZN13CDSVectorBaseIdN3CDS12DefaultAllocEE8splitRepEv(ptr)

declare void @_ZN12HNodeTorsion16getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EE8getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EE6getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EE6getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EE16getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate316getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi3EE16getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi3EE8getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi3EE6getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi3EE6getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate216getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate28getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate26getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate26getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate38getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate36getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate36getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EE16getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EE8getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EE6getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EE6getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate316getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate38getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate36getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate36getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EE16getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EE8getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EE6getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EE6getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate216getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate28getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate26getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate26getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EE16getInternalForceER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EE8getAccelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EE6getVelER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EE6getPosER9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13CDSVectorBaseI4Vec3N3CDS12DefaultAllocEE8splitRepEv(ptr)

declare void @_ZN7CDSListIP7IVMAtomE8splitRepEv(ptr)

declare void @_ZN7CDSListIP9HingeNodeE8splitRepEv(ptr)

declare void @_ZdaPv(ptr) nounwind

declare void @_ZSt9terminatev() noreturn nounwind

declare void @_ZN9HingeNodeC2EPK3IVMP7IVMAtomPKS3_PS_(ptr, ptr, ptr, ptr, ptr)

declare void @_ZN9HingeNodeD1Ev(ptr)

declare void @_ZN9HingeNodeD0Ev(ptr)

declare void @_ZN7CDSListIP7IVMAtomE6appendES1_(ptr, ptr)

declare void @_ZN9HingeNodeC1EPK3IVMP7IVMAtomPKS3_PS_(ptr, ptr, ptr, ptr, ptr)

declare void @_ZN9HingeNodeD2Ev(ptr)

declare void @_ZN11HNodeOriginD0Ev(ptr)

declare void @_ZN11HNodeOriginD1Ev(ptr)

declare void @_ZN13HingeNodeSpecILi1EED0Ev(ptr)

declare void @_ZN13HingeNodeSpecILi1EED1Ev(ptr)

declare void @_ZN13HingeNodeSpecILi1EE5calcPEv(ptr)

declare void @_ZN13HingeNodeSpecILi1EE5calcZEv(ptr)

declare void @_ZN13HingeNodeSpecILi1EE5calcYEv(ptr)

declare void @_ZN13HingeNodeSpecILi1EE17calcInternalForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi1EE18prepareVelInternalEv(ptr)

declare void @_ZN13HingeNodeSpecILi1EE13propagateSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare double @_ZN13HingeNodeSpecILi1EE8approxKEEv(ptr)

declare void @_ZN13HingeNodeSpecILi1EE6setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EE14setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EE5printEi(ptr, i32)

declare void @_ZN13HingeNodeSpecILi1EE9calcAccelEv(ptr)

declare void @_ZN13HingeNodeSpecILi1EE4getHEv(ptr noalias sret(%struct.RMat), ptr)

declare void @__cxa_pure_virtual() nounwind

declare void @_ZN13HingeNodeSpecILi3EED0Ev(ptr)

declare void @_ZN13HingeNodeSpecILi3EED1Ev(ptr)

declare void @_ZN13HingeNodeSpecILi3EE5calcPEv(ptr)

declare void @_ZN13HingeNodeSpecILi3EE5calcZEv(ptr)

declare void @_ZN13HingeNodeSpecILi3EE5calcYEv(ptr)

declare void @_ZN13HingeNodeSpecILi3EE17calcInternalForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi3EE18prepareVelInternalEv(ptr)

declare void @_ZN13HingeNodeSpecILi3EE13propagateSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare double @_ZN13HingeNodeSpecILi3EE8approxKEEv(ptr)

declare void @_ZN13HingeNodeSpecILi3EE6setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi3EE14setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi3EE5printEi(ptr, i32)

declare void @_ZN13HingeNodeSpecILi3EE9calcAccelEv(ptr)

declare void @_ZN13HingeNodeSpecILi3EE4getHEv(ptr noalias sret(%struct.RMat), ptr)

declare void @_ZN13HingeNodeSpecILi2EED0Ev(ptr)

declare void @_ZN13HingeNodeSpecILi2EED1Ev(ptr)

declare void @_ZN13HingeNodeSpecILi2EE5calcPEv(ptr)

declare void @_ZN13HingeNodeSpecILi2EE5calcZEv(ptr)

declare void @_ZN13HingeNodeSpecILi2EE5calcYEv(ptr)

declare void @_ZN13HingeNodeSpecILi2EE17calcInternalForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi2EE18prepareVelInternalEv(ptr)

declare void @_ZN13HingeNodeSpecILi2EE13propagateSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare double @_ZN13HingeNodeSpecILi2EE8approxKEEv(ptr)

declare void @_ZN13HingeNodeSpecILi2EE6setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EE14setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EE5printEi(ptr, i32)

declare void @_ZN13HingeNodeSpecILi2EE9calcAccelEv(ptr)

declare void @_ZN13HingeNodeSpecILi2EE4getHEv(ptr noalias sret(%struct.RMat), ptr)

declare void @_ZN13HingeNodeSpecILi6EED0Ev(ptr)

declare void @_ZN13HingeNodeSpecILi6EED1Ev(ptr)

declare void @_ZN13HingeNodeSpecILi6EE5calcPEv(ptr)

declare void @_ZN13HingeNodeSpecILi6EE5calcZEv(ptr)

declare void @_ZN13HingeNodeSpecILi6EE5calcYEv(ptr)

declare void @_ZN13HingeNodeSpecILi6EE17calcInternalForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi6EE18prepareVelInternalEv(ptr)

declare void @_ZN13HingeNodeSpecILi6EE13propagateSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare double @_ZN13HingeNodeSpecILi6EE8approxKEEv(ptr)

declare void @_ZN13HingeNodeSpecILi6EE6setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EE14setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EE5printEi(ptr, i32)

declare void @_ZN13HingeNodeSpecILi6EE9calcAccelEv(ptr)

declare void @_ZN13HingeNodeSpecILi6EE4getHEv(ptr noalias sret(%struct.RMat), ptr)

declare void @_ZN13HingeNodeSpecILi5EED0Ev(ptr)

declare void @_ZN13HingeNodeSpecILi5EED1Ev(ptr)

declare void @_ZN13HingeNodeSpecILi5EE5calcPEv(ptr)

declare void @_ZN13HingeNodeSpecILi5EE5calcZEv(ptr)

declare void @_ZN13HingeNodeSpecILi5EE5calcYEv(ptr)

declare void @_ZN13HingeNodeSpecILi5EE17calcInternalForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi5EE18prepareVelInternalEv(ptr)

declare void @_ZN13HingeNodeSpecILi5EE13propagateSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare double @_ZN13HingeNodeSpecILi5EE8approxKEEv(ptr)

declare void @_ZN13HingeNodeSpecILi5EE6setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EE14setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EE5printEi(ptr, i32)

declare void @_ZN13HingeNodeSpecILi5EE9calcAccelEv(ptr)

declare void @_ZN13HingeNodeSpecILi5EE4getHEv(ptr noalias sret(%struct.RMat), ptr)

declare void @_ZN12HNodeTorsion7calcRotEv(ptr)

declare double @sin(double) nounwind readnone

declare double @cos(double) nounwind readnone

declare void @_ZN12HNodeRotate37calcRotEv(ptr)

declare void @_ZN21HNodeTranslateRotate37calcRotEv(ptr)

declare void @_ZN9HingeNodeC2ERKS_(ptr, ptr)

declare void @_ZN7CDSListIP9HingeNodeEC1ERKS2_(ptr, ptr)

declare void @_ZN7CDSListIP7IVMAtomEC1ERKS2_(ptr, ptr)

declare void @_ZN11HNodeOriginC2EPK9HingeNode(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EEC2EPK9HingeNodeRi(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi3EEC2EPK9HingeNodeRi(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EEC2EPK9HingeNodeRi(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EEC2EPK9HingeNodeRi(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EEC2EPK9HingeNodeRi(ptr, ptr, ptr)

declare void @_ZplI4Vec3K11FixedVectorIdLi6ELi0EEET_RK9SubVectorIT0_ERKS4_(ptr noalias sret(%struct.Vec3), ptr, ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi1ELi6ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%"struct.FixedMatrix<double,1,6,0,0>"), ptr)

declare void @_ZN12HNodeRotate314setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN12HNodeRotate214setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate314setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate214setVelFromSVelERK11FixedVectorIdLi6ELi0EE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi1EE9calcPropsEv(ptr)

declare zeroext i8 @_ZNK3IVM12minimizationEv(ptr)

declare void @_Z8blockVecIdLi3ELi3EE11FixedVectorIT_XplT0_T1_ELi0EERKS0_IS1_XT0_ELi0EERKS0_IS1_XT1_ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,1,6,0,0>"), ptr, ptr)

declare void @_ZN12HNodeTorsion11toCartesianEv(ptr)

declare void @_ZN13HingeNodeSpecILi1EE18calcCartesianForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi3EE18calcCartesianForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi2EE18calcCartesianForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi6EE18calcCartesianForceEv(ptr)

declare void @_ZN13HingeNodeSpecILi5EE18calcCartesianForceEv(ptr)

declare void @_ZN12HNodeTorsion5calcHEv(ptr)

declare void @_Z10blockMat12IdLi1ELi3ELi3EE11FixedMatrixIT_XT0_EXplT1_T2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,1,6,0,0>"), ptr, ptr)

declare void @_ZN13CDSMatrixBaseIdEC2I11FixedMatrixIdLi1ELi6ELi0ELi0EEEERKT_(ptr, ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi6ELi1ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%"struct.FixedMatrix<double,1,6,0,0>"), ptr)

declare ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision(ptr, i32)

declare ptr @_ZlsIdLi6EERSoS0_RK15FixedVectorBaseIT_XT0_EE(ptr, ptr)

declare ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr, i8 signext)

declare ptr @_ZlsIdLi3EERSoS0_RK15FixedVectorBaseIT_XT0_EE(ptr, ptr)

declare ptr @_ZlsIdLi1EERSoS0_RK15FixedVectorBaseIT_XT0_EE(ptr, ptr)

declare void @_ZN11FixedVectorIdLi3ELi0EE6subColILi6ELi1ELi0ELi0EEES0_RK11FixedMatrixIdXT_EXT0_EXT1_EXT2_EEiii(ptr noalias sret(%"struct.FixedMatrix<double,1,3,0,0>"), ptr, i32, i32, i32)

declare ptr @_ZN15FixedMatrixBaseIdLi6ELi6EEpLERKS0_(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi6EE9calcPropsEv(ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi6ELi6ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%struct.Mat6), ptr)

declare void @_ZN21HNodeTranslateRotate311toCartesianEv(ptr)

define linkonce void @_ZN21HNodeTranslateRotate36setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr %this, ptr %velv) {
; CHECK-LABEL: _ZN21HNodeTranslateRotate36setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE:
; CHECK:       ## %bb.0:
; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %eax
; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; CHECK-NEXT:    fldl 0
; CHECK-NEXT:    fldl 3184(%ecx)
; CHECK-NEXT:    fld %st(1)
; CHECK-NEXT:    fmull 3176(%ecx)
; CHECK-NEXT:    fldz
; CHECK-NEXT:    fld %st(1)
; CHECK-NEXT:    fadd %st(1), %st
; CHECK-NEXT:    fld %st(3)
; CHECK-NEXT:    fmul %st(5), %st
; CHECK-NEXT:    fadd %st(2), %st
; CHECK-NEXT:    fxch %st(5)
; CHECK-NEXT:    fmul %st, %st(0)
; CHECK-NEXT:    fadd %st, %st(5)
; CHECK-NEXT:    fsubr %st, %st(5)
; CHECK-NEXT:    fxch %st(4)
; CHECK-NEXT:    fmull -8
; CHECK-NEXT:    fxch %st(5)
; CHECK-NEXT:    fstl 8
; CHECK-NEXT:    fxch %st(2)
; CHECK-NEXT:    fsubp %st, %st(5)
; CHECK-NEXT:    fxch %st(4)
; CHECK-NEXT:    fsubp %st, %st(2)
; CHECK-NEXT:    fxch %st(1)
; CHECK-NEXT:    fadd %st(2), %st
; CHECK-NEXT:    faddp %st, %st(2)
; CHECK-NEXT:    fxch %st(1)
; CHECK-NEXT:    fstl 16
; CHECK-NEXT:    fxch %st(2)
; CHECK-NEXT:    fadd %st, %st(0)
; CHECK-NEXT:    fxch %st(1)
; CHECK-NEXT:    fadd %st, %st(0)
; CHECK-NEXT:    fxch %st(2)
; CHECK-NEXT:    fadd %st, %st(0)
; CHECK-NEXT:    fxch %st(1)
; CHECK-NEXT:    fstpl 2056(%ecx)
; CHECK-NEXT:    fxch %st(1)
; CHECK-NEXT:    fstpl 2064(%ecx)
; CHECK-NEXT:    fstpl 2072(%ecx)
; CHECK-NEXT:    movl %eax, 0
; CHECK-NEXT:    movl $4, 4
; CHECK-NEXT:    movl $3, 8
; CHECK-NEXT:    ud2
	%1 = getelementptr double, ptr null, i32 -1		; <ptr> [#uses=1]
	%2 = load double, ptr %1, align 8		; <double> [#uses=1]
	%3 = load double, ptr null, align 8		; <double> [#uses=2]
	%4 = load double, ptr null, align 8		; <double> [#uses=2]
	%5 = load double, ptr null, align 8		; <double> [#uses=3]
	%6 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0		; <ptr> [#uses=0]
	%7 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 1		; <ptr> [#uses=0]
	%8 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 2		; <ptr> [#uses=0]
	%9 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 3		; <ptr> [#uses=0]
	%10 = load double, ptr null, align 8		; <double> [#uses=2]
	%11 = fsub double -0.000000e+00, %10		; <double> [#uses=1]
	%12 = load double, ptr null, align 8		; <double> [#uses=2]
	%13 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3		; <ptr> [#uses=1]
	%14 = load double, ptr %13, align 8		; <double> [#uses=2]
	%15 = fsub double -0.000000e+00, %14		; <double> [#uses=1]
	%16 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2		; <ptr> [#uses=1]
	%17 = load double, ptr %16, align 8		; <double> [#uses=2]
	%18 = fsub double -0.000000e+00, %17		; <double> [#uses=1]
	%19 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 0		; <ptr> [#uses=0]
	%20 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 3		; <ptr> [#uses=0]
	%21 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 6		; <ptr> [#uses=0]
	%22 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 9		; <ptr> [#uses=0]
	%23 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 1		; <ptr> [#uses=0]
	%24 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 4		; <ptr> [#uses=0]
	%25 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 7		; <ptr> [#uses=0]
	%26 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 10		; <ptr> [#uses=0]
	%27 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 2		; <ptr> [#uses=0]
	%28 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 5		; <ptr> [#uses=0]
	%29 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 8		; <ptr> [#uses=0]
	%30 = getelementptr %"struct.FixedMatrix<double,2,6,0,0>", ptr null, i32 0, i32 0, i32 0, i32 11		; <ptr> [#uses=0]
	%31 = getelementptr %"struct.FixedMatrix<double,1,3,0,0>", ptr null, i32 0, i32 0, i32 0, i32 0		; <ptr> [#uses=0]
	%32 = getelementptr %"struct.FixedMatrix<double,1,3,0,0>", ptr null, i32 0, i32 0, i32 0, i32 1		; <ptr> [#uses=1]
	%33 = getelementptr %"struct.FixedMatrix<double,1,3,0,0>", ptr null, i32 0, i32 0, i32 0, i32 2		; <ptr> [#uses=1]
	%34 = fmul double %17, %5		; <double> [#uses=1]
	%35 = fadd double 0.000000e+00, %34		; <double> [#uses=1]
	%36 = fadd double 0.000000e+00, 0.000000e+00		; <double> [#uses=1]
	%37 = fmul double %14, %3		; <double> [#uses=1]
	%38 = fadd double %36, %37		; <double> [#uses=1]
	%39 = fmul double %12, %4		; <double> [#uses=1]
	%40 = fadd double %38, %39		; <double> [#uses=1]
	%41 = fmul double %5, %11		; <double> [#uses=1]
	%42 = fadd double %40, %41		; <double> [#uses=2]
	store double %42, ptr %32, align 8
	%43 = fmul double %2, %15		; <double> [#uses=1]
	%44 = fadd double %43, 0.000000e+00		; <double> [#uses=1]
	%45 = fmul double %3, %18		; <double> [#uses=1]
	%46 = fadd double %44, %45		; <double> [#uses=1]
	%47 = fmul double %10, %4		; <double> [#uses=1]
	%48 = fadd double %46, %47		; <double> [#uses=1]
	%49 = fmul double %12, %5		; <double> [#uses=1]
	%50 = fadd double %48, %49		; <double> [#uses=2]
	store double %50, ptr %33, align 8
	%51 = fmul double %35, 2.000000e+00		; <double> [#uses=1]
	%52 = fmul double %42, 2.000000e+00		; <double> [#uses=1]
	%53 = fmul double %50, 2.000000e+00		; <double> [#uses=1]
	%54 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 0, i32 10, i32 0, i32 0, i32 0		; <ptr> [#uses=1]
	store double %51, ptr %54, align 8
	%55 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 0, i32 10, i32 0, i32 0, i32 1		; <ptr> [#uses=1]
	store double %52, ptr %55, align 8
	%56 = getelementptr %struct.HNodeTranslateRotate3, ptr %this, i32 0, i32 0, i32 10, i32 0, i32 0, i32 2		; <ptr> [#uses=1]
	store double %53, ptr %56, align 8
	%57 = getelementptr %"struct.SubVector<CDSVector<double, 1, CDS::DefaultAlloc> >", ptr null, i32 0, i32 0		; <ptr> [#uses=1]
	store ptr %velv, ptr %57, align 8
	%58 = getelementptr %"struct.SubVector<CDSVector<double, 1, CDS::DefaultAlloc> >", ptr null, i32 0, i32 1		; <ptr> [#uses=1]
	store i32 4, ptr %58, align 4
	%59 = getelementptr %"struct.SubVector<CDSVector<double, 1, CDS::DefaultAlloc> >", ptr null, i32 0, i32 2		; <ptr> [#uses=1]
	store i32 3, ptr %59, align 8
	unreachable
}

declare void @_ZmlRK11FixedMatrixIdLi6ELi6ELi0ELi0EERK18PhiMatrixTranspose(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare void @_ZmlI4Mat3K11FixedMatrixIdLi6ELi6ELi0ELi0EEET_RK9SubMatrixIT0_ERKS4_(ptr noalias sret(%struct.Mat3), ptr, ptr)

declare void @_ZmiI4Mat3K11FixedMatrixIdLi6ELi6ELi0ELi0EEET_RK9SubMatrixIT0_ERKS4_(ptr noalias sret(%struct.Mat3), ptr, ptr)

declare ptr @_ZN15FixedMatrixBaseIdLi3ELi3EEmIERKS0_(ptr, ptr)

declare void @_ZplI4Mat311FixedMatrixIdLi6ELi6ELi0ELi0EEET_RKS3_RK9SubMatrixIT0_E(ptr noalias sret(%struct.Mat3), ptr, ptr)

declare void @_ZN13CDSVectorBaseIdN3CDS12DefaultAllocEED2Ev(ptr)

declare void @_ZN13HingeNodeSpecILi1EE7calcD_GERK11FixedMatrixIdLi6ELi6ELi0ELi0EE(ptr, ptr)

declare void @_ZN11MatrixTools7inverseI11FixedMatrixIdLi1ELi1ELi0ELi0EEEET_RKS3_NS_14InverseResultsINS3_10MatrixTypeEEE(ptr noalias sret(%"struct.FixedMatrix<double,1,1,0,0>"), ptr, ptr)

declare ptr @__cxa_get_exception_ptr(ptr) nounwind

declare ptr @__cxa_begin_catch(ptr) nounwind

declare ptr @_ZlsIdLi1ELi1EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare ptr @_ZlsIdLi1ELi6EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare ptr @_ZNSolsEi(ptr, i32)

declare ptr @_ZlsIcERSoS0_RK9CDSStringIT_E(ptr, ptr)

declare ptr @_ZNSolsEPFRSoS_E(ptr, ptr)

declare ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr)

declare void @__cxa_end_catch()

declare void @_ZmlI4Mat311FixedMatrixIdLi6ELi6ELi0ELi0EEET_RKS3_RK9SubMatrixIT0_E(ptr noalias sret(%struct.Mat3), ptr, ptr)

declare void @_ZmlI4Mat311FixedMatrixIdLi6ELi6ELi0ELi0EEET_RK9SubMatrixIT0_ERKS3_(ptr noalias sret(%struct.Mat3), ptr, ptr)

declare void @_ZmiI4Mat311FixedMatrixIdLi6ELi6ELi0ELi0EEET_RK9SubMatrixIT0_ERKS3_(ptr noalias sret(%struct.Mat3), ptr, ptr)

declare ptr @_ZN15FixedMatrixBaseIdLi6ELi6EEmIERKS0_(ptr, ptr)

declare void @_ZN13CDSVectorBaseI4Vec3N3CDS12DefaultAllocEEC2EiS2_(ptr, i32, ptr byval(%"struct.CDS::DefaultAlloc") align 4)

declare void @_ZN13CDSVectorBaseI4Vec3N3CDS12DefaultAllocEED2Ev(ptr)

declare void @_ZN12HNodeTorsionD0Ev(ptr)

declare void @_ZN12HNodeTorsionD1Ev(ptr)

declare void @_ZN12HNodeRotate3D0Ev(ptr)

declare void @_ZN12HNodeRotate3D1Ev(ptr)

declare void @_ZN12HNodeRotate36setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate318enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES4_(ptr, ptr, ptr)

declare void @_ZN12HNodeRotate35printEi(ptr, i32)

declare void @_ZN12HNodeRotate35calcHEv(ptr)

declare void @_ZN12HNodeRotate311toCartesianEv(ptr)

declare void @_ZN12HNodeRotate2D0Ev(ptr)

declare void @_ZN12HNodeRotate2D1Ev(ptr)

declare void @_ZN12HNodeRotate26setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN12HNodeRotate218enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES4_(ptr, ptr, ptr)

declare void @_ZN12HNodeRotate25printEi(ptr, i32)

declare void @_ZN12HNodeRotate25calcHEv(ptr)

declare void @_ZN12HNodeRotate211toCartesianEv(ptr)

declare void @_ZN21HNodeTranslateRotate3D0Ev(ptr)

declare void @_ZN21HNodeTranslateRotate3D1Ev(ptr)

declare void @_ZN21HNodeTranslateRotate318enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES4_(ptr, ptr, ptr)

declare void @_ZN21HNodeTranslateRotate35printEi(ptr, i32)

declare void @_ZN21HNodeTranslateRotate35calcHEv(ptr)

declare void @_ZN21HNodeTranslateRotate2D0Ev(ptr)

declare void @_ZN21HNodeTranslateRotate2D1Ev(ptr)

declare void @_ZN21HNodeTranslateRotate26setVelERK9CDSVectorIdLi1EN3CDS12DefaultAllocEE(ptr, ptr)

declare void @_ZN21HNodeTranslateRotate218enforceConstraintsER9CDSVectorIdLi1EN3CDS12DefaultAllocEES4_(ptr, ptr, ptr)

declare void @_ZN21HNodeTranslateRotate25printEi(ptr, i32)

declare void @_ZN21HNodeTranslateRotate25calcHEv(ptr)

declare void @_ZN21HNodeTranslateRotate211toCartesianEv(ptr)

declare void @_ZN14HNodeTranslateC2EPK9HingeNodeP7IVMAtomRi(ptr, ptr, ptr, ptr)

declare void @_ZN14HNodeTranslateD1Ev(ptr)

declare void @_ZN14HNodeTranslateD0Ev(ptr)

declare void @_ZN14HNodeTranslate5calcHEv(ptr)

declare void @_ZN14HNodeTranslate11toCartesianEv(ptr)

declare void @_ZN12HNodeRotate3C2EPK9HingeNodeP7IVMAtomRib(ptr, ptr, ptr, ptr, i8 zeroext)

declare void @_ZN8AtomTree6findCMEPK9HingeNode(ptr noalias sret(%struct.Vec3), ptr)

declare ptr @_ZN7CDSListIP7IVMAtomE7prependERKS1_(ptr, ptr)

declare ptr @_ZN13CDSVectorBaseI4Vec3N3CDS12DefaultAllocEE6resizeEi(ptr, i32)

declare void @_ZN12HNodeRotate2C2EPK9HingeNodeRK4Vec3Ri(ptr, ptr, ptr, ptr)

declare void @_ZN21HNodeTranslateRotate3C2EPK9HingeNodeP7IVMAtomRib(ptr, ptr, ptr, ptr, i8 zeroext)

declare void @_ZN13HingeNodeSpecILi3EE9calcPropsEv(ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi3ELi6ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%"struct.FixedMatrix<double,3,6,0,0>"), ptr)

declare void @_ZN11MatrixTools9transposeI4Mat3EENT_13TransposeTypeERKS2_(ptr noalias sret(%struct.Mat3), ptr)

declare void @_Z10blockMat12IdLi3ELi3ELi3EE11FixedMatrixIT_XT0_EXplT1_T2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,3,6,0,0>"), ptr, ptr)

declare void @_ZN13CDSMatrixBaseIdEC2I11FixedMatrixIdLi3ELi6ELi0ELi0EEEERKT_(ptr, ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi6ELi3ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%"struct.FixedMatrix<double,3,6,0,0>"), ptr)

declare ptr @_ZlsIdLi4EERSoS0_RK15FixedVectorBaseIT_XT0_EE(ptr, ptr)

declare double @_Z4normIdLi4EET_RK11FixedVectorIS0_XT0_ELi0EE(ptr)

declare ptr @_ZN15FixedVectorBaseIdLi4EEdVERKd(ptr, ptr)

declare ptr @_ZN15FixedVectorBaseIdLi4EEmIERKS0_(ptr, ptr)

declare void @_ZN11FixedVectorIdLi3ELi0EE6subColILi6ELi3ELi0ELi0EEES0_RK11FixedMatrixIdXT_EXT0_EXT1_EXT2_EEiii(ptr noalias sret(%"struct.FixedMatrix<double,1,3,0,0>"), ptr, i32, i32, i32)

declare void @_ZN13HingeNodeSpecILi3EE7calcD_GERK11FixedMatrixIdLi6ELi6ELi0ELi0EE(ptr, ptr)

declare void @_ZN11MatrixTools7inverseI11FixedMatrixIdLi3ELi3ELi0ELi0EEEET_RKS3_NS_14InverseResultsINS3_10MatrixTypeEEE(ptr noalias sret(%"struct.FixedMatrix<double,3,3,0,0>"), ptr, ptr)

declare ptr @_ZlsIdLi3ELi3EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare ptr @_ZlsIdLi3ELi6EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare void @_Z7unitVecRK4Vec3(ptr noalias sret(%struct.Vec3), ptr)

declare double @_Z4normIdLi3EET_RK11FixedVectorIS0_XT0_ELi0EE(ptr)

declare void @_ZN12HNodeTorsionC2EPK9HingeNodeRK4Vec3Ri(ptr, ptr, ptr, ptr)

declare double @acos(double) nounwind readnone

declare double @atan2(double, double) nounwind readnone

declare void @_ZN21HNodeTranslateRotate2C2EPK9HingeNodeRi(ptr, ptr, ptr)

declare void @_ZN13HingeNodeSpecILi2EE9calcPropsEv(ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi2ELi6ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%"struct.FixedMatrix<double,2,6,0,0>"), ptr)

declare void @_Z10blockMat21IdLi1ELi3ELi1EE11FixedMatrixIT_XplT0_T2_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT2_EXT1_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,1,6,0,0>"), ptr, ptr)

declare void @_Z10blockMat12IdLi2ELi3ELi3EE11FixedMatrixIT_XT0_EXplT1_T2_ELi0ELi0EERKS0_IS1_XT0_EXT1_ELi0ELi0EERKS0_IS1_XT0_EXT2_ELi0ELi0EE(ptr noalias sret(%"struct.FixedMatrix<double,2,6,0,0>"), ptr, ptr)

declare void @_ZN13CDSMatrixBaseIdEC2I11FixedMatrixIdLi2ELi6ELi0ELi0EEEERKT_(ptr, ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi6ELi2ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%"struct.FixedMatrix<double,2,6,0,0>"), ptr)

declare ptr @_ZlsIdLi2EERSoS0_RK15FixedVectorBaseIT_XT0_EE(ptr, ptr)

declare ptr @_ZN15FixedVectorBaseIdLi3EEdVERKd(ptr, ptr)

declare ptr @_ZN15FixedVectorBaseIdLi3EEmIERKS0_(ptr, ptr)

declare void @_ZN11FixedVectorIdLi3ELi0EE6subColILi6ELi2ELi0ELi0EEES0_RK11FixedMatrixIdXT_EXT0_EXT1_EXT2_EEiii(ptr noalias sret(%"struct.FixedMatrix<double,1,3,0,0>"), ptr, i32, i32, i32)

declare void @_ZN13HingeNodeSpecILi2EE7calcD_GERK11FixedMatrixIdLi6ELi6ELi0ELi0EE(ptr, ptr)

declare void @_ZN11MatrixTools7inverseI11FixedMatrixIdLi2ELi2ELi0ELi0EEEET_RKS3_NS_14InverseResultsINS3_10MatrixTypeEEE(ptr noalias sret(%"struct.FixedMatrix<double,2,2,0,0>"), ptr, ptr)

declare ptr @_ZlsIdLi2ELi2EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare ptr @_ZlsIdLi2ELi6EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare zeroext i8 @_ZNK9CDSStringIcE7matchesEPKcb(ptr, ptr, i8 zeroext)

declare ptr @_Z9constructP9HingeNodeRKN16InternalDynamics9HingeSpecERi(ptr, ptr, ptr)

declare void @_ZN9CDSStringIcEC1ERKS0_(ptr, ptr)

declare void @_ZN9CDSStringIcE8downcaseEv(ptr)

declare ptr @_ZN9CDSStringIcEaSEPKc(ptr, ptr)

declare ptr @_ZlsIP7IVMAtomERSoS2_RK7CDSListIT_E(ptr, ptr)

declare i32 @_ZNK7CDSListIP9HingeNodeE8getIndexERKS1_(ptr, ptr)

declare void @_ZN13CDSMatrixBaseIdEC2I11FixedMatrixIdLi6ELi6ELi0ELi0EEEERKT_(ptr, ptr)

declare void @_ZN11FixedVectorIdLi3ELi0EE6subColILi6ELi6ELi0ELi0EEES0_RK11FixedMatrixIdXT_EXT0_EXT1_EXT2_EEiii(ptr noalias sret(%"struct.FixedMatrix<double,1,3,0,0>"), ptr, i32, i32, i32)

declare void @_ZN13HingeNodeSpecILi6EE7calcD_GERK11FixedMatrixIdLi6ELi6ELi0ELi0EE(ptr, ptr)

declare void @_ZN11MatrixTools7inverseI11FixedMatrixIdLi6ELi6ELi0ELi0EEEET_RKS3_NS_14InverseResultsINS3_10MatrixTypeEEE(ptr noalias sret(%struct.Mat6), ptr, ptr)

declare ptr @_ZlsIdLi6ELi6EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare void @_ZN13HingeNodeSpecILi5EE9calcPropsEv(ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi5ELi6ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%"struct.FixedMatrix<double,5,6,0,0>"), ptr)

declare void @_ZN13CDSMatrixBaseIdEC2I11FixedMatrixIdLi5ELi6ELi0ELi0EEEERKT_(ptr, ptr)

declare void @_ZN11MatrixTools9transposeI11FixedMatrixIdLi6ELi5ELi0ELi0EEEENT_13TransposeTypeERKS3_(ptr noalias sret(%"struct.FixedMatrix<double,5,6,0,0>"), ptr)

declare ptr @_ZlsIdLi5EERSoS0_RK15FixedVectorBaseIT_XT0_EE(ptr, ptr)

declare void @_ZN11FixedVectorIdLi3ELi0EE6subColILi6ELi5ELi0ELi0EEES0_RK11FixedMatrixIdXT_EXT0_EXT1_EXT2_EEiii(ptr noalias sret(%"struct.FixedMatrix<double,1,3,0,0>"), ptr, i32, i32, i32)

declare void @_ZN13HingeNodeSpecILi5EE7calcD_GERK11FixedMatrixIdLi6ELi6ELi0ELi0EE(ptr, ptr)

declare void @_ZN11MatrixTools7inverseI11FixedMatrixIdLi5ELi5ELi0ELi0EEEET_RKS3_NS_14InverseResultsINS3_10MatrixTypeEEE(ptr noalias sret(%"struct.FixedMatrix<double,5,5,0,0>"), ptr, ptr)

declare ptr @_ZlsIdLi5ELi5EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare ptr @_ZlsIdLi5ELi6EERSoS0_RK15FixedMatrixBaseIT_XT0_EXT1_EE(ptr, ptr)

declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) nounwind