namespace TMPro.Examples
{

	// [TypeInfo RVA: 0x0]
	public class CameraController : MonoBehaviour
	{
		private UnityEngine.Transform cameraTransform; // 0x20
		private UnityEngine.Transform dummyTarget; // 0x28
		public UnityEngine.Transform CameraTarget; // 0x30
		public float FollowDistance; // 0x38
		public float MaxFollowDistance; // 0x3C
		public float MinFollowDistance; // 0x40
		public float ElevationAngle; // 0x44
		public float MaxElevationAngle; // 0x48
		public float MinElevationAngle; // 0x4C
		public float OrbitalAngle; // 0x50
		public TMPro.Examples.CameraController.CameraModes CameraMode; // 0x54
		public bool MovementSmoothing; // 0x58
		public bool RotationSmoothing; // 0x59
		private bool previousSmoothing; // 0x5A
		public float MovementSmoothingValue; // 0x5C
		public float RotationSmoothingValue; // 0x60
		public float MoveSensitivity; // 0x64
		private UnityEngine.Vector3 currentVelocity; // 0x68
		private UnityEngine.Vector3 desiredPosition; // 0x74
		private float mouseX; // 0x80
		private float mouseY; // 0x84
		private UnityEngine.Vector3 moveVector; // 0x88
		private float mouseWheel; // 0x94
		private const string event_SmoothingValue; // 0x0
		private const string event_FollowDistance; // 0x0

		// RVA: 0x32699A0 VA: 0x78189549A0
		private void Awake();
		/*
		 *   undefined *puVar1;
		 *   int iVar2;
		 *   int iVar3;
		 *   void *pvVar4;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Application_6FC0EA8;
		 *   if ((bRam000000000754abd7 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Application_6FC0EA8);
		 *     bRam000000000754abd7 = 1;
		 *   }
		 *   iVar2 = UnityEngine.QualitySettings.get_vSyncCount();
		 *   iVar3 = 0x3c;
		 *   if (iVar2 < 1) {
		 *     iVar3 = -1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   UnityEngine.Application.set_targetFrameRate(iVar3);
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   iVar3 = UnityEngine.Application.get_platform();
		 *   if (iVar3 != 8) {
		 *     if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *     iVar3 = UnityEngine.Application.get_platform();
		 *     if (iVar3 != 0xb) goto LAB_03369a54;
		 *   }
		 *   UnityEngine.Input.set_simulateMouseWithTouches(false);
		 * LAB_03369a54:
		 *   pvVar4 = UnityEngine.Component.get_transform(this);
		 *   this.cameraTransform = pvVar4;
		 *   func_0x031fdc38(&this.cameraTransform,pvVar4);
		 *   this.previousSmoothing = this.MovementSmoothing;
		 *   return;
		 */
		// RVA: 0x3269A84 VA: 0x7818954A84
		private void Start();
		/*
		 *   undefined *puVar1;
		 *   ulong uVar2;
		 *   void *extraout_x1;
		 *   void **ppvVar3;
		 *   void *pvVar4;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754abd8 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_GameObject_6FC1548);
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     func_0x031fdc8c(PTR_DAT_070c5328);
		 *     bRam000000000754abd8 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   pvVar4 = this.CameraTarget;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar1,methodInfo);
		 *   }
		 *   uVar2 = UnityEngine.Object.op_Equality(pvVar4,null);
		 *   puVar1 = PTR_DAT_070c5328;
		 *   if ((uVar2 & 1) != 0) {
		 *     pvVar4 = (void *)func_0x031fdf24(*(undefined8 *)
		 *                                       typeinfo_ptr_UnityEngine_CoreModule_GameObject_6FC1548);
		 *     UnityEngine.GameObject..ctor(pvVar4,*(void **)puVar1);
		 *     if (pvVar4 != null) {
		 *       pvVar4 = UnityEngine.GameObject.get_transform(pvVar4);
		 *       ppvVar3 = &this.dummyTarget;
		 *       *ppvVar3 = pvVar4;
		 *       if (iRam00000000077785f0 != 0) {
		 *         func_0x032ed0c0(1L << ((ulong)ppvVar3 >> 0xc & 0x3f),
		 *                         ((ulong)ppvVar3 >> 0x12 & 0x7fff) * 8 + 0x75ac5c8);
		 *       }
		 *       return;
		 *     }
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   return;
		 */
		// RVA: 0x3269B6C VA: 0x7818954B6C
		private void LateUpdate();
		/*
		 *   undefined1 auVar1 [12];
		 *   undefined1 auVar2 [12];
		 *   UnityEngine_Vector3 currentVelocity;
		 *   undefined *puVar3;
		 *   ulong uVar4;
		 *   void *extraout_x1;
		 *   void *this_00;
		 *   long lVar5;
		 *   void *pvVar6;
		 *   float fVar7;
		 *   float fVar8;
		 *   float fVar9;
		 *   float fVar10;
		 *   float fVar11;
		 *   float fVar12;
		 *   float unaff_s14;
		 *   float unaff_s15;
		 *   UnityEngine_Vector3 UVar13;
		 *   UnityEngine_Vector3 UVar14;
		 *   UnityEngine_Vector3 value;
		 *   UnityEngine_Vector3 forward;
		 *   undefined1 auVar15 [16];
		 *   UnityEngine_Vector4 UVar16;
		 *   UnityEngine_Vector4 b;
		 *   undefined8 in_stack_ffffffffffffff94;
		 *
		 *   puVar3 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754abd9 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754abd9 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   CameraController.GetPlayerInput(this);
		 *   pvVar6 = this.CameraTarget;
		 *   if (*(int *)(*(long *)puVar3 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar4 = UnityEngine.Object.op_Inequality(pvVar6,null);
		 *   if ((uVar4 & 1) == 0) {
		 *     return;
		 *   }
		 *   if (this.CameraMode == 0) {
		 *     if (this.CameraTarget == null) goto LAB_03369e9c;
		 *     UVar13 = UnityEngine.Transform.get_position(this.CameraTarget)
		 *     ;
		 *     fVar11 = UVar13.z;
		 *     fVar12 = UVar13.y;
		 *     fVar8 = UVar13.x;
		 *     pvVar6 = this.CameraTarget;
		 *     UVar13.x = this.ElevationAngle * _UNK_0134ef54;
		 *     UVar13.y = this.OrbitalAngle * _UNK_0134ef54;
		 *     UVar13.z = 0.0;
		 *     UVar16 = UnityEngine.Quaternion.Internal_FromEulerRad(UVar13);
		 *     auVar2._4_8_ = 0;
		 *     auVar2._0_4_ = -this.FollowDistance;
		 *     UVar13 = UnityEngine.Quaternion.op_Multiply(UVar16,(UnityEngine_Vector3)(auVar2 << 0x40));
		 *     if (pvVar6 == null) goto LAB_03369e9c;
		 *     UVar13 = UnityEngine.Transform.TransformDirection(pvVar6,UVar13.x,UVar13.y,UVar13.z,null);
		 *     fVar10 = UVar13.z;
		 *     fVar9 = UVar13.y;
		 *     fVar7 = UVar13.x;
		 * LAB_03369cdc:
		 *     (this.desiredPosition).x = fVar8 + fVar7;
		 *     (this.desiredPosition).y = fVar12 + fVar9;
		 *     (this.desiredPosition).z = fVar11 + fVar10;
		 *   }
		 *   else if (this.CameraMode == 1) {
		 *     if (this.CameraTarget == null) goto LAB_03369e9c;
		 *     UVar13 = UnityEngine.Transform.get_position(this.CameraTarget)
		 *     ;
		 *     fVar11 = UVar13.z;
		 *     fVar12 = UVar13.y;
		 *     fVar8 = UVar13.x;
		 *     UVar14.x = this.ElevationAngle * _UNK_0134ef54;
		 *     UVar14.y = this.OrbitalAngle * _UNK_0134ef54;
		 *     UVar14.z = 0.0;
		 *     UVar16 = UnityEngine.Quaternion.Internal_FromEulerRad(UVar14);
		 *     auVar1._4_8_ = 0;
		 *     auVar1._0_4_ = -this.FollowDistance;
		 *     UVar13 = UnityEngine.Quaternion.op_Multiply(UVar16,(UnityEngine_Vector3)(auVar1 << 0x40));
		 *     fVar10 = UVar13.z;
		 *     fVar9 = UVar13.y;
		 *     fVar7 = UVar13.x;
		 *     goto LAB_03369cdc;
		 *   }
		 *   pvVar6 = this.cameraTransform;
		 *   if (this.MovementSmoothing == false) {
		 *     if (pvVar6 == null) goto LAB_03369e9c;
		 *     fVar12 = (this.desiredPosition).y;
		 *     fVar11 = (this.desiredPosition).z;
		 *     fVar8 = (this.desiredPosition).x;
		 *   }
		 *   else {
		 *     if (pvVar6 == null) goto LAB_03369e9c;
		 *     UVar14 = UnityEngine.Transform.get_position(pvVar6);
		 *     UVar13 = this.desiredPosition;
		 *     UnityEngine.Time.get_fixedDeltaTime();
		 *     fVar8 = UnityEngine.Time.get_deltaTime();
		 *     currentVelocity.y = (float)(int)in_stack_ffffffffffffff94;
		 *     currentVelocity.z = (float)(int)((ulong)in_stack_ffffffffffffff94 >> 0x20);
		 *     currentVelocity.x = fVar8;
		 *     UVar13 = UnityEngine.Vector3.SmoothDamp(UVar14,UVar13,currentVelocity,INFINITY,unaff_s15,unaff_s14);
		 *     fVar11 = UVar13.z;
		 *     fVar12 = UVar13.y;
		 *     fVar8 = UVar13.x;
		 *   }
		 *   value.y = fVar12;
		 *   value.x = fVar8;
		 *   value.z = fVar11;
		 *   UnityEngine.Transform.set_position(pvVar6,value);
		 *   puVar3 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   pvVar6 = this.cameraTransform;
		 *   if (this.RotationSmoothing == false) {
		 *     if (pvVar6 != null) {
		 *       this_00 = this.CameraTarget;
		 *       if ((bRam000000000755ff2c & 1) == 0) {
		 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8,this_00,0);
		 *         bRam000000000755ff2c = 1;
		 *       }
		 *       if (*(int *)(*(long *)puVar3 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *       }
		 *       auVar15 = UnityEngine.Object.op_Implicit(this_00);
		 *       if ((auVar15._0_8_ & 1) == 0) {
		 *         return;
		 *       }
		 *       if (this_00 == null) {
		 *         IL2CPP.ThrowNullReferenceException();
		 *       }
		 *       UnityEngine.Transform.get_position(this_00);
		 *       if (cRam000000000754a7cb == '\0') {
		 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *         cRam000000000754a7cb = '\x01';
		 *       }
		 *       if ((bRam000000000755ff2d & 1) == 0) {
		 *         func_0x031fdc8c(PTR_DAT_0714f6d0);
		 *         bRam000000000755ff2d = 1;
		 *       }
		 *       if (pvVar6 != null) {
		 *         lVar5 = *(long *)((long)pvVar6 + 0x10);
		 *         if (lVar5 == 0) {
		 *           UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(pvVar6);
		 *         }
		 *         if (pcRam000000000755ffe0 == null) {
		 *           pcRam000000000755ffe0 = (code *)func_0x031fdc50(&UNK_0135bc7c);
		 *         }
		 *         (*pcRam000000000755ffe0)(lVar5,&stack0xffffffffffffffd4,&stack0xffffffffffffffc8);
		 *         return;
		 *       }
		 *       IL2CPP.ThrowNullReferenceException();
		 *     }
		 *   }
		 *   else if (pvVar6 != null) {
		 *     UVar16 = UnityEngine.Transform.get_rotation(pvVar6);
		 *     if (this.CameraTarget != null) {
		 *       UVar13 = UnityEngine.Transform.get_position(this.CameraTarget);
		 *       if (this.cameraTransform != null) {
		 *         UVar14 = UnityEngine.Transform.get_position(this.cameraTransform);
		 *         forward.x = UVar13.x - UVar14.x;
		 *         forward.y = UVar13.y - UVar14.y;
		 *         forward.z = UVar13.z - UVar14.z;
		 *         b = UnityEngine.Quaternion.LookRotation(forward);
		 *         fVar12 = this.RotationSmoothingValue;
		 *         fVar8 = UnityEngine.Time.get_deltaTime();
		 *         UnityEngine.Quaternion.Lerp(UVar16,b,fVar12 * fVar8);
		 *         if ((bRam000000000755ff1d & 1) == 0) {
		 *           func_0x031fdc8c(PTR_DAT_0714f6d0,0);
		 *           bRam000000000755ff1d = 1;
		 *         }
		 *         if (pvVar6 != null) {
		 *           lVar5 = *(long *)((long)pvVar6 + 0x10);
		 *           if (lVar5 == 0) {
		 *             UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(pvVar6);
		 *           }
		 *           if (pcRam000000000755ff70 == null) {
		 *             pcRam000000000755ff70 = (code *)func_0x031fdc50(&UNK_013598d0);
		 *           }
		 *           (*pcRam000000000755ff70)(lVar5,&stack0xffffffffffffffd0);
		 *           return;
		 *         }
		 *         IL2CPP.ThrowNullReferenceException();
		 *       }
		 *     }
		 *   }
		 * LAB_03369e9c:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3269EA0 VA: 0x7818954EA0
		private void GetPlayerInput();
		/*
		 *   undefined *puVar1;
		 *   bool bVar2;
		 *   int iVar3;
		 *   int iVar4;
		 *   void *pvVar5;
		 *   ulong uVar6;
		 *   void *extraout_x1;
		 *   void **ppvVar7;
		 *   void *pvVar8;
		 *   void **ppvVar9;
		 *   float fVar10;
		 *   undefined8 uVar11;
		 *   float fVar12;
		 *   float fVar13;
		 *   float fVar14;
		 *   float fVar15;
		 *   undefined8 in_d2;
		 *   undefined4 uVar16;
		 *   UnityEngine_Vector3 UVar17;
		 *   UnityEngine_Vector2 UVar18;
		 *   UnityEngine_Vector2 UVar19;
		 *   UnityEngine_Vector2 UVar20;
		 *   UnityEngine_Vector2 UVar21;
		 *   UnityEngine_Vector4 value;
		 *   undefined1 auStack_244 [68];
		 *   undefined8 uStack_200;
		 *   undefined8 uStack_1f8;
		 *   undefined8 uStack_1f0;
		 *   undefined8 uStack_1e4;
		 *   undefined8 uStack_1dc;
		 *   undefined8 uStack_1d4;
		 *   undefined8 uStack_1a0;
		 *   undefined8 uStack_198;
		 *   undefined8 uStack_190;
		 *   undefined8 uStack_188;
		 *   undefined8 uStack_180;
		 *   undefined8 uStack_178;
		 *   undefined8 uStack_170;
		 *   undefined8 uStack_168;
		 *   undefined4 uStack_160;
		 *   undefined8 uStack_150;
		 *   undefined8 uStack_148;
		 *   undefined8 uStack_140;
		 *   undefined8 uStack_138;
		 *   undefined8 uStack_130;
		 *   undefined8 uStack_128;
		 *   undefined8 uStack_120;
		 *   undefined8 uStack_118;
		 *   undefined4 uStack_110;
		 *   undefined8 uStack_100;
		 *   undefined8 uStack_f8;
		 *   undefined8 uStack_f0;
		 *   undefined4 uStack_e8;
		 *   undefined4 uStack_e4;
		 *   undefined4 uStack_e0;
		 *   undefined8 uStack_dc;
		 *   undefined8 uStack_d0;
		 *   undefined8 uStack_c8;
		 *   undefined8 uStack_c0;
		 *   undefined8 uStack_b8;
		 *   undefined8 uStack_b0;
		 *   undefined8 uStack_a8;
		 *   undefined8 uStack_a0;
		 *   undefined8 uStack_98;
		 *   undefined4 uStack_90;
		 *
		 *   uVar16 = (undefined4)((ulong)in_d2 >> 0x20);
		 *   if ((bRam000000000754abda & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_GameObject_6FC1548);
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_PhysicsModule_Physics_6FC09E8);
		 *     func_0x031fdc8c(PTR_DAT_070c5330);
		 *     func_0x031fdc8c(PTR_DAT_070c5338);
		 *     func_0x031fdc8c(PTR_DAT_070c5328);
		 *     func_0x031fdc8c(PTR_DAT_070c5340);
		 *     bRam000000000754abda = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   puVar1 = PTR_DAT_070c5340;
		 *   uStack_90 = 0;
		 *   uStack_dc = 0;
		 *   uStack_e0 = 0;
		 *   uStack_198 = 0;
		 *   uStack_1a0 = 0;
		 *   uStack_188 = 0;
		 *   uStack_190 = 0;
		 *   uStack_178 = 0;
		 *   uStack_180 = 0;
		 *   uStack_168 = 0;
		 *   uStack_170 = 0;
		 *   uStack_148 = 0;
		 *   uStack_150 = 0;
		 *   uStack_138 = 0;
		 *   uStack_140 = 0;
		 *   uStack_128 = 0;
		 *   uStack_130 = 0;
		 *   uStack_118 = 0;
		 *   uStack_120 = 0;
		 *   uStack_f8 = 0;
		 *   uStack_100 = 0;
		 *   uStack_e8 = 0;
		 *   uStack_e4 = 0;
		 *   uStack_f0 = 0;
		 *   uStack_c8 = 0;
		 *   uStack_d0 = 0;
		 *   uStack_b8 = 0;
		 *   uStack_c0 = 0;
		 *   uStack_a8 = 0;
		 *   uStack_b0 = 0;
		 *   uStack_98 = 0;
		 *   uStack_a0 = 0;
		 *   uStack_110 = 0;
		 *   uStack_160 = 0;
		 *   if (cRam000000000754a7ce == '\0') {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08,methodInfo);
		 *     cRam000000000754a7ce = '\x01';
		 *   }
		 *   pvVar5 = *(void **)puVar1;
		 *   uVar11 = **(undefined8 **)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
		 *   fVar12 = *(float *)(*(undefined8 **)
		 *                        (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8) + 1);
		 *   (this.moveVector).x = (float)(int)uVar11;
		 *   (this.moveVector).y = (float)(int)((ulong)uVar11 >> 0x20);
		 *   (this.moveVector).z = fVar12;
		 *   fVar12 = UnityEngine.Input.GetAxis(pvVar5);
		 *   this.mouseWheel = fVar12;
		 *   iVar3 = UnityEngine.Input.get_touchCount();
		 *   bVar2 = UnityEngine.Input.GetKey(0x130);
		 *   if (((!bVar2) &&
		 *       (bVar2 = UnityEngine.Input.GetKey(0x12f), !bVar2)) &&
		 *      (iVar3 < 1)) goto LAB_0336a684;
		 *   this.mouseWheel = this.mouseWheel * 10.0;
		 *   bVar2 = UnityEngine.Input.GetKeyDown(0x69);
		 *   if (bVar2) {
		 *     this.CameraMode = 1;
		 *   }
		 *   bVar2 = UnityEngine.Input.GetKeyDown(0x66);
		 *   if (bVar2) {
		 *     this.CameraMode = 0;
		 *   }
		 *   bVar2 = UnityEngine.Input.GetKeyDown(0x73);
		 *   if (bVar2) {
		 *     this.MovementSmoothing = (bool)(this.MovementSmoothing ^ 1);
		 *   }
		 *   bVar2 = UnityEngine.Input.GetMouseButton(1);
		 *   if (bVar2) {
		 *     fVar12 = UnityEngine.Input.GetAxis(*(void **)PTR_DAT_070c5330);
		 *     puVar1 = PTR_DAT_070c5338;
		 *     this.mouseY = fVar12;
		 *     fVar10 = UnityEngine.Input.GetAxis(*(void **)puVar1);
		 *     fVar12 = _UNK_0134e9fc;
		 *     fVar14 = this.mouseY;
		 *     this.mouseX = fVar10;
		 *     if ((fVar12 < fVar14) || (fVar14 < _UNK_0134e5f8)) {
		 *       fVar15 = this.ElevationAngle - fVar14 * this.MoveSensitivity;
		 *       fVar14 = this.MaxElevationAngle;
		 *       if (fVar15 <= this.MaxElevationAngle) {
		 *         fVar14 = fVar15;
		 *       }
		 *       fVar13 = this.MinElevationAngle;
		 *       if (this.MinElevationAngle <= fVar15) {
		 *         fVar13 = fVar14;
		 *       }
		 *       this.ElevationAngle = fVar13;
		 *     }
		 *     uVar16 = 0;
		 *     if ((fVar12 < fVar10) || (fVar10 < _UNK_0134e5f8)) {
		 *       fVar10 = this.OrbitalAngle + fVar10 * this.MoveSensitivity;
		 *       uVar16 = 0;
		 *       this.OrbitalAngle = fVar10;
		 *       fVar12 = fVar10 + -360.0;
		 *       if ((360.0 < fVar10) || (fVar12 = fVar10, fVar10 < 0.0)) {
		 *         fVar10 = fVar12 + 360.0;
		 *         if (0.0 <= fVar12) {
		 *           fVar10 = fVar12;
		 *         }
		 *         this.OrbitalAngle = fVar10;
		 *       }
		 *     }
		 *   }
		 *   if (iVar3 == 1) {
		 *     UnityEngine.Input.GetTouch(&uStack_1e4,0,0);
		 *     func_0x06cb39b0(&uStack_d0,&uStack_1e4,0x44);
		 *     iVar4 = UnityEngine.Touch.get_phase(&uStack_d0);
		 *     if (iVar4 == 1) {
		 *       UnityEngine.Input.GetTouch(&uStack_1e4,0,0);
		 *       func_0x06cb39b0(&uStack_d0,&uStack_1e4,0x44);
		 *       UVar18 = UnityEngine.Touch.get_deltaPosition(&uStack_d0);
		 *       fVar12 = _UNK_0134e9fc;
		 *       fVar14 = UVar18.y;
		 *       fVar10 = UVar18.x;
		 *       uVar16 = 0;
		 *       if ((_UNK_0134e9fc < fVar14) || (fVar14 < _UNK_0134e5f8)) {
		 *         fVar15 = this.ElevationAngle + fVar14 * _UNK_0134ece0;
		 *         fVar14 = this.MaxElevationAngle;
		 *         if (fVar15 <= this.MaxElevationAngle) {
		 *           fVar14 = fVar15;
		 *         }
		 *         fVar13 = this.MinElevationAngle;
		 *         if (this.MinElevationAngle <= fVar15) {
		 *           fVar13 = fVar14;
		 *         }
		 *         this.ElevationAngle = fVar13;
		 *       }
		 *       if ((fVar12 < fVar10) || (fVar10 < _UNK_0134e5f8)) {
		 *         fVar10 = fVar10 * _UNK_0134eca0 + this.OrbitalAngle;
		 *         uVar16 = 0;
		 *         this.OrbitalAngle = fVar10;
		 *         fVar12 = fVar10 + -360.0;
		 *         if ((360.0 < fVar10) || (fVar12 = fVar10, fVar10 < 0.0)) {
		 *           fVar10 = fVar12 + 360.0;
		 *           if (0.0 <= fVar12) {
		 *             fVar10 = fVar12;
		 *           }
		 *           this.OrbitalAngle = fVar10;
		 *         }
		 *       }
		 *     }
		 *   }
		 *   bVar2 = UnityEngine.Input.GetMouseButton(0);
		 *   if (bVar2) {
		 *     pvVar5 = UnityEngine.Camera.get_main();
		 *     UVar17 = UnityEngine.Input.get_mousePosition();
		 *     if (pvVar5 == null) goto LAB_0336a6f0;
		 *     UnityEngine.Camera.ScreenPointToRay(&uStack_1e4,UVar17.x,UVar17.y,CONCAT44(uVar16,UVar17.z),pvVar5,0);
		 *     if (*(int *)(*(long *)typeinfo_ptr_UnityEngine_PhysicsModule_Physics_6FC09E8 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *     uStack_1f0 = uStack_1d4;
		 *     uStack_1f8 = uStack_1dc;
		 *     uStack_200 = uStack_1e4;
		 *     uVar6 = Physics.Raycast(0x43960000,&uStack_200,&uStack_100,0x5c00);
		 *     if ((uVar6 & 1) != 0) {
		 *       pvVar5 = UnityEngine.RaycastHit.get_transform(&uStack_100)
		 *       ;
		 *       pvVar8 = this.CameraTarget;
		 *       if (*(int *)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8 + 0xe4) == 0) {
		 *         func_0x031fde08(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *       }
		 *       uVar6 = UnityEngine.Object.op_Equality(pvVar5,pvVar8);
		 *       if ((uVar6 & 1) == 0) {
		 *         pvVar5 = UnityEngine.RaycastHit.get_transform(&uStack_100);
		 *         this.CameraTarget = pvVar5;
		 *         func_0x031fdc38(&this.CameraTarget,pvVar5);
		 *         this.OrbitalAngle = 0.0;
		 *         this.MovementSmoothing = this.previousSmoothing;
		 *       }
		 *       else {
		 *         this.OrbitalAngle = 0.0;
		 *       }
		 *     }
		 *   }
		 *   bVar2 = UnityEngine.Input.GetMouseButton(2);
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if (bVar2) {
		 *     ppvVar7 = &this.dummyTarget;
		 *     pvVar5 = *ppvVar7;
		 *     if (*(int *)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *     uVar6 = UnityEngine.Object.op_Equality(pvVar5,null);
		 *     if ((uVar6 & 1) == 0) {
		 *       pvVar5 = this.CameraTarget;
		 *       pvVar8 = this.dummyTarget;
		 *       if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *       }
		 *       uVar6 = UnityEngine.Object.op_Inequality(pvVar8,pvVar5);
		 *       if ((uVar6 & 1) != 0) {
		 *         pvVar5 = this.CameraTarget;
		 *         if (pvVar5 == null) goto LAB_0336a6f0;
		 *         pvVar8 = *ppvVar7;
		 *         goto LAB_0336a424;
		 *       }
		 *     }
		 *     else {
		 *       pvVar5 = (void *)func_0x031fdf24(*(undefined8 *)
		 *                                         typeinfo_ptr_UnityEngine_CoreModule_GameObject_6FC1548);
		 *       UnityEngine.GameObject..ctor(pvVar5,*(void **)PTR_DAT_070c5328);
		 *       if (pvVar5 == null) goto LAB_0336a6f0;
		 *       pvVar5 = UnityEngine.GameObject.get_transform(pvVar5);
		 *       this.dummyTarget = pvVar5;
		 *       func_0x031fdc38(ppvVar7,pvVar5);
		 *       pvVar5 = this.CameraTarget;
		 *       if (pvVar5 == null) goto LAB_0336a6f0;
		 *       pvVar8 = this.dummyTarget;
		 * LAB_0336a424:
		 *       ppvVar9 = &this.CameraTarget;
		 *       UVar17 = UnityEngine.Transform.get_position(pvVar5);
		 *       if (pvVar8 == null) goto LAB_0336a6f0;
		 *       UnityEngine.Transform.set_position(pvVar8,UVar17);
		 *       if (*ppvVar9 == null) goto LAB_0336a6f0;
		 *       pvVar5 = *ppvVar7;
		 *       value = UnityEngine.Transform.get_rotation(*ppvVar9);
		 *       if (pvVar5 == null) goto LAB_0336a6f0;
		 *       UnityEngine.Transform.set_rotation(pvVar5,value);
		 *       *ppvVar9 = *ppvVar7;
		 *       func_0x031fdc38(ppvVar9);
		 *       bVar2 = this.MovementSmoothing;
		 *       this.MovementSmoothing = false;
		 *       this.previousSmoothing = bVar2;
		 *     }
		 *     fVar12 = UnityEngine.Input.GetAxis(*(void **)PTR_DAT_070c5330);
		 *     puVar1 = PTR_DAT_070c5338;
		 *     this.mouseY = fVar12;
		 *     fVar12 = UnityEngine.Input.GetAxis(*(void **)puVar1);
		 *     this.mouseX = fVar12;
		 *     if (this.cameraTransform == null) {
		 * LAB_0336a6f0:
		 *       IL2CPP.ThrowNullReferenceException();
		 *     }
		 *     UVar17 = UnityEngine.Transform.TransformDirection(this.cameraTransform,fVar12,this.mouseY,0.0);
		 *     pvVar5 = this.dummyTarget;
		 *     (this.moveVector).x = UVar17.x;
		 *     (this.moveVector).y = UVar17.y;
		 *     (this.moveVector).z = UVar17.z;
		 *     if (pvVar5 == null) goto LAB_0336a6f0;
		 *     UnityEngine.Transform.Translate(-UVar17.x,-UVar17.y,-UVar17.z,pvVar5,0,0);
		 *   }
		 *   if (iVar3 == 2) {
		 *     UnityEngine.Input.GetTouch(&uStack_1e4,0,0);
		 *     func_0x06cb39b0(&uStack_150,&uStack_1e4,0x44);
		 *     UnityEngine.Input.GetTouch(auStack_244,1,0);
		 *     func_0x06cb39b0(&uStack_1a0,auStack_244,0x44);
		 *     UVar18 = UnityEngine.Touch.get_position(&uStack_150);
		 *     UVar19 = UnityEngine.Touch.get_deltaPosition(&uStack_150);
		 *     UVar20 = UnityEngine.Touch.get_position(&uStack_1a0);
		 *     UVar21 = UnityEngine.Touch.get_deltaPosition(&uStack_1a0);
		 *     if (cRam000000000754ac05 == '\0') {
		 *       func_0x031fdc8c(typeinfo_ptr_mscorlib_Math_6FC0738);
		 *       cRam000000000754ac05 = '\x01';
		 *     }
		 *     puVar1 = typeinfo_ptr_mscorlib_Math_6FC0738;
		 *     fVar12 = (UVar18.x - UVar19.x) - (UVar20.x - UVar21.x);
		 *     fVar10 = (UVar18.y - UVar19.y) - (UVar20.y - UVar21.y);
		 *     if (*(int *)(*(long *)typeinfo_ptr_mscorlib_Math_6FC0738 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *     UVar18 = UnityEngine.Touch.get_position(&uStack_150);
		 *     UVar19 = UnityEngine.Touch.get_position(&uStack_1a0);
		 *     if (cRam000000000754ac05 == '\0') {
		 *       func_0x031fdc8c(typeinfo_ptr_mscorlib_Math_6FC0738);
		 *       cRam000000000754ac05 = '\x01';
		 *     }
		 *     fVar14 = UVar18.x - UVar19.x;
		 *     fVar15 = UVar18.y - UVar19.y;
		 *     if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *     fVar12 = SQRT(fVar12 * fVar12 + fVar10 * fVar10) - SQRT(fVar14 * fVar14 + fVar15 * fVar15);
		 *     if ((_UNK_0134e9fc < fVar12) || (fVar12 < _UNK_0134e5f8)) {
		 *       fVar10 = fVar12 * 0.25 + this.FollowDistance;
		 *       fVar12 = this.MaxFollowDistance;
		 *       if (fVar10 <= this.MaxFollowDistance) {
		 *         fVar12 = fVar10;
		 *       }
		 *       fVar14 = this.MinFollowDistance;
		 *       if (this.MinFollowDistance <= fVar10) {
		 *         fVar14 = fVar12;
		 *       }
		 *       this.FollowDistance = fVar14;
		 *     }
		 *   }
		 * LAB_0336a684:
		 *   fVar12 = this.mouseWheel;
		 *   if ((fVar12 < _UNK_0134e5f8) || (_UNK_0134e9fc < fVar12)) {
		 *     fVar10 = this.FollowDistance + fVar12 * -5.0;
		 *     fVar12 = this.MaxFollowDistance;
		 *     if (fVar10 <= this.MaxFollowDistance) {
		 *       fVar12 = fVar10;
		 *     }
		 *     fVar14 = this.MinFollowDistance;
		 *     if (this.MinFollowDistance <= fVar10) {
		 *       fVar14 = fVar12;
		 *     }
		 *     this.FollowDistance = fVar14;
		 *   }
		 *   return;
		 */
		// RVA: 0x326A6F4 VA: 0x78189556F4
		public void .ctor();
		/*
		 *   undefined4 uVar1;
		 *   undefined8 uVar2;
		 *   undefined *puVar3;
		 *   char cVar4;
		 *   undefined8 uVar5;
		 *   undefined8 uVar6;
		 *   undefined8 uVar7;
		 *   float fVar8;
		 *
		 *   cVar4 = cRam000000000754a7ce;
		 *   uVar2 = _UNK_0134d7d8;
		 *   uVar5 = _UNK_0134a9c8;
		 *   uVar7 = _UNK_0134a9c0;
		 *   this.MaxElevationAngle = 85.0;
		 *   this.MovementSmoothing = true;
		 *   uVar6 = _UNK_0134a9c8;
		 *   _UNK_0134a9c8 = (undefined4)uVar5;
		 *   _UNK_0134a9cc = SUB84(uVar5,4);
		 *   uVar1 = _UNK_0134a9cc;
		 *   this.MinFollowDistance = (float)_UNK_0134a9c8;
		 *   _UNK_0134a9c8 = uVar6;
		 *   uVar5 = _UNK_0134a9c0;
		 *   this.ElevationAngle = (float)uVar1;
		 *   _UNK_0134a9c0 = (undefined4)uVar7;
		 *   _UNK_0134a9c4 = SUB84(uVar7,4);
		 *   uVar1 = _UNK_0134a9c4;
		 *   this.FollowDistance = (float)_UNK_0134a9c0;
		 *   _UNK_0134a9c0 = uVar5;
		 *   uVar7 = _UNK_0134d7d8;
		 *   this.MaxFollowDistance = (float)uVar1;
		 *   _UNK_0134d7d8 = (undefined4)uVar2;
		 *   _UNK_0134d7dc = SUB84(uVar2,4);
		 *   uVar1 = _UNK_0134d7dc;
		 *   this.MovementSmoothingValue = (float)_UNK_0134d7d8;
		 *   _UNK_0134d7d8 = uVar7;
		 *   this.RotationSmoothingValue = (float)uVar1;
		 *   this.MoveSensitivity = 2.0;
		 *   if (cVar4 == '\0') {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *     cRam000000000754a7ce = '\x01';
		 *   }
		 *   uVar7 = **(undefined8 **)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
		 *   fVar8 = *(float *)(*(undefined8 **)
		 *                       (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8) + 1);
		 *   (this.currentVelocity).x = (float)(int)uVar7;
		 *   (this.currentVelocity).y = (float)(int)((ulong)uVar7 >> 0x20);
		 *   (this.currentVelocity).z = fVar8;
		 *   puVar3 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000755f76f & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8,0);
		 *     bRam000000000755f76f = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar3 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   return;
		 */
	}
}
