namespace UnityStandardAssets.CrossPlatformInput
{

	// [TypeInfo RVA: 0x0]
	public abstract class VirtualInput : Object
	{
		private UnityEngine.Vector3 <virtualMousePosition>k__BackingField; // 0x10
		protected System.Collections.Generic.Dictionary<System.String,UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualAxis> m_VirtualAxes; // 0x20
		protected System.Collections.Generic.Dictionary<System.String,UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualButton> m_VirtualButtons; // 0x28
		protected System.Collections.Generic.List<System.String> m_AlwaysUseVirtual; // 0x30

		// RVA: 0x327D5B4 VA: 0x78189685B4
		public UnityEngine.Vector3 get_virtualMousePosition();
		/*
		 *   return this.virtualMousePosition_k_BackingField;
		 */
		// RVA: 0x327D5C0 VA: 0x78189685C0
		private void set_virtualMousePosition(UnityEngine.Vector3 value);
		/*
		 *   (this.virtualMousePosition_k_BackingField).x = value.x;
		 *   (this.virtualMousePosition_k_BackingField).y = value.y;
		 *   (this.virtualMousePosition_k_BackingField).z = value.z;
		 *   return;
		 */
		// RVA: 0x327B740 VA: 0x7818966740
		public bool AxisExists(string name);
		/*
		 *   byte extraout_var;
		 *
		 *   if ((bRam000000000754ac6b & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c5728);
		 *     bRam000000000754ac6b = 1;
		 *   }
		 *   if (this.m_VirtualAxes != null) {
		 *     func_0x04e2d510(this.m_VirtualAxes,name,
		 *                     *(undefined8 *)
		 *                      (*(long *)(*(long *)(*(long *)PTR_DAT_070c5728 + 0x20) + 0xc0) + 0x108));
		 *     return (bool)((byte)~extraout_var >> 7);
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327B800 VA: 0x7818966800
		public bool ButtonExists(string name);
		/*
		 *   byte extraout_var;
		 *
		 *   if ((bRam000000000754ac6c & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c5730);
		 *     bRam000000000754ac6c = 1;
		 *   }
		 *   if (this.m_VirtualButtons != null) {
		 *     func_0x04e2d510(this.m_VirtualButtons,name,
		 *                     *(undefined8 *)
		 *                      (*(long *)(*(long *)(*(long *)PTR_DAT_070c5730 + 0x20) + 0xc0) + 0x108));
		 *     return (bool)((byte)~extraout_var >> 7);
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327B858 VA: 0x7818966858
		public void RegisterVirtualAxis(UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualAxis axis);
		/*
		 *   uint uVar1;
		 *   undefined *puVar2;
		 *   ulong uVar3;
		 *   void *pvVar4;
		 *   long lVar5;
		 *   undefined8 *puVar6;
		 *   undefined8 uVar7;
		 *   undefined8 extraout_x1;
		 *   undefined8 extraout_x1_00;
		 *   long lVar8;
		 *   int *piVar9;
		 *   long *plVar10;
		 *
		 *   if ((bRam000000000754ac6d & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8);
		 *     func_0x031fdc8c(PTR_DAT_070c5738);
		 *     func_0x031fdc8c(PTR_DAT_070c5728);
		 *     func_0x031fdc8c(PTR_DAT_070c0780);
		 *     func_0x031fdc8c(PTR_DAT_070c5740);
		 *     func_0x031fdc8c(PTR_DAT_070c5748);
		 *     bRam000000000754ac6d = 1;
		 *   }
		 *   if ((axis != null) && (this.m_VirtualAxes != null)) {
		 *     uVar3 = func_0x04e2d048(this.m_VirtualAxes,*(undefined8 *)((long)axis + 0x10),
		 *                             *(undefined8 *)PTR_DAT_070c5728);
		 *     if ((uVar3 & 1) != 0) {
		 *       pvVar4 = System.String.Concat(*(void **)PTR_DAT_070c5748,*(void **)((long)axis + 0x10),*(void **)PTR_DAT_070c5740);
		 *       if (*(int *)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8 + 0xe4) == 0) {
		 *         func_0x031fde08(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8);
		 *       }
		 *       puVar2 = typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8;
		 *       uVar7 = 0;
		 *       if ((bRam000000000755e096 & 1) == 0) {
		 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8,0);
		 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_ILogger_6FD4B40);
		 *         bRam000000000755e096 = 1;
		 *         uVar7 = extraout_x1;
		 *       }
		 *       if (*(int *)(*(long *)puVar2 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *         uVar7 = extraout_x1_00;
		 *       }
		 *       if (cRam000000000755000b == '\0') {
		 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8,uVar7);
		 *         cRam000000000755000b = '\x01';
		 *       }
		 *       lVar5 = *(long *)puVar2;
		 *       if (*(int *)(lVar5 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *         lVar5 = *(long *)puVar2;
		 *       }
		 *       plVar10 = *(long **)(*(long *)(lVar5 + 0xb8) + 8);
		 *       if (plVar10 == null) {
		 *         IL2CPP.ThrowNullReferenceException();
		 *       }
		 *       lVar5 = *plVar10;
		 *       uVar3 = (ulong)*(ushort *)(lVar5 + 0x12e);
		 *       if (uVar3 != 0) {
		 *         piVar9 = (int *)(*(long *)(lVar5 + 0xb0) + 8);
		 *         do {
		 *           if (*(long *)(piVar9 + -2) == *(long *)typeinfo_ptr_UnityEngine_CoreModule_ILogger_6FD4B40
		 *              ) {
		 *             puVar6 = (undefined8 *)(lVar5 + (long)(*piVar9 + 3) * 0x10 + 0x138);
		 *             goto LAB_06938a10;
		 *           }
		 *           uVar3 = uVar3 - 1;
		 *           piVar9 = piVar9 + 4;
		 *         } while (uVar3 != 0);
		 *       }
		 *       puVar6 = (undefined8 *)
		 *                func_0x03237558(plVar10,*(long *)typeinfo_ptr_UnityEngine_CoreModule_ILogger_6FD4B40,
		 *                                3);
		 * LAB_06938a10:
		 *       (*(code *)*puVar6)(plVar10,0,pvVar4,puVar6[1]);
		 *       return;
		 *     }
		 *     if (this.m_VirtualAxes != null) {
		 *       func_0x04e2ce54(this.m_VirtualAxes,*(undefined8 *)((long)axis + 0x10),axis,
		 *                       *(undefined8 *)PTR_DAT_070c5738);
		 *       if (*(char *)((long)axis + 0x1c) != '\0') {
		 *         return;
		 *       }
		 *       pvVar4 = this.m_AlwaysUseVirtual;
		 *       if (pvVar4 != null) {
		 *         lVar5 = *(long *)((long)pvVar4 + 0x10);
		 *         uVar7 = *(undefined8 *)((long)axis + 0x10);
		 *         lVar8 = *(long *)PTR_DAT_070c0780;
		 *         *(int *)((long)pvVar4 + 0x1c) = *(int *)((long)pvVar4 + 0x1c) + 1;
		 *         if (lVar5 != 0) {
		 *           uVar1 = *(uint *)((long)pvVar4 + 0x18);
		 *           if (uVar1 < *(uint *)(lVar5 + 0x18)) {
		 *             puVar6 = (undefined8 *)(lVar5 + (long)(int)uVar1 * 8 + 0x20);
		 *             *puVar6 = uVar7;
		 *             *(uint *)((long)pvVar4 + 0x18) = uVar1 + 1;
		 *           }
		 *           else {
		 *             uVar1 = *(uint *)((long)pvVar4 + 0x18);
		 *             func_0x03f2dce8(pvVar4,uVar1 + 1,
		 *                             *(undefined8 *)
		 *                              (*(long *)(*(long *)(*(long *)(*(long *)(*(long *)(lVar8 + 0x20) + 0xc0
		 *                                                                      ) + 0x70) + 0x20) + 0xc0) +
		 *                              0x78));
		 *             lVar5 = *(long *)((long)pvVar4 + 0x10);
		 *             *(uint *)((long)pvVar4 + 0x18) = uVar1 + 1;
		 *             if (lVar5 == 0) {
		 *               IL2CPP.ThrowNullReferenceException();
		 *             }
		 *             if (*(uint *)(lVar5 + 0x18) <= uVar1) {
		 *               IL2CPP.ThrowIndexOutOfRangeException();
		 *             }
		 *             puVar6 = (undefined8 *)(lVar5 + (long)(int)uVar1 * 8 + 0x20);
		 *             *puVar6 = uVar7;
		 *           }
		 *           if (iRam00000000077785f0 != 0) {
		 *             func_0x032ed0c0(1L << ((ulong)puVar6 >> 0xc & 0x3f),
		 *                             ((ulong)puVar6 >> 0x12 & 0x7fff) * 8 + 0x75ac5c8);
		 *           }
		 *           return;
		 *         }
		 *       }
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327BA54 VA: 0x7818966A54
		public void RegisterVirtualButton(UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualButton button);
		/*
		 *   uint uVar1;
		 *   undefined *puVar2;
		 *   ulong uVar3;
		 *   void *pvVar4;
		 *   long lVar5;
		 *   undefined8 *puVar6;
		 *   undefined8 uVar7;
		 *   undefined8 extraout_x1;
		 *   undefined8 extraout_x1_00;
		 *   long lVar8;
		 *   int *piVar9;
		 *   long *plVar10;
		 *
		 *   if ((bRam000000000754ac6e & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8);
		 *     func_0x031fdc8c(PTR_DAT_070c5750);
		 *     func_0x031fdc8c(PTR_DAT_070c5730);
		 *     func_0x031fdc8c(PTR_DAT_070c0780);
		 *     func_0x031fdc8c(PTR_DAT_070c5758);
		 *     func_0x031fdc8c(PTR_DAT_070c5740);
		 *     bRam000000000754ac6e = 1;
		 *   }
		 *   if ((button != null) && (this.m_VirtualButtons != null)) {
		 *     uVar3 = func_0x04e2d048(this.m_VirtualButtons,*(undefined8 *)((long)button + 0x10),
		 *                             *(undefined8 *)PTR_DAT_070c5730);
		 *     if ((uVar3 & 1) != 0) {
		 *       pvVar4 = System.String.Concat(*(void **)PTR_DAT_070c5758,*(void **)((long)button + 0x10),*(void **)PTR_DAT_070c5740);
		 *       if (*(int *)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8 + 0xe4) == 0) {
		 *         func_0x031fde08(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8);
		 *       }
		 *       puVar2 = typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8;
		 *       uVar7 = 0;
		 *       if ((bRam000000000755e096 & 1) == 0) {
		 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8,0);
		 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_ILogger_6FD4B40);
		 *         bRam000000000755e096 = 1;
		 *         uVar7 = extraout_x1;
		 *       }
		 *       if (*(int *)(*(long *)puVar2 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *         uVar7 = extraout_x1_00;
		 *       }
		 *       if (cRam000000000755000b == '\0') {
		 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8,uVar7);
		 *         cRam000000000755000b = '\x01';
		 *       }
		 *       lVar5 = *(long *)puVar2;
		 *       if (*(int *)(lVar5 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *         lVar5 = *(long *)puVar2;
		 *       }
		 *       plVar10 = *(long **)(*(long *)(lVar5 + 0xb8) + 8);
		 *       if (plVar10 == null) {
		 *         IL2CPP.ThrowNullReferenceException();
		 *       }
		 *       lVar5 = *plVar10;
		 *       uVar3 = (ulong)*(ushort *)(lVar5 + 0x12e);
		 *       if (uVar3 != 0) {
		 *         piVar9 = (int *)(*(long *)(lVar5 + 0xb0) + 8);
		 *         do {
		 *           if (*(long *)(piVar9 + -2) == *(long *)typeinfo_ptr_UnityEngine_CoreModule_ILogger_6FD4B40
		 *              ) {
		 *             puVar6 = (undefined8 *)(lVar5 + (long)(*piVar9 + 3) * 0x10 + 0x138);
		 *             goto LAB_06938a10;
		 *           }
		 *           uVar3 = uVar3 - 1;
		 *           piVar9 = piVar9 + 4;
		 *         } while (uVar3 != 0);
		 *       }
		 *       puVar6 = (undefined8 *)
		 *                func_0x03237558(plVar10,*(long *)typeinfo_ptr_UnityEngine_CoreModule_ILogger_6FD4B40,
		 *                                3);
		 * LAB_06938a10:
		 *       (*(code *)*puVar6)(plVar10,0,pvVar4,puVar6[1]);
		 *       return;
		 *     }
		 *     if (this.m_VirtualButtons != null) {
		 *       func_0x04e2ce54(this.m_VirtualButtons,*(undefined8 *)((long)button + 0x10),button,
		 *                       *(undefined8 *)PTR_DAT_070c5750);
		 *       if (*(char *)((long)button + 0x18) != '\0') {
		 *         return;
		 *       }
		 *       pvVar4 = this.m_AlwaysUseVirtual;
		 *       if (pvVar4 != null) {
		 *         lVar5 = *(long *)((long)pvVar4 + 0x10);
		 *         uVar7 = *(undefined8 *)((long)button + 0x10);
		 *         lVar8 = *(long *)PTR_DAT_070c0780;
		 *         *(int *)((long)pvVar4 + 0x1c) = *(int *)((long)pvVar4 + 0x1c) + 1;
		 *         if (lVar5 != 0) {
		 *           uVar1 = *(uint *)((long)pvVar4 + 0x18);
		 *           if (uVar1 < *(uint *)(lVar5 + 0x18)) {
		 *             puVar6 = (undefined8 *)(lVar5 + (long)(int)uVar1 * 8 + 0x20);
		 *             *puVar6 = uVar7;
		 *             *(uint *)((long)pvVar4 + 0x18) = uVar1 + 1;
		 *           }
		 *           else {
		 *             uVar1 = *(uint *)((long)pvVar4 + 0x18);
		 *             func_0x03f2dce8(pvVar4,uVar1 + 1,
		 *                             *(undefined8 *)
		 *                              (*(long *)(*(long *)(*(long *)(*(long *)(*(long *)(lVar8 + 0x20) + 0xc0
		 *                                                                      ) + 0x70) + 0x20) + 0xc0) +
		 *                              0x78));
		 *             lVar5 = *(long *)((long)pvVar4 + 0x10);
		 *             *(uint *)((long)pvVar4 + 0x18) = uVar1 + 1;
		 *             if (lVar5 == 0) {
		 *               IL2CPP.ThrowNullReferenceException();
		 *             }
		 *             if (*(uint *)(lVar5 + 0x18) <= uVar1) {
		 *               IL2CPP.ThrowIndexOutOfRangeException();
		 *             }
		 *             puVar6 = (undefined8 *)(lVar5 + (long)(int)uVar1 * 8 + 0x20);
		 *             *puVar6 = uVar7;
		 *           }
		 *           if (iRam00000000077785f0 != 0) {
		 *             func_0x032ed0c0(1L << ((ulong)puVar6 >> 0xc & 0x3f),
		 *                             ((ulong)puVar6 >> 0x12 & 0x7fff) * 8 + 0x75ac5c8);
		 *           }
		 *           return;
		 *         }
		 *       }
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327BC9C VA: 0x7818966C9C
		public void UnRegisterVirtualAxis(string name);
		/*
		 *   undefined4 uVar1;
		 *   uint uVar2;
		 *   int iVar3;
		 *   uint uVar4;
		 *   ulong uVar5;
		 *   void *pvVar6;
		 *   undefined8 *puVar7;
		 *   long lVar8;
		 *   long lVar9;
		 *   long lVar10;
		 *   long lVar11;
		 *   ulong uVar12;
		 *   int *piVar13;
		 *   long *plVar14;
		 *   undefined8 uVar15;
		 *   uint uVar16;
		 *   ulong uVar17;
		 *   uint *puVar18;
		 *
		 *   if ((bRam000000000754ac6f & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c5728);
		 *     func_0x031fdc8c(PTR_DAT_070c5778);
		 *     bRam000000000754ac6f = 1;
		 *   }
		 *   if (this.m_VirtualAxes == null) {
		 * LAB_0337bd28:
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   uVar5 = func_0x04e2d048(this.m_VirtualAxes,name,*(undefined8 *)PTR_DAT_070c5728);
		 *   if ((uVar5 & 1) == 0) {
		 *     return;
		 *   }
		 *   pvVar6 = this.m_VirtualAxes;
		 *   if (pvVar6 == null) goto LAB_0337bd28;
		 *   lVar9 = *(long *)PTR_DAT_070c5778;
		 *   if (name == null) {
		 *     ThrowHelper.ThrowArgumentNullException(5);
		 *   }
		 *   if (*(long *)((long)pvVar6 + 0x10) != 0) {
		 *     plVar14 = *(long **)((long)pvVar6 + 0x30);
		 *     if (plVar14 == null) {
		 *       if (name == null) goto LAB_04e2e67c;
		 *       uVar4 = (**(code **)(*(long *)name + 0x158))(name,*(undefined8 *)(*(long *)name + 0x160));
		 *     }
		 *     else {
		 *       lVar8 = *(long *)(*(long *)(*(long *)(lVar9 + 0x20) + 0xc0) + 8);
		 *       if ((*(ushort *)(lVar8 + 0x135) & 1) == 0) {
		 *         lVar8 = func_0x03237224(lVar8);
		 *       }
		 *       lVar10 = *plVar14;
		 *       uVar5 = (ulong)*(ushort *)(lVar10 + 0x12e);
		 *       if (uVar5 != 0) {
		 *         piVar13 = (int *)(*(long *)(lVar10 + 0xb0) + 8);
		 *         do {
		 *           if (*(long *)(piVar13 + -2) == lVar8) {
		 *             puVar7 = (undefined8 *)(lVar10 + (long)(*piVar13 + 1) * 0x10 + 0x138);
		 *             goto LAB_04e2e440;
		 *           }
		 *           uVar5 = uVar5 - 1;
		 *           piVar13 = piVar13 + 4;
		 *         } while (uVar5 != 0);
		 *       }
		 *       puVar7 = (undefined8 *)func_0x03237558(plVar14,lVar8,1);
		 * LAB_04e2e440:
		 *       uVar4 = (*(code *)*puVar7)(plVar14,name,puVar7[1]);
		 *     }
		 *     lVar8 = *(long *)((long)pvVar6 + 0x10);
		 *     if (lVar8 == 0) {
		 * LAB_04e2e67c:
		 *       IL2CPP.ThrowNullReferenceException();
		 *     }
		 *     uVar16 = *(uint *)(lVar8 + 0x18);
		 *     uVar4 = uVar4 & 0x7fffffff;
		 *     iVar3 = 0;
		 *     if (uVar16 != 0) {
		 *       iVar3 = (int)uVar4 / (int)uVar16;
		 *     }
		 *     uVar2 = uVar4 - iVar3 * uVar16;
		 *     if (uVar16 <= uVar2) {
		 * LAB_04e2e680:
		 *       IL2CPP.ThrowIndexOutOfRangeException();
		 *     }
		 *     uVar16 = *(int *)(lVar8 + (ulong)uVar2 * 4 + 0x20) - 1;
		 *     if (-1 < (int)uVar16) {
		 *       uVar5 = 0xffffffff;
		 *       do {
		 *         lVar8 = *(long *)((long)pvVar6 + 0x18);
		 *         if (lVar8 == 0) goto LAB_04e2e67c;
		 *         if (*(uint *)(lVar8 + 0x18) <= uVar16) goto LAB_04e2e680;
		 *         lVar8 = lVar8 + 0x20;
		 *         puVar18 = (uint *)(lVar8 + (ulong)uVar16 * 0x18);
		 *         uVar17 = (ulong)uVar16;
		 *         if (*puVar18 == uVar4) {
		 *           plVar14 = *(long **)((long)pvVar6 + 0x30);
		 *           if (plVar14 == null) {
		 *             plVar14 = (long *)func_0x036616c4(*(undefined8 *)
		 *                                                (*(long *)(*(long *)(lVar9 + 0x20) + 0xc0) + 0x18));
		 *             if (plVar14 == null) goto LAB_04e2e67c;
		 *             uVar12 = (**(code **)(*plVar14 + 0x1b8))
		 *                                (plVar14,*(undefined8 *)(lVar8 + uVar17 * 0x18 + 8),name,
		 *                                 *(undefined8 *)(*plVar14 + 0x1c0));
		 *           }
		 *           else {
		 *             lVar10 = *(long *)(*(long *)(*(long *)(lVar9 + 0x20) + 0xc0) + 8);
		 *             uVar15 = *(undefined8 *)(lVar8 + uVar17 * 0x18 + 8);
		 *             if ((*(ushort *)(lVar10 + 0x135) & 1) == 0) {
		 *               lVar10 = func_0x03237224(lVar10);
		 *             }
		 *             lVar11 = *plVar14;
		 *             uVar12 = (ulong)*(ushort *)(lVar11 + 0x12e);
		 *             if (uVar12 != 0) {
		 *               piVar13 = (int *)(*(long *)(lVar11 + 0xb0) + 8);
		 *               do {
		 *                 if (*(long *)(piVar13 + -2) == lVar10) {
		 *                   puVar7 = (undefined8 *)(lVar11 + (long)*piVar13 * 0x10 + 0x138);
		 *                   goto LAB_04e2e58c;
		 *                 }
		 *                 uVar12 = uVar12 - 1;
		 *                 piVar13 = piVar13 + 4;
		 *               } while (uVar12 != 0);
		 *             }
		 *             puVar7 = (undefined8 *)func_0x03237558(plVar14,lVar10,0);
		 * LAB_04e2e58c:
		 *             uVar12 = (*(code *)*puVar7)(plVar14,uVar15,name,puVar7[1]);
		 *           }
		 *           if ((uVar12 & 1) != 0) {
		 *             if ((int)(uint)uVar5 < 0) {
		 *               lVar9 = *(long *)((long)pvVar6 + 0x10);
		 *               if (lVar9 == 0) goto LAB_04e2e67c;
		 *               if (*(uint *)(lVar9 + 0x18) <= uVar2) goto LAB_04e2e680;
		 *               *(int *)(lVar9 + (ulong)uVar2 * 4 + 0x20) = *(int *)(lVar8 + uVar17 * 0x18 + 4) + 1;
		 *             }
		 *             else {
		 *               lVar9 = *(long *)((long)pvVar6 + 0x18);
		 *               if (lVar9 == 0) goto LAB_04e2e67c;
		 *               if (*(uint *)(lVar9 + 0x18) <= (uint)uVar5) goto LAB_04e2e680;
		 *               *(undefined4 *)(lVar9 + uVar5 * 0x18 + 0x24) =
		 *                    *(undefined4 *)(lVar8 + uVar17 * 0x18 + 4);
		 *             }
		 *             uVar1 = *(undefined4 *)((long)pvVar6 + 0x24);
		 *             lVar8 = lVar8 + uVar17 * 0x18;
		 *             *puVar18 = 0xffffffff;
		 *             *(undefined4 *)(lVar8 + 4) = uVar1;
		 *             *(undefined8 *)(lVar8 + 8) = 0;
		 *             *(undefined8 *)(lVar8 + 0x10) = 0;
		 *             *(uint *)((long)pvVar6 + 0x24) = uVar16;
		 *             *(ulong *)((long)pvVar6 + 0x28) =
		 *                  CONCAT44((int)((ulong)*(undefined8 *)((long)pvVar6 + 0x28) >> 0x20) + 1,
		 *                           (int)*(undefined8 *)((long)pvVar6 + 0x28) + 1);
		 *             return;
		 *           }
		 *         }
		 *         uVar5 = (ulong)uVar16;
		 *         uVar16 = *(uint *)(lVar8 + uVar17 * 0x18 + 4);
		 *       } while (-1 < (int)uVar16);
		 *     }
		 *   }
		 *   return;
		 */
		// RVA: 0x327BD94 VA: 0x7818966D94
		public void UnRegisterVirtualButton(string name);
		/*
		 *   undefined4 uVar1;
		 *   uint uVar2;
		 *   int iVar3;
		 *   uint uVar4;
		 *   ulong uVar5;
		 *   void *pvVar6;
		 *   undefined8 *puVar7;
		 *   long lVar8;
		 *   long lVar9;
		 *   long lVar10;
		 *   long lVar11;
		 *   ulong uVar12;
		 *   int *piVar13;
		 *   long *plVar14;
		 *   undefined8 uVar15;
		 *   uint uVar16;
		 *   ulong uVar17;
		 *   uint *puVar18;
		 *
		 *   if ((bRam000000000754ac70 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c5730);
		 *     func_0x031fdc8c(PTR_DAT_070c5780);
		 *     bRam000000000754ac70 = 1;
		 *   }
		 *   if (this.m_VirtualButtons == null) {
		 * LAB_0337be20:
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   uVar5 = func_0x04e2d048(this.m_VirtualButtons,name,*(undefined8 *)PTR_DAT_070c5730);
		 *   if ((uVar5 & 1) == 0) {
		 *     return;
		 *   }
		 *   pvVar6 = this.m_VirtualButtons;
		 *   if (pvVar6 == null) goto LAB_0337be20;
		 *   lVar9 = *(long *)PTR_DAT_070c5780;
		 *   if (name == null) {
		 *     ThrowHelper.ThrowArgumentNullException(5);
		 *   }
		 *   if (*(long *)((long)pvVar6 + 0x10) != 0) {
		 *     plVar14 = *(long **)((long)pvVar6 + 0x30);
		 *     if (plVar14 == null) {
		 *       if (name == null) goto LAB_04e2e67c;
		 *       uVar4 = (**(code **)(*(long *)name + 0x158))(name,*(undefined8 *)(*(long *)name + 0x160));
		 *     }
		 *     else {
		 *       lVar8 = *(long *)(*(long *)(*(long *)(lVar9 + 0x20) + 0xc0) + 8);
		 *       if ((*(ushort *)(lVar8 + 0x135) & 1) == 0) {
		 *         lVar8 = func_0x03237224(lVar8);
		 *       }
		 *       lVar10 = *plVar14;
		 *       uVar5 = (ulong)*(ushort *)(lVar10 + 0x12e);
		 *       if (uVar5 != 0) {
		 *         piVar13 = (int *)(*(long *)(lVar10 + 0xb0) + 8);
		 *         do {
		 *           if (*(long *)(piVar13 + -2) == lVar8) {
		 *             puVar7 = (undefined8 *)(lVar10 + (long)(*piVar13 + 1) * 0x10 + 0x138);
		 *             goto LAB_04e2e440;
		 *           }
		 *           uVar5 = uVar5 - 1;
		 *           piVar13 = piVar13 + 4;
		 *         } while (uVar5 != 0);
		 *       }
		 *       puVar7 = (undefined8 *)func_0x03237558(plVar14,lVar8,1);
		 * LAB_04e2e440:
		 *       uVar4 = (*(code *)*puVar7)(plVar14,name,puVar7[1]);
		 *     }
		 *     lVar8 = *(long *)((long)pvVar6 + 0x10);
		 *     if (lVar8 == 0) {
		 * LAB_04e2e67c:
		 *       IL2CPP.ThrowNullReferenceException();
		 *     }
		 *     uVar16 = *(uint *)(lVar8 + 0x18);
		 *     uVar4 = uVar4 & 0x7fffffff;
		 *     iVar3 = 0;
		 *     if (uVar16 != 0) {
		 *       iVar3 = (int)uVar4 / (int)uVar16;
		 *     }
		 *     uVar2 = uVar4 - iVar3 * uVar16;
		 *     if (uVar16 <= uVar2) {
		 * LAB_04e2e680:
		 *       IL2CPP.ThrowIndexOutOfRangeException();
		 *     }
		 *     uVar16 = *(int *)(lVar8 + (ulong)uVar2 * 4 + 0x20) - 1;
		 *     if (-1 < (int)uVar16) {
		 *       uVar5 = 0xffffffff;
		 *       do {
		 *         lVar8 = *(long *)((long)pvVar6 + 0x18);
		 *         if (lVar8 == 0) goto LAB_04e2e67c;
		 *         if (*(uint *)(lVar8 + 0x18) <= uVar16) goto LAB_04e2e680;
		 *         lVar8 = lVar8 + 0x20;
		 *         puVar18 = (uint *)(lVar8 + (ulong)uVar16 * 0x18);
		 *         uVar17 = (ulong)uVar16;
		 *         if (*puVar18 == uVar4) {
		 *           plVar14 = *(long **)((long)pvVar6 + 0x30);
		 *           if (plVar14 == null) {
		 *             plVar14 = (long *)func_0x036616c4(*(undefined8 *)
		 *                                                (*(long *)(*(long *)(lVar9 + 0x20) + 0xc0) + 0x18));
		 *             if (plVar14 == null) goto LAB_04e2e67c;
		 *             uVar12 = (**(code **)(*plVar14 + 0x1b8))
		 *                                (plVar14,*(undefined8 *)(lVar8 + uVar17 * 0x18 + 8),name,
		 *                                 *(undefined8 *)(*plVar14 + 0x1c0));
		 *           }
		 *           else {
		 *             lVar10 = *(long *)(*(long *)(*(long *)(lVar9 + 0x20) + 0xc0) + 8);
		 *             uVar15 = *(undefined8 *)(lVar8 + uVar17 * 0x18 + 8);
		 *             if ((*(ushort *)(lVar10 + 0x135) & 1) == 0) {
		 *               lVar10 = func_0x03237224(lVar10);
		 *             }
		 *             lVar11 = *plVar14;
		 *             uVar12 = (ulong)*(ushort *)(lVar11 + 0x12e);
		 *             if (uVar12 != 0) {
		 *               piVar13 = (int *)(*(long *)(lVar11 + 0xb0) + 8);
		 *               do {
		 *                 if (*(long *)(piVar13 + -2) == lVar10) {
		 *                   puVar7 = (undefined8 *)(lVar11 + (long)*piVar13 * 0x10 + 0x138);
		 *                   goto LAB_04e2e58c;
		 *                 }
		 *                 uVar12 = uVar12 - 1;
		 *                 piVar13 = piVar13 + 4;
		 *               } while (uVar12 != 0);
		 *             }
		 *             puVar7 = (undefined8 *)func_0x03237558(plVar14,lVar10,0);
		 * LAB_04e2e58c:
		 *             uVar12 = (*(code *)*puVar7)(plVar14,uVar15,name,puVar7[1]);
		 *           }
		 *           if ((uVar12 & 1) != 0) {
		 *             if ((int)(uint)uVar5 < 0) {
		 *               lVar9 = *(long *)((long)pvVar6 + 0x10);
		 *               if (lVar9 == 0) goto LAB_04e2e67c;
		 *               if (*(uint *)(lVar9 + 0x18) <= uVar2) goto LAB_04e2e680;
		 *               *(int *)(lVar9 + (ulong)uVar2 * 4 + 0x20) = *(int *)(lVar8 + uVar17 * 0x18 + 4) + 1;
		 *             }
		 *             else {
		 *               lVar9 = *(long *)((long)pvVar6 + 0x18);
		 *               if (lVar9 == 0) goto LAB_04e2e67c;
		 *               if (*(uint *)(lVar9 + 0x18) <= (uint)uVar5) goto LAB_04e2e680;
		 *               *(undefined4 *)(lVar9 + uVar5 * 0x18 + 0x24) =
		 *                    *(undefined4 *)(lVar8 + uVar17 * 0x18 + 4);
		 *             }
		 *             uVar1 = *(undefined4 *)((long)pvVar6 + 0x24);
		 *             lVar8 = lVar8 + uVar17 * 0x18;
		 *             *puVar18 = 0xffffffff;
		 *             *(undefined4 *)(lVar8 + 4) = uVar1;
		 *             *(undefined8 *)(lVar8 + 8) = 0;
		 *             *(undefined8 *)(lVar8 + 0x10) = 0;
		 *             *(uint *)((long)pvVar6 + 0x24) = uVar16;
		 *             *(ulong *)((long)pvVar6 + 0x28) =
		 *                  CONCAT44((int)((ulong)*(undefined8 *)((long)pvVar6 + 0x28) >> 0x20) + 1,
		 *                           (int)*(undefined8 *)((long)pvVar6 + 0x28) + 1);
		 *             return;
		 *           }
		 *         }
		 *         uVar5 = (ulong)uVar16;
		 *         uVar16 = *(uint *)(lVar8 + uVar17 * 0x18 + 4);
		 *       } while (-1 < (int)uVar16);
		 *     }
		 *   }
		 *   return;
		 */
		// RVA: 0x327BE24 VA: 0x7818966E24
		public UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualAxis VirtualAxisReference(string name);
		/*
		 *   uint uVar1;
		 *   ulong uVar2;
		 *   void *pvVar3;
		 *   long lVar4;
		 *
		 *   if ((bRam000000000754ac71 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c5728);
		 *     func_0x031fdc8c(PTR_DAT_070c5788);
		 *     bRam000000000754ac71 = 1;
		 *   }
		 *   if (this.m_VirtualAxes != null) {
		 *     uVar2 = func_0x04e2d048(this.m_VirtualAxes,name,*(undefined8 *)PTR_DAT_070c5728);
		 *     if ((uVar2 & 1) == 0) {
		 *       return null;
		 *     }
		 *     pvVar3 = this.m_VirtualAxes;
		 *     if (pvVar3 != null) {
		 *       uVar1 = func_0x04e2d510(pvVar3,name,
		 *                               *(undefined8 *)
		 *                                (*(long *)(*(long *)(*(long *)PTR_DAT_070c5788 + 0x20) + 0xc0) +
		 *                                0x108));
		 *       if ((int)uVar1 < 0) {
		 *         ThrowHelper.ThrowKeyNotFoundException(name);
		 *         pvVar3 = null;
		 *       }
		 *       else {
		 *         lVar4 = *(long *)((long)pvVar3 + 0x18);
		 *         if (lVar4 == 0) {
		 *           IL2CPP.ThrowNullReferenceException();
		 *         }
		 *         if (*(uint *)(lVar4 + 0x18) <= uVar1) {
		 *           IL2CPP.ThrowIndexOutOfRangeException();
		 *         }
		 *         pvVar3 = *(void **)(lVar4 + (ulong)uVar1 * 0x18 + 0x30);
		 *       }
		 *       return pvVar3;
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x327C298 VA: 0x7818967298
		public void SetVirtualMousePositionX(float f);
		/*
		 *   (this.virtualMousePosition_k_BackingField).x = f;
		 *   return;
		 */
		// RVA: 0x327C310 VA: 0x7818967310
		public void SetVirtualMousePositionY(float f);
		/*
		 *   (this.virtualMousePosition_k_BackingField).y = f;
		 *   return;
		 */
		// RVA: 0x327C388 VA: 0x7818967388
		public void SetVirtualMousePositionZ(float f);
		/*
		 *   (this.virtualMousePosition_k_BackingField).z = f;
		 *   return;
		 */
		// RVA: 0x0 VA: 0x0
		public abstract float GetAxis(string name, bool raw);

		// RVA: 0x2FECC84 VA: 0x78186D7C84
		public abstract bool GetButton(string name);
		/*
		 *   undefined1 auStack_14 [4];
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,auStack_14);
		 *   return auStack_14[0];
		 */
		// RVA: 0x2FECC84 VA: 0x78186D7C84
		public abstract bool GetButtonDown(string name);
		/*
		 *   undefined1 auStack_14 [4];
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,auStack_14);
		 *   return auStack_14[0];
		 */
		// RVA: 0x2FECC84 VA: 0x78186D7C84
		public abstract bool GetButtonUp(string name);
		/*
		 *   undefined1 auStack_14 [4];
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,auStack_14);
		 *   return auStack_14[0];
		 */
		// RVA: 0x2FEF5D8 VA: 0x78186DA5D8
		public abstract void SetButtonDown(string name);
		/*
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,0);
		 *   return;
		 */
		// RVA: 0x2FEF5D8 VA: 0x78186DA5D8
		public abstract void SetButtonUp(string name);
		/*
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,0);
		 *   return;
		 */
		// RVA: 0x2FEF5D8 VA: 0x78186DA5D8
		public abstract void SetAxisPositive(string name);
		/*
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,0);
		 *   return;
		 */
		// RVA: 0x2FEF5D8 VA: 0x78186DA5D8
		public abstract void SetAxisNegative(string name);
		/*
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,0);
		 *   return;
		 */
		// RVA: 0x2FEF5D8 VA: 0x78186DA5D8
		public abstract void SetAxisZero(string name);
		/*
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,0);
		 *   return;
		 */
		// RVA: 0x0 VA: 0x0
		public abstract void SetAxis(string name, float value);

		// RVA: 0x2FEEE24 VA: 0x78186D9E24
		public abstract UnityEngine.Vector3 MousePosition();
		/*
		 *   undefined4 auStack_1c [3];
		 *
		 *   (*(code *)param_2[2])(*param_2,param_2,param_1,0,auStack_1c);
		 *   return auStack_1c[0];
		 */
		// RVA: 0x327D5CC VA: 0x78189685CC
		protected void .ctor();
		/*
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   undefined *puVar3;
		 *   undefined *puVar4;
		 *   undefined *puVar5;
		 *   undefined *puVar6;
		 *   void *pvVar7;
		 *   void *extraout_x1;
		 *
		 *   puVar6 = PTR_DAT_070c57e0;
		 *   puVar5 = PTR_DAT_070c57d8;
		 *   puVar4 = PTR_DAT_070c57d0;
		 *   puVar3 = PTR_DAT_070c57c8;
		 *   puVar2 = PTR_DAT_070c0760;
		 *   puVar1 = PTR_DAT_070c0758;
		 *   if ((bRam000000000754ac72 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c57d0);
		 *     func_0x031fdc8c(PTR_DAT_070c57e0);
		 *     func_0x031fdc8c(PTR_DAT_070c57c8);
		 *     func_0x031fdc8c(PTR_DAT_070c57d8);
		 *     func_0x031fdc8c(PTR_DAT_070c0760);
		 *     func_0x031fdc8c(PTR_DAT_070c0758);
		 *     bRam000000000754ac72 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   pvVar7 = (void *)func_0x031fdf24(*(undefined8 *)puVar3,methodInfo);
		 *   func_0x04e2c4c4(pvVar7,*(undefined8 *)puVar4);
		 *   this.m_VirtualAxes = pvVar7;
		 *   func_0x031fdc38(&this.m_VirtualAxes,pvVar7);
		 *   pvVar7 = (void *)func_0x031fdf24(*(undefined8 *)puVar5);
		 *   func_0x04e2c4c4(pvVar7,*(undefined8 *)puVar6);
		 *   this.m_VirtualButtons = pvVar7;
		 *   func_0x031fdc38(&this.m_VirtualButtons,pvVar7);
		 *   pvVar7 = (void *)func_0x031fdf24(*(undefined8 *)puVar1);
		 *   func_0x03f2ce9c(pvVar7,*(undefined8 *)puVar2);
		 *   this.m_AlwaysUseVirtual = pvVar7;
		 *   func_0x031fdc38(&this.m_AlwaysUseVirtual,pvVar7);
		 *   return;
		 */
	}
}
