namespace ExitGames.Demos.DemoPunVoice
{

	// [TypeInfo RVA: 0x0]
	public abstract class BaseController : MonoBehaviour
	{
		public UnityEngine.Camera ControllerCamera; // 0x20
		protected UnityEngine.Rigidbody rigidBody; // 0x28
		protected UnityEngine.Animator animator; // 0x30
		protected UnityEngine.Transform camTrans; // 0x38
		private float h; // 0x40
		private float v; // 0x44
		protected float speed; // 0x48
		private float cameraDistance; // 0x4C

		// RVA: 0x327F6B4 VA: 0x781896A6B4
		protected virtual void OnEnable();
		/*
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   bool bVar3;
		 *   void *this_00;
		 *   long *plVar4;
		 *   void *pvVar5;
		 *   void *extraout_x1;
		 *   void *in_x3;
		 *   void *a;
		 *
		 *   puVar1 = PTR_DAT_070c58d0;
		 *   if ((bRam000000000754ac8c & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c58d0);
		 *     bRam000000000754ac8c = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   this_00 = (void *)func_0x031fdf24(*(undefined8 *)puVar1,methodInfo);
		 *   if (this != null) {
		 *     OnCameraChanged..ctor(this_00,this,*(void **)(*(long *)this + 0x1a0));
		 *     puVar1 = PTR_DAT_070c58d8;
		 *     if ((bRam000000000754ac99 & 1) == 0) {
		 *       func_0x031fdc8c(PTR_DAT_070c58d8);
		 *       func_0x031fdc8c(PTR_DAT_070c58d0);
		 *       bRam000000000754ac99 = 1;
		 *     }
		 *     puVar2 = PTR_DAT_070c58d0;
		 *     a = (void *)**(undefined8 **)(*(long *)puVar1 + 0xb8);
		 *     while ((plVar4 = System.Delegate.Combine(a,this_00),
		 *            plVar4 == null || (*plVar4 == *(long *)puVar2))) {
		 *       pvVar5 = (void *)func_0x03236d84(*(undefined8 *)(*(long *)puVar1 + 0xb8),plVar4,a);
		 *       bVar3 = pvVar5 == a;
		 *       a = pvVar5;
		 *       if (bVar3) {
		 *         return;
		 *       }
		 *     }
		 *     noreturn_helper_30fe2b4(plVar4);
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327F884 VA: 0x781896A884
		protected virtual void OnDisable();
		/*
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   bool bVar3;
		 *   void *this_00;
		 *   long *plVar4;
		 *   void *pvVar5;
		 *   void *extraout_x1;
		 *   void *in_x3;
		 *   void *source;
		 *
		 *   puVar1 = PTR_DAT_070c58d0;
		 *   if ((bRam000000000754ac8d & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c58d0);
		 *     bRam000000000754ac8d = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   this_00 = (void *)func_0x031fdf24(*(undefined8 *)puVar1,methodInfo);
		 *   if (this != null) {
		 *     OnCameraChanged..ctor(this_00,this,*(void **)(*(long *)this + 0x1a0));
		 *     puVar1 = PTR_DAT_070c58d8;
		 *     if ((bRam000000000754ac9a & 1) == 0) {
		 *       func_0x031fdc8c(PTR_DAT_070c58d8);
		 *       func_0x031fdc8c(PTR_DAT_070c58d0);
		 *       bRam000000000754ac9a = 1;
		 *     }
		 *     puVar2 = PTR_DAT_070c58d0;
		 *     source = (void *)**(undefined8 **)(*(long *)puVar1 + 0xb8);
		 *     while ((plVar4 = System.Delegate.Remove(source,this_00),
		 *            plVar4 == null || (*plVar4 == *(long *)puVar2))) {
		 *       pvVar5 = (void *)func_0x03236d84(*(undefined8 *)(*(long *)puVar1 + 0xb8),plVar4,source);
		 *       bVar3 = pvVar5 == source;
		 *       source = pvVar5;
		 *       if (bVar3) {
		 *         return;
		 *       }
		 *     }
		 *     noreturn_helper_30fe2b4(plVar4);
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327F9A4 VA: 0x781896A9A4
		protected virtual void ChangePOV_CameraChanged(UnityEngine.Camera camera);
		/*
		 *   undefined *puVar1;
		 *   ulong uVar2;
		 *   undefined8 uVar3;
		 *   code *UNRECOVERED_JUMPTABLE;
		 *   void *pvVar4;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac8e & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac8e = 1;
		 *   }
		 *   pvVar4 = this.ControllerCamera;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar2 = UnityEngine.Object.op_Inequality(camera,pvVar4);
		 *   if ((uVar2 & 1) == 0) {
		 *     pvVar4 = this.ControllerCamera;
		 *     UNRECOVERED_JUMPTABLE = *(code **)(*(long *)this + 0x1f8);
		 *     uVar3 = *(undefined8 *)(*(long *)this + 0x200);
		 *   }
		 *   else {
		 *     UnityEngine.InputSystem.OnScreen.OnScreenStick.Behaviour.set_enabled(this,false);
		 *     pvVar4 = this.ControllerCamera;
		 *     uVar3 = *(undefined8 *)(*(long *)this + 0x210);
		 *     UNRECOVERED_JUMPTABLE = *(code **)(*(long *)this + 0x208);
		 *   }
		 *   (*UNRECOVERED_JUMPTABLE)(this,pvVar4,uVar3);
		 *   return;
		 */
		// RVA: 0x327FA4C VA: 0x781896AA4C
		protected virtual void Start();
		/*
		 *   undefined *puVar1;
		 *   long lVar2;
		 *
		 *   puVar1 = PTR_DAT_070c1b80;
		 *   if ((bRam000000000754ac8f & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c1b80);
		 *     bRam000000000754ac8f = 1;
		 *   }
		 *   lVar2 = func_0x0373df50(this,*(undefined8 *)puVar1);
		 *   if (lVar2 == 0) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   if (*(char *)(lVar2 + 0x68) != '\0') {
		 *     (**(code **)(*(long *)this + 0x1b8))(this,*(undefined8 *)(*(long *)this + 0x1c0));
		 *     (**(code **)(*(long *)this + 0x1c8))(this,*(undefined8 *)(*(long *)this + 0x1d0));
		 *     return;
		 *   }
		 *   if ((bRam000000000755f745 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_0714f3a0,0,0);
		 *     bRam000000000755f745 = 1;
		 *   }
		 *   if (this != null) {
		 *     lVar2 = *(long *)&this.field_0x10;
		 *     if (lVar2 == 0) {
		 *       UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(this);
		 *     }
		 *     if (pcRam000000000755f750 == null) {
		 *       pcRam000000000755f750 = (code *)func_0x031fdc50(&UNK_0137c3e0);
		 *     }
		 *     (*pcRam000000000755f750)(lVar2,0);
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327FADC VA: 0x781896AADC
		protected virtual void Init();
		/*
		 *   undefined *puVar1;
		 *   void *pvVar2;
		 *   void **ppvVar3;
		 *
		 *   puVar1 = PTR_DAT_070c0c08;
		 *   if ((bRam000000000754ac90 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c2358);
		 *     func_0x031fdc8c(PTR_DAT_070c0c08);
		 *     bRam000000000754ac90 = 1;
		 *   }
		 *   pvVar2 = (void *)func_0x0373df50(this,*(undefined8 *)puVar1);
		 *   ppvVar3 = &this.rigidBody;
		 *   *ppvVar3 = pvVar2;
		 *   if (iRam00000000077785f0 != 0) {
		 *     func_0x032ed0c0(1L << ((ulong)ppvVar3 >> 0xc & 0x3f),
		 *                     ((ulong)ppvVar3 >> 0x12 & 0x7fff) * 8 + 0x75ac5c8);
		 *   }
		 *   return;
		 */
		// RVA: 0x327FB6C VA: 0x781896AB6C
		protected virtual void SetCamera();
		/*
		 *   void *pvVar1;
		 *   void *this_00;
		 *   void **ppvVar2;
		 *   long lVar3;
		 *
		 *   if (this.ControllerCamera != null) {
		 *     pvVar1 = UnityEngine.Component.get_transform(this.ControllerCamera);
		 *     ppvVar2 = &this.camTrans;
		 *     *ppvVar2 = pvVar1;
		 *     func_0x031fdc38(ppvVar2,pvVar1);
		 *     pvVar1 = *ppvVar2;
		 *     if (pvVar1 != null) {
		 *       UnityEngine.Transform.get_position(pvVar1);
		 *       this_00 = UnityEngine.Component.get_transform(this);
		 *       if (this_00 != null) {
		 *         UnityEngine.Transform.get_forward(this_00);
		 *         if ((bRam000000000755ff19 & 1) == 0) {
		 *           func_0x031fdc8c(PTR_DAT_0714f6d0,0);
		 *           bRam000000000755ff19 = 1;
		 *         }
		 *         if (pvVar1 != null) {
		 *           lVar3 = *(long *)((long)pvVar1 + 0x10);
		 *           if (lVar3 == 0) {
		 *             UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(pvVar1);
		 *           }
		 *           if (pcRam000000000755ff50 == null) {
		 *             pcRam000000000755ff50 = (code *)func_0x031fdc50(&UNK_01396672);
		 *           }
		 *           (*pcRam000000000755ff50)(lVar3,&stack0xffffffffffffffd4);
		 *           return;
		 *         }
		 *         IL2CPP.ThrowNullReferenceException();
		 *       }
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327FC18 VA: 0x781896AC18
		protected virtual void UpdateAnimator(float h, float v);
		/*
		 *   bool bVar1;
		 *   ushort uVar2;
		 *   void *pvVar3;
		 *   undefined8 uVar4;
		 *   void *extraout_x1;
		 *   void *this_00;
		 *   long lVar5;
		 *   undefined8 uStack_60;
		 *   undefined8 uStack_58;
		 *   ulong uStack_50;
		 *   ulong uStack_48;
		 *   undefined8 uStack_40;
		 *   undefined8 uStack_38;
		 *
		 *   if ((bRam000000000754ac91 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c58e0);
		 *     bRam000000000754ac91 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   pvVar3 = this.animator;
		 *   if (pvVar3 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   this_00 = *(void **)PTR_DAT_070c58e0;
		 *   bVar1 = v != 0.0 || h != 0.0;
		 *   if ((bRam000000000755d515 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_0714df58,this_00,bVar1,0);
		 *     func_0x031fdc8c(PTR_DAT_0714d7c0);
		 *     func_0x031fdc8c(PTR_DAT_070dc338);
		 *     bRam000000000755d515 = 1;
		 *   }
		 *   uStack_50 = 0;
		 *   uStack_48 = 0;
		 *   uStack_60 = 0;
		 *   uStack_58 = 0;
		 *   if (pvVar3 != null) {
		 *     lVar5 = *(long *)((long)pvVar3 + 0x10);
		 *     if (lVar5 == 0) {
		 *       UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(pvVar3);
		 *     }
		 *     if (this_00 == null) {
		 *       uStack_60 = 0;
		 *       uStack_58 = 0;
		 *     }
		 *     else if (*(int *)((long)this_00 + 0x10) == 0) {
		 *       pvVar3 = System.UIntPtr.op_Explicit(1);
		 *       uVar4 = System.UIntPtr.op_Explicit(pvVar3);
		 *       uStack_40 = 0;
		 *       uStack_38 = 0;
		 *       UnityEngine.Bindings.ManagedSpanWrapper..ctor(&uStack_40,uVar4,0);
		 *       uStack_58 = uStack_38;
		 *       uStack_60 = uStack_40;
		 *     }
		 *     else {
		 *       if (cRam0000000007550941 == '\0') {
		 *         func_0x031fdc8c(PTR_DAT_070cc218);
		 *         cRam0000000007550941 = '\x01';
		 *       }
		 *       uVar2 = System.String.GetRawStringData(this_00);
		 *       uStack_50 = (ulong)uVar2;
		 *       uStack_48 = (ulong)*(uint *)((long)this_00 + 0x10);
		 *       uVar4 = func_0x04604eb0(&uStack_50,*(undefined8 *)PTR_DAT_0714d7c0);
		 *       UnityEngine.Bindings.ManagedSpanWrapper..ctor(&uStack_60,uVar4,uStack_48 & 0xffffffff);
		 *     }
		 *     if (pcRam000000000755d5b0 == null) {
		 *       pcRam000000000755d5b0 = (code *)func_0x031fdc50(&UNK_01391777);
		 *     }
		 *     (*pcRam000000000755d5b0)(lVar5,&uStack_60,bVar1);
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327FC8C VA: 0x781896AC8C
		protected virtual void FixedUpdate();
		/*
		 *   code *pcVar1;
		 *   undefined8 uVar2;
		 *   undefined *puVar3;
		 *   undefined *puVar4;
		 *   undefined *puVar5;
		 *   void *name;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   void *methodInfo_00;
		 *   float fVar6;
		 *   int iVar7;
		 *   undefined4 uVar8;
		 *   int iVar9;
		 *   ulong uVar10;
		 *   ulong uVar11;
		 *
		 *   puVar3 = PTR_DAT_070c56f8;
		 *   if ((bRam000000000754ac92 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c56f8);
		 *     func_0x031fdc8c(PTR_DAT_070c5790);
		 *     func_0x031fdc8c(PTR_DAT_070c5710);
		 *     bRam000000000754ac92 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   puVar5 = PTR_DAT_070c5790;
		 *   puVar4 = PTR_DAT_070c5710;
		 *   if (*(int *)(*(long *)puVar3 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   fVar6 = CrossPlatformInputManager.GetAxisRaw(*(void **)puVar4);
		 *   name = *(void **)puVar5;
		 *   this.h = fVar6;
		 *   fVar6 = CrossPlatformInputManager.GetAxisRaw(name);
		 *   uVar10 = NEON_fmov(0xbf800000,4);
		 *   uVar11 = NEON_fmov(0x3f800000,4);
		 *   this.v = fVar6;
		 *   pcVar1 = *(code **)(*(long *)this + 0x1d8);
		 *   uVar2 = *(undefined8 *)(*(long *)this + 0x1e0);
		 *   uVar10 = uVar10 ^ (uVar10 ^ uVar11) & CONCAT44(-(uint)(0.0 <= fVar6),-(uint)(0.0 <= this.h));
		 *   iVar7 = -(uint)(ABS(this.h) < 0.5);
		 *   iVar9 = -(uint)(ABS(fVar6) < 0.5);
		 *   uVar8 = CONCAT13((byte)(uVar10 >> 0x18) & ~(byte)((uint)iVar7 >> 0x18),
		 *                    CONCAT12((byte)(uVar10 >> 0x10) & ~(byte)((uint)iVar7 >> 0x10),
		 *                             CONCAT11((byte)(uVar10 >> 8) & ~(byte)((uint)iVar7 >> 8),
		 *                                      (byte)uVar10 & ~(byte)iVar7)));
		 *   uVar10 = CONCAT17((byte)(uVar10 >> 0x38) & ~(byte)((uint)iVar9 >> 0x18),
		 *                     CONCAT16((byte)(uVar10 >> 0x30) & ~(byte)((uint)iVar9 >> 0x10),
		 *                              CONCAT15((byte)(uVar10 >> 0x28) & ~(byte)((uint)iVar9 >> 8),
		 *                                       CONCAT14((byte)(uVar10 >> 0x20) & ~(byte)iVar9,uVar8))));
		 *   this.h = (float)uVar8;
		 *   this.v = (float)(int)(uVar10 >> 0x20);
		 *   (*pcVar1)(uVar8,uVar10 >> 0x20,this,uVar2);
		 *   (**(code **)(*(long *)this + 0x218))(this.h,this.v,this,*(undefined8 *)(*(long *)this + 0x220));
		 *   return;
		 */
		// RVA: 0x327FD74 VA: 0x781896AD74
		protected virtual void ShowCamera(UnityEngine.Camera camera);
		/*
		 *   undefined *puVar1;
		 *   ulong uVar2;
		 *   void *obj;
		 *   long lVar3;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac93 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac93 = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar2 = UnityEngine.Object.op_Inequality(camera,null);
		 *   if ((uVar2 & 1) == 0) {
		 *     return;
		 *   }
		 *   if ((camera == null) ||
		 *      (obj = UnityEngine.Component.get_gameObject(camera),
		 *      obj == null)) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   if ((bRam000000000755f7e0 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_0714f3e0,1,0);
		 *     bRam000000000755f7e0 = 1;
		 *   }
		 *   if (obj != null) {
		 *     lVar3 = *(long *)((long)obj + 0x10);
		 *     if (lVar3 == 0) {
		 *       UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(obj);
		 *     }
		 *     if (pcRam000000000755f860 == null) {
		 *       pcRam000000000755f860 = (code *)func_0x031fdc50(&UNK_0138da18);
		 *     }
		 *     (*pcRam000000000755f860)(lVar3,1);
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327FE04 VA: 0x781896AE04
		protected virtual void HideCamera(UnityEngine.Camera camera);
		/*
		 *   undefined *puVar1;
		 *   ulong uVar2;
		 *   void *obj;
		 *   long lVar3;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000754ac94 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     bRam000000000754ac94 = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar2 = UnityEngine.Object.op_Inequality(camera,null);
		 *   if ((uVar2 & 1) == 0) {
		 *     return;
		 *   }
		 *   if ((camera == null) ||
		 *      (obj = UnityEngine.Component.get_gameObject(camera),
		 *      obj == null)) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   if ((bRam000000000755f7e0 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_0714f3e0,0,0);
		 *     bRam000000000755f7e0 = 1;
		 *   }
		 *   if (obj != null) {
		 *     lVar3 = *(long *)((long)obj + 0x10);
		 *     if (lVar3 == 0) {
		 *       UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(obj);
		 *     }
		 *     if (pcRam000000000755f860 == null) {
		 *       pcRam000000000755f860 = (code *)func_0x031fdc50(&UNK_0138da18);
		 *     }
		 *     (*pcRam000000000755f860)(lVar3,0);
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x0 VA: 0x0
		protected abstract void Move(float h, float v);

		// RVA: 0x327FE94 VA: 0x781896AE94
		protected void .ctor();
		/*
		 *   undefined *puVar1;
		 *
		 *   this.speed = 5.0;
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000755f76f & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8,0);
		 *     bRam000000000755f76f = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   return;
		 */
	}
}
