using System;
using System.Runtime.CompilerServices;
using Cpp2IlInjected;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Serialization;

namespace RootMotion.FinalIK
{
	// Token: 0x02000439 RID: 1081
	[Token(Token = "0x2000439")]
	[Serializable]
	public class IKSolverVR : IKSolver
	{
		// Token: 0x060026DF RID: 9951 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026DF")]
		[Address(RVA = "0x15A1BE0", Offset = "0x15A09E0", VA = "0x1815A1BE0")]
		public void SetToReferences(VRIK.References references)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E0 RID: 9952 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E0")]
		[Address(RVA = "0x15A0630", Offset = "0x159F430", VA = "0x1815A0630")]
		public void GuessHandOrientations(VRIK.References references, bool onlyIfZero)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E1 RID: 9953 RVA: 0x00056800 File Offset: 0x00054A00
		[Token(Token = "0x60026E1")]
		[Address(RVA = "0x159F510", Offset = "0x159E310", VA = "0x18159F510")]
		public void DefaultAnimationCurves()
		{
			IKSolverVR.Locomotion locomotion;
			do
			{
				locomotion = this.locomotion;
				if (locomotion.stepHeight == (ulong)0L)
				{
					AnimationCurve animationCurve = new AnimationCurve();
					locomotion.stepHeight = animationCurve;
					IKSolverVR.Locomotion locomotion2 = this.locomotion;
				}
			}
			while (locomotion.heelHeight != (ulong)0L);
			AnimationCurve animationCurve2 = new AnimationCurve();
			locomotion.heelHeight = animationCurve2;
			if (this.locomotion.stepHeight.keys.Length == 0)
			{
				AnimationCurve stepHeight = this.locomotion.stepHeight;
				Keyframe[] sineKeyframes = IKSolverVR.GetSineKeyframes(0.03f);
				stepHeight.keys = sineKeyframes;
			}
			if (this.locomotion.heelHeight.keys.Length == 0)
			{
				AnimationCurve heelHeight = this.locomotion.heelHeight;
				Keyframe[] sineKeyframes2 = IKSolverVR.GetSineKeyframes(0.03f);
				heelHeight.keys = sineKeyframes2;
			}
		}

		// Token: 0x060026E2 RID: 9954 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E2")]
		[Address(RVA = "0x159EF30", Offset = "0x159DD30", VA = "0x18159EF30")]
		public void AddPositionOffset(IKSolverVR.PositionOffset positionOffset, Vector3 value)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E3 RID: 9955 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E3")]
		[Address(RVA = "0x159F2D0", Offset = "0x159E0D0", VA = "0x18159F2D0")]
		public void AddRotationOffset(IKSolverVR.RotationOffset rotationOffset, Vector3 value)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E4 RID: 9956 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E4")]
		[Address(RVA = "0x159F410", Offset = "0x159E210", VA = "0x18159F410")]
		public void AddRotationOffset(IKSolverVR.RotationOffset rotationOffset, Quaternion value)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E5 RID: 9957 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E5")]
		[Address(RVA = "0x159EDA0", Offset = "0x159DBA0", VA = "0x18159EDA0")]
		public void AddPlatformMotion(Vector3 deltaPosition, Quaternion deltaRotation, Vector3 platformPivot)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E6 RID: 9958 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E6")]
		[Address(RVA = "0x15A1AA0", Offset = "0x15A08A0", VA = "0x1815A1AA0")]
		public void Reset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E7 RID: 9959 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E7")]
		[Address(RVA = "0x15A3800", Offset = "0x15A2600", VA = "0x1815A3800", Slot = "9")]
		public override void StoreDefaultLocalState()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E8 RID: 9960 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E8")]
		[Address(RVA = "0x159F6B0", Offset = "0x159E4B0", VA = "0x18159F6B0", Slot = "8")]
		public override void FixTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026E9 RID: 9961 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026E9")]
		[Address(RVA = "0x15A0350", Offset = "0x159F150", VA = "0x1815A0350", Slot = "6")]
		public override IKSolver.Point[] GetPoints()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026EA RID: 9962 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026EA")]
		[Address(RVA = "0x15A02F0", Offset = "0x159F0F0", VA = "0x1815A02F0", Slot = "7")]
		public override IKSolver.Point GetPoint(Transform transform)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026EB RID: 9963 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026EB")]
		[Address(RVA = "0x15A1040", Offset = "0x159FE40", VA = "0x1815A1040", Slot = "4")]
		public override bool IsValid(ref string message)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026EC RID: 9964 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026EC")]
		[Address(RVA = "0x159F860", Offset = "0x159E660", VA = "0x18159F860")]
		private Vector3 GetNormal(Transform[] transforms)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026ED RID: 9965 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026ED")]
		[Address(RVA = "0x15A0E60", Offset = "0x159FC60", VA = "0x1815A0E60")]
		private Vector3 GuessWristToPalmAxis(Transform hand, Transform forearm)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026EE RID: 9966 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026EE")]
		[Address(RVA = "0x15A0950", Offset = "0x159F750", VA = "0x1815A0950")]
		private Vector3 GuessPalmToThumbAxis(Transform hand, Transform forearm)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026EF RID: 9967 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026EF")]
		[Address(RVA = "0x15A04C0", Offset = "0x159F2C0", VA = "0x1815A04C0")]
		private static Keyframe[] GetSineKeyframes(float mag)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026F0 RID: 9968 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026F0")]
		[Address(RVA = "0x15A39A0", Offset = "0x15A27A0", VA = "0x1815A39A0")]
		private void UpdateSolverTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026F1 RID: 9969 RVA: 0x000568C8 File Offset: 0x00054AC8
		[Token(Token = "0x60026F1")]
		[Address(RVA = "0x15A12E0", Offset = "0x15A00E0", VA = "0x1815A12E0", Slot = "10")]
		protected override void OnInitiate()
		{
			this.UpdateSolverTransforms();
			bool flag = this.hasToes;
			bool flag2 = this.hasChest;
			Quaternion[] array = this.readRotations;
			Vector3[] array2 = this.readPositions;
			bool flag3 = this.hasShoulders;
			bool flag4 = this.hasNeck;
			this.Read(array2, array, flag2, flag4, flag3, flag);
		}

		// Token: 0x060026F2 RID: 9970 RVA: 0x00056918 File Offset: 0x00054B18
		[Token(Token = "0x60026F2")]
		[Address(RVA = "0x15A1330", Offset = "0x15A0130", VA = "0x1815A1330", Slot = "11")]
		protected override void OnUpdate()
		{
			float ikpositionWeight = this.IKPositionWeight;
			int num = 0;
			if (ikpositionWeight > (float)num)
			{
				this.UpdateSolverTransforms();
				bool flag = this.hasToes;
				bool flag2 = this.hasChest;
				Quaternion[] array = this.readRotations;
				Vector3[] array2 = this.readPositions;
				bool flag3 = this.hasShoulders;
				bool flag4 = this.hasNeck;
				this.Read(array2, array, flag2, flag4, flag3, flag);
				this.Solve();
				this.Write();
				this.WriteTransforms();
				return;
			}
		}

		// Token: 0x060026F3 RID: 9971 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026F3")]
		[Address(RVA = "0x15A3B60", Offset = "0x15A2960", VA = "0x1815A3B60")]
		private void WriteTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026F4 RID: 9972 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026F4")]
		[Address(RVA = "0x15A13B0", Offset = "0x15A01B0", VA = "0x1815A13B0")]
		private void Read(Vector3[] positions, Quaternion[] rotations, bool hasChest, bool hasNeck, bool hasShoulders, bool hasToes)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026F5 RID: 9973 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026F5")]
		[Address(RVA = "0x15A1F20", Offset = "0x15A0D20", VA = "0x1815A1F20")]
		private void Solve()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026F6 RID: 9974 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026F6")]
		[Address(RVA = "0x15A03B0", Offset = "0x159F1B0", VA = "0x1815A03B0")]
		private Vector3 GetPosition(int index)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026F7 RID: 9975 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026F7")]
		[Address(RVA = "0x15A0470", Offset = "0x159F270", VA = "0x1815A0470")]
		private Quaternion GetRotation(int index)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000258 RID: 600
		// (get) Token: 0x060026F8 RID: 9976 RVA: 0x0005698C File Offset: 0x00054B8C
		// (set) Token: 0x060026F9 RID: 9977 RVA: 0x000569A0 File Offset: 0x00054BA0
		[Token(Token = "0x17000258")]
		[HideInInspector]
		public IKSolverVR.VirtualBone rootBone
		{
			[Token(Token = "0x60026F8")]
			[Address(RVA = "0x6D4570", Offset = "0x6D3370", VA = "0x1806D4570")]
			[CompilerGenerated]
			get
			{
				return this.<rootBone>k__BackingField;
			}
			[Token(Token = "0x60026F9")]
			[Address(RVA = "0x6D4650", Offset = "0x6D3450", VA = "0x1806D4650")]
			[CompilerGenerated]
			private set
			{
				/*
An exception occurred when decompiling this method (060026F9)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void RootMotion.FinalIK.IKSolverVR::set_rootBone(RootMotion.FinalIK.IKSolverVR/VirtualBone)

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	stfld:VirtualBone(IKSolverVR::<rootBone>k__BackingField, ldloc:IKSolverVR(this), ldloc:VirtualBone(value)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
			}
		}

		// Token: 0x060026FA RID: 9978 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026FA")]
		[Address(RVA = "0x15A3E20", Offset = "0x15A2C20", VA = "0x1815A3E20")]
		private void Write()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026FB RID: 9979 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026FB")]
		[Address(RVA = "0x159FB60", Offset = "0x159E960", VA = "0x18159FB60")]
		private Vector3 GetPelvisOffset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026FC RID: 9980 RVA: 0x000569B4 File Offset: 0x00054BB4
		[Token(Token = "0x60026FC")]
		[Address(RVA = "0x15A3FD0", Offset = "0x15A2DD0", VA = "0x1815A3FD0")]
		public IKSolverVR()
		{
			Transform[] array = new Transform[0];
			this.solverTransforms = array;
			Vector3[] array2 = new Vector3[0];
			this.readPositions = array2;
			Quaternion[] array3 = new Quaternion[0];
			this.readRotations = array3;
			Vector3[] array4 = new Vector3[2];
			this.solvedPositions = array4;
			Quaternion[] array5 = new Quaternion[22];
			this.solvedRotations = array5;
			Quaternion[] array6 = new Quaternion[21];
			this.defaultLocalRotations = array6;
			this.plantFeet = true;
			IKSolverVR.Spine spine = new IKSolverVR.Spine();
			this.spine = spine;
			IKSolverVR.Arm arm = new IKSolverVR.Arm();
			this.leftArm = arm;
			IKSolverVR.Arm arm2 = new IKSolverVR.Arm();
			this.rightArm = arm2;
			IKSolverVR.Leg leg = new IKSolverVR.Leg();
			this.leftLeg = leg;
			IKSolverVR.Leg leg2 = new IKSolverVR.Leg();
			this.rightLeg = leg2;
			IKSolverVR.Locomotion locomotion = new IKSolverVR.Locomotion();
			this.locomotion = locomotion;
			IKSolverVR.Leg[] array7 = new IKSolverVR.Leg[2];
			this.legs = array7;
			IKSolverVR.Arm[] array8 = new IKSolverVR.Arm[2];
			this.arms = array8;
			base..ctor();
		}

		// Token: 0x04003020 RID: 12320
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x4003020")]
		private Transform[] solverTransforms;

		// Token: 0x04003021 RID: 12321
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4003021")]
		private bool hasChest;

		// Token: 0x04003022 RID: 12322
		[FieldOffset(Offset = "0x61")]
		[Token(Token = "0x4003022")]
		private bool hasNeck;

		// Token: 0x04003023 RID: 12323
		[FieldOffset(Offset = "0x62")]
		[Token(Token = "0x4003023")]
		private bool hasShoulders;

		// Token: 0x04003024 RID: 12324
		[FieldOffset(Offset = "0x63")]
		[Token(Token = "0x4003024")]
		private bool hasToes;

		// Token: 0x04003025 RID: 12325
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4003025")]
		private Vector3[] readPositions;

		// Token: 0x04003026 RID: 12326
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x4003026")]
		private Quaternion[] readRotations;

		// Token: 0x04003027 RID: 12327
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x4003027")]
		private Vector3[] solvedPositions;

		// Token: 0x04003028 RID: 12328
		[FieldOffset(Offset = "0x80")]
		[Token(Token = "0x4003028")]
		private Quaternion[] solvedRotations;

		// Token: 0x04003029 RID: 12329
		[FieldOffset(Offset = "0x88")]
		[Token(Token = "0x4003029")]
		private Vector3 defaultPelvisLocalPosition;

		// Token: 0x0400302A RID: 12330
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x400302A")]
		private Quaternion[] defaultLocalRotations;

		// Token: 0x0400302B RID: 12331
		[FieldOffset(Offset = "0xA0")]
		[Token(Token = "0x400302B")]
		private Vector3 rootV;

		// Token: 0x0400302C RID: 12332
		[FieldOffset(Offset = "0xAC")]
		[Token(Token = "0x400302C")]
		private Vector3 rootVelocity;

		// Token: 0x0400302D RID: 12333
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x400302D")]
		private Vector3 bodyOffset;

		// Token: 0x0400302E RID: 12334
		[FieldOffset(Offset = "0xC4")]
		[Token(Token = "0x400302E")]
		private int supportLegIndex;

		// Token: 0x0400302F RID: 12335
		[FieldOffset(Offset = "0xC8")]
		[Token(Token = "0x400302F")]
		[Tooltip("If true, will keep the toes planted even if head target is out of reach.")]
		public bool plantFeet;

		// Token: 0x04003031 RID: 12337
		[FieldOffset(Offset = "0xD8")]
		[Token(Token = "0x4003031")]
		[Tooltip("The spine solver.")]
		public IKSolverVR.Spine spine;

		// Token: 0x04003032 RID: 12338
		[FieldOffset(Offset = "0xE0")]
		[Token(Token = "0x4003032")]
		[Tooltip("The left arm solver.")]
		public IKSolverVR.Arm leftArm;

		// Token: 0x04003033 RID: 12339
		[FieldOffset(Offset = "0xE8")]
		[Token(Token = "0x4003033")]
		[Tooltip("The right arm solver.")]
		public IKSolverVR.Arm rightArm;

		// Token: 0x04003034 RID: 12340
		[FieldOffset(Offset = "0xF0")]
		[Token(Token = "0x4003034")]
		[Tooltip("The left leg solver.")]
		public IKSolverVR.Leg leftLeg;

		// Token: 0x04003035 RID: 12341
		[FieldOffset(Offset = "0xF8")]
		[Token(Token = "0x4003035")]
		[Tooltip("The right leg solver.")]
		public IKSolverVR.Leg rightLeg;

		// Token: 0x04003036 RID: 12342
		[FieldOffset(Offset = "0x100")]
		[Token(Token = "0x4003036")]
		[Tooltip("The procedural locomotion solver.")]
		public IKSolverVR.Locomotion locomotion;

		// Token: 0x04003037 RID: 12343
		[FieldOffset(Offset = "0x108")]
		[Token(Token = "0x4003037")]
		private IKSolverVR.Leg[] legs;

		// Token: 0x04003038 RID: 12344
		[FieldOffset(Offset = "0x110")]
		[Token(Token = "0x4003038")]
		private IKSolverVR.Arm[] arms;

		// Token: 0x04003039 RID: 12345
		[FieldOffset(Offset = "0x118")]
		[Token(Token = "0x4003039")]
		private Vector3 headPosition;

		// Token: 0x0400303A RID: 12346
		[FieldOffset(Offset = "0x124")]
		[Token(Token = "0x400303A")]
		private Vector3 headDeltaPosition;

		// Token: 0x0400303B RID: 12347
		[FieldOffset(Offset = "0x130")]
		[Token(Token = "0x400303B")]
		private Vector3 raycastOriginPelvis;

		// Token: 0x0400303C RID: 12348
		[FieldOffset(Offset = "0x13C")]
		[Token(Token = "0x400303C")]
		private Vector3 lastOffset;

		// Token: 0x0400303D RID: 12349
		[FieldOffset(Offset = "0x148")]
		[Token(Token = "0x400303D")]
		private Vector3 debugPos1;

		// Token: 0x0400303E RID: 12350
		[FieldOffset(Offset = "0x154")]
		[Token(Token = "0x400303E")]
		private Vector3 debugPos2;

		// Token: 0x0400303F RID: 12351
		[FieldOffset(Offset = "0x160")]
		[Token(Token = "0x400303F")]
		private Vector3 debugPos3;

		// Token: 0x04003040 RID: 12352
		[FieldOffset(Offset = "0x16C")]
		[Token(Token = "0x4003040")]
		private Vector3 debugPos4;

		// Token: 0x0200043A RID: 1082
		[Token(Token = "0x200043A")]
		[Serializable]
		public class Arm : IKSolverVR.BodyPart
		{
			// Token: 0x17000259 RID: 601
			// (get) Token: 0x060026FD RID: 9981 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x060026FE RID: 9982 RVA: 0x00056AA4 File Offset: 0x00054CA4
			[Token(Token = "0x17000259")]
			public Vector3 position
			{
				[Token(Token = "0x60026FD")]
				[Address(RVA = "0x14E5990", Offset = "0x14E4790", VA = "0x1814E5990")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x60026FE")]
				[Address(RVA = "0x14E5A00", Offset = "0x14E4800", VA = "0x1814E5A00")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<position>k__BackingField.z = z;
				}
			}

			// Token: 0x1700025A RID: 602
			// (get) Token: 0x060026FF RID: 9983 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x06002700 RID: 9984 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x1700025A")]
			public Quaternion rotation
			{
				[Token(Token = "0x60026FF")]
				[Address(RVA = "0x14E59B0", Offset = "0x14E47B0", VA = "0x1814E59B0")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x6002700")]
				[Address(RVA = "0x14E5A20", Offset = "0x14E4820", VA = "0x1814E5A20")]
				[CompilerGenerated]
				private set
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x1700025B RID: 603
			// (get) Token: 0x06002701 RID: 9985 RVA: 0x00056AC4 File Offset: 0x00054CC4
			[Token(Token = "0x1700025B")]
			private IKSolverVR.VirtualBone shoulder
			{
				[Token(Token = "0x6002701")]
				[Address(RVA = "0xA61DD0", Offset = "0xA60BD0", VA = "0x180A61DD0")]
				get
				{
					return this.bones[0];
				}
			}

			// Token: 0x1700025C RID: 604
			// (get) Token: 0x06002702 RID: 9986 RVA: 0x00056AE4 File Offset: 0x00054CE4
			[Token(Token = "0x1700025C")]
			private IKSolverVR.VirtualBone upperArm
			{
				[Token(Token = "0x6002702")]
				[Address(RVA = "0x14E59C0", Offset = "0x14E47C0", VA = "0x1814E59C0")]
				get
				{
					return this.bones[1];
				}
			}

			// Token: 0x1700025D RID: 605
			// (get) Token: 0x06002703 RID: 9987 RVA: 0x00056B04 File Offset: 0x00054D04
			[Token(Token = "0x1700025D")]
			private IKSolverVR.VirtualBone forearm
			{
				[Token(Token = "0x6002703")]
				[Address(RVA = "0x14E5910", Offset = "0x14E4710", VA = "0x1814E5910")]
				get
				{
					return this.bones[2];
				}
			}

			// Token: 0x1700025E RID: 606
			// (get) Token: 0x06002704 RID: 9988 RVA: 0x00056B24 File Offset: 0x00054D24
			[Token(Token = "0x1700025E")]
			private IKSolverVR.VirtualBone hand
			{
				[Token(Token = "0x6002704")]
				[Address(RVA = "0x14E5950", Offset = "0x14E4750", VA = "0x1814E5950")]
				get
				{
					return this.bones[3];
				}
			}

			// Token: 0x06002705 RID: 9989 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002705")]
			[Address(RVA = "0x14E2AF0", Offset = "0x14E18F0", VA = "0x1814E2AF0", Slot = "4")]
			protected override void OnRead(Vector3[] positions, Quaternion[] rotations, bool hasChest, bool hasNeck, bool hasShoulders, bool hasToes, int rootIndex, int index)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002706 RID: 9990 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002706")]
			[Address(RVA = "0x14E35C0", Offset = "0x14E23C0", VA = "0x1814E35C0", Slot = "5")]
			public override void PreSolve()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002707 RID: 9991 RVA: 0x00056B44 File Offset: 0x00054D44
			[Token(Token = "0x6002707")]
			[Address(RVA = "0x14E22A0", Offset = "0x14E10A0", VA = "0x1814E22A0", Slot = "7")]
			public override void ApplyOffsets()
			{
				float z = this.handPositionOffset.z;
				float z2 = this.<position>k__BackingField.z;
				float z3 = this.handPositionOffset.z;
				float z4 = this.<position>k__BackingField.z;
				float z5 = this.handPositionOffset.z;
				this.<position>k__BackingField.z = z4;
			}

			// Token: 0x06002708 RID: 9992 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002708")]
			[Address(RVA = "0x14E38C0", Offset = "0x14E26C0", VA = "0x1814E38C0")]
			public void Solve(bool isLeft)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002709 RID: 9993 RVA: 0x00056B9C File Offset: 0x00054D9C
			[Token(Token = "0x6002709")]
			[Address(RVA = "0x14E3890", Offset = "0x14E2690", VA = "0x1814E3890", Slot = "8")]
			public override void ResetOffsets()
			{
				float z = Vector3.zero.z;
				this.handPositionOffset.z = z;
			}

			// Token: 0x0600270A RID: 9994 RVA: 0x00056BC0 File Offset: 0x00054DC0
			[Token(Token = "0x600270A")]
			[Address(RVA = "0x14E5620", Offset = "0x14E4420", VA = "0x1814E5620", Slot = "6")]
			public override void Write(ref Vector3[] solvedPositions, ref Quaternion[] solvedRotations)
			{
				if (this.hasShoulder)
				{
					IKSolverVR.VirtualBone[] array = this.bones;
					int index = this.index;
					IKSolverVR.VirtualBone virtualBone = array[0];
					array += array;
				}
				IKSolverVR.VirtualBone virtualBone2 = this.bones[1];
				int num = this.index;
				num++;
				num += 2;
				num += num;
				IKSolverVR.VirtualBone virtualBone3 = this.bones[2];
				int num2 = this.index;
				num2 += 2;
				num2 += 2;
				num2 += num2;
				IKSolverVR.VirtualBone[] array2 = this.bones;
				IKSolverVR.VirtualBone virtualBone4 = array2[3];
				array2 += array2;
			}

			// Token: 0x0600270B RID: 9995 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600270B")]
			[Address(RVA = "0x14E2330", Offset = "0x14E1130", VA = "0x1814E2330")]
			private float DamperValue(float value, float min, float max, float weight = 1f)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600270C RID: 9996 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600270C")]
			[Address(RVA = "0x14E23C0", Offset = "0x14E11C0", VA = "0x1814E23C0")]
			private Vector3 GetBendNormal(Vector3 dir)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600270D RID: 9997 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600270D")]
			[Address(RVA = "0x14E54E0", Offset = "0x14E42E0", VA = "0x1814E54E0")]
			private void Visualize(IKSolverVR.VirtualBone bone1, IKSolverVR.VirtualBone bone2, IKSolverVR.VirtualBone bone3, Color color)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600270E RID: 9998 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600270E")]
			[Address(RVA = "0x14E57F0", Offset = "0x14E45F0", VA = "0x1814E57F0")]
			public Arm()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x04003041 RID: 12353
			[FieldOffset(Offset = "0x48")]
			[Token(Token = "0x4003041")]
			[Tooltip("The hand target")]
			public Transform target;

			// Token: 0x04003042 RID: 12354
			[FieldOffset(Offset = "0x50")]
			[Token(Token = "0x4003042")]
			[Tooltip("The elbow will be bent towards this Transform if 'Bend Goal Weight' > 0.")]
			public Transform bendGoal;

			// Token: 0x04003043 RID: 12355
			[FieldOffset(Offset = "0x58")]
			[Token(Token = "0x4003043")]
			[Tooltip("Positional weight of the hand target.")]
			[Range(0f, 1f)]
			public float positionWeight;

			// Token: 0x04003044 RID: 12356
			[FieldOffset(Offset = "0x5C")]
			[Token(Token = "0x4003044")]
			[Tooltip("Rotational weight of the hand target")]
			[Range(0f, 1f)]
			public float rotationWeight;

			// Token: 0x04003045 RID: 12357
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x4003045")]
			[Tooltip("Different techniques for shoulder bone rotation.")]
			public IKSolverVR.Arm.ShoulderRotationMode shoulderRotationMode;

			// Token: 0x04003046 RID: 12358
			[FieldOffset(Offset = "0x64")]
			[Token(Token = "0x4003046")]
			[Range(0f, 1f)]
			[Tooltip("The weight of shoulder rotation")]
			public float shoulderRotationWeight;

			// Token: 0x04003047 RID: 12359
			[FieldOffset(Offset = "0x68")]
			[Token(Token = "0x4003047")]
			[Tooltip("If greater than 0, will bend the elbow towards the 'Bend Goal' Transform.")]
			[Range(0f, 1f)]
			public float bendGoalWeight;

			// Token: 0x04003048 RID: 12360
			[FieldOffset(Offset = "0x6C")]
			[Token(Token = "0x4003048")]
			[Tooltip("Angular offset of the elbow bending direction.")]
			[Range(-180f, 180f)]
			public float swivelOffset;

			// Token: 0x04003049 RID: 12361
			[FieldOffset(Offset = "0x70")]
			[Token(Token = "0x4003049")]
			[Tooltip("Local axis of the hand bone that points from the wrist towards the palm. Used for defining hand bone orientation.")]
			public Vector3 wristToPalmAxis;

			// Token: 0x0400304A RID: 12362
			[FieldOffset(Offset = "0x7C")]
			[Token(Token = "0x400304A")]
			[Tooltip("Local axis of the hand bone that points from the palm towards the thumb. Used for defining hand bone orientation.")]
			public Vector3 palmToThumbAxis;

			// Token: 0x0400304B RID: 12363
			[FieldOffset(Offset = "0x88")]
			[Token(Token = "0x400304B")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 IKPosition;

			// Token: 0x0400304C RID: 12364
			[FieldOffset(Offset = "0x94")]
			[Token(Token = "0x400304C")]
			[HideInInspector]
			[NonSerialized]
			public Quaternion IKRotation;

			// Token: 0x0400304D RID: 12365
			[FieldOffset(Offset = "0xA4")]
			[Token(Token = "0x400304D")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 bendDirection;

			// Token: 0x0400304E RID: 12366
			[FieldOffset(Offset = "0xB0")]
			[Token(Token = "0x400304E")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 handPositionOffset;

			// Token: 0x04003051 RID: 12369
			[FieldOffset(Offset = "0xD8")]
			[Token(Token = "0x4003051")]
			private bool hasShoulder;

			// Token: 0x04003052 RID: 12370
			[FieldOffset(Offset = "0xDC")]
			[Token(Token = "0x4003052")]
			private Vector3 chestForwardAxis;

			// Token: 0x04003053 RID: 12371
			[FieldOffset(Offset = "0xE8")]
			[Token(Token = "0x4003053")]
			private Vector3 chestUpAxis;

			// Token: 0x04003054 RID: 12372
			[FieldOffset(Offset = "0xF4")]
			[Token(Token = "0x4003054")]
			private Quaternion chestRotation;

			// Token: 0x04003055 RID: 12373
			[FieldOffset(Offset = "0x104")]
			[Token(Token = "0x4003055")]
			private Vector3 chestForward;

			// Token: 0x04003056 RID: 12374
			[FieldOffset(Offset = "0x110")]
			[Token(Token = "0x4003056")]
			private Vector3 chestUp;

			// Token: 0x04003057 RID: 12375
			[FieldOffset(Offset = "0x11C")]
			[Token(Token = "0x4003057")]
			private Quaternion forearmRelToUpperArm;

			// Token: 0x04003058 RID: 12376
			[Token(Token = "0x4003058")]
			private const float yawOffsetAngle = 45f;

			// Token: 0x04003059 RID: 12377
			[Token(Token = "0x4003059")]
			private const float pitchOffsetAngle = -30f;

			// Token: 0x0200043B RID: 1083
			[Token(Token = "0x200043B")]
			[Serializable]
			public enum ShoulderRotationMode
			{
				// Token: 0x0400305B RID: 12379
				[Token(Token = "0x400305B")]
				YawPitch,
				// Token: 0x0400305C RID: 12380
				[Token(Token = "0x400305C")]
				FromTo
			}
		}

		// Token: 0x0200043C RID: 1084
		[Token(Token = "0x200043C")]
		[Serializable]
		public abstract class BodyPart
		{
			// Token: 0x0600270F RID: 9999
			[Token(Token = "0x600270F")]
			[Address(Slot = "4")]
			protected abstract void OnRead(Vector3[] positions, Quaternion[] rotations, bool hasChest, bool hasNeck, bool hasShoulders, bool hasToes, int rootIndex, int index);

			// Token: 0x06002710 RID: 10000
			[Token(Token = "0x6002710")]
			[Address(Slot = "5")]
			public abstract void PreSolve();

			// Token: 0x06002711 RID: 10001
			[Token(Token = "0x6002711")]
			[Address(Slot = "6")]
			public abstract void Write(ref Vector3[] solvedPositions, ref Quaternion[] solvedRotations);

			// Token: 0x06002712 RID: 10002
			[Token(Token = "0x6002712")]
			[Address(Slot = "7")]
			public abstract void ApplyOffsets();

			// Token: 0x06002713 RID: 10003
			[Token(Token = "0x6002713")]
			[Address(Slot = "8")]
			public abstract void ResetOffsets();

			// Token: 0x1700025F RID: 607
			// (get) Token: 0x06002714 RID: 10004 RVA: 0x00056C60 File Offset: 0x00054E60
			// (set) Token: 0x06002715 RID: 10005 RVA: 0x00056C74 File Offset: 0x00054E74
			[Token(Token = "0x1700025F")]
			public float sqrMag
			{
				[Token(Token = "0x6002714")]
				[Address(RVA = "0x42E050", Offset = "0x42CE50", VA = "0x18042E050")]
				get;
				[Token(Token = "0x6002715")]
				[Address(RVA = "0x6E7210", Offset = "0x6E6010", VA = "0x1806E7210")]
				private set;
			}

			// Token: 0x17000260 RID: 608
			// (get) Token: 0x06002716 RID: 10006 RVA: 0x00056C88 File Offset: 0x00054E88
			// (set) Token: 0x06002717 RID: 10007 RVA: 0x00056C9C File Offset: 0x00054E9C
			[Token(Token = "0x17000260")]
			public float mag
			{
				[Token(Token = "0x6002716")]
				[Address(RVA = "0x5615F0", Offset = "0x5603F0", VA = "0x1805615F0")]
				get;
				[Token(Token = "0x6002717")]
				[Address(RVA = "0x6E7200", Offset = "0x6E6000", VA = "0x1806E7200")]
				private set;
			}

			// Token: 0x06002718 RID: 10008 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002718")]
			[Address(RVA = "0x14E5C60", Offset = "0x14E4A60", VA = "0x1814E5C60")]
			public void Read(Vector3[] positions, Quaternion[] rotations, bool hasChest, bool hasNeck, bool hasShoulders, bool hasToes, int rootIndex, int index)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002719 RID: 10009 RVA: 0x00056CB0 File Offset: 0x00054EB0
			[Token(Token = "0x6002719")]
			[Address(RVA = "0x14E5A90", Offset = "0x14E4890", VA = "0x1814E5A90")]
			public void MovePosition(Vector3 position)
			{
				IKSolverVR.VirtualBone[] array = this.bones;
				IKSolverVR.VirtualBone virtualBone = array[0];
				float z = position.z;
				float z2 = virtualBone.solverPosition.z;
				int num = 0;
				int length = array.Length;
				if (num < length)
				{
					IKSolverVR.VirtualBone virtualBone2 = array[num];
					float z3 = virtualBone2.solverPosition.z;
					num++;
					virtualBone2.solverPosition.z = z3;
				}
			}

			// Token: 0x0600271A RID: 10010 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600271A")]
			[Address(RVA = "0x14E5B90", Offset = "0x14E4990", VA = "0x1814E5B90")]
			public void MoveRotation(Quaternion rotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600271B RID: 10011 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600271B")]
			[Address(RVA = "0x14E6050", Offset = "0x14E4E50", VA = "0x1814E6050")]
			public void Translate(Vector3 position, Quaternion rotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600271C RID: 10012 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600271C")]
			[Address(RVA = "0x14E5E90", Offset = "0x14E4C90", VA = "0x1814E5E90")]
			public void TranslateRoot(Vector3 newRootPos, Quaternion newRootRot)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600271D RID: 10013 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600271D")]
			[Address(RVA = "0x14E5D60", Offset = "0x14E4B60", VA = "0x1814E5D60")]
			public void RotateTo(IKSolverVR.VirtualBone bone, Quaternion rotation, float weight = 1f)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600271E RID: 10014 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600271E")]
			[Address(RVA = "0x14E62E0", Offset = "0x14E50E0", VA = "0x1814E62E0")]
			public void Visualize(Color color)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600271F RID: 10015 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600271F")]
			[Address(RVA = "0x14E6150", Offset = "0x14E4F50", VA = "0x1814E6150")]
			public void Visualize()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002720 RID: 10016 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002720")]
			[Address(RVA = "0x14E6450", Offset = "0x14E5250", VA = "0x1814E6450")]
			protected BodyPart()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0400305F RID: 12383
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x400305F")]
			[HideInInspector]
			public IKSolverVR.VirtualBone[] bones;

			// Token: 0x04003060 RID: 12384
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x4003060")]
			protected bool initiated;

			// Token: 0x04003061 RID: 12385
			[FieldOffset(Offset = "0x24")]
			[Token(Token = "0x4003061")]
			protected Vector3 rootPosition;

			// Token: 0x04003062 RID: 12386
			[FieldOffset(Offset = "0x30")]
			[Token(Token = "0x4003062")]
			protected Quaternion rootRotation;

			// Token: 0x04003063 RID: 12387
			[FieldOffset(Offset = "0x40")]
			[Token(Token = "0x4003063")]
			protected int index;
		}

		// Token: 0x0200043D RID: 1085
		[Token(Token = "0x200043D")]
		[Serializable]
		public class Footstep
		{
			// Token: 0x17000261 RID: 609
			// (get) Token: 0x06002721 RID: 10017 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x17000261")]
			public bool isStepping
			{
				[Token(Token = "0x6002721")]
				[Address(RVA = "0x14EA540", Offset = "0x14E9340", VA = "0x1814EA540")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x17000262 RID: 610
			// (get) Token: 0x06002722 RID: 10018 RVA: 0x00056D24 File Offset: 0x00054F24
			// (set) Token: 0x06002723 RID: 10019 RVA: 0x00056D38 File Offset: 0x00054F38
			[Token(Token = "0x17000262")]
			public float stepProgress
			{
				[Token(Token = "0x6002722")]
				[Address(RVA = "0x468190", Offset = "0x466F90", VA = "0x180468190")]
				get;
				[Token(Token = "0x6002723")]
				[Address(RVA = "0x475B00", Offset = "0x474900", VA = "0x180475B00")]
				private set;
			}

			// Token: 0x06002724 RID: 10020 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002724")]
			[Address(RVA = "0x14EA3F0", Offset = "0x14E91F0", VA = "0x1814EA3F0")]
			public Footstep(Quaternion rootRotation, Vector3 footPosition, Quaternion footRotation, Vector3 characterSpaceOffset)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002725 RID: 10021 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002725")]
			[Address(RVA = "0x14E9E10", Offset = "0x14E8C10", VA = "0x1814E9E10")]
			public void Reset(Quaternion rootRotation, Vector3 footPosition, Quaternion footRotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002726 RID: 10022 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002726")]
			[Address(RVA = "0x14E9EB0", Offset = "0x14E8CB0", VA = "0x1814E9EB0")]
			public void StepTo(Vector3 p, Quaternion rootRotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002727 RID: 10023 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002727")]
			[Address(RVA = "0x14EA0A0", Offset = "0x14E8EA0", VA = "0x1814EA0A0")]
			public void UpdateStepping(Vector3 p, Quaternion rootRotation, float speed)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002728 RID: 10024 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002728")]
			[Address(RVA = "0x14E9F30", Offset = "0x14E8D30", VA = "0x1814E9F30")]
			public void UpdateStanding(Quaternion rootRotation, float minAngle, float speed)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002729 RID: 10025 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002729")]
			[Address(RVA = "0x14EA240", Offset = "0x14E9040", VA = "0x1814EA240")]
			public void Update(InterpolationMode interpolation, UnityEvent onStep)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x04003064 RID: 12388
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x4003064")]
			public float stepSpeed;

			// Token: 0x04003065 RID: 12389
			[FieldOffset(Offset = "0x14")]
			[Token(Token = "0x4003065")]
			public Vector3 characterSpaceOffset;

			// Token: 0x04003066 RID: 12390
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x4003066")]
			public Vector3 position;

			// Token: 0x04003067 RID: 12391
			[FieldOffset(Offset = "0x2C")]
			[Token(Token = "0x4003067")]
			public Quaternion rotation;

			// Token: 0x04003068 RID: 12392
			[FieldOffset(Offset = "0x3C")]
			[Token(Token = "0x4003068")]
			public Quaternion stepToRootRot;

			// Token: 0x04003069 RID: 12393
			[FieldOffset(Offset = "0x4C")]
			[Token(Token = "0x4003069")]
			public bool isSupportLeg;

			// Token: 0x0400306B RID: 12395
			[FieldOffset(Offset = "0x54")]
			[Token(Token = "0x400306B")]
			public Vector3 stepFrom;

			// Token: 0x0400306C RID: 12396
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x400306C")]
			public Vector3 stepTo;

			// Token: 0x0400306D RID: 12397
			[FieldOffset(Offset = "0x6C")]
			[Token(Token = "0x400306D")]
			public Quaternion stepFromRot;

			// Token: 0x0400306E RID: 12398
			[FieldOffset(Offset = "0x7C")]
			[Token(Token = "0x400306E")]
			public Quaternion stepToRot;

			// Token: 0x0400306F RID: 12399
			[FieldOffset(Offset = "0x8C")]
			[Token(Token = "0x400306F")]
			private Quaternion footRelativeToRoot;

			// Token: 0x04003070 RID: 12400
			[FieldOffset(Offset = "0x9C")]
			[Token(Token = "0x4003070")]
			private float supportLegW;

			// Token: 0x04003071 RID: 12401
			[FieldOffset(Offset = "0xA0")]
			[Token(Token = "0x4003071")]
			private float supportLegWV;
		}

		// Token: 0x0200043E RID: 1086
		[Token(Token = "0x200043E")]
		[Serializable]
		public class Leg : IKSolverVR.BodyPart
		{
			// Token: 0x17000263 RID: 611
			// (get) Token: 0x0600272A RID: 10026 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x0600272B RID: 10027 RVA: 0x00056D4C File Offset: 0x00054F4C
			[Token(Token = "0x17000263")]
			public Vector3 position
			{
				[Token(Token = "0x600272A")]
				[Address(RVA = "0x14ED990", Offset = "0x14EC790", VA = "0x1814ED990")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x600272B")]
				[Address(RVA = "0x14ED9F0", Offset = "0x14EC7F0", VA = "0x1814ED9F0")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<position>k__BackingField.z = z;
				}
			}

			// Token: 0x17000264 RID: 612
			// (get) Token: 0x0600272C RID: 10028 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x0600272D RID: 10029 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x17000264")]
			public Quaternion rotation
			{
				[Token(Token = "0x600272C")]
				[Address(RVA = "0x14ED9B0", Offset = "0x14EC7B0", VA = "0x1814ED9B0")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x600272D")]
				[Address(RVA = "0x14EDA10", Offset = "0x14EC810", VA = "0x1814EDA10")]
				[CompilerGenerated]
				private set
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x17000265 RID: 613
			// (get) Token: 0x0600272E RID: 10030 RVA: 0x00056D6C File Offset: 0x00054F6C
			// (set) Token: 0x0600272F RID: 10031 RVA: 0x00056D80 File Offset: 0x00054F80
			[Token(Token = "0x17000265")]
			public bool hasToes
			{
				[Token(Token = "0x600272E")]
				[Address(RVA = "0x1003040", Offset = "0x1001E40", VA = "0x181003040")]
				get;
				[Token(Token = "0x600272F")]
				[Address(RVA = "0x14ED9E0", Offset = "0x14EC7E0", VA = "0x1814ED9E0")]
				private set;
			}

			// Token: 0x17000266 RID: 614
			// (get) Token: 0x06002730 RID: 10032 RVA: 0x00056D94 File Offset: 0x00054F94
			[Token(Token = "0x17000266")]
			public IKSolverVR.VirtualBone thigh
			{
				[Token(Token = "0x6002730")]
				[Address(RVA = "0xA61DD0", Offset = "0xA60BD0", VA = "0x180A61DD0")]
				get
				{
					return this.bones[0];
				}
			}

			// Token: 0x17000267 RID: 615
			// (get) Token: 0x06002731 RID: 10033 RVA: 0x00056DB4 File Offset: 0x00054FB4
			[Token(Token = "0x17000267")]
			private IKSolverVR.VirtualBone calf
			{
				[Token(Token = "0x6002731")]
				[Address(RVA = "0x14E59C0", Offset = "0x14E47C0", VA = "0x1814E59C0")]
				get
				{
					return this.bones[1];
				}
			}

			// Token: 0x17000268 RID: 616
			// (get) Token: 0x06002732 RID: 10034 RVA: 0x00056DD4 File Offset: 0x00054FD4
			[Token(Token = "0x17000268")]
			private IKSolverVR.VirtualBone foot
			{
				[Token(Token = "0x6002732")]
				[Address(RVA = "0x14E5910", Offset = "0x14E4710", VA = "0x1814E5910")]
				get
				{
					return this.bones[2];
				}
			}

			// Token: 0x17000269 RID: 617
			// (get) Token: 0x06002733 RID: 10035 RVA: 0x00056DF4 File Offset: 0x00054FF4
			[Token(Token = "0x17000269")]
			private IKSolverVR.VirtualBone toes
			{
				[Token(Token = "0x6002733")]
				[Address(RVA = "0x14E5950", Offset = "0x14E4750", VA = "0x1814E5950")]
				get
				{
					return this.bones[3];
				}
			}

			// Token: 0x1700026A RID: 618
			// (get) Token: 0x06002734 RID: 10036 RVA: 0x00056E14 File Offset: 0x00055014
			[Token(Token = "0x1700026A")]
			public IKSolverVR.VirtualBone lastBone
			{
				[Token(Token = "0x6002734")]
				[Address(RVA = "0x14ED950", Offset = "0x14EC750", VA = "0x1814ED950")]
				get
				{
					IKSolverVR.VirtualBone[] bones = this.bones;
					int num = bones.Length - 1;
					return bones[num];
				}
			}

			// Token: 0x1700026B RID: 619
			// (get) Token: 0x06002735 RID: 10037 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x06002736 RID: 10038 RVA: 0x00056E40 File Offset: 0x00055040
			[Token(Token = "0x1700026B")]
			public Vector3 thighRelativeToPelvis
			{
				[Token(Token = "0x6002735")]
				[Address(RVA = "0x14ED9C0", Offset = "0x14EC7C0", VA = "0x1814ED9C0")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x6002736")]
				[Address(RVA = "0x14EDA20", Offset = "0x14EC820", VA = "0x1814EDA20")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<thighRelativeToPelvis>k__BackingField.z = z;
				}
			}

			// Token: 0x06002737 RID: 10039 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002737")]
			[Address(RVA = "0x14EC180", Offset = "0x14EAF80", VA = "0x1814EC180", Slot = "4")]
			protected override void OnRead(Vector3[] positions, Quaternion[] rotations, bool hasChest, bool hasNeck, bool hasShoulders, bool hasToes, int rootIndex, int index)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002738 RID: 10040 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002738")]
			[Address(RVA = "0x14ECAD0", Offset = "0x14EB8D0", VA = "0x1814ECAD0", Slot = "5")]
			public override void PreSolve()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002739 RID: 10041 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002739")]
			[Address(RVA = "0x14EB520", Offset = "0x14EA320", VA = "0x1814EB520", Slot = "7")]
			public override void ApplyOffsets()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600273A RID: 10042 RVA: 0x00056E60 File Offset: 0x00055060
			[Token(Token = "0x600273A")]
			[Address(RVA = "0x14EBE50", Offset = "0x14EAC50", VA = "0x1814EBE50")]
			private void ApplyPositionOffset(Vector3 offset, float weight)
			{
				if (0 < (int)weight)
				{
					float z = this.footPosition.z;
					this.footPosition.z = z;
					float z2 = this.<position>k__BackingField.z;
					this.<position>k__BackingField.z = z2;
				}
			}

			// Token: 0x0600273B RID: 10043 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600273B")]
			[Address(RVA = "0x14EBF40", Offset = "0x14EAD40", VA = "0x1814EBF40")]
			private void ApplyRotationOffset(Quaternion offset, float weight)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600273C RID: 10044 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600273C")]
			[Address(RVA = "0x14ED180", Offset = "0x14EBF80", VA = "0x1814ED180")]
			public void Solve()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600273D RID: 10045 RVA: 0x00056EA4 File Offset: 0x000550A4
			[Token(Token = "0x600273D")]
			[Address(RVA = "0x14ED6C0", Offset = "0x14EC4C0", VA = "0x1814ED6C0", Slot = "6")]
			public override void Write(ref Vector3[] solvedPositions, ref Quaternion[] solvedRotations)
			{
				IKSolverVR.VirtualBone[] array = this.bones;
				int index = this.index;
				IKSolverVR.VirtualBone virtualBone = array[0];
				array += array;
				IKSolverVR.VirtualBone virtualBone2 = this.bones[1];
				int num = this.index;
				num++;
				num += 2;
				num += num;
				IKSolverVR.VirtualBone virtualBone3 = this.bones[2];
				int num2 = this.index;
				num2 += 2;
				num2 += 2;
				num2 += num2;
				if (this.<hasToes>k__BackingField)
				{
					IKSolverVR.VirtualBone[] array2 = this.bones;
					IKSolverVR.VirtualBone virtualBone4 = array2[3];
					array2 += array2;
				}
			}

			// Token: 0x0600273E RID: 10046 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600273E")]
			[Address(RVA = "0x14ED110", Offset = "0x14EBF10", VA = "0x1814ED110", Slot = "8")]
			public override void ResetOffsets()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600273F RID: 10047 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600273F")]
			[Address(RVA = "0x14ED890", Offset = "0x14EC690", VA = "0x1814ED890")]
			public Leg()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x04003072 RID: 12402
			[FieldOffset(Offset = "0x48")]
			[Token(Token = "0x4003072")]
			[Tooltip("The toe/foot target.")]
			public Transform target;

			// Token: 0x04003073 RID: 12403
			[FieldOffset(Offset = "0x50")]
			[Token(Token = "0x4003073")]
			[Tooltip("The knee will be bent towards this Transform if 'Bend Goal Weight' > 0.")]
			public Transform bendGoal;

			// Token: 0x04003074 RID: 12404
			[FieldOffset(Offset = "0x58")]
			[Token(Token = "0x4003074")]
			[Range(0f, 1f)]
			[Tooltip("Positional weight of the toe/foot target.")]
			public float positionWeight;

			// Token: 0x04003075 RID: 12405
			[FieldOffset(Offset = "0x5C")]
			[Token(Token = "0x4003075")]
			[Range(0f, 1f)]
			[Tooltip("Rotational weight of the toe/foot target.")]
			public float rotationWeight;

			// Token: 0x04003076 RID: 12406
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x4003076")]
			[Tooltip("If greater than 0, will bend the knee towards the 'Bend Goal' Transform.")]
			[Range(0f, 1f)]
			public float bendGoalWeight;

			// Token: 0x04003077 RID: 12407
			[FieldOffset(Offset = "0x64")]
			[Token(Token = "0x4003077")]
			[Range(-180f, 180f)]
			[Tooltip("Angular offset of the knee bending direction.")]
			public float swivelOffset;

			// Token: 0x04003078 RID: 12408
			[FieldOffset(Offset = "0x68")]
			[Token(Token = "0x4003078")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 IKPosition;

			// Token: 0x04003079 RID: 12409
			[FieldOffset(Offset = "0x74")]
			[Token(Token = "0x4003079")]
			[HideInInspector]
			[NonSerialized]
			public Quaternion IKRotation;

			// Token: 0x0400307A RID: 12410
			[FieldOffset(Offset = "0x84")]
			[Token(Token = "0x400307A")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 footPositionOffset;

			// Token: 0x0400307B RID: 12411
			[FieldOffset(Offset = "0x90")]
			[Token(Token = "0x400307B")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 heelPositionOffset;

			// Token: 0x0400307C RID: 12412
			[FieldOffset(Offset = "0x9C")]
			[Token(Token = "0x400307C")]
			[HideInInspector]
			[NonSerialized]
			public Quaternion footRotationOffset;

			// Token: 0x0400307D RID: 12413
			[FieldOffset(Offset = "0xAC")]
			[Token(Token = "0x400307D")]
			[HideInInspector]
			[NonSerialized]
			public float currentMag;

			// Token: 0x04003082 RID: 12418
			[FieldOffset(Offset = "0xDC")]
			[Token(Token = "0x4003082")]
			private Vector3 footPosition;

			// Token: 0x04003083 RID: 12419
			[FieldOffset(Offset = "0xE8")]
			[Token(Token = "0x4003083")]
			private Quaternion footRotation;

			// Token: 0x04003084 RID: 12420
			[FieldOffset(Offset = "0xF8")]
			[Token(Token = "0x4003084")]
			private Vector3 bendNormal;

			// Token: 0x04003085 RID: 12421
			[FieldOffset(Offset = "0x104")]
			[Token(Token = "0x4003085")]
			private Quaternion calfRelToThigh;
		}

		// Token: 0x0200043F RID: 1087
		[Token(Token = "0x200043F")]
		[Serializable]
		public class Locomotion
		{
			// Token: 0x1700026C RID: 620
			// (get) Token: 0x06002740 RID: 10048 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x06002741 RID: 10049 RVA: 0x00056F44 File Offset: 0x00055144
			[Token(Token = "0x1700026C")]
			public Vector3 centerOfMass
			{
				[Token(Token = "0x6002740")]
				[Address(RVA = "0x14F10D0", Offset = "0x14EFED0", VA = "0x1814F10D0")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x6002741")]
				[Address(RVA = "0x14F1250", Offset = "0x14F0050", VA = "0x1814F1250")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<centerOfMass>k__BackingField.z = z;
				}
			}

			// Token: 0x06002742 RID: 10050 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002742")]
			[Address(RVA = "0x14EE550", Offset = "0x14ED350", VA = "0x1814EE550")]
			public void Initiate(Vector3[] positions, Quaternion[] rotations, bool hasToes)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002743 RID: 10051 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002743")]
			[Address(RVA = "0x14EEAE0", Offset = "0x14ED8E0", VA = "0x1814EEAE0")]
			public void Reset(Vector3[] positions, Quaternion[] rotations)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002744 RID: 10052 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002744")]
			[Address(RVA = "0x14EDD20", Offset = "0x14ECB20", VA = "0x1814EDD20")]
			public void AddDeltaRotation(Quaternion delta, Vector3 pivot)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002745 RID: 10053 RVA: 0x00056F64 File Offset: 0x00055164
			[Token(Token = "0x6002745")]
			[Address(RVA = "0x14EDB60", Offset = "0x14EC960", VA = "0x1814EDB60")]
			public void AddDeltaPosition(Vector3 delta)
			{
				float z = delta.z;
				IKSolverVR.Footstep[] array = this.footsteps;
				int num = 0;
				this.lastComPosition.z = z;
				int length = array.Length;
				if (num < length)
				{
					IKSolverVR.Footstep footstep = array[num];
					float z2 = delta.z;
					footstep.position.z = z2;
					float z3 = delta.z;
					footstep.stepFrom.z = z3;
					float z4 = delta.z;
					num++;
					footstep.stepTo.z = z4;
				}
			}

			// Token: 0x06002746 RID: 10054 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002746")]
			[Address(RVA = "0x14EEF00", Offset = "0x14EDD00", VA = "0x1814EEF00")]
			public void Solve(IKSolverVR.VirtualBone rootBone, IKSolverVR.Spine spine, IKSolverVR.Leg leftLeg, IKSolverVR.Leg rightLeg, IKSolverVR.Arm leftArm, IKSolverVR.Arm rightArm, int supportLegIndex, out Vector3 leftFootPosition, out Vector3 rightFootPosition, out Quaternion leftFootRotation, out Quaternion rightFootRotation, out float leftFootOffset, out float rightFootOffset, out float leftHeelOffset, out float rightHeelOffset)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x1700026D RID: 621
			// (get) Token: 0x06002747 RID: 10055 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x1700026D")]
			public Vector3 leftFootstepPosition
			{
				[Token(Token = "0x6002747")]
				[Address(RVA = "0x14F10F0", Offset = "0x14EFEF0", VA = "0x1814F10F0")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x1700026E RID: 622
			// (get) Token: 0x06002748 RID: 10056 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x1700026E")]
			public Vector3 rightFootstepPosition
			{
				[Token(Token = "0x6002748")]
				[Address(RVA = "0x14F11A0", Offset = "0x14EFFA0", VA = "0x1814F11A0")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x1700026F RID: 623
			// (get) Token: 0x06002749 RID: 10057 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x1700026F")]
			public Quaternion leftFootstepRotation
			{
				[Token(Token = "0x6002749")]
				[Address(RVA = "0x14F1150", Offset = "0x14EFF50", VA = "0x1814F1150")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x17000270 RID: 624
			// (get) Token: 0x0600274A RID: 10058 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x17000270")]
			public Quaternion rightFootstepRotation
			{
				[Token(Token = "0x600274A")]
				[Address(RVA = "0x14F1200", Offset = "0x14F0000", VA = "0x1814F1200")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x0600274B RID: 10059 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600274B")]
			[Address(RVA = "0x14F0DC0", Offset = "0x14EFBC0", VA = "0x1814F0DC0")]
			private bool StepBlocked(Vector3 fromPosition, Vector3 toPosition, Vector3 rootPosition)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600274C RID: 10060 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600274C")]
			[Address(RVA = "0x14EE2E0", Offset = "0x14ED0E0", VA = "0x1814EE2E0")]
			private bool CanStep()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600274D RID: 10061 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600274D")]
			[Address(RVA = "0x14EE360", Offset = "0x14ED160", VA = "0x1814EE360")]
			private static bool GetLineSphereCollision(Vector3 lineStart, Vector3 lineEnd, Vector3 sphereCenter, float sphereRadius)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600274E RID: 10062 RVA: 0x00056FF0 File Offset: 0x000551F0
			[Token(Token = "0x600274E")]
			[Address(RVA = "0x14F0FA0", Offset = "0x14EFDA0", VA = "0x1814F0FA0")]
			public Locomotion()
			{
				UnityEvent unityEvent = new UnityEvent();
				this.onLeftFootstep = unityEvent;
				UnityEvent unityEvent2 = new UnityEvent();
				this.onRightFootstep = unityEvent2;
				IKSolverVR.Footstep[] array = new IKSolverVR.Footstep[0];
				this.footsteps = array;
				base..ctor();
			}

			// Token: 0x04003086 RID: 12422
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x4003086")]
			[Range(0f, 1f)]
			[Tooltip("Used for blending in/out of procedural locomotion.")]
			public float weight = 1f;

			// Token: 0x04003087 RID: 12423
			[FieldOffset(Offset = "0x14")]
			[Token(Token = "0x4003087")]
			[Tooltip("Tries to maintain this distance between the legs.")]
			public float footDistance = 0.3f;

			// Token: 0x04003088 RID: 12424
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x4003088")]
			[Tooltip("Makes a step only if step target position is at least this far from the current footstep or the foot does not reach the current footstep anymore or footstep angle is past the 'Angle Threshold'.")]
			public float stepThreshold = 0.4f;

			// Token: 0x04003089 RID: 12425
			[FieldOffset(Offset = "0x1C")]
			[Token(Token = "0x4003089")]
			[Tooltip("Makes a step only if step target position is at least 'Step Threshold' far from the current footstep or the foot does not reach the current footstep anymore or footstep angle is past this value.")]
			public float angleThreshold = 60f;

			// Token: 0x0400308A RID: 12426
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x400308A")]
			[Tooltip("Multiplies angle of the center of mass - center of pressure vector. Larger value makes the character step sooner if losing balance.")]
			public float comAngleMlp = 1f;

			// Token: 0x0400308B RID: 12427
			[FieldOffset(Offset = "0x24")]
			[Token(Token = "0x400308B")]
			[Tooltip("Maximum magnitude of head/hand target velocity used in prediction.")]
			public float maxVelocity = 0.4f;

			// Token: 0x0400308C RID: 12428
			[FieldOffset(Offset = "0x28")]
			[Token(Token = "0x400308C")]
			[Tooltip("The amount of head/hand target velocity prediction.")]
			public float velocityFactor = 0.4f;

			// Token: 0x0400308D RID: 12429
			[FieldOffset(Offset = "0x2C")]
			[Token(Token = "0x400308D")]
			[Range(0.9f, 1f)]
			[Tooltip("How much can a leg be extended before it is forced to step to another position? 1 means fully stretched.")]
			public float maxLegStretch = 1f;

			// Token: 0x0400308E RID: 12430
			[FieldOffset(Offset = "0x30")]
			[Token(Token = "0x400308E")]
			[Tooltip("The speed of lerping the root of the character towards the horizontal mid-point of the footsteps.")]
			public float rootSpeed = 20f;

			// Token: 0x0400308F RID: 12431
			[FieldOffset(Offset = "0x34")]
			[Token(Token = "0x400308F")]
			[Tooltip("The speed of steps.")]
			public float stepSpeed = 3f;

			// Token: 0x04003090 RID: 12432
			[FieldOffset(Offset = "0x38")]
			[Token(Token = "0x4003090")]
			[Tooltip("The height of the foot by normalized step progress (0 - 1).")]
			public AnimationCurve stepHeight;

			// Token: 0x04003091 RID: 12433
			[FieldOffset(Offset = "0x40")]
			[Token(Token = "0x4003091")]
			[Tooltip("The height offset of the heel by normalized step progress (0 - 1).")]
			public AnimationCurve heelHeight;

			// Token: 0x04003092 RID: 12434
			[FieldOffset(Offset = "0x48")]
			[Token(Token = "0x4003092")]
			[Range(0f, 180f)]
			[Tooltip("Rotates the foot while the leg is not stepping to relax the twist rotation of the leg if ideal rotation is past this angle.")]
			public float relaxLegTwistMinAngle = 20f;

			// Token: 0x04003093 RID: 12435
			[FieldOffset(Offset = "0x4C")]
			[Token(Token = "0x4003093")]
			[Tooltip("The speed of rotating the foot while the leg is not stepping to relax the twist rotation of the leg.")]
			public float relaxLegTwistSpeed = 400f;

			// Token: 0x04003094 RID: 12436
			[FieldOffset(Offset = "0x50")]
			[Token(Token = "0x4003094")]
			[Tooltip("Interpolation mode of the step.")]
			public InterpolationMode stepInterpolation = (InterpolationMode)((ulong)3L);

			// Token: 0x04003095 RID: 12437
			[FieldOffset(Offset = "0x54")]
			[Token(Token = "0x4003095")]
			[Tooltip("Offset for the approximated center of mass.")]
			public Vector3 offset;

			// Token: 0x04003096 RID: 12438
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x4003096")]
			[HideInInspector]
			public bool blockingEnabled;

			// Token: 0x04003097 RID: 12439
			[FieldOffset(Offset = "0x64")]
			[Token(Token = "0x4003097")]
			[HideInInspector]
			public LayerMask blockingLayers;

			// Token: 0x04003098 RID: 12440
			[FieldOffset(Offset = "0x68")]
			[Token(Token = "0x4003098")]
			[HideInInspector]
			public float raycastRadius = 0.2f;

			// Token: 0x04003099 RID: 12441
			[FieldOffset(Offset = "0x6C")]
			[Token(Token = "0x4003099")]
			[HideInInspector]
			public float raycastHeight = 0.2f;

			// Token: 0x0400309A RID: 12442
			[FieldOffset(Offset = "0x70")]
			[Token(Token = "0x400309A")]
			[Tooltip("Called when the left foot has finished a step.")]
			public UnityEvent onLeftFootstep;

			// Token: 0x0400309B RID: 12443
			[FieldOffset(Offset = "0x78")]
			[Token(Token = "0x400309B")]
			[Tooltip("Called when the right foot has finished a step")]
			public UnityEvent onRightFootstep;

			// Token: 0x0400309D RID: 12445
			[FieldOffset(Offset = "0x90")]
			[Token(Token = "0x400309D")]
			private IKSolverVR.Footstep[] footsteps;

			// Token: 0x0400309E RID: 12446
			[FieldOffset(Offset = "0x98")]
			[Token(Token = "0x400309E")]
			private Vector3 lastComPosition;

			// Token: 0x0400309F RID: 12447
			[FieldOffset(Offset = "0xA4")]
			[Token(Token = "0x400309F")]
			private Vector3 comVelocity;

			// Token: 0x040030A0 RID: 12448
			[FieldOffset(Offset = "0xB0")]
			[Token(Token = "0x40030A0")]
			private int leftFootIndex;

			// Token: 0x040030A1 RID: 12449
			[FieldOffset(Offset = "0xB4")]
			[Token(Token = "0x40030A1")]
			private int rightFootIndex;
		}

		// Token: 0x02000440 RID: 1088
		[Token(Token = "0x2000440")]
		[Serializable]
		public class Spine : IKSolverVR.BodyPart
		{
			// Token: 0x17000271 RID: 625
			// (get) Token: 0x0600274F RID: 10063 RVA: 0x000570D0 File Offset: 0x000552D0
			[Token(Token = "0x17000271")]
			public IKSolverVR.VirtualBone pelvis
			{
				[Token(Token = "0x600274F")]
				[Address(RVA = "0x14F77F0", Offset = "0x14F65F0", VA = "0x1814F77F0")]
				get
				{
					IKSolverVR.VirtualBone[] bones = this.bones;
					int num = this.pelvisIndex;
					return bones[num];
				}
			}

			// Token: 0x17000272 RID: 626
			// (get) Token: 0x06002750 RID: 10064 RVA: 0x000570F8 File Offset: 0x000552F8
			[Token(Token = "0x17000272")]
			public IKSolverVR.VirtualBone firstSpineBone
			{
				[Token(Token = "0x6002750")]
				[Address(RVA = "0x14F7730", Offset = "0x14F6530", VA = "0x1814F7730")]
				get
				{
					IKSolverVR.VirtualBone[] bones = this.bones;
					int num = this.spineIndex;
					return bones[num];
				}
			}

			// Token: 0x17000273 RID: 627
			// (get) Token: 0x06002751 RID: 10065 RVA: 0x00057120 File Offset: 0x00055320
			[Token(Token = "0x17000273")]
			public IKSolverVR.VirtualBone chest
			{
				[Token(Token = "0x6002751")]
				[Address(RVA = "0x14F76C0", Offset = "0x14F64C0", VA = "0x1814F76C0")]
				get
				{
					IKSolverVR.VirtualBone[] bones = this.bones;
					if (!this.hasChest)
					{
						int num = this.spineIndex;
					}
					int num2 = this.chestIndex;
					return bones[num2];
				}
			}

			// Token: 0x17000274 RID: 628
			// (get) Token: 0x06002752 RID: 10066 RVA: 0x00057158 File Offset: 0x00055358
			[Token(Token = "0x17000274")]
			private IKSolverVR.VirtualBone neck
			{
				[Token(Token = "0x6002752")]
				[Address(RVA = "0x14F77B0", Offset = "0x14F65B0", VA = "0x1814F77B0")]
				get
				{
					IKSolverVR.VirtualBone[] bones = this.bones;
					int num = this.neckIndex;
					return bones[num];
				}
			}

			// Token: 0x17000275 RID: 629
			// (get) Token: 0x06002753 RID: 10067 RVA: 0x00057180 File Offset: 0x00055380
			[Token(Token = "0x17000275")]
			public IKSolverVR.VirtualBone head
			{
				[Token(Token = "0x6002753")]
				[Address(RVA = "0x14F7770", Offset = "0x14F6570", VA = "0x1814F7770")]
				get
				{
					IKSolverVR.VirtualBone[] bones = this.bones;
					int num = this.headIndex;
					return bones[num];
				}
			}

			// Token: 0x17000276 RID: 630
			// (get) Token: 0x06002754 RID: 10068 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x06002755 RID: 10069 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x17000276")]
			public Quaternion anchorRotation
			{
				[Token(Token = "0x6002754")]
				[Address(RVA = "0x14F76B0", Offset = "0x14F64B0", VA = "0x1814F76B0")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x6002755")]
				[Address(RVA = "0x14F7830", Offset = "0x14F6630", VA = "0x1814F7830")]
				[CompilerGenerated]
				private set
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x06002756 RID: 10070 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002756")]
			[Address(RVA = "0x14F4B20", Offset = "0x14F3920", VA = "0x1814F4B20", Slot = "4")]
			protected override void OnRead(Vector3[] positions, Quaternion[] rotations, bool hasChest, bool hasNeck, bool hasShoulders, bool hasToes, int rootIndex, int index)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002757 RID: 10071 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002757")]
			[Address(RVA = "0x14F58D0", Offset = "0x14F46D0", VA = "0x1814F58D0", Slot = "5")]
			public override void PreSolve()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002758 RID: 10072 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002758")]
			[Address(RVA = "0x14F37F0", Offset = "0x14F25F0", VA = "0x1814F37F0", Slot = "7")]
			public override void ApplyOffsets()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002759 RID: 10073 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002759")]
			[Address(RVA = "0x14F4380", Offset = "0x14F3180", VA = "0x1814F4380")]
			private void CalculateChestTargetRotation(IKSolverVR.VirtualBone rootBone, IKSolverVR.Arm[] arms)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600275A RID: 10074 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600275A")]
			[Address(RVA = "0x14F6090", Offset = "0x14F4E90", VA = "0x1814F6090")]
			public void Solve(IKSolverVR.VirtualBone rootBone, IKSolverVR.Leg[] legs, IKSolverVR.Arm[] arms)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600275B RID: 10075 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600275B")]
			[Address(RVA = "0x14F5C30", Offset = "0x14F4A30", VA = "0x1814F5C30")]
			private void SolvePelvis()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600275C RID: 10076 RVA: 0x000571A8 File Offset: 0x000553A8
			[Token(Token = "0x600275C")]
			[Address(RVA = "0x14F7200", Offset = "0x14F6000", VA = "0x1814F7200", Slot = "6")]
			public override void Write(ref Vector3[] solvedPositions, ref Quaternion[] solvedRotations)
			{
				int index = this.index;
				IKSolverVR.VirtualBone virtualBone = this.bones[0];
				IKSolverVR.VirtualBone[] array = this.bones;
				int index2 = this.index;
				IKSolverVR.VirtualBone virtualBone2 = array[0];
				array += array;
				IKSolverVR.VirtualBone virtualBone3 = this.bones[1];
				int num = this.index;
				num++;
				num += 2;
				num += num;
				if (this.hasChest)
				{
					IKSolverVR.VirtualBone[] bones = this.bones;
					int num2 = this.chestIndex;
					IKSolverVR.VirtualBone virtualBone4 = bones[num2];
					int num3 = this.index;
					num3 += 2;
					num3 += 2;
					num3 += num3;
				}
				if (this.hasNeck)
				{
					IKSolverVR.VirtualBone[] bones2 = this.bones;
					int num4 = this.neckIndex;
					IKSolverVR.VirtualBone virtualBone5 = bones2[num4];
					int num5 = this.index;
					num5 += 3;
					num5 += 2;
					num5 += num5;
				}
				IKSolverVR.VirtualBone[] bones3 = this.bones;
				int num6 = this.headIndex;
				IKSolverVR.VirtualBone virtualBone6 = bones3[num6];
				num6 += 2;
				num6 += num6;
			}

			// Token: 0x0600275D RID: 10077 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600275D")]
			[Address(RVA = "0x14F5B80", Offset = "0x14F4980", VA = "0x1814F5B80", Slot = "8")]
			public override void ResetOffsets()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600275E RID: 10078 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600275E")]
			[Address(RVA = "0x14F3350", Offset = "0x14F2150", VA = "0x1814F3350")]
			private void AdjustChestByHands(ref Quaternion chestTargetRotation, IKSolverVR.Arm[] arms)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600275F RID: 10079 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600275F")]
			[Address(RVA = "0x14F4560", Offset = "0x14F3360", VA = "0x1814F4560")]
			public void InverseTranslateToHead(IKSolverVR.Leg[] legs, bool limited, bool useCurrentLegMag, Vector3 offset, float w)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002760 RID: 10080 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002760")]
			[Address(RVA = "0x14F6BA0", Offset = "0x14F59A0", VA = "0x1814F6BA0")]
			private void TranslatePelvis(IKSolverVR.Leg[] legs, Vector3 deltaPosition, Quaternion deltaRotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002761 RID: 10081 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002761")]
			[Address(RVA = "0x14F47A0", Offset = "0x14F35A0", VA = "0x1814F47A0")]
			private Vector3 LimitPelvisPosition(IKSolverVR.Leg[] legs, Vector3 pelvisPosition, bool useCurrentLegMag, int it = 2)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002762 RID: 10082 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002762")]
			[Address(RVA = "0x14F3E40", Offset = "0x14F2C40", VA = "0x1814F3E40")]
			private void Bend(IKSolverVR.VirtualBone[] bones, int firstIndex, int lastIndex, Quaternion targetRotation, float clampWeight, bool uniformWeight, float w)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002763 RID: 10083 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002763")]
			[Address(RVA = "0x14F40D0", Offset = "0x14F2ED0", VA = "0x1814F40D0")]
			private void Bend(IKSolverVR.VirtualBone[] bones, int firstIndex, int lastIndex, Quaternion targetRotation, Quaternion rotationOffset, float clampWeight, bool uniformWeight, float w)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002764 RID: 10084 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002764")]
			[Address(RVA = "0x14F74D0", Offset = "0x14F62D0", VA = "0x1814F74D0")]
			public Spine()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x040030A2 RID: 12450
			[FieldOffset(Offset = "0x48")]
			[Token(Token = "0x40030A2")]
			[Tooltip("The head target.")]
			public Transform headTarget;

			// Token: 0x040030A3 RID: 12451
			[FieldOffset(Offset = "0x50")]
			[Token(Token = "0x40030A3")]
			[Tooltip("The pelvis target, useful with seated rigs.")]
			public Transform pelvisTarget;

			// Token: 0x040030A4 RID: 12452
			[FieldOffset(Offset = "0x58")]
			[Token(Token = "0x40030A4")]
			[Tooltip("Positional weight of the head target.")]
			[Range(0f, 1f)]
			public float positionWeight;

			// Token: 0x040030A5 RID: 12453
			[FieldOffset(Offset = "0x5C")]
			[Token(Token = "0x40030A5")]
			[Tooltip("Rotational weight of the head target.")]
			[Range(0f, 1f)]
			public float rotationWeight;

			// Token: 0x040030A6 RID: 12454
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x40030A6")]
			[Range(0f, 1f)]
			[Tooltip("Positional weight of the pelvis target.")]
			public float pelvisPositionWeight;

			// Token: 0x040030A7 RID: 12455
			[FieldOffset(Offset = "0x64")]
			[Token(Token = "0x40030A7")]
			[Tooltip("Rotational weight of the pelvis target.")]
			[Range(0f, 1f)]
			public float pelvisRotationWeight;

			// Token: 0x040030A8 RID: 12456
			[FieldOffset(Offset = "0x68")]
			[Token(Token = "0x40030A8")]
			[Tooltip("If 'Chest Goal Weight' is greater than 0, the chest will be turned towards this Transform.")]
			public Transform chestGoal;

			// Token: 0x040030A9 RID: 12457
			[FieldOffset(Offset = "0x70")]
			[Token(Token = "0x40030A9")]
			[Range(0f, 1f)]
			[Tooltip("Rotational weight of the chest target.")]
			public float chestGoalWeight;

			// Token: 0x040030AA RID: 12458
			[FieldOffset(Offset = "0x74")]
			[Token(Token = "0x40030AA")]
			[Tooltip("Minimum height of the head from the root of the character.")]
			public float minHeadHeight;

			// Token: 0x040030AB RID: 12459
			[FieldOffset(Offset = "0x78")]
			[Token(Token = "0x40030AB")]
			[Tooltip("Determines how much the body will follow the position of the head.")]
			[Range(0f, 1f)]
			public float bodyPosStiffness;

			// Token: 0x040030AC RID: 12460
			[FieldOffset(Offset = "0x7C")]
			[Token(Token = "0x40030AC")]
			[Tooltip("Determines how much the body will follow the rotation of the head.")]
			[Range(0f, 1f)]
			public float bodyRotStiffness;

			// Token: 0x040030AD RID: 12461
			[FieldOffset(Offset = "0x80")]
			[Token(Token = "0x40030AD")]
			[Tooltip("Determines how much the chest will rotate to the rotation of the head.")]
			[FormerlySerializedAs("chestRotationWeight")]
			[Range(0f, 1f)]
			public float neckStiffness;

			// Token: 0x040030AE RID: 12462
			[FieldOffset(Offset = "0x84")]
			[Token(Token = "0x40030AE")]
			[Tooltip("Clamps chest rotation.")]
			[Range(0f, 1f)]
			public float chestClampWeight;

			// Token: 0x040030AF RID: 12463
			[FieldOffset(Offset = "0x88")]
			[Token(Token = "0x40030AF")]
			[Range(0f, 1f)]
			[Tooltip("Clamps head rotation.")]
			public float headClampWeight;

			// Token: 0x040030B0 RID: 12464
			[FieldOffset(Offset = "0x8C")]
			[Token(Token = "0x40030B0")]
			[Tooltip("How much will the pelvis maintain it's animated position?")]
			[Range(0f, 1f)]
			public float maintainPelvisPosition;

			// Token: 0x040030B1 RID: 12465
			[FieldOffset(Offset = "0x90")]
			[Token(Token = "0x40030B1")]
			[Tooltip("Will automatically rotate the root of the character if the head target has turned past this angle.")]
			[Range(0f, 180f)]
			public float maxRootAngle;

			// Token: 0x040030B2 RID: 12466
			[FieldOffset(Offset = "0x94")]
			[Token(Token = "0x40030B2")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 IKPositionHead;

			// Token: 0x040030B3 RID: 12467
			[FieldOffset(Offset = "0xA0")]
			[Token(Token = "0x40030B3")]
			[HideInInspector]
			[NonSerialized]
			public Quaternion IKRotationHead;

			// Token: 0x040030B4 RID: 12468
			[FieldOffset(Offset = "0xB0")]
			[Token(Token = "0x40030B4")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 IKPositionPelvis;

			// Token: 0x040030B5 RID: 12469
			[FieldOffset(Offset = "0xBC")]
			[Token(Token = "0x40030B5")]
			[HideInInspector]
			[NonSerialized]
			public Quaternion IKRotationPelvis;

			// Token: 0x040030B6 RID: 12470
			[FieldOffset(Offset = "0xCC")]
			[Token(Token = "0x40030B6")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 goalPositionChest;

			// Token: 0x040030B7 RID: 12471
			[FieldOffset(Offset = "0xD8")]
			[Token(Token = "0x40030B7")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 pelvisPositionOffset;

			// Token: 0x040030B8 RID: 12472
			[FieldOffset(Offset = "0xE4")]
			[Token(Token = "0x40030B8")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 chestPositionOffset;

			// Token: 0x040030B9 RID: 12473
			[FieldOffset(Offset = "0xF0")]
			[Token(Token = "0x40030B9")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 headPositionOffset;

			// Token: 0x040030BA RID: 12474
			[FieldOffset(Offset = "0xFC")]
			[Token(Token = "0x40030BA")]
			[HideInInspector]
			[NonSerialized]
			public Quaternion pelvisRotationOffset;

			// Token: 0x040030BB RID: 12475
			[FieldOffset(Offset = "0x10C")]
			[Token(Token = "0x40030BB")]
			[HideInInspector]
			[NonSerialized]
			public Quaternion chestRotationOffset;

			// Token: 0x040030BC RID: 12476
			[FieldOffset(Offset = "0x11C")]
			[Token(Token = "0x40030BC")]
			[HideInInspector]
			[NonSerialized]
			public Quaternion headRotationOffset;

			// Token: 0x040030BD RID: 12477
			[FieldOffset(Offset = "0x12C")]
			[Token(Token = "0x40030BD")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 faceDirection;

			// Token: 0x040030BE RID: 12478
			[FieldOffset(Offset = "0x138")]
			[Token(Token = "0x40030BE")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 locomotionHeadPositionOffset;

			// Token: 0x040030BF RID: 12479
			[FieldOffset(Offset = "0x144")]
			[Token(Token = "0x40030BF")]
			[HideInInspector]
			[NonSerialized]
			public Vector3 headPosition;

			// Token: 0x040030C1 RID: 12481
			[FieldOffset(Offset = "0x160")]
			[Token(Token = "0x40030C1")]
			private Quaternion headRotation;

			// Token: 0x040030C2 RID: 12482
			[FieldOffset(Offset = "0x170")]
			[Token(Token = "0x40030C2")]
			private Quaternion anchorRelativeToHead;

			// Token: 0x040030C3 RID: 12483
			[FieldOffset(Offset = "0x180")]
			[Token(Token = "0x40030C3")]
			private Quaternion pelvisRelativeRotation;

			// Token: 0x040030C4 RID: 12484
			[FieldOffset(Offset = "0x190")]
			[Token(Token = "0x40030C4")]
			private Quaternion chestRelativeRotation;

			// Token: 0x040030C5 RID: 12485
			[FieldOffset(Offset = "0x1A0")]
			[Token(Token = "0x40030C5")]
			private Vector3 headDeltaPosition;

			// Token: 0x040030C6 RID: 12486
			[FieldOffset(Offset = "0x1AC")]
			[Token(Token = "0x40030C6")]
			private Quaternion pelvisDeltaRotation;

			// Token: 0x040030C7 RID: 12487
			[FieldOffset(Offset = "0x1BC")]
			[Token(Token = "0x40030C7")]
			private Quaternion chestTargetRotation;

			// Token: 0x040030C8 RID: 12488
			[FieldOffset(Offset = "0x1CC")]
			[Token(Token = "0x40030C8")]
			private int pelvisIndex;

			// Token: 0x040030C9 RID: 12489
			[FieldOffset(Offset = "0x1D0")]
			[Token(Token = "0x40030C9")]
			private int spineIndex;

			// Token: 0x040030CA RID: 12490
			[FieldOffset(Offset = "0x1D4")]
			[Token(Token = "0x40030CA")]
			private int chestIndex;

			// Token: 0x040030CB RID: 12491
			[FieldOffset(Offset = "0x1D8")]
			[Token(Token = "0x40030CB")]
			private int neckIndex;

			// Token: 0x040030CC RID: 12492
			[FieldOffset(Offset = "0x1DC")]
			[Token(Token = "0x40030CC")]
			private int headIndex;

			// Token: 0x040030CD RID: 12493
			[FieldOffset(Offset = "0x1E0")]
			[Token(Token = "0x40030CD")]
			private float length;

			// Token: 0x040030CE RID: 12494
			[FieldOffset(Offset = "0x1E4")]
			[Token(Token = "0x40030CE")]
			private bool hasChest;

			// Token: 0x040030CF RID: 12495
			[FieldOffset(Offset = "0x1E5")]
			[Token(Token = "0x40030CF")]
			private bool hasNeck;

			// Token: 0x040030D0 RID: 12496
			[FieldOffset(Offset = "0x1E8")]
			[Token(Token = "0x40030D0")]
			private float headHeight;

			// Token: 0x040030D1 RID: 12497
			[FieldOffset(Offset = "0x1EC")]
			[Token(Token = "0x40030D1")]
			private float sizeMlp;

			// Token: 0x040030D2 RID: 12498
			[FieldOffset(Offset = "0x1F0")]
			[Token(Token = "0x40030D2")]
			private Vector3 chestForward;
		}

		// Token: 0x02000441 RID: 1089
		[Token(Token = "0x2000441")]
		[Serializable]
		public enum PositionOffset
		{
			// Token: 0x040030D4 RID: 12500
			[Token(Token = "0x40030D4")]
			Pelvis,
			// Token: 0x040030D5 RID: 12501
			[Token(Token = "0x40030D5")]
			Chest,
			// Token: 0x040030D6 RID: 12502
			[Token(Token = "0x40030D6")]
			Head,
			// Token: 0x040030D7 RID: 12503
			[Token(Token = "0x40030D7")]
			LeftHand,
			// Token: 0x040030D8 RID: 12504
			[Token(Token = "0x40030D8")]
			RightHand,
			// Token: 0x040030D9 RID: 12505
			[Token(Token = "0x40030D9")]
			LeftFoot,
			// Token: 0x040030DA RID: 12506
			[Token(Token = "0x40030DA")]
			RightFoot,
			// Token: 0x040030DB RID: 12507
			[Token(Token = "0x40030DB")]
			LeftHeel,
			// Token: 0x040030DC RID: 12508
			[Token(Token = "0x40030DC")]
			RightHeel
		}

		// Token: 0x02000442 RID: 1090
		[Token(Token = "0x2000442")]
		[Serializable]
		public enum RotationOffset
		{
			// Token: 0x040030DE RID: 12510
			[Token(Token = "0x40030DE")]
			Pelvis,
			// Token: 0x040030DF RID: 12511
			[Token(Token = "0x40030DF")]
			Chest,
			// Token: 0x040030E0 RID: 12512
			[Token(Token = "0x40030E0")]
			Head
		}

		// Token: 0x02000443 RID: 1091
		[Token(Token = "0x2000443")]
		[Serializable]
		public class VirtualBone
		{
			// Token: 0x06002765 RID: 10085 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002765")]
			[Address(RVA = "0x14FB7E0", Offset = "0x14FA5E0", VA = "0x1814FB7E0")]
			public VirtualBone(Vector3 position, Quaternion rotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002766 RID: 10086 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002766")]
			[Address(RVA = "0x14F9B80", Offset = "0x14F8980", VA = "0x1814F9B80")]
			public void Read(Vector3 position, Quaternion rotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002767 RID: 10087 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002767")]
			[Address(RVA = "0x14FB590", Offset = "0x14FA390", VA = "0x1814FB590")]
			public static void SwingRotation(IKSolverVR.VirtualBone[] bones, int index, Vector3 swingTarget, float weight = 1f)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002768 RID: 10088 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002768")]
			[Address(RVA = "0x14F97F0", Offset = "0x14F85F0", VA = "0x1814F97F0")]
			public static float PreSolve(ref IKSolverVR.VirtualBone[] bones)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002769 RID: 10089 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002769")]
			[Address(RVA = "0x14F9BB0", Offset = "0x14F89B0", VA = "0x1814F9BB0")]
			public static void RotateAroundPoint(IKSolverVR.VirtualBone[] bones, int index, Vector3 point, Quaternion rotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600276A RID: 10090 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600276A")]
			[Address(RVA = "0x14F9DC0", Offset = "0x14F8BC0", VA = "0x1814F9DC0")]
			public static void RotateBy(IKSolverVR.VirtualBone[] bones, int index, Quaternion rotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600276B RID: 10091 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600276B")]
			[Address(RVA = "0x14F9FE0", Offset = "0x14F8DE0", VA = "0x1814F9FE0")]
			public static void RotateBy(IKSolverVR.VirtualBone[] bones, Quaternion rotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600276C RID: 10092 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600276C")]
			[Address(RVA = "0x14FA200", Offset = "0x14F9000", VA = "0x1814FA200")]
			public static void RotateTo(IKSolverVR.VirtualBone[] bones, int index, Quaternion rotation)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600276D RID: 10093 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600276D")]
			[Address(RVA = "0x14FABD0", Offset = "0x14F99D0", VA = "0x1814FABD0")]
			public static void SolveTrigonometric(IKSolverVR.VirtualBone[] bones, int first, int second, int third, Vector3 targetPosition, Vector3 bendNormal, float weight)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600276E RID: 10094 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600276E")]
			[Address(RVA = "0x14F9620", Offset = "0x14F8420", VA = "0x1814F9620")]
			private static Vector3 GetDirectionToBendPoint(Vector3 direction, float directionMag, Vector3 bendDirection, float sqrMag1, float sqrMag2)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600276F RID: 10095 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600276F")]
			[Address(RVA = "0x14FA6B0", Offset = "0x14F94B0", VA = "0x1814FA6B0")]
			public static void SolveFABRIK(IKSolverVR.VirtualBone[] bones, Vector3 startPosition, Vector3 targetPosition, float weight, float minNormalizedTargetDistance, int iterations, float length)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002770 RID: 10096 RVA: 0x000572BC File Offset: 0x000554BC
			[Token(Token = "0x6002770")]
			[Address(RVA = "0x14FA590", Offset = "0x14F9390", VA = "0x1814FA590")]
			private static Vector3 SolveFABRIKJoint(Vector3 pos1, Vector3 pos2, float length)
			{
				Vector3 normalized = pos1.normalized;
				pos1.z = normalized;
				return pos1;
			}

			// Token: 0x06002771 RID: 10097 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002771")]
			[Address(RVA = "0x14FA2E0", Offset = "0x14F90E0", VA = "0x1814FA2E0")]
			public static void SolveCCD(IKSolverVR.VirtualBone[] bones, Vector3 targetPosition, float weight, int iterations)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x040030E1 RID: 12513
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x40030E1")]
			public Vector3 readPosition;

			// Token: 0x040030E2 RID: 12514
			[FieldOffset(Offset = "0x1C")]
			[Token(Token = "0x40030E2")]
			public Quaternion readRotation;

			// Token: 0x040030E3 RID: 12515
			[FieldOffset(Offset = "0x2C")]
			[Token(Token = "0x40030E3")]
			public Vector3 solverPosition;

			// Token: 0x040030E4 RID: 12516
			[FieldOffset(Offset = "0x38")]
			[Token(Token = "0x40030E4")]
			public Quaternion solverRotation;

			// Token: 0x040030E5 RID: 12517
			[FieldOffset(Offset = "0x48")]
			[Token(Token = "0x40030E5")]
			public float length;

			// Token: 0x040030E6 RID: 12518
			[FieldOffset(Offset = "0x4C")]
			[Token(Token = "0x40030E6")]
			public float sqrMag;

			// Token: 0x040030E7 RID: 12519
			[FieldOffset(Offset = "0x50")]
			[Token(Token = "0x40030E7")]
			public Vector3 axis;
		}
	}
}
