namespace peepeecaca
{

	// [TypeInfo RVA: 0x0]
	public class FastIKFabric : MonoBehaviour
	{
		public int ChainLength; // 0x20
		public UnityEngine.Transform Target; // 0x28
		public UnityEngine.Transform Pole; // 0x30
		public int Iterations; // 0x38
		public float Delta; // 0x3C
		public float SnapBackStrength; // 0x40
		protected System.Single[] BonesLength; // 0x48
		protected float CompleteLength; // 0x50
		protected UnityEngine.Transform[] Bones; // 0x58
		protected UnityEngine.Vector3[] Positions; // 0x60
		protected UnityEngine.Vector3[] StartDirectionSucc; // 0x68
		protected UnityEngine.Quaternion[] StartRotationBone; // 0x70
		protected UnityEngine.Quaternion StartRotationTarget; // 0x78
		protected UnityEngine.Transform Root; // 0x88

		// RVA: 0x32794E0 VA: 0x78189644E0
		private void Awake();
		/*
		 *   long lVar1;
		 *   ulong uVar2;
		 *   float *pfVar3;
		 *   undefined *puVar4;
		 *   undefined *puVar5;
		 *   undefined *puVar6;
		 *   undefined *puVar7;
		 *   undefined *puVar8;
		 *   void *pvVar9;
		 *   void **ppvVar10;
		 *   ulong uVar11;
		 *   void *pvVar12;
		 *   long lVar13;
		 *   undefined8 uVar14;
		 *   void *pvVar15;
		 *   int iVar16;
		 *   uint uVar17;
		 *   void **ppvVar18;
		 *   long lVar19;
		 *   long lVar20;
		 *   void **ppvVar21;
		 *   long lVar22;
		 *   long lVar23;
		 *   long *plVar24;
		 *   void *pvVar25;
		 *   float fVar26;
		 *   float fVar27;
		 *   float fVar28;
		 *   UnityEngine_Vector3 UVar29;
		 *   UnityEngine_Vector3 UVar30;
		 *   UnityEngine_Vector4 UVar31;
		 *
		 *   puVar8 = PTR_DAT_070c56d0;
		 *   puVar7 = PTR_DAT_070c32a8;
		 *   puVar6 = PTR_DAT_070c1d88;
		 *   puVar5 = PTR_DAT_070c0f68;
		 *   if ((bRam000000000754ac38 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_GameObject_6FC1548);
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     func_0x031fdc8c(PTR_DAT_070c56d0);
		 *     func_0x031fdc8c(PTR_DAT_070c0f68);
		 *     func_0x031fdc8c(PTR_DAT_070c32a8);
		 *     func_0x031fdc8c(PTR_DAT_070c1d88);
		 *     func_0x031fdc8c(PTR_DAT_070c56d8);
		 *     bRam000000000754ac38 = 1;
		 *   }
		 *   puVar4 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar7,this.ChainLength + 1);
		 *   ppvVar18 = &this.Bones;
		 *   *ppvVar18 = pvVar9;
		 *   func_0x031fdc38(ppvVar18,pvVar9);
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar6,this.ChainLength + 1);
		 *   this.Positions = pvVar9;
		 *   func_0x031fdc38();
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar5,this.ChainLength);
		 *   this.BonesLength = pvVar9;
		 *   func_0x031fdc38();
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar6,this.ChainLength + 1);
		 *   ppvVar10 = &this.StartDirectionSucc;
		 *   *ppvVar10 = pvVar9;
		 *   func_0x031fdc38();
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar8,this.ChainLength + 1);
		 *   this.StartRotationBone = pvVar9;
		 *   func_0x031fdc38();
		 *   pvVar9 = UnityEngine.Component.get_transform(this);
		 *   ppvVar21 = &this.Root;
		 *   *ppvVar21 = pvVar9;
		 *   func_0x031fdc38(ppvVar21,pvVar9);
		 *   if (-1 < this.ChainLength) {
		 *     iVar16 = 0;
		 *     do {
		 *       pvVar9 = *ppvVar21;
		 *       if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *       }
		 *       uVar11 = UnityEngine.Object.op_Equality(pvVar9,null);
		 *       if ((uVar11 & 1) != 0) {
		 *         func_0x031fdca0(PTR_DAT_070c56e0);
		 *         pvVar9 = (void *)func_0x031fdf24();
		 *         pvVar15 = (void *)func_0x031fdca0(PTR_DAT_070c56e8);
		 *         UnityEngine.UnityException..ctor(pvVar9,pvVar15);
		 *         uVar14 = func_0x031fdca0(PTR_DAT_070c56f0);
		 *         IL2CPP.ThrowManagedException();
		 *       }
		 *       if (*ppvVar21 == null) goto LAB_03379a6c;
		 *       pvVar9 = UnityEngine.Transform.get_parent(*ppvVar21);
		 *       this.Root = pvVar9;
		 *       func_0x031fdc38(ppvVar21,pvVar9);
		 *       iVar16 = iVar16 + 1;
		 *     } while (iVar16 <= this.ChainLength);
		 *   }
		 *   pvVar9 = this.Target;
		 *   if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   pvVar15 = null;
		 *   uVar11 = UnityEngine.Object.op_Equality(pvVar9,null);
		 *   if ((uVar11 & 1) != 0) {
		 *     pvVar9 = UnityEngine.Component.get_gameObject(this);
		 *     if (pvVar9 == null) goto LAB_03379a6c;
		 *     pvVar9 = UnityEngine.Object.get_name(pvVar9);
		 *     pvVar9 = System.String.Concat(pvVar9,*(void **)PTR_DAT_070c56d8);
		 *     pvVar12 = (void *)func_0x031fdf24(*(undefined8 *)
		 *                                        typeinfo_ptr_UnityEngine_CoreModule_GameObject_6FC1548);
		 *     pvVar15 = null;
		 *     UnityEngine.GameObject..ctor(pvVar12,pvVar9);
		 *     if (pvVar12 == null) goto LAB_03379a6c;
		 *     pvVar9 = UnityEngine.GameObject.get_transform(pvVar12);
		 *     this.Target = pvVar9;
		 *     func_0x031fdc38(&this.Target,pvVar9);
		 *     pvVar12 = this.Target;
		 *     pvVar9 = UnityEngine.Component.get_transform(this);
		 *     UVar29 = FastIKFabric.GetPositionRootSpace(this,pvVar9);
		 *     FastIKFabric.SetPositionRootSpace(this,pvVar12,UVar29);
		 *   }
		 *   UVar31 = FastIKFabric.GetRotationRootSpace(this,this.Target);
		 *   (this.StartRotationTarget).x = UVar31.x;
		 *   (this.StartRotationTarget).y = UVar31.y;
		 *   (this.StartRotationTarget).z = UVar31.z;
		 *   (this.StartRotationTarget).w = UVar31.w;
		 *   pvVar9 = UnityEngine.Component.get_transform(this);
		 *   this.CompleteLength = 0.0;
		 *   if (this.Bones != null) {
		 *     iVar16 = (int)*(undefined8 *)((long)this.Bones + 0x18);
		 *     uVar17 = iVar16 - 1;
		 *     uVar11 = (ulong)uVar17;
		 *     if (-1 < (int)uVar17) {
		 *       lVar23 = 0;
		 *       lVar1 = uVar11 * 4 + 0x20;
		 *       lVar22 = uVar11 * 0x10 + 0x20;
		 *       lVar19 = uVar11 * 8 + 0x20;
		 *       lVar20 = uVar11 * 0xc + 0x20;
		 *       do {
		 *         plVar24 = *ppvVar18;
		 *         if (plVar24 == null) goto LAB_03379a6c;
		 *         if ((pvVar9 != null) &&
		 *            (lVar13 = func_0x031fde0c(pvVar9,*(undefined8 *)(*plVar24 + 0x40)), lVar13 == 0)) {
		 *           uVar14 = func_0x031fdf58();
		 *           IL2CPP.ThrowManagedException();
		 *         }
		 *         uVar2 = uVar11 + lVar23;
		 *         if (*(uint *)(plVar24 + 3) <= uVar2) {
		 * LAB_03379a70:
		 *           IL2CPP.ThrowIndexOutOfRangeException();
		 *         }
		 *         plVar24[uVar11 + lVar23 + 4] = (long)pvVar9;
		 *         func_0x031fdc38((long)plVar24 + lVar19,pvVar9);
		 *         pvVar12 = this.StartRotationBone;
		 *         UVar31 = FastIKFabric.GetRotationRootSpace(this,pvVar9);
		 *         if (pvVar12 == null) goto LAB_03379a6c;
		 *         if (*(uint *)((long)pvVar12 + 0x18) <= uVar2) goto LAB_03379a70;
		 *         pfVar3 = (float *)((long)pvVar12 + lVar22);
		 *         *pfVar3 = UVar31.x;
		 *         pfVar3[1] = UVar31.y;
		 *         pfVar3[2] = UVar31.z;
		 *         pfVar3[3] = UVar31.w;
		 *         pvVar12 = *ppvVar18;
		 *         if (pvVar12 == null) goto LAB_03379a6c;
		 *         uVar17 = iVar16 + (int)lVar23;
		 *         pvVar25 = *ppvVar10;
		 *         if (uVar17 == *(uint *)((long)pvVar12 + 0x18)) {
		 *           UVar29 = FastIKFabric.GetPositionRootSpace(this,this.Target);
		 *           UVar30 = FastIKFabric.GetPositionRootSpace(this,pvVar9);
		 *           if (pvVar25 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar25 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           pfVar3 = (float *)((long)pvVar25 + lVar20);
		 *           *pfVar3 = UVar29.x - UVar30.x;
		 *           pfVar3[1] = UVar29.y - UVar30.y;
		 *           pfVar3[2] = UVar29.z - UVar30.z;
		 *         }
		 *         else {
		 *           if (*(uint *)((long)pvVar12 + 0x18) <= uVar17) goto LAB_03379a70;
		 *           UVar29 = FastIKFabric.GetPositionRootSpace(this,*(void **)((long)pvVar12 + (long)(int)uVar17 * 8 + 0x20))
		 *           ;
		 *           UVar30 = FastIKFabric.GetPositionRootSpace(this,pvVar9);
		 *           if (pvVar25 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar25 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           pfVar3 = (float *)((long)pvVar25 + lVar20);
		 *           *pfVar3 = UVar29.x - UVar30.x;
		 *           pfVar3[1] = UVar29.y - UVar30.y;
		 *           pfVar3[2] = UVar29.z - UVar30.z;
		 *           pvVar12 = *ppvVar10;
		 *           if (pvVar12 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar12 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           pvVar25 = this.BonesLength;
		 *           if (cRam000000000754a89e == '\0') {
		 *             func_0x031fdc8c(typeinfo_ptr_mscorlib_Math_6FC0738);
		 *             cRam000000000754a89e = '\x01';
		 *           }
		 *           pfVar3 = (float *)((long)pvVar12 + lVar20);
		 *           fVar27 = *pfVar3;
		 *           fVar28 = pfVar3[1];
		 *           fVar26 = pfVar3[2];
		 *           if (*(int *)(*(long *)typeinfo_ptr_mscorlib_Math_6FC0738 + 0xe4) == 0) {
		 *             func_0x031fde08();
		 *           }
		 *           if (pvVar25 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar25 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           pvVar12 = this.BonesLength;
		 *           *(float *)((long)pvVar25 + lVar23 * 4 + lVar1) =
		 *                SQRT(fVar27 * fVar27 + fVar28 * fVar28 + fVar26 * fVar26);
		 *           if (pvVar12 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar12 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           this.CompleteLength =
		 *                this.CompleteLength + *(float *)((long)pvVar12 + lVar23 * 4 + lVar1);
		 *         }
		 *         if (pvVar9 == null) goto LAB_03379a6c;
		 *         pvVar9 = UnityEngine.Transform.get_parent(pvVar9);
		 *         lVar23 = lVar23 + -1;
		 *         lVar20 = lVar20 + -0xc;
		 *         lVar22 = lVar22 + -0x10;
		 *         lVar19 = lVar19 + -8;
		 *       } while (0 < (long)(uVar11 + 1 + lVar23));
		 *     }
		 *     return;
		 *   }
		 * LAB_03379a6c:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x32794E4 VA: 0x78189644E4
		private void Init();
		/*
		 *   long lVar1;
		 *   ulong uVar2;
		 *   float *pfVar3;
		 *   undefined *puVar4;
		 *   undefined *puVar5;
		 *   undefined *puVar6;
		 *   undefined *puVar7;
		 *   undefined *puVar8;
		 *   void *pvVar9;
		 *   void **ppvVar10;
		 *   ulong uVar11;
		 *   void *pvVar12;
		 *   long lVar13;
		 *   undefined8 uVar14;
		 *   void *pvVar15;
		 *   int iVar16;
		 *   uint uVar17;
		 *   void **ppvVar18;
		 *   long lVar19;
		 *   long lVar20;
		 *   void **ppvVar21;
		 *   long lVar22;
		 *   long lVar23;
		 *   long *plVar24;
		 *   void *pvVar25;
		 *   float fVar26;
		 *   float fVar27;
		 *   float fVar28;
		 *   UnityEngine_Vector3 UVar29;
		 *   UnityEngine_Vector3 UVar30;
		 *   UnityEngine_Vector4 UVar31;
		 *
		 *   puVar8 = PTR_DAT_070c56d0;
		 *   puVar7 = PTR_DAT_070c32a8;
		 *   puVar6 = PTR_DAT_070c1d88;
		 *   puVar5 = PTR_DAT_070c0f68;
		 *   if ((bRam000000000754ac38 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_GameObject_6FC1548);
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     func_0x031fdc8c(PTR_DAT_070c56d0);
		 *     func_0x031fdc8c(PTR_DAT_070c0f68);
		 *     func_0x031fdc8c(PTR_DAT_070c32a8);
		 *     func_0x031fdc8c(PTR_DAT_070c1d88);
		 *     func_0x031fdc8c(PTR_DAT_070c56d8);
		 *     bRam000000000754ac38 = 1;
		 *   }
		 *   puVar4 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar7,this.ChainLength + 1);
		 *   ppvVar18 = &this.Bones;
		 *   *ppvVar18 = pvVar9;
		 *   func_0x031fdc38(ppvVar18,pvVar9);
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar6,this.ChainLength + 1);
		 *   this.Positions = pvVar9;
		 *   func_0x031fdc38();
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar5,this.ChainLength);
		 *   this.BonesLength = pvVar9;
		 *   func_0x031fdc38();
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar6,this.ChainLength + 1);
		 *   ppvVar10 = &this.StartDirectionSucc;
		 *   *ppvVar10 = pvVar9;
		 *   func_0x031fdc38();
		 *   pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)puVar8,this.ChainLength + 1);
		 *   this.StartRotationBone = pvVar9;
		 *   func_0x031fdc38();
		 *   pvVar9 = UnityEngine.Component.get_transform(this);
		 *   ppvVar21 = &this.Root;
		 *   *ppvVar21 = pvVar9;
		 *   func_0x031fdc38(ppvVar21,pvVar9);
		 *   if (-1 < this.ChainLength) {
		 *     iVar16 = 0;
		 *     do {
		 *       pvVar9 = *ppvVar21;
		 *       if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *       }
		 *       uVar11 = UnityEngine.Object.op_Equality(pvVar9,null);
		 *       if ((uVar11 & 1) != 0) {
		 *         func_0x031fdca0(PTR_DAT_070c56e0);
		 *         pvVar9 = (void *)func_0x031fdf24();
		 *         pvVar15 = (void *)func_0x031fdca0(PTR_DAT_070c56e8);
		 *         UnityEngine.UnityException..ctor(pvVar9,pvVar15);
		 *         uVar14 = func_0x031fdca0(PTR_DAT_070c56f0);
		 *         IL2CPP.ThrowManagedException();
		 *       }
		 *       if (*ppvVar21 == null) goto LAB_03379a6c;
		 *       pvVar9 = UnityEngine.Transform.get_parent(*ppvVar21);
		 *       this.Root = pvVar9;
		 *       func_0x031fdc38(ppvVar21,pvVar9);
		 *       iVar16 = iVar16 + 1;
		 *     } while (iVar16 <= this.ChainLength);
		 *   }
		 *   pvVar9 = this.Target;
		 *   if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   pvVar15 = null;
		 *   uVar11 = UnityEngine.Object.op_Equality(pvVar9,null);
		 *   if ((uVar11 & 1) != 0) {
		 *     pvVar9 = UnityEngine.Component.get_gameObject(this);
		 *     if (pvVar9 == null) goto LAB_03379a6c;
		 *     pvVar9 = UnityEngine.Object.get_name(pvVar9);
		 *     pvVar9 = System.String.Concat(pvVar9,*(void **)PTR_DAT_070c56d8);
		 *     pvVar12 = (void *)func_0x031fdf24(*(undefined8 *)
		 *                                        typeinfo_ptr_UnityEngine_CoreModule_GameObject_6FC1548);
		 *     pvVar15 = null;
		 *     UnityEngine.GameObject..ctor(pvVar12,pvVar9);
		 *     if (pvVar12 == null) goto LAB_03379a6c;
		 *     pvVar9 = UnityEngine.GameObject.get_transform(pvVar12);
		 *     this.Target = pvVar9;
		 *     func_0x031fdc38(&this.Target,pvVar9);
		 *     pvVar12 = this.Target;
		 *     pvVar9 = UnityEngine.Component.get_transform(this);
		 *     UVar29 = FastIKFabric.GetPositionRootSpace(this,pvVar9);
		 *     FastIKFabric.SetPositionRootSpace(this,pvVar12,UVar29);
		 *   }
		 *   UVar31 = FastIKFabric.GetRotationRootSpace(this,this.Target);
		 *   (this.StartRotationTarget).x = UVar31.x;
		 *   (this.StartRotationTarget).y = UVar31.y;
		 *   (this.StartRotationTarget).z = UVar31.z;
		 *   (this.StartRotationTarget).w = UVar31.w;
		 *   pvVar9 = UnityEngine.Component.get_transform(this);
		 *   this.CompleteLength = 0.0;
		 *   if (this.Bones != null) {
		 *     iVar16 = (int)*(undefined8 *)((long)this.Bones + 0x18);
		 *     uVar17 = iVar16 - 1;
		 *     uVar11 = (ulong)uVar17;
		 *     if (-1 < (int)uVar17) {
		 *       lVar23 = 0;
		 *       lVar1 = uVar11 * 4 + 0x20;
		 *       lVar22 = uVar11 * 0x10 + 0x20;
		 *       lVar19 = uVar11 * 8 + 0x20;
		 *       lVar20 = uVar11 * 0xc + 0x20;
		 *       do {
		 *         plVar24 = *ppvVar18;
		 *         if (plVar24 == null) goto LAB_03379a6c;
		 *         if ((pvVar9 != null) &&
		 *            (lVar13 = func_0x031fde0c(pvVar9,*(undefined8 *)(*plVar24 + 0x40)), lVar13 == 0)) {
		 *           uVar14 = func_0x031fdf58();
		 *           IL2CPP.ThrowManagedException();
		 *         }
		 *         uVar2 = uVar11 + lVar23;
		 *         if (*(uint *)(plVar24 + 3) <= uVar2) {
		 * LAB_03379a70:
		 *           IL2CPP.ThrowIndexOutOfRangeException();
		 *         }
		 *         plVar24[uVar11 + lVar23 + 4] = (long)pvVar9;
		 *         func_0x031fdc38((long)plVar24 + lVar19,pvVar9);
		 *         pvVar12 = this.StartRotationBone;
		 *         UVar31 = FastIKFabric.GetRotationRootSpace(this,pvVar9);
		 *         if (pvVar12 == null) goto LAB_03379a6c;
		 *         if (*(uint *)((long)pvVar12 + 0x18) <= uVar2) goto LAB_03379a70;
		 *         pfVar3 = (float *)((long)pvVar12 + lVar22);
		 *         *pfVar3 = UVar31.x;
		 *         pfVar3[1] = UVar31.y;
		 *         pfVar3[2] = UVar31.z;
		 *         pfVar3[3] = UVar31.w;
		 *         pvVar12 = *ppvVar18;
		 *         if (pvVar12 == null) goto LAB_03379a6c;
		 *         uVar17 = iVar16 + (int)lVar23;
		 *         pvVar25 = *ppvVar10;
		 *         if (uVar17 == *(uint *)((long)pvVar12 + 0x18)) {
		 *           UVar29 = FastIKFabric.GetPositionRootSpace(this,this.Target);
		 *           UVar30 = FastIKFabric.GetPositionRootSpace(this,pvVar9);
		 *           if (pvVar25 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar25 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           pfVar3 = (float *)((long)pvVar25 + lVar20);
		 *           *pfVar3 = UVar29.x - UVar30.x;
		 *           pfVar3[1] = UVar29.y - UVar30.y;
		 *           pfVar3[2] = UVar29.z - UVar30.z;
		 *         }
		 *         else {
		 *           if (*(uint *)((long)pvVar12 + 0x18) <= uVar17) goto LAB_03379a70;
		 *           UVar29 = FastIKFabric.GetPositionRootSpace(this,*(void **)((long)pvVar12 + (long)(int)uVar17 * 8 + 0x20))
		 *           ;
		 *           UVar30 = FastIKFabric.GetPositionRootSpace(this,pvVar9);
		 *           if (pvVar25 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar25 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           pfVar3 = (float *)((long)pvVar25 + lVar20);
		 *           *pfVar3 = UVar29.x - UVar30.x;
		 *           pfVar3[1] = UVar29.y - UVar30.y;
		 *           pfVar3[2] = UVar29.z - UVar30.z;
		 *           pvVar12 = *ppvVar10;
		 *           if (pvVar12 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar12 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           pvVar25 = this.BonesLength;
		 *           if (cRam000000000754a89e == '\0') {
		 *             func_0x031fdc8c(typeinfo_ptr_mscorlib_Math_6FC0738);
		 *             cRam000000000754a89e = '\x01';
		 *           }
		 *           pfVar3 = (float *)((long)pvVar12 + lVar20);
		 *           fVar27 = *pfVar3;
		 *           fVar28 = pfVar3[1];
		 *           fVar26 = pfVar3[2];
		 *           if (*(int *)(*(long *)typeinfo_ptr_mscorlib_Math_6FC0738 + 0xe4) == 0) {
		 *             func_0x031fde08();
		 *           }
		 *           if (pvVar25 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar25 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           pvVar12 = this.BonesLength;
		 *           *(float *)((long)pvVar25 + lVar23 * 4 + lVar1) =
		 *                SQRT(fVar27 * fVar27 + fVar28 * fVar28 + fVar26 * fVar26);
		 *           if (pvVar12 == null) goto LAB_03379a6c;
		 *           if (*(uint *)((long)pvVar12 + 0x18) <= uVar2) goto LAB_03379a70;
		 *           this.CompleteLength =
		 *                this.CompleteLength + *(float *)((long)pvVar12 + lVar23 * 4 + lVar1);
		 *         }
		 *         if (pvVar9 == null) goto LAB_03379a6c;
		 *         pvVar9 = UnityEngine.Transform.get_parent(pvVar9);
		 *         lVar23 = lVar23 + -1;
		 *         lVar20 = lVar20 + -0xc;
		 *         lVar22 = lVar22 + -0x10;
		 *         lVar19 = lVar19 + -8;
		 *       } while (0 < (long)(uVar11 + 1 + lVar23));
		 *     }
		 *     return;
		 *   }
		 * LAB_03379a6c:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3279E54 VA: 0x7818964E54
		private void LateUpdate();
		/*
		 *   ulong uVar1;
		 *   undefined8 *puVar2;
		 *   undefined4 *puVar3;
		 *   undefined *puVar4;
		 *   undefined *puVar5;
		 *   void *extraout_x1;
		 *   void *pvVar6;
		 *   uint uVar7;
		 *   float *pfVar8;
		 *   int iVar9;
		 *   void *pvVar10;
		 *   void *pvVar11;
		 *   ulong uVar12;
		 *   void *pvVar13;
		 *   long lVar14;
		 *   long lVar15;
		 *   long lVar16;
		 *   int iVar17;
		 *   ulong uVar18;
		 *   float fVar19;
		 *   float fVar20;
		 *   float fVar21;
		 *   float fVar22;
		 *   float fVar23;
		 *   undefined8 uVar24;
		 *   undefined8 uVar25;
		 *   undefined8 uVar26;
		 *   float fVar27;
		 *   float fVar28;
		 *   float fVar29;
		 *   float fVar30;
		 *   float fVar31;
		 *   float fVar32;
		 *   float fVar33;
		 *   float fVar34;
		 *   float fVar35;
		 *   float fVar36;
		 *   float fVar37;
		 *   UnityEngine_Vector3 UVar38;
		 *   UnityEngine_Vector3 UVar39;
		 *   undefined1 auVar40 [16];
		 *   UnityEngine_Vector4 rotation;
		 *   UnityEngine_Vector4 UVar41;
		 *   UnityEngine_Vector4 rotation_00;
		 *   UnityEngine_Vector4 rotation_01;
		 *   UnityEngine_Vector3 point;
		 *
		 *   puVar4 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac39 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac39 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   pvVar11 = this.Target;
		 *   if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar4,methodInfo);
		 *   }
		 *   pvVar6 = null;
		 *   auVar40 = UnityEngine.Object.op_Equality(pvVar11,null);
		 *   if ((auVar40._0_8_ & 1) != 0) {
		 *     return;
		 *   }
		 *   if (this.BonesLength != null) {
		 *     if (this.ChainLength != *(int *)((long)this.BonesLength + 0x18)) {
		 *       FastIKFabric.Init(this);
		 *     }
		 *     pvVar11 = this.Bones;
		 *     if (pvVar11 != null) {
		 *       uVar12 = 0;
		 *       lVar15 = 0;
		 *       do {
		 *         if ((long)(int)*(uint *)((long)pvVar11 + 0x18) <= (long)uVar12) {
		 *           UVar38 = FastIKFabric.GetPositionRootSpace(this,this.Target);
		 *           fVar33 = UVar38.z;
		 *           fVar34 = UVar38.y;
		 *           fVar32 = UVar38.x;
		 *           rotation = FastIKFabric.GetRotationRootSpace(this,this.Target);
		 *           pvVar11 = this.Bones;
		 *           if (pvVar11 != null) {
		 *             if (*(int *)((long)pvVar11 + 0x18) == 0) goto LAB_0337aacc;
		 *             UVar38 = FastIKFabric.GetPositionRootSpace(this,*(void **)((long)pvVar11 + 0x20));
		 *             fVar22 = fVar33 - UVar38.z;
		 *             pvVar11 = this.Positions;
		 *             fVar19 = fVar32 - UVar38.x;
		 *             fVar21 = fVar34 - UVar38.y;
		 *             if (fVar22 * fVar22 + fVar19 * fVar19 + fVar21 * fVar21 <
		 *                 this.CompleteLength * this.CompleteLength) {
		 *               if (pvVar11 != null) {
		 *                 lVar15 = 0;
		 *                 uVar12 = 0;
		 *                 goto LAB_0337a024;
		 *               }
		 *             }
		 *             else if (pvVar11 != null) {
		 *               if (*(int *)((long)pvVar11 + 0x18) == 0) goto LAB_0337aacc;
		 *               uVar25 = *(undefined8 *)((long)pvVar11 + 0x20);
		 *               fVar19 = *(float *)((long)pvVar11 + 0x28);
		 *               if (cRam000000000754a7cc == '\0') {
		 *                 func_0x031fdc8c(typeinfo_ptr_mscorlib_Math_6FC0738);
		 *                 cRam000000000754a7cc = '\x01';
		 *               }
		 *               fVar32 = fVar32 - (float)uVar25;
		 *               fVar34 = fVar34 - (float)((ulong)uVar25 >> 0x20);
		 *               fVar33 = fVar33 - fVar19;
		 *               if (*(int *)(*(long *)typeinfo_ptr_mscorlib_Math_6FC0738 + 0xe4) == 0) {
		 *                 func_0x031fde08();
		 *               }
		 *               fVar19 = SQRT(fVar33 * fVar33 + fVar32 * fVar32 + fVar34 * fVar34);
		 *               if (fVar19 <= _UNK_0134eeec) {
		 *                 if (cRam000000000754a7ce == '\0') {
		 *                   func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *                   cRam000000000754a7ce = '\x01';
		 *                 }
		 *                 uVar25 = **(undefined8 **)
		 *                            (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
		 *                 fVar33 = *(float *)(*(undefined8 **)
		 *                                      (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 +
		 *                                      0xb8) + 1);
		 *               }
		 *               else {
		 *                 fVar33 = fVar33 / fVar19;
		 *                 uVar25 = CONCAT44(fVar34 / fVar19,fVar32 / fVar19);
		 *               }
		 *               pvVar11 = this.Positions;
		 *               if (pvVar11 != null) {
		 *                 lVar15 = 8;
		 *                 lVar16 = 0;
		 *                 goto LAB_0337aa5c;
		 *               }
		 *             }
		 *           }
		 *           break;
		 *         }
		 *         if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         pvVar13 = this.Positions;
		 *         UVar38 = FastIKFabric.GetPositionRootSpace(this,*(void **)((long)pvVar11 + uVar12 * 8 + 0x20));
		 *         if (pvVar13 == null) break;
		 *         if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         uVar12 = uVar12 + 1;
		 *         *(float *)((long)pvVar13 + lVar15 + 0x20) = UVar38.x;
		 *         *(float *)((long)pvVar13 + lVar15 + 0x24) = UVar38.y;
		 *         *(float *)((long)pvVar13 + lVar15 + 0x28) = UVar38.z;
		 *         pvVar11 = this.Bones;
		 *         lVar15 = lVar15 + 0xc;
		 *       } while (pvVar11 != null);
		 *     }
		 *   }
		 *   goto LAB_0337aac8;
		 *   while( true ) {
		 *     if (*(uint *)((long)pvVar6 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *     fVar21 = this.SnapBackStrength;
		 *     uVar25 = *(undefined8 *)((long)pvVar11 + lVar15 + 0x20);
		 *     uVar26 = *(undefined8 *)((long)pvVar6 + lVar15 + 0x20);
		 *     fVar22 = *(float *)((long)pvVar6 + lVar15 + 0x28);
		 *     fVar27 = *(float *)((long)pvVar11 + lVar15 + 0x34);
		 *     fVar19 = 1.0;
		 *     if (fVar21 <= 1.0) {
		 *       fVar19 = fVar21;
		 *     }
		 *     uVar24 = *(undefined8 *)((long)pvVar11 + lVar15 + 0x2c);
		 *     fVar23 = (float)uVar24;
		 *     fVar28 = (float)((ulong)uVar24 >> 0x20);
		 *     fVar20 = 0.0;
		 *     if (0.0 <= fVar21) {
		 *       fVar20 = fVar19;
		 *     }
		 *     *(ulong *)((long)pvVar11 + lVar15 + 0x2c) =
		 *          CONCAT44(fVar28 + (((float)((ulong)uVar25 >> 0x20) + (float)((ulong)uVar26 >> 0x20)) -
		 *                            fVar28) * fVar20,
		 *                   fVar23 + (((float)uVar25 + (float)uVar26) - fVar23) * fVar20);
		 *     *(float *)((long)pvVar11 + lVar15 + 0x34) =
		 *          fVar27 + ((*(float *)((long)pvVar11 + lVar15 + 0x28) + fVar22) - fVar27) * fVar20;
		 *     pvVar11 = this.Positions;
		 *     lVar15 = lVar15 + 0xc;
		 *     uVar12 = uVar12 + 1;
		 *     if (pvVar11 == null) break;
		 * LAB_0337a024:
		 *     puVar4 = typeinfo_ptr_mscorlib_Math_6FC0738;
		 *     fVar19 = _UNK_0134eeec;
		 *     uVar18 = *(ulong *)((long)pvVar11 + 0x18);
		 *     if ((long)((int)uVar18 + -1) <= (long)uVar12) {
		 *       if (this.Iterations < 1) goto LAB_0337a48c;
		 *       iVar9 = 0;
		 *       goto LAB_0337a184;
		 *     }
		 *     if ((uVar18 & 0xffffffff) <= uVar12 + 1) goto LAB_0337aacc;
		 *     pvVar6 = this.StartDirectionSucc;
		 *     if (pvVar6 == null) break;
		 *   }
		 *   goto LAB_0337aac8;
		 *   while( true ) {
		 *     if ((ulong)*(uint *)((long)pvVar6 + 0x18) <= lVar15 - 8U) goto LAB_0337aacc;
		 *     fVar32 = *(float *)((long)pvVar6 + lVar15 * 4);
		 *     uVar26 = *(undefined8 *)((long)pvVar11 + lVar16 + 0x20);
		 *     lVar15 = lVar15 + 1;
		 *     *(ulong *)((long)pvVar11 + lVar16 + 0x2c) =
		 *          CONCAT44((float)((ulong)uVar26 >> 0x20) + (float)((ulong)uVar25 >> 0x20) * fVar32,
		 *                   (float)uVar26 + (float)uVar25 * fVar32);
		 *     *(float *)((long)pvVar11 + lVar16 + 0x34) =
		 *          *(float *)((long)pvVar11 + lVar16 + 0x28) + fVar33 * fVar32;
		 *     pvVar11 = this.Positions;
		 *     lVar16 = lVar16 + 0xc;
		 *     if (pvVar11 == null) break;
		 * LAB_0337aa5c:
		 *     if ((long)(int)*(uint *)((long)pvVar11 + 0x18) <= lVar15 + -7) goto LAB_0337a48c;
		 *     if ((ulong)*(uint *)((long)pvVar11 + 0x18) <= lVar15 - 8U) goto LAB_0337aacc;
		 *     pvVar6 = this.BonesLength;
		 *     if (pvVar6 == null) break;
		 *   }
		 *   goto LAB_0337aac8;
		 *   while( true ) {
		 *     lVar15 = 8;
		 *     lVar16 = 0;
		 *     while( true ) {
		 *       uVar18 = *(ulong *)((long)pvVar11 + 0x18);
		 *       iVar17 = (int)uVar18;
		 *       if ((long)iVar17 <= (long)(lVar15 - 7U)) break;
		 *       if ((uVar18 & 0xffffffff) <= lVar15 - 8U) goto LAB_0337aacc;
		 *       fVar22 = *(float *)((long)pvVar11 + lVar16 + 0x28);
		 *       uVar25 = *(undefined8 *)((long)pvVar11 + lVar16 + 0x20);
		 *       uVar26 = *(undefined8 *)((long)pvVar11 + lVar16 + 0x2c);
		 *       fVar21 = *(float *)((long)pvVar11 + lVar16 + 0x34);
		 *       if (cRam000000000754a7cc == '\0') {
		 *         func_0x031fdc8c(puVar4);
		 *         cRam000000000754a7cc = '\x01';
		 *       }
		 *       if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *       }
		 *       fVar28 = (float)uVar25;
		 *       fVar27 = (float)uVar26 - fVar28;
		 *       fVar30 = (float)((ulong)uVar25 >> 0x20);
		 *       fVar20 = (float)((ulong)uVar26 >> 0x20) - fVar30;
		 *       fVar21 = fVar21 - fVar22;
		 *       fVar23 = SQRT(fVar21 * fVar21 + fVar27 * fVar27 + fVar20 * fVar20);
		 *       if (fVar23 <= fVar19) {
		 *         if (cRam000000000754a7ce == '\0') {
		 *           func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *           cRam000000000754a7ce = '\x01';
		 *         }
		 *         uVar25 = **(undefined8 **)
		 *                    (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
		 *         fVar21 = *(float *)(*(undefined8 **)
		 *                              (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8) +
		 *                            1);
		 *       }
		 *       else {
		 *         fVar21 = fVar21 / fVar23;
		 *         uVar25 = CONCAT44(fVar20 / fVar23,fVar27 / fVar23);
		 *       }
		 *       pvVar6 = this.BonesLength;
		 *       if (pvVar6 == null) goto LAB_0337aac8;
		 *       if (((ulong)*(uint *)((long)pvVar6 + 0x18) <= lVar15 - 8U) ||
		 *          ((ulong)*(uint *)((long)pvVar11 + 0x18) <= lVar15 - 7U)) goto LAB_0337aacc;
		 *       fVar27 = *(float *)((long)pvVar6 + lVar15 * 4);
		 *       lVar15 = lVar15 + 1;
		 *       *(ulong *)((long)pvVar11 + lVar16 + 0x2c) =
		 *            CONCAT44(fVar30 + (float)((ulong)uVar25 >> 0x20) * fVar27,fVar28 + (float)uVar25 * fVar27
		 *                    );
		 *       *(float *)((long)pvVar11 + lVar16 + 0x34) = fVar22 + fVar21 * fVar27;
		 *       pvVar11 = this.Positions;
		 *       lVar16 = lVar16 + 0xc;
		 *       if (pvVar11 == null) goto LAB_0337aac8;
		 *     }
		 *     if (iVar17 == 0) goto LAB_0337aacc;
		 *     iVar17 = iVar17 + -1;
		 *     fVar21 = *(float *)((long)pvVar11 + (long)iVar17 * 0xc + 0x20) - fVar32;
		 *     fVar22 = *(float *)((long)pvVar11 + (long)iVar17 * 0xc + 0x24) - fVar34;
		 *     fVar27 = *(float *)((long)pvVar11 + (long)iVar17 * 0xc + 0x28) - fVar33;
		 *     if ((fVar21 * fVar21 + fVar22 * fVar22 + fVar27 * fVar27 < this.Delta * this.Delta) ||
		 *        (iVar9 = iVar9 + 1, this.Iterations <= iVar9)) break;
		 * LAB_0337a184:
		 *     uVar7 = (int)uVar18 - 1;
		 *     uVar12 = (ulong)uVar7;
		 *     if (0 < (int)uVar7) {
		 *       lVar16 = 0;
		 *       lVar15 = uVar12 * 0xc;
		 *       do {
		 *         pvVar11 = this.Positions;
		 *         if (pvVar11 == null) goto LAB_0337aac8;
		 *         uVar1 = uVar12 + lVar16;
		 *         uVar7 = (uint)(uVar18 + lVar16);
		 *         if (uVar7 == *(uint *)((long)pvVar11 + 0x18)) {
		 *           if ((uVar18 + lVar16 & 0xffffffff) <= uVar1) goto LAB_0337aacc;
		 *           *(float *)((long)pvVar11 + lVar15 + 0x28) = fVar33;
		 *           *(float *)((long)pvVar11 + lVar15 + 0x20) = fVar32;
		 *           *(float *)((long)pvVar11 + lVar15 + 0x24) = fVar34;
		 *         }
		 *         else {
		 *           if (*(uint *)((long)pvVar11 + 0x18) <= uVar7) goto LAB_0337aacc;
		 *           uVar26 = *(undefined8 *)((long)pvVar11 + lVar15 + 0x20);
		 *           fVar21 = *(float *)((long)pvVar11 + lVar15 + 0x28);
		 *           fVar22 = *(float *)((long)pvVar11 + (long)(int)uVar7 * 0xc + 0x28);
		 *           uVar25 = *(undefined8 *)((long)pvVar11 + (long)(int)uVar7 * 0xc + 0x20);
		 *           if (cRam000000000754a7cc == '\0') {
		 *             func_0x031fdc8c(puVar4);
		 *             cRam000000000754a7cc = '\x01';
		 *           }
		 *           if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *             func_0x031fde08();
		 *           }
		 *           fVar28 = (float)uVar25;
		 *           fVar27 = (float)uVar26 - fVar28;
		 *           fVar30 = (float)((ulong)uVar25 >> 0x20);
		 *           fVar20 = (float)((ulong)uVar26 >> 0x20) - fVar30;
		 *           fVar21 = fVar21 - fVar22;
		 *           fVar23 = SQRT(fVar21 * fVar21 + fVar27 * fVar27 + fVar20 * fVar20);
		 *           if (fVar23 <= fVar19) {
		 *             if (cRam000000000754a7ce == '\0') {
		 *               func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *               cRam000000000754a7ce = '\x01';
		 *             }
		 *             uVar25 = **(undefined8 **)
		 *                        (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
		 *             fVar21 = *(float *)(*(undefined8 **)
		 *                                  (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 +
		 *                                  0xb8) + 1);
		 *           }
		 *           else {
		 *             fVar21 = fVar21 / fVar23;
		 *             uVar25 = CONCAT44(fVar20 / fVar23,fVar27 / fVar23);
		 *           }
		 *           pvVar6 = this.BonesLength;
		 *           if (pvVar6 == null) goto LAB_0337aac8;
		 *           if ((*(uint *)((long)pvVar6 + 0x18) <= uVar1) ||
		 *              (*(uint *)((long)pvVar11 + 0x18) <= uVar1)) goto LAB_0337aacc;
		 *           fVar27 = *(float *)((long)pvVar6 + lVar16 * 4 + uVar12 * 4 + 0x20);
		 *           *(ulong *)((long)pvVar11 + lVar15 + 0x20) =
		 *                CONCAT44(fVar30 + (float)((ulong)uVar25 >> 0x20) * fVar27,
		 *                         fVar28 + (float)uVar25 * fVar27);
		 *           *(float *)((long)pvVar11 + lVar15 + 0x28) = fVar22 + fVar21 * fVar27;
		 *         }
		 *         lVar16 = lVar16 + -1;
		 *         lVar15 = lVar15 + -0xc;
		 *       } while (1 < (long)(uVar12 + 1 + lVar16));
		 *       pvVar11 = this.Positions;
		 *       if (pvVar11 == null) goto LAB_0337aac8;
		 *     }
		 *   }
		 * LAB_0337a48c:
		 *   pvVar11 = this.Pole;
		 *   if (*(int *)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   pvVar6 = null;
		 *   uVar12 = UnityEngine.Object.op_Inequality(pvVar11,null);
		 *   if ((uVar12 & 1) == 0) {
		 *     pvVar11 = this.Positions;
		 *     if (pvVar11 != null) {
		 * LAB_0337a75c:
		 *       lVar15 = 4;
		 *       lVar16 = 0x20;
		 *       lVar14 = 0x2c;
		 *       do {
		 *         uVar12 = lVar15 - 4;
		 *         uVar7 = (uint)*(undefined8 *)((long)pvVar11 + 0x18);
		 *         if ((long)(int)uVar7 <= (long)uVar12) {
		 *           return;
		 *         }
		 *         pvVar13 = this.Bones;
		 *         if (uVar12 == uVar7 - 1) {
		 *           if (pvVar13 == null) break;
		 *           if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *           pvVar13 = *(void **)((long)pvVar13 + lVar15 * 8);
		 *           UVar41 = UnityEngine.Quaternion.Inverse(rotation);
		 *           fVar27 = UVar41.w;
		 *           fVar22 = UVar41.z;
		 *           fVar21 = UVar41.y;
		 *           fVar19 = UVar41.x;
		 *           pvVar11 = this.StartRotationBone;
		 *           if (pvVar11 == null) break;
		 *           if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *           fVar30 = (this.StartRotationTarget).z;
		 *           fVar20 = (this.StartRotationTarget).w;
		 *           puVar3 = (undefined4 *)((long)pvVar11 + lVar14);
		 *           fVar23 = (this.StartRotationTarget).x;
		 *           fVar28 = (this.StartRotationTarget).y;
		 *           fVar32 = (fVar21 * fVar30 + fVar27 * fVar23 + fVar19 * fVar20) - fVar22 * fVar28;
		 *           fVar34 = (fVar22 * fVar23 + fVar27 * fVar28 + fVar21 * fVar20) - fVar19 * fVar30;
		 *           fVar33 = (fVar19 * fVar28 + fVar27 * fVar30 + fVar22 * fVar20) - fVar21 * fVar23;
		 *           fVar23 = ((fVar27 * fVar20 - fVar19 * fVar23) - fVar21 * fVar28) - fVar22 * fVar30;
		 *           rotation_00.z = puVar3[-1];
		 *           rotation_00.w = *puVar3;
		 *           rotation_00._0_8_ = *(undefined8 *)(puVar3 + -3);
		 *           UVar41 = UnityEngine.Quaternion.Inverse(rotation_00);
		 *           fVar27 = UVar41.w;
		 *           fVar20 = UVar41.z;
		 *           fVar21 = UVar41.y;
		 *           fVar19 = UVar41.x;
		 *           fVar28 = fVar23 * fVar19 + fVar32 * fVar27;
		 *           fVar30 = fVar34 * fVar20;
		 *           fVar37 = fVar34 * fVar19;
		 *           fVar29 = fVar23 * fVar21 + fVar34 * fVar27;
		 *           fVar31 = fVar33 * fVar19;
		 *           fVar22 = fVar33 * fVar21;
		 *           fVar35 = fVar23 * fVar20 + fVar33 * fVar27;
		 *           fVar36 = fVar32 * fVar21;
		 *           fVar33 = fVar33 * fVar20;
		 *           fVar19 = fVar23 * fVar27 - fVar32 * fVar19;
		 *           fVar34 = fVar34 * fVar21;
		 *         }
		 *         else {
		 *           if (pvVar13 == null) break;
		 *           if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) {
		 * LAB_0337aacc:
		 *             IL2CPP.ThrowIndexOutOfRangeException();
		 *           }
		 *           pvVar10 = this.StartDirectionSucc;
		 *           if (pvVar10 == null) break;
		 *           if ((*(uint *)((long)pvVar10 + 0x18) <= uVar12) || (uVar7 <= (int)lVar15 - 3U))
		 *           goto LAB_0337aacc;
		 *           puVar2 = (undefined8 *)((long)pvVar11 + lVar16);
		 *           pvVar13 = *(void **)((long)pvVar13 + lVar15 * 8);
		 *           UVar38.x = (float)*(undefined8 *)((long)puVar2 + 0xc) - (float)*puVar2;
		 *           UVar38.z = *(float *)((long)puVar2 + 0x14) - *(float *)(puVar2 + 1);
		 *           UVar38.y = (float)((ulong)*(undefined8 *)((long)puVar2 + 0xc) >> 0x20) -
		 *                      (float)((ulong)*puVar2 >> 0x20);
		 *           UVar41 = UnityEngine.Quaternion.FromToRotation(*(UnityEngine_Vector3 *)((long)pvVar10 + lVar16),UVar38);
		 *           fVar19 = UVar41.w;
		 *           fVar33 = UVar41.z;
		 *           fVar34 = UVar41.y;
		 *           fVar32 = UVar41.x;
		 *           pvVar11 = this.StartRotationBone;
		 *           if (pvVar11 == null) break;
		 *           if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *           puVar3 = (undefined4 *)((long)pvVar11 + lVar14);
		 *           UVar41.z = puVar3[-1];
		 *           UVar41.w = *puVar3;
		 *           UVar41._0_8_ = *(undefined8 *)(puVar3 + -3);
		 *           UVar41 = UnityEngine.Quaternion.Inverse(UVar41);
		 *           fVar23 = UVar41.w;
		 *           fVar20 = UVar41.z;
		 *           fVar27 = UVar41.y;
		 *           fVar21 = UVar41.x;
		 *           fVar28 = fVar19 * fVar21 + fVar32 * fVar23;
		 *           fVar30 = fVar34 * fVar20;
		 *           fVar37 = fVar34 * fVar21;
		 *           fVar29 = fVar19 * fVar27 + fVar34 * fVar23;
		 *           fVar31 = fVar33 * fVar21;
		 *           fVar22 = fVar33 * fVar27;
		 *           fVar35 = fVar19 * fVar20 + fVar33 * fVar23;
		 *           fVar36 = fVar32 * fVar27;
		 *           fVar33 = fVar33 * fVar20;
		 *           fVar19 = fVar19 * fVar23 - fVar32 * fVar21;
		 *           fVar34 = fVar34 * fVar27;
		 *         }
		 *         rotation_01.x = (fVar30 + fVar28) - fVar22;
		 *         rotation_01.y = (fVar31 + fVar29) - fVar32 * fVar20;
		 *         rotation_01.z = (fVar36 + fVar35) - fVar37;
		 *         rotation_01.w = (fVar19 - fVar34) - fVar33;
		 *         FastIKFabric.SetRotationRootSpace(this,pvVar13,rotation_01)
		 *         ;
		 *         pvVar11 = this.Bones;
		 *         if (pvVar11 == null) break;
		 *         if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         pvVar13 = this.Positions;
		 *         if (pvVar13 == null) break;
		 *         if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         FastIKFabric.SetPositionRootSpace(this,*(void **)((long)pvVar11 + lVar15 * 8),*(UnityEngine_Vector3 *)((long)pvVar13 + lVar16));
		 *         pvVar11 = this.Positions;
		 *         lVar15 = lVar15 + 1;
		 *         lVar16 = lVar16 + 0xc;
		 *         lVar14 = lVar14 + 0x10;
		 *       } while (pvVar11 != null);
		 *     }
		 *   }
		 *   else {
		 *     UVar38 = FastIKFabric.GetPositionRootSpace(this,this.Pole);
		 *     puVar5 = typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08;
		 *     puVar4 = typeinfo_ptr_mscorlib_Math_6FC0738;
		 *     fVar32 = _UNK_0134eeec;
		 *     pvVar11 = this.Positions;
		 *     if (pvVar11 != null) {
		 *       uVar12 = 1;
		 *       lVar15 = 0x20;
		 *       do {
		 *         uVar7 = (uint)*(undefined8 *)((long)pvVar11 + 0x18);
		 *         if ((long)(int)(uVar7 - 1) <= (long)uVar12) goto LAB_0337a75c;
		 *         if (uVar7 <= (int)uVar12 + 1U) goto LAB_0337aacc;
		 *         pfVar8 = (float *)((long)pvVar11 + lVar15);
		 *         fVar33 = pfVar8[7];
		 *         fVar19 = pfVar8[8];
		 *         fVar34 = pfVar8[6];
		 *         fVar27 = *pfVar8;
		 *         fVar21 = pfVar8[1];
		 *         fVar22 = pfVar8[2];
		 *         if (cRam000000000754a7cc == '\0') {
		 *           func_0x031fdc8c(puVar4);
		 *           cRam000000000754a7cc = '\x01';
		 *         }
		 *         if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *           func_0x031fde08();
		 *         }
		 *         fVar34 = fVar34 - fVar27;
		 *         fVar33 = fVar33 - fVar21;
		 *         fVar19 = fVar19 - fVar22;
		 *         fVar20 = SQRT(fVar19 * fVar19 + fVar34 * fVar34 + fVar33 * fVar33);
		 *         if (fVar20 <= fVar32) {
		 *           if (cRam000000000754a7ce == '\0') {
		 *             func_0x031fdc8c(puVar5);
		 *             cRam000000000754a7ce = '\x01';
		 *           }
		 *           pfVar8 = *(float **)(*(long *)puVar5 + 0xb8);
		 *           fVar34 = *pfVar8;
		 *           fVar33 = pfVar8[1];
		 *           fVar19 = pfVar8[2];
		 *         }
		 *         else {
		 *           fVar34 = fVar34 / fVar20;
		 *           fVar33 = fVar33 / fVar20;
		 *           fVar19 = fVar19 / fVar20;
		 *         }
		 *         pvVar11 = this.Positions;
		 *         if (pvVar11 == null) break;
		 *         if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         pfVar8 = (float *)((long)pvVar11 + lVar15);
		 *         fVar21 = fVar22 * fVar19 + fVar27 * fVar34 + fVar21 * fVar33;
		 *         fVar22 = (UVar38.z * fVar19 + UVar38.x * fVar34 + UVar38.y * fVar33) - fVar21;
		 *         fVar21 = (fVar19 * pfVar8[5] + fVar34 * pfVar8[3] + fVar33 * pfVar8[4]) - fVar21;
		 *         fVar21 = (float)func_0x03381a28((pfVar8[3] - fVar34 * fVar21) - *pfVar8,
		 *                                         (pfVar8[4] - fVar33 * fVar21) - pfVar8[1],
		 *                                         (pfVar8[5] - fVar19 * fVar21) - pfVar8[2],
		 *                                         (UVar38.x - fVar34 * fVar22) - *pfVar8,
		 *                                         (UVar38.y - fVar33 * fVar22) - pfVar8[1],
		 *                                         (UVar38.z - fVar19 * fVar22) - pfVar8[2],0);
		 *         pvVar13 = this.Positions;
		 *         UVar39.y = fVar33;
		 *         UVar39.x = fVar34;
		 *         UVar39.z = fVar19;
		 *         UVar41 = UnityEngine.Quaternion.AngleAxis(fVar21,UVar39);
		 *         pvVar11 = this.Positions;
		 *         if (pvVar11 == null) break;
		 *         if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         puVar2 = (undefined8 *)((long)pvVar11 + lVar15);
		 *         point.x = (float)*(undefined8 *)((long)puVar2 + 0xc) - (float)*puVar2;
		 *         point.z = *(float *)((long)puVar2 + 0x14) - *(float *)(puVar2 + 1);
		 *         point.y = (float)((ulong)*(undefined8 *)((long)puVar2 + 0xc) >> 0x20) -
		 *                   (float)((ulong)*puVar2 >> 0x20);
		 *         UVar39 = UnityEngine.Quaternion.op_Multiply(UVar41,point);
		 *         pvVar11 = this.Positions;
		 *         if (pvVar11 == null) break;
		 *         if ((ulong)*(uint *)((long)pvVar11 + 0x18) <= uVar12 - 1) goto LAB_0337aacc;
		 *         if (pvVar13 == null) break;
		 *         if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         uVar12 = uVar12 + 1;
		 *         uVar25 = *(undefined8 *)((long)pvVar11 + lVar15);
		 *         fVar34 = *(float *)((undefined8 *)((long)pvVar11 + lVar15) + 1);
		 *         *(ulong *)((long)pvVar13 + lVar15 + 0xc) =
		 *              CONCAT44(UVar39.y + (float)((ulong)uVar25 >> 0x20),UVar39.x + (float)uVar25);
		 *         *(float *)((long)pvVar13 + lVar15 + 0x14) = UVar39.z + fVar34;
		 *         pvVar11 = this.Positions;
		 *         lVar15 = lVar15 + 0xc;
		 *       } while (pvVar11 != null);
		 *     }
		 *   }
		 * LAB_0337aac8:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3279E58 VA: 0x7818964E58
		private void ResolveIK();
		/*
		 *   ulong uVar1;
		 *   undefined8 *puVar2;
		 *   undefined4 *puVar3;
		 *   undefined *puVar4;
		 *   undefined *puVar5;
		 *   void *extraout_x1;
		 *   void *pvVar6;
		 *   uint uVar7;
		 *   float *pfVar8;
		 *   int iVar9;
		 *   void *pvVar10;
		 *   void *pvVar11;
		 *   ulong uVar12;
		 *   void *pvVar13;
		 *   long lVar14;
		 *   long lVar15;
		 *   long lVar16;
		 *   int iVar17;
		 *   ulong uVar18;
		 *   float fVar19;
		 *   float fVar20;
		 *   float fVar21;
		 *   float fVar22;
		 *   float fVar23;
		 *   undefined8 uVar24;
		 *   undefined8 uVar25;
		 *   undefined8 uVar26;
		 *   float fVar27;
		 *   float fVar28;
		 *   float fVar29;
		 *   float fVar30;
		 *   float fVar31;
		 *   float fVar32;
		 *   float fVar33;
		 *   float fVar34;
		 *   float fVar35;
		 *   float fVar36;
		 *   float fVar37;
		 *   UnityEngine_Vector3 UVar38;
		 *   UnityEngine_Vector3 UVar39;
		 *   undefined1 auVar40 [16];
		 *   UnityEngine_Vector4 rotation;
		 *   UnityEngine_Vector4 UVar41;
		 *   UnityEngine_Vector4 rotation_00;
		 *   UnityEngine_Vector4 rotation_01;
		 *   UnityEngine_Vector3 point;
		 *
		 *   puVar4 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac39 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac39 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   pvVar11 = this.Target;
		 *   if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar4,methodInfo);
		 *   }
		 *   pvVar6 = null;
		 *   auVar40 = UnityEngine.Object.op_Equality(pvVar11,null);
		 *   if ((auVar40._0_8_ & 1) != 0) {
		 *     return;
		 *   }
		 *   if (this.BonesLength != null) {
		 *     if (this.ChainLength != *(int *)((long)this.BonesLength + 0x18)) {
		 *       FastIKFabric.Init(this);
		 *     }
		 *     pvVar11 = this.Bones;
		 *     if (pvVar11 != null) {
		 *       uVar12 = 0;
		 *       lVar15 = 0;
		 *       do {
		 *         if ((long)(int)*(uint *)((long)pvVar11 + 0x18) <= (long)uVar12) {
		 *           UVar38 = FastIKFabric.GetPositionRootSpace(this,this.Target);
		 *           fVar33 = UVar38.z;
		 *           fVar34 = UVar38.y;
		 *           fVar32 = UVar38.x;
		 *           rotation = FastIKFabric.GetRotationRootSpace(this,this.Target);
		 *           pvVar11 = this.Bones;
		 *           if (pvVar11 != null) {
		 *             if (*(int *)((long)pvVar11 + 0x18) == 0) goto LAB_0337aacc;
		 *             UVar38 = FastIKFabric.GetPositionRootSpace(this,*(void **)((long)pvVar11 + 0x20));
		 *             fVar22 = fVar33 - UVar38.z;
		 *             pvVar11 = this.Positions;
		 *             fVar19 = fVar32 - UVar38.x;
		 *             fVar21 = fVar34 - UVar38.y;
		 *             if (fVar22 * fVar22 + fVar19 * fVar19 + fVar21 * fVar21 <
		 *                 this.CompleteLength * this.CompleteLength) {
		 *               if (pvVar11 != null) {
		 *                 lVar15 = 0;
		 *                 uVar12 = 0;
		 *                 goto LAB_0337a024;
		 *               }
		 *             }
		 *             else if (pvVar11 != null) {
		 *               if (*(int *)((long)pvVar11 + 0x18) == 0) goto LAB_0337aacc;
		 *               uVar25 = *(undefined8 *)((long)pvVar11 + 0x20);
		 *               fVar19 = *(float *)((long)pvVar11 + 0x28);
		 *               if (cRam000000000754a7cc == '\0') {
		 *                 func_0x031fdc8c(typeinfo_ptr_mscorlib_Math_6FC0738);
		 *                 cRam000000000754a7cc = '\x01';
		 *               }
		 *               fVar32 = fVar32 - (float)uVar25;
		 *               fVar34 = fVar34 - (float)((ulong)uVar25 >> 0x20);
		 *               fVar33 = fVar33 - fVar19;
		 *               if (*(int *)(*(long *)typeinfo_ptr_mscorlib_Math_6FC0738 + 0xe4) == 0) {
		 *                 func_0x031fde08();
		 *               }
		 *               fVar19 = SQRT(fVar33 * fVar33 + fVar32 * fVar32 + fVar34 * fVar34);
		 *               if (fVar19 <= _UNK_0134eeec) {
		 *                 if (cRam000000000754a7ce == '\0') {
		 *                   func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *                   cRam000000000754a7ce = '\x01';
		 *                 }
		 *                 uVar25 = **(undefined8 **)
		 *                            (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
		 *                 fVar33 = *(float *)(*(undefined8 **)
		 *                                      (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 +
		 *                                      0xb8) + 1);
		 *               }
		 *               else {
		 *                 fVar33 = fVar33 / fVar19;
		 *                 uVar25 = CONCAT44(fVar34 / fVar19,fVar32 / fVar19);
		 *               }
		 *               pvVar11 = this.Positions;
		 *               if (pvVar11 != null) {
		 *                 lVar15 = 8;
		 *                 lVar16 = 0;
		 *                 goto LAB_0337aa5c;
		 *               }
		 *             }
		 *           }
		 *           break;
		 *         }
		 *         if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         pvVar13 = this.Positions;
		 *         UVar38 = FastIKFabric.GetPositionRootSpace(this,*(void **)((long)pvVar11 + uVar12 * 8 + 0x20));
		 *         if (pvVar13 == null) break;
		 *         if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         uVar12 = uVar12 + 1;
		 *         *(float *)((long)pvVar13 + lVar15 + 0x20) = UVar38.x;
		 *         *(float *)((long)pvVar13 + lVar15 + 0x24) = UVar38.y;
		 *         *(float *)((long)pvVar13 + lVar15 + 0x28) = UVar38.z;
		 *         pvVar11 = this.Bones;
		 *         lVar15 = lVar15 + 0xc;
		 *       } while (pvVar11 != null);
		 *     }
		 *   }
		 *   goto LAB_0337aac8;
		 *   while( true ) {
		 *     if (*(uint *)((long)pvVar6 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *     fVar21 = this.SnapBackStrength;
		 *     uVar25 = *(undefined8 *)((long)pvVar11 + lVar15 + 0x20);
		 *     uVar26 = *(undefined8 *)((long)pvVar6 + lVar15 + 0x20);
		 *     fVar22 = *(float *)((long)pvVar6 + lVar15 + 0x28);
		 *     fVar27 = *(float *)((long)pvVar11 + lVar15 + 0x34);
		 *     fVar19 = 1.0;
		 *     if (fVar21 <= 1.0) {
		 *       fVar19 = fVar21;
		 *     }
		 *     uVar24 = *(undefined8 *)((long)pvVar11 + lVar15 + 0x2c);
		 *     fVar23 = (float)uVar24;
		 *     fVar28 = (float)((ulong)uVar24 >> 0x20);
		 *     fVar20 = 0.0;
		 *     if (0.0 <= fVar21) {
		 *       fVar20 = fVar19;
		 *     }
		 *     *(ulong *)((long)pvVar11 + lVar15 + 0x2c) =
		 *          CONCAT44(fVar28 + (((float)((ulong)uVar25 >> 0x20) + (float)((ulong)uVar26 >> 0x20)) -
		 *                            fVar28) * fVar20,
		 *                   fVar23 + (((float)uVar25 + (float)uVar26) - fVar23) * fVar20);
		 *     *(float *)((long)pvVar11 + lVar15 + 0x34) =
		 *          fVar27 + ((*(float *)((long)pvVar11 + lVar15 + 0x28) + fVar22) - fVar27) * fVar20;
		 *     pvVar11 = this.Positions;
		 *     lVar15 = lVar15 + 0xc;
		 *     uVar12 = uVar12 + 1;
		 *     if (pvVar11 == null) break;
		 * LAB_0337a024:
		 *     puVar4 = typeinfo_ptr_mscorlib_Math_6FC0738;
		 *     fVar19 = _UNK_0134eeec;
		 *     uVar18 = *(ulong *)((long)pvVar11 + 0x18);
		 *     if ((long)((int)uVar18 + -1) <= (long)uVar12) {
		 *       if (this.Iterations < 1) goto LAB_0337a48c;
		 *       iVar9 = 0;
		 *       goto LAB_0337a184;
		 *     }
		 *     if ((uVar18 & 0xffffffff) <= uVar12 + 1) goto LAB_0337aacc;
		 *     pvVar6 = this.StartDirectionSucc;
		 *     if (pvVar6 == null) break;
		 *   }
		 *   goto LAB_0337aac8;
		 *   while( true ) {
		 *     if ((ulong)*(uint *)((long)pvVar6 + 0x18) <= lVar15 - 8U) goto LAB_0337aacc;
		 *     fVar32 = *(float *)((long)pvVar6 + lVar15 * 4);
		 *     uVar26 = *(undefined8 *)((long)pvVar11 + lVar16 + 0x20);
		 *     lVar15 = lVar15 + 1;
		 *     *(ulong *)((long)pvVar11 + lVar16 + 0x2c) =
		 *          CONCAT44((float)((ulong)uVar26 >> 0x20) + (float)((ulong)uVar25 >> 0x20) * fVar32,
		 *                   (float)uVar26 + (float)uVar25 * fVar32);
		 *     *(float *)((long)pvVar11 + lVar16 + 0x34) =
		 *          *(float *)((long)pvVar11 + lVar16 + 0x28) + fVar33 * fVar32;
		 *     pvVar11 = this.Positions;
		 *     lVar16 = lVar16 + 0xc;
		 *     if (pvVar11 == null) break;
		 * LAB_0337aa5c:
		 *     if ((long)(int)*(uint *)((long)pvVar11 + 0x18) <= lVar15 + -7) goto LAB_0337a48c;
		 *     if ((ulong)*(uint *)((long)pvVar11 + 0x18) <= lVar15 - 8U) goto LAB_0337aacc;
		 *     pvVar6 = this.BonesLength;
		 *     if (pvVar6 == null) break;
		 *   }
		 *   goto LAB_0337aac8;
		 *   while( true ) {
		 *     lVar15 = 8;
		 *     lVar16 = 0;
		 *     while( true ) {
		 *       uVar18 = *(ulong *)((long)pvVar11 + 0x18);
		 *       iVar17 = (int)uVar18;
		 *       if ((long)iVar17 <= (long)(lVar15 - 7U)) break;
		 *       if ((uVar18 & 0xffffffff) <= lVar15 - 8U) goto LAB_0337aacc;
		 *       fVar22 = *(float *)((long)pvVar11 + lVar16 + 0x28);
		 *       uVar25 = *(undefined8 *)((long)pvVar11 + lVar16 + 0x20);
		 *       uVar26 = *(undefined8 *)((long)pvVar11 + lVar16 + 0x2c);
		 *       fVar21 = *(float *)((long)pvVar11 + lVar16 + 0x34);
		 *       if (cRam000000000754a7cc == '\0') {
		 *         func_0x031fdc8c(puVar4);
		 *         cRam000000000754a7cc = '\x01';
		 *       }
		 *       if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *       }
		 *       fVar28 = (float)uVar25;
		 *       fVar27 = (float)uVar26 - fVar28;
		 *       fVar30 = (float)((ulong)uVar25 >> 0x20);
		 *       fVar20 = (float)((ulong)uVar26 >> 0x20) - fVar30;
		 *       fVar21 = fVar21 - fVar22;
		 *       fVar23 = SQRT(fVar21 * fVar21 + fVar27 * fVar27 + fVar20 * fVar20);
		 *       if (fVar23 <= fVar19) {
		 *         if (cRam000000000754a7ce == '\0') {
		 *           func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *           cRam000000000754a7ce = '\x01';
		 *         }
		 *         uVar25 = **(undefined8 **)
		 *                    (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
		 *         fVar21 = *(float *)(*(undefined8 **)
		 *                              (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8) +
		 *                            1);
		 *       }
		 *       else {
		 *         fVar21 = fVar21 / fVar23;
		 *         uVar25 = CONCAT44(fVar20 / fVar23,fVar27 / fVar23);
		 *       }
		 *       pvVar6 = this.BonesLength;
		 *       if (pvVar6 == null) goto LAB_0337aac8;
		 *       if (((ulong)*(uint *)((long)pvVar6 + 0x18) <= lVar15 - 8U) ||
		 *          ((ulong)*(uint *)((long)pvVar11 + 0x18) <= lVar15 - 7U)) goto LAB_0337aacc;
		 *       fVar27 = *(float *)((long)pvVar6 + lVar15 * 4);
		 *       lVar15 = lVar15 + 1;
		 *       *(ulong *)((long)pvVar11 + lVar16 + 0x2c) =
		 *            CONCAT44(fVar30 + (float)((ulong)uVar25 >> 0x20) * fVar27,fVar28 + (float)uVar25 * fVar27
		 *                    );
		 *       *(float *)((long)pvVar11 + lVar16 + 0x34) = fVar22 + fVar21 * fVar27;
		 *       pvVar11 = this.Positions;
		 *       lVar16 = lVar16 + 0xc;
		 *       if (pvVar11 == null) goto LAB_0337aac8;
		 *     }
		 *     if (iVar17 == 0) goto LAB_0337aacc;
		 *     iVar17 = iVar17 + -1;
		 *     fVar21 = *(float *)((long)pvVar11 + (long)iVar17 * 0xc + 0x20) - fVar32;
		 *     fVar22 = *(float *)((long)pvVar11 + (long)iVar17 * 0xc + 0x24) - fVar34;
		 *     fVar27 = *(float *)((long)pvVar11 + (long)iVar17 * 0xc + 0x28) - fVar33;
		 *     if ((fVar21 * fVar21 + fVar22 * fVar22 + fVar27 * fVar27 < this.Delta * this.Delta) ||
		 *        (iVar9 = iVar9 + 1, this.Iterations <= iVar9)) break;
		 * LAB_0337a184:
		 *     uVar7 = (int)uVar18 - 1;
		 *     uVar12 = (ulong)uVar7;
		 *     if (0 < (int)uVar7) {
		 *       lVar16 = 0;
		 *       lVar15 = uVar12 * 0xc;
		 *       do {
		 *         pvVar11 = this.Positions;
		 *         if (pvVar11 == null) goto LAB_0337aac8;
		 *         uVar1 = uVar12 + lVar16;
		 *         uVar7 = (uint)(uVar18 + lVar16);
		 *         if (uVar7 == *(uint *)((long)pvVar11 + 0x18)) {
		 *           if ((uVar18 + lVar16 & 0xffffffff) <= uVar1) goto LAB_0337aacc;
		 *           *(float *)((long)pvVar11 + lVar15 + 0x28) = fVar33;
		 *           *(float *)((long)pvVar11 + lVar15 + 0x20) = fVar32;
		 *           *(float *)((long)pvVar11 + lVar15 + 0x24) = fVar34;
		 *         }
		 *         else {
		 *           if (*(uint *)((long)pvVar11 + 0x18) <= uVar7) goto LAB_0337aacc;
		 *           uVar26 = *(undefined8 *)((long)pvVar11 + lVar15 + 0x20);
		 *           fVar21 = *(float *)((long)pvVar11 + lVar15 + 0x28);
		 *           fVar22 = *(float *)((long)pvVar11 + (long)(int)uVar7 * 0xc + 0x28);
		 *           uVar25 = *(undefined8 *)((long)pvVar11 + (long)(int)uVar7 * 0xc + 0x20);
		 *           if (cRam000000000754a7cc == '\0') {
		 *             func_0x031fdc8c(puVar4);
		 *             cRam000000000754a7cc = '\x01';
		 *           }
		 *           if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *             func_0x031fde08();
		 *           }
		 *           fVar28 = (float)uVar25;
		 *           fVar27 = (float)uVar26 - fVar28;
		 *           fVar30 = (float)((ulong)uVar25 >> 0x20);
		 *           fVar20 = (float)((ulong)uVar26 >> 0x20) - fVar30;
		 *           fVar21 = fVar21 - fVar22;
		 *           fVar23 = SQRT(fVar21 * fVar21 + fVar27 * fVar27 + fVar20 * fVar20);
		 *           if (fVar23 <= fVar19) {
		 *             if (cRam000000000754a7ce == '\0') {
		 *               func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *               cRam000000000754a7ce = '\x01';
		 *             }
		 *             uVar25 = **(undefined8 **)
		 *                        (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
		 *             fVar21 = *(float *)(*(undefined8 **)
		 *                                  (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 +
		 *                                  0xb8) + 1);
		 *           }
		 *           else {
		 *             fVar21 = fVar21 / fVar23;
		 *             uVar25 = CONCAT44(fVar20 / fVar23,fVar27 / fVar23);
		 *           }
		 *           pvVar6 = this.BonesLength;
		 *           if (pvVar6 == null) goto LAB_0337aac8;
		 *           if ((*(uint *)((long)pvVar6 + 0x18) <= uVar1) ||
		 *              (*(uint *)((long)pvVar11 + 0x18) <= uVar1)) goto LAB_0337aacc;
		 *           fVar27 = *(float *)((long)pvVar6 + lVar16 * 4 + uVar12 * 4 + 0x20);
		 *           *(ulong *)((long)pvVar11 + lVar15 + 0x20) =
		 *                CONCAT44(fVar30 + (float)((ulong)uVar25 >> 0x20) * fVar27,
		 *                         fVar28 + (float)uVar25 * fVar27);
		 *           *(float *)((long)pvVar11 + lVar15 + 0x28) = fVar22 + fVar21 * fVar27;
		 *         }
		 *         lVar16 = lVar16 + -1;
		 *         lVar15 = lVar15 + -0xc;
		 *       } while (1 < (long)(uVar12 + 1 + lVar16));
		 *       pvVar11 = this.Positions;
		 *       if (pvVar11 == null) goto LAB_0337aac8;
		 *     }
		 *   }
		 * LAB_0337a48c:
		 *   pvVar11 = this.Pole;
		 *   if (*(int *)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   pvVar6 = null;
		 *   uVar12 = UnityEngine.Object.op_Inequality(pvVar11,null);
		 *   if ((uVar12 & 1) == 0) {
		 *     pvVar11 = this.Positions;
		 *     if (pvVar11 != null) {
		 * LAB_0337a75c:
		 *       lVar15 = 4;
		 *       lVar16 = 0x20;
		 *       lVar14 = 0x2c;
		 *       do {
		 *         uVar12 = lVar15 - 4;
		 *         uVar7 = (uint)*(undefined8 *)((long)pvVar11 + 0x18);
		 *         if ((long)(int)uVar7 <= (long)uVar12) {
		 *           return;
		 *         }
		 *         pvVar13 = this.Bones;
		 *         if (uVar12 == uVar7 - 1) {
		 *           if (pvVar13 == null) break;
		 *           if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *           pvVar13 = *(void **)((long)pvVar13 + lVar15 * 8);
		 *           UVar41 = UnityEngine.Quaternion.Inverse(rotation);
		 *           fVar27 = UVar41.w;
		 *           fVar22 = UVar41.z;
		 *           fVar21 = UVar41.y;
		 *           fVar19 = UVar41.x;
		 *           pvVar11 = this.StartRotationBone;
		 *           if (pvVar11 == null) break;
		 *           if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *           fVar30 = (this.StartRotationTarget).z;
		 *           fVar20 = (this.StartRotationTarget).w;
		 *           puVar3 = (undefined4 *)((long)pvVar11 + lVar14);
		 *           fVar23 = (this.StartRotationTarget).x;
		 *           fVar28 = (this.StartRotationTarget).y;
		 *           fVar32 = (fVar21 * fVar30 + fVar27 * fVar23 + fVar19 * fVar20) - fVar22 * fVar28;
		 *           fVar34 = (fVar22 * fVar23 + fVar27 * fVar28 + fVar21 * fVar20) - fVar19 * fVar30;
		 *           fVar33 = (fVar19 * fVar28 + fVar27 * fVar30 + fVar22 * fVar20) - fVar21 * fVar23;
		 *           fVar23 = ((fVar27 * fVar20 - fVar19 * fVar23) - fVar21 * fVar28) - fVar22 * fVar30;
		 *           rotation_00.z = puVar3[-1];
		 *           rotation_00.w = *puVar3;
		 *           rotation_00._0_8_ = *(undefined8 *)(puVar3 + -3);
		 *           UVar41 = UnityEngine.Quaternion.Inverse(rotation_00);
		 *           fVar27 = UVar41.w;
		 *           fVar20 = UVar41.z;
		 *           fVar21 = UVar41.y;
		 *           fVar19 = UVar41.x;
		 *           fVar28 = fVar23 * fVar19 + fVar32 * fVar27;
		 *           fVar30 = fVar34 * fVar20;
		 *           fVar37 = fVar34 * fVar19;
		 *           fVar29 = fVar23 * fVar21 + fVar34 * fVar27;
		 *           fVar31 = fVar33 * fVar19;
		 *           fVar22 = fVar33 * fVar21;
		 *           fVar35 = fVar23 * fVar20 + fVar33 * fVar27;
		 *           fVar36 = fVar32 * fVar21;
		 *           fVar33 = fVar33 * fVar20;
		 *           fVar19 = fVar23 * fVar27 - fVar32 * fVar19;
		 *           fVar34 = fVar34 * fVar21;
		 *         }
		 *         else {
		 *           if (pvVar13 == null) break;
		 *           if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) {
		 * LAB_0337aacc:
		 *             IL2CPP.ThrowIndexOutOfRangeException();
		 *           }
		 *           pvVar10 = this.StartDirectionSucc;
		 *           if (pvVar10 == null) break;
		 *           if ((*(uint *)((long)pvVar10 + 0x18) <= uVar12) || (uVar7 <= (int)lVar15 - 3U))
		 *           goto LAB_0337aacc;
		 *           puVar2 = (undefined8 *)((long)pvVar11 + lVar16);
		 *           pvVar13 = *(void **)((long)pvVar13 + lVar15 * 8);
		 *           UVar38.x = (float)*(undefined8 *)((long)puVar2 + 0xc) - (float)*puVar2;
		 *           UVar38.z = *(float *)((long)puVar2 + 0x14) - *(float *)(puVar2 + 1);
		 *           UVar38.y = (float)((ulong)*(undefined8 *)((long)puVar2 + 0xc) >> 0x20) -
		 *                      (float)((ulong)*puVar2 >> 0x20);
		 *           UVar41 = UnityEngine.Quaternion.FromToRotation(*(UnityEngine_Vector3 *)((long)pvVar10 + lVar16),UVar38);
		 *           fVar19 = UVar41.w;
		 *           fVar33 = UVar41.z;
		 *           fVar34 = UVar41.y;
		 *           fVar32 = UVar41.x;
		 *           pvVar11 = this.StartRotationBone;
		 *           if (pvVar11 == null) break;
		 *           if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *           puVar3 = (undefined4 *)((long)pvVar11 + lVar14);
		 *           UVar41.z = puVar3[-1];
		 *           UVar41.w = *puVar3;
		 *           UVar41._0_8_ = *(undefined8 *)(puVar3 + -3);
		 *           UVar41 = UnityEngine.Quaternion.Inverse(UVar41);
		 *           fVar23 = UVar41.w;
		 *           fVar20 = UVar41.z;
		 *           fVar27 = UVar41.y;
		 *           fVar21 = UVar41.x;
		 *           fVar28 = fVar19 * fVar21 + fVar32 * fVar23;
		 *           fVar30 = fVar34 * fVar20;
		 *           fVar37 = fVar34 * fVar21;
		 *           fVar29 = fVar19 * fVar27 + fVar34 * fVar23;
		 *           fVar31 = fVar33 * fVar21;
		 *           fVar22 = fVar33 * fVar27;
		 *           fVar35 = fVar19 * fVar20 + fVar33 * fVar23;
		 *           fVar36 = fVar32 * fVar27;
		 *           fVar33 = fVar33 * fVar20;
		 *           fVar19 = fVar19 * fVar23 - fVar32 * fVar21;
		 *           fVar34 = fVar34 * fVar27;
		 *         }
		 *         rotation_01.x = (fVar30 + fVar28) - fVar22;
		 *         rotation_01.y = (fVar31 + fVar29) - fVar32 * fVar20;
		 *         rotation_01.z = (fVar36 + fVar35) - fVar37;
		 *         rotation_01.w = (fVar19 - fVar34) - fVar33;
		 *         FastIKFabric.SetRotationRootSpace(this,pvVar13,rotation_01)
		 *         ;
		 *         pvVar11 = this.Bones;
		 *         if (pvVar11 == null) break;
		 *         if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         pvVar13 = this.Positions;
		 *         if (pvVar13 == null) break;
		 *         if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         FastIKFabric.SetPositionRootSpace(this,*(void **)((long)pvVar11 + lVar15 * 8),*(UnityEngine_Vector3 *)((long)pvVar13 + lVar16));
		 *         pvVar11 = this.Positions;
		 *         lVar15 = lVar15 + 1;
		 *         lVar16 = lVar16 + 0xc;
		 *         lVar14 = lVar14 + 0x10;
		 *       } while (pvVar11 != null);
		 *     }
		 *   }
		 *   else {
		 *     UVar38 = FastIKFabric.GetPositionRootSpace(this,this.Pole);
		 *     puVar5 = typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08;
		 *     puVar4 = typeinfo_ptr_mscorlib_Math_6FC0738;
		 *     fVar32 = _UNK_0134eeec;
		 *     pvVar11 = this.Positions;
		 *     if (pvVar11 != null) {
		 *       uVar12 = 1;
		 *       lVar15 = 0x20;
		 *       do {
		 *         uVar7 = (uint)*(undefined8 *)((long)pvVar11 + 0x18);
		 *         if ((long)(int)(uVar7 - 1) <= (long)uVar12) goto LAB_0337a75c;
		 *         if (uVar7 <= (int)uVar12 + 1U) goto LAB_0337aacc;
		 *         pfVar8 = (float *)((long)pvVar11 + lVar15);
		 *         fVar33 = pfVar8[7];
		 *         fVar19 = pfVar8[8];
		 *         fVar34 = pfVar8[6];
		 *         fVar27 = *pfVar8;
		 *         fVar21 = pfVar8[1];
		 *         fVar22 = pfVar8[2];
		 *         if (cRam000000000754a7cc == '\0') {
		 *           func_0x031fdc8c(puVar4);
		 *           cRam000000000754a7cc = '\x01';
		 *         }
		 *         if (*(int *)(*(long *)puVar4 + 0xe4) == 0) {
		 *           func_0x031fde08();
		 *         }
		 *         fVar34 = fVar34 - fVar27;
		 *         fVar33 = fVar33 - fVar21;
		 *         fVar19 = fVar19 - fVar22;
		 *         fVar20 = SQRT(fVar19 * fVar19 + fVar34 * fVar34 + fVar33 * fVar33);
		 *         if (fVar20 <= fVar32) {
		 *           if (cRam000000000754a7ce == '\0') {
		 *             func_0x031fdc8c(puVar5);
		 *             cRam000000000754a7ce = '\x01';
		 *           }
		 *           pfVar8 = *(float **)(*(long *)puVar5 + 0xb8);
		 *           fVar34 = *pfVar8;
		 *           fVar33 = pfVar8[1];
		 *           fVar19 = pfVar8[2];
		 *         }
		 *         else {
		 *           fVar34 = fVar34 / fVar20;
		 *           fVar33 = fVar33 / fVar20;
		 *           fVar19 = fVar19 / fVar20;
		 *         }
		 *         pvVar11 = this.Positions;
		 *         if (pvVar11 == null) break;
		 *         if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         pfVar8 = (float *)((long)pvVar11 + lVar15);
		 *         fVar21 = fVar22 * fVar19 + fVar27 * fVar34 + fVar21 * fVar33;
		 *         fVar22 = (UVar38.z * fVar19 + UVar38.x * fVar34 + UVar38.y * fVar33) - fVar21;
		 *         fVar21 = (fVar19 * pfVar8[5] + fVar34 * pfVar8[3] + fVar33 * pfVar8[4]) - fVar21;
		 *         fVar21 = (float)func_0x03381a28((pfVar8[3] - fVar34 * fVar21) - *pfVar8,
		 *                                         (pfVar8[4] - fVar33 * fVar21) - pfVar8[1],
		 *                                         (pfVar8[5] - fVar19 * fVar21) - pfVar8[2],
		 *                                         (UVar38.x - fVar34 * fVar22) - *pfVar8,
		 *                                         (UVar38.y - fVar33 * fVar22) - pfVar8[1],
		 *                                         (UVar38.z - fVar19 * fVar22) - pfVar8[2],0);
		 *         pvVar13 = this.Positions;
		 *         UVar39.y = fVar33;
		 *         UVar39.x = fVar34;
		 *         UVar39.z = fVar19;
		 *         UVar41 = UnityEngine.Quaternion.AngleAxis(fVar21,UVar39);
		 *         pvVar11 = this.Positions;
		 *         if (pvVar11 == null) break;
		 *         if (*(uint *)((long)pvVar11 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         puVar2 = (undefined8 *)((long)pvVar11 + lVar15);
		 *         point.x = (float)*(undefined8 *)((long)puVar2 + 0xc) - (float)*puVar2;
		 *         point.z = *(float *)((long)puVar2 + 0x14) - *(float *)(puVar2 + 1);
		 *         point.y = (float)((ulong)*(undefined8 *)((long)puVar2 + 0xc) >> 0x20) -
		 *                   (float)((ulong)*puVar2 >> 0x20);
		 *         UVar39 = UnityEngine.Quaternion.op_Multiply(UVar41,point);
		 *         pvVar11 = this.Positions;
		 *         if (pvVar11 == null) break;
		 *         if ((ulong)*(uint *)((long)pvVar11 + 0x18) <= uVar12 - 1) goto LAB_0337aacc;
		 *         if (pvVar13 == null) break;
		 *         if (*(uint *)((long)pvVar13 + 0x18) <= uVar12) goto LAB_0337aacc;
		 *         uVar12 = uVar12 + 1;
		 *         uVar25 = *(undefined8 *)((long)pvVar11 + lVar15);
		 *         fVar34 = *(float *)((undefined8 *)((long)pvVar11 + lVar15) + 1);
		 *         *(ulong *)((long)pvVar13 + lVar15 + 0xc) =
		 *              CONCAT44(UVar39.y + (float)((ulong)uVar25 >> 0x20),UVar39.x + (float)uVar25);
		 *         *(float *)((long)pvVar13 + lVar15 + 0x14) = UVar39.z + fVar34;
		 *         pvVar11 = this.Positions;
		 *         lVar15 = lVar15 + 0xc;
		 *       } while (pvVar11 != null);
		 *     }
		 *   }
		 * LAB_0337aac8:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3279AC8 VA: 0x7818964AC8
		private UnityEngine.Vector3 GetPositionRootSpace(UnityEngine.Transform current);
		/*
		 *   undefined *puVar1;
		 *   ulong uVar2;
		 *   long lVar3;
		 *   void *pvVar4;
		 *   float fVar5;
		 *   float fVar6;
		 *   float fVar7;
		 *   float fVar8;
		 *   float fVar9;
		 *   float fVar10;
		 *   float fVar11;
		 *   float fVar12;
		 *   float fVar13;
		 *   float fVar14;
		 *   float fVar15;
		 *   UnityEngine_Vector3 UVar16;
		 *   UnityEngine_Vector3 UVar17;
		 *   UnityEngine_Vector4 UVar18;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac3a & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac3a = 1;
		 *   }
		 *   pvVar4 = this.Root;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar2 = UnityEngine.Object.op_Equality(pvVar4,null);
		 *   if ((uVar2 & 1) == 0) {
		 *     if (this.Root != null) {
		 *       UVar18 = UnityEngine.Transform.get_rotation(this.Root);
		 *       UVar18 = UnityEngine.Quaternion.Inverse(UVar18);
		 *       fVar8 = UVar18.w;
		 *       fVar7 = UVar18.z;
		 *       fVar6 = UVar18.y;
		 *       fVar5 = UVar18.x;
		 *       if (current != null) {
		 *         UVar16 = UnityEngine.Transform.get_position(current);
		 *         if (this.Root != null) {
		 *           UVar17 = UnityEngine.Transform.get_position(this.Root);
		 *           fVar9 = UVar16.x - UVar17.x;
		 *           fVar10 = UVar16.y - UVar17.y;
		 *           fVar11 = UVar16.z - UVar17.z;
		 *           fVar13 = fVar6 + fVar6;
		 *           fVar14 = fVar7 + fVar7;
		 *           fVar15 = fVar5 * (fVar5 + fVar5);
		 *           fVar12 = fVar8 * (fVar5 + fVar5);
		 *           UVar16.x = fVar11 * (fVar5 * fVar14 + fVar8 * fVar13) +
		 *                      fVar10 * (fVar5 * fVar13 - fVar8 * fVar14) +
		 *                      fVar9 * (1.0 - (fVar6 * fVar13 + fVar7 * fVar14));
		 *           UVar16.y = fVar11 * (fVar6 * fVar14 - fVar12) +
		 *                      fVar9 * (fVar5 * fVar13 + fVar8 * fVar14) +
		 *                      fVar10 * (1.0 - (fVar15 + fVar7 * fVar14));
		 *           UVar16.z = fVar9 * (fVar5 * fVar14 - fVar8 * fVar13) + fVar10 * (fVar6 * fVar14 + fVar12)
		 *                      + fVar11 * (1.0 - (fVar15 + fVar6 * fVar13));
		 *           return UVar16;
		 *         }
		 *       }
		 *     }
		 *   }
		 *   else if (current != null) {
		 *     if ((bRam000000000755ff18 & 1) == 0) {
		 *       func_0x031fdc8c(PTR_DAT_0714f6d0,0);
		 *       bRam000000000755ff18 = 1;
		 *     }
		 *     if (current != null) {
		 *       lVar3 = *(long *)((long)current + 0x10);
		 *       if (lVar3 == 0) {
		 *         UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(current);
		 *       }
		 *       if (pcRam000000000755ff48 == null) {
		 *         pcRam000000000755ff48 = (code *)func_0x031fdc50(&UNK_0137c702);
		 *       }
		 *       (*pcRam000000000755ff48)(lVar3,&stack0xffffffffffffffd0);
		 *       return (UnityEngine_Vector3)ZEXT812(0);
		 *     }
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3279C00 VA: 0x7818964C00
		private void SetPositionRootSpace(UnityEngine.Transform current, UnityEngine.Vector3 position);
		/*
		 *   undefined *puVar1;
		 *   ulong uVar2;
		 *   long lVar3;
		 *   void *pvVar4;
		 *   UnityEngine_Vector4 rotation;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac3b & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac3b = 1;
		 *   }
		 *   pvVar4 = this.Root;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar2 = UnityEngine.Object.op_Equality(pvVar4,null);
		 *   if ((uVar2 & 1) == 0) {
		 *     if (this.Root == null) goto LAB_03379cfc;
		 *     rotation = UnityEngine.Transform.get_rotation(this.Root);
		 *     UnityEngine.Quaternion.op_Multiply(rotation,position);
		 *     if (this.Root == null) goto LAB_03379cfc;
		 *     UnityEngine.Transform.get_position(this.Root);
		 *   }
		 *   if (current != null) {
		 *     if ((bRam000000000755ff19 & 1) == 0) {
		 *       func_0x031fdc8c(PTR_DAT_0714f6d0,0);
		 *       bRam000000000755ff19 = 1;
		 *     }
		 *     if (current == null) {
		 *       IL2CPP.ThrowNullReferenceException();
		 *     }
		 *     lVar3 = *(long *)((long)current + 0x10);
		 *     if (lVar3 == 0) {
		 *       UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(current);
		 *     }
		 *     if (pcRam000000000755ff50 == null) {
		 *       pcRam000000000755ff50 = (code *)func_0x031fdc50(&UNK_01396672);
		 *     }
		 *     (*pcRam000000000755ff50)(lVar3,&stack0xffffffffffffffd4);
		 *     return;
		 *   }
		 * LAB_03379cfc:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3279D00 VA: 0x7818964D00
		private UnityEngine.Quaternion GetRotationRootSpace(UnityEngine.Transform current);
		/*
		 *   undefined *puVar1;
		 *   ulong uVar2;
		 *   long lVar3;
		 *   void *pvVar4;
		 *   float fVar5;
		 *   float fVar6;
		 *   float fVar7;
		 *   float fVar8;
		 *   float fVar9;
		 *   float fVar10;
		 *   float fVar11;
		 *   float fVar12;
		 *   UnityEngine_Vector4 UVar13;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac3c & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac3c = 1;
		 *   }
		 *   pvVar4 = this.Root;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar2 = UnityEngine.Object.op_Equality(pvVar4,null);
		 *   if ((uVar2 & 1) == 0) {
		 *     if (current != null) {
		 *       UVar13 = UnityEngine.Transform.get_rotation(current);
		 *       UVar13 = UnityEngine.Quaternion.Inverse(UVar13);
		 *       fVar11 = UVar13.w;
		 *       fVar9 = UVar13.z;
		 *       fVar7 = UVar13.y;
		 *       fVar5 = UVar13.x;
		 *       if (this.Root != null) {
		 *         UVar13 = UnityEngine.Transform.get_rotation(this.Root);
		 *         fVar12 = UVar13.w;
		 *         fVar10 = UVar13.z;
		 *         fVar8 = UVar13.y;
		 *         fVar6 = UVar13.x;
		 *         UVar13.x = (fVar7 * fVar10 + fVar11 * fVar6 + fVar5 * fVar12) - fVar9 * fVar8;
		 *         UVar13.y = (fVar9 * fVar6 + fVar11 * fVar8 + fVar7 * fVar12) - fVar5 * fVar10;
		 *         UVar13.z = (fVar5 * fVar8 + fVar11 * fVar10 + fVar9 * fVar12) - fVar7 * fVar6;
		 *         UVar13.w = ((fVar11 * fVar12 - fVar5 * fVar6) - fVar7 * fVar8) - fVar9 * fVar10;
		 *         return UVar13;
		 *       }
		 *     }
		 *   }
		 *   else if (current != null) {
		 *     if ((bRam000000000755ff1c & 1) == 0) {
		 *       func_0x031fdc8c(PTR_DAT_0714f6d0,0);
		 *       bRam000000000755ff1c = 1;
		 *     }
		 *     if (current != null) {
		 *       lVar3 = *(long *)((long)current + 0x10);
		 *       if (lVar3 == 0) {
		 *         UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(current);
		 *       }
		 *       if (pcRam000000000755ff68 == null) {
		 *         pcRam000000000755ff68 = (code *)func_0x031fdc50(&UNK_013833f3);
		 *       }
		 *       (*pcRam000000000755ff68)(lVar3,&stack0xffffffffffffffd0);
		 *       return (UnityEngine_Vector4)ZEXT816(0);
		 *     }
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327AAD0 VA: 0x7818965AD0
		private void SetRotationRootSpace(UnityEngine.Transform current, UnityEngine.Quaternion rotation);
		/*
		 *   undefined *puVar1;
		 *   ulong uVar2;
		 *   long lVar3;
		 *   void *pvVar4;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac3d & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac3d = 1;
		 *   }
		 *   pvVar4 = this.Root;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar2 = UnityEngine.Object.op_Equality(pvVar4,null);
		 *   if ((uVar2 & 1) == 0) {
		 *     if (this.Root == null) goto LAB_0337ac08;
		 *     UnityEngine.Transform.get_rotation(this.Root);
		 *   }
		 *   if (current != null) {
		 *     if ((bRam000000000755ff1d & 1) == 0) {
		 *       func_0x031fdc8c(PTR_DAT_0714f6d0,0);
		 *       bRam000000000755ff1d = 1;
		 *     }
		 *     if (current == null) {
		 *       IL2CPP.ThrowNullReferenceException();
		 *     }
		 *     lVar3 = *(long *)((long)current + 0x10);
		 *     if (lVar3 == 0) {
		 *       UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(current);
		 *     }
		 *     if (pcRam000000000755ff70 == null) {
		 *       pcRam000000000755ff70 = (code *)func_0x031fdc50(&UNK_013598d0);
		 *     }
		 *     (*pcRam000000000755ff70)(lVar3,&stack0xffffffffffffffd0);
		 *     return;
		 *   }
		 * LAB_0337ac08:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327AC0C VA: 0x7818965C0C
		private void OnDrawGizmos();
		/*
		 *   return;
		 */
		// RVA: 0x327AC10 VA: 0x7818965C10
		public void .ctor();
		/*
		 *   undefined8 uVar1;
		 *   undefined4 uVar2;
		 *   undefined *puVar3;
		 *   undefined8 uVar4;
		 *
		 *   uVar1 = _UNK_0134db08;
		 *   this.ChainLength = 2;
		 *   this.Iterations = 10;
		 *   uVar4 = _UNK_0134db08;
		 *   _UNK_0134db08 = (undefined4)uVar1;
		 *   _UNK_0134db0c = SUB84(uVar1,4);
		 *   uVar2 = _UNK_0134db0c;
		 *   this.Delta = (float)_UNK_0134db08;
		 *   _UNK_0134db08 = uVar4;
		 *   puVar3 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   this.SnapBackStrength = (float)uVar2;
		 *   if ((bRam000000000755f76f & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8,0);
		 *     bRam000000000755f76f = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar3 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   return;
		 */
	}
}
