namespace PixelSecurity.Core.SecuredTypes
{

	// [TypeInfo RVA: 0x0]
	public sealed struct SecuredChar : ValueType
	{
		private static char _cryptoKey; // 0x0
		private char currentCryptoKey; // 0x10
		private char hiddenValue; // 0x12
		private char fakeValue; // 0x14
		private bool inited; // 0x16

		// RVA: 0x329C030 VA: 0x7818987030
		private void .ctor(char value);
		/*
		 *   undefined2 uVar1;
		 *   undefined *puVar2;
		 *   long lVar3;
		 *   undefined2 *puVar4;
		 *
		 *   puVar2 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754add8 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754add8 = 1;
		 *   }
		 *   lVar3 = *(long *)puVar2;
		 *   if (*(int *)(lVar3 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     lVar3 = *(long *)puVar2;
		 *   }
		 *   puVar4 = *(undefined2 **)(lVar3 + 0xb8);
		 *   *(ushort *)&this.field_0x2 = value;
		 *   *(undefined2 *)&this.field_0x4 = 0;
		 *   uVar1 = *puVar4;
		 *   this.field_0x6 = 1;
		 *   *(undefined2 *)this = uVar1;
		 *   return;
		 */
		// RVA: 0x329C0AC VA: 0x78189870AC
		public static void SetCryptoKey(char newKey);
		/*
		 *   undefined *puVar1;
		 *   long lVar2;
		 *   void *extraout_x1;
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754add9 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754add9 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   lVar2 = *(long *)puVar1;
		 *   if (*(int *)(lVar2 + 0xe4) == 0) {
		 *     func_0x031fde08(lVar2,methodInfo);
		 *     lVar2 = *(long *)puVar1;
		 *   }
		 *   **(ushort **)(lVar2 + 0xb8) = newKey;
		 *   return;
		 */
		// RVA: 0x329C108 VA: 0x7818987108
		public void ApplyNewCryptoKey();
		/*
		 *   short sVar1;
		 *   undefined *puVar2;
		 *   ushort uVar3;
		 *   long lVar4;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   void *extraout_x1_01;
		 *   void *in_x2;
		 *
		 *   puVar2 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754adda & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754adda = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   lVar4 = *(long *)puVar2;
		 *   sVar1 = *(short *)this;
		 *   if (*(int *)(lVar4 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     lVar4 = *(long *)puVar2;
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   if (sVar1 != **(short **)(lVar4 + 0xb8)) {
		 *     if (*(int *)(lVar4 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *       methodInfo = extraout_x1_01;
		 *     }
		 *     uVar3 = SecuredChar.InternalDecrypt(this);
		 *     uVar3 = SecuredChar.EncryptDecrypt(uVar3,**(ushort **)(*(long *)puVar2 + 0xb8));
		 *     lVar4 = *(long *)puVar2;
		 *     *(ushort *)&this.field_0x2 = uVar3;
		 *     *(undefined2 *)this = **(undefined2 **)(lVar4 + 0xb8);
		 *   }
		 *   return;
		 */
		// RVA: 0x329C37C VA: 0x781898737C
		public static char EncryptDecrypt(char value);
		/*
		 *   undefined *puVar1;
		 *   long lVar2;
		 *   void *extraout_x1;
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754addb & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754addb = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar1,methodInfo);
		 *   }
		 *   if ((bRam000000000754addc & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754addc = 1;
		 *   }
		 *   puVar1 = PTR_DAT_070c6648;
		 *   lVar2 = *(long *)PTR_DAT_070c6648;
		 *   if (*(int *)(lVar2 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     lVar2 = *(long *)puVar1;
		 *   }
		 *   return **(ushort **)(lVar2 + 0xb8) ^ value;
		 */
		// RVA: 0x329C310 VA: 0x7818987310
		public static char EncryptDecrypt(char value, char key);
		/*
		 *   undefined *puVar1;
		 *   long lVar2;
		 *
		 *   if ((bRam000000000754addc & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754addc = 1;
		 *   }
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if (key == 0) {
		 *     lVar2 = *(long *)PTR_DAT_070c6648;
		 *     if (*(int *)(lVar2 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *       lVar2 = *(long *)puVar1;
		 *     }
		 *     key = **(ushort **)(lVar2 + 0xb8);
		 *   }
		 *   return key ^ value;
		 */
		// RVA: 0x329C3D4 VA: 0x78189873D4
		public char GetEncrypted();
		/*
		 *   undefined *puVar1;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754addd & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754addd = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   SecuredChar.ApplyNewCryptoKey(this);
		 *   return *(ushort *)&this.field_0x2;
		 */
		// RVA: 0x329C430 VA: 0x7818987430
		public void SetEncrypted(char encrypted);
		/*
		 *   ushort uVar1;
		 *   void *pvVar2;
		 *   void *extraout_x1;
		 *   undefined1 auVar3 [16];
		 *
		 *   if ((bRam000000000754adde & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6630);
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754adde = 1;
		 *   }
		 *   *(ushort *)&this.field_0x2 = encrypted;
		 *   this.field_0x6 = 1;
		 *   pvVar2 = PixelGuard.get_Instance();
		 *   if (pvVar2 != null) {
		 *     auVar3 = func_0x038d6228(pvVar2,*(undefined8 *)PTR_DAT_070c6630);
		 *     pvVar2 = auVar3._8_8_;
		 *     if ((auVar3._0_8_ & 1) != 0) {
		 *       if (*(int *)(*(long *)PTR_DAT_070c6648 + 0xe4) == 0) {
		 *         func_0x031fde08();
		 *         pvVar2 = extraout_x1;
		 *       }
		 *       uVar1 = SecuredChar.InternalDecrypt(this);
		 *       *(ushort *)&this.field_0x4 = uVar1;
		 *     }
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329C1A8 VA: 0x78189871A8
		private char InternalDecrypt();
		/*
		 *   undefined *puVar1;
		 *   ushort uVar2;
		 *   long lVar3;
		 *   void *pvVar4;
		 *   ulong uVar5;
		 *   PixelGuard *this_00;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   void *in_x2;
		 *   ushort value;
		 *
		 *   if ((bRam000000000754addf & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6628);
		 *     func_0x031fdc8c(PTR_DAT_070c6630);
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     func_0x031fdc8c(PTR_DAT_070c6638);
		 *     bRam000000000754addf = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if (this.field_0x6 == '\0') {
		 *     lVar3 = *(long *)PTR_DAT_070c6648;
		 *     if (*(int *)(lVar3 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *       lVar3 = *(long *)puVar1;
		 *       methodInfo = extraout_x1_00;
		 *     }
		 *     *(undefined2 *)this = **(undefined2 **)(lVar3 + 0xb8);
		 *     uVar2 = SecuredChar.EncryptDecrypt(0);
		 *     *(undefined2 *)&this.field_0x4 = 0;
		 *     *(ushort *)&this.field_0x2 = uVar2;
		 *     this.field_0x6 = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     uVar2 = *(ushort *)this;
		 *     value = *(ushort *)&this.field_0x2;
		 *     if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *   }
		 *   else {
		 *     uVar2 = *(ushort *)this;
		 *     value = *(ushort *)&this.field_0x2;
		 *   }
		 *   uVar2 = SecuredChar.EncryptDecrypt(value,uVar2);
		 *   pvVar4 = PixelGuard.get_Instance();
		 *   if (pvVar4 != null) {
		 *     uVar5 = func_0x038d6228(pvVar4,*(undefined8 *)PTR_DAT_070c6630);
		 *     if ((((uVar5 & 1) != 0) && (*(ushort *)&this.field_0x4 != 0)) &&
		 *        (*(ushort *)&this.field_0x4 != uVar2)) {
		 *       this_00 = PixelGuard.get_Instance();
		 *       pvVar4 = PixelGuard.get_Instance();
		 *       if ((pvVar4 == null) ||
		 *          (pvVar4 = (void *)func_0x038d5f58(pvVar4,*(undefined8 *)PTR_DAT_070c6628),
		 *          this_00 == null)) goto LAB_0339c30c;
		 *       PixelGuard.CreateSecurityWarning(this_00,*(void **)PTR_DAT_070c6638,pvVar4);
		 *     }
		 *     return uVar2;
		 *   }
		 * LAB_0339c30c:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329C4CC VA: 0x78189874CC
		public static PixelSecurity.Core.SecuredTypes.SecuredChar op_Implicit(char value);
		/*
		 *   undefined *puVar1;
		 *   ushort value_00;
		 *   void *pvVar2;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   void *in_x2;
		 *   undefined8 uStack_28;
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754ade0 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6630);
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade0 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   uStack_28 = 0;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   value_00 = SecuredChar.EncryptDecrypt(value);
		 *   SecuredChar..ctor((SecuredChar *)&uStack_28,value_00);
		 *   pvVar2 = PixelGuard.get_Instance();
		 *   if (pvVar2 != null) {
		 *     func_0x038d6228(pvVar2,*(undefined8 *)PTR_DAT_070c6630);
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329C574 VA: 0x7818987574
		public static char op_Implicit(PixelSecurity.Core.SecuredTypes.SecuredChar value);
		/*
		 *   undefined *puVar1;
		 *   ushort uVar2;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   SecuredChar *pSStack_18;
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   pSStack_18 = value;
		 *   if ((bRam000000000754ade1 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade1 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   uVar2 = SecuredChar.InternalDecrypt((SecuredChar *)&pSStack_18);
		 *   return uVar2;
		 */
		// RVA: 0x329C5CC VA: 0x78189875CC
		public static PixelSecurity.Core.SecuredTypes.SecuredChar op_Increment(PixelSecurity.Core.SecuredTypes.SecuredChar input);
		/*
		 *   undefined *puVar1;
		 *   ushort uVar2;
		 *   void *pvVar3;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   void *in_x2;
		 *   undefined8 uStack_18;
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   uStack_18 = input;
		 *   if ((bRam000000000754ade2 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6630);
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade2 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   uVar2 = SecuredChar.InternalDecrypt((SecuredChar *)&uStack_18);
		 *   uVar2 = SecuredChar.EncryptDecrypt(uVar2 + 1,(ushort)uStack_18);
		 *   uStack_18._2_2_ = uVar2;
		 *   pvVar3 = PixelGuard.get_Instance();
		 *   if (pvVar3 != null) {
		 *     func_0x038d6228(pvVar3,*(undefined8 *)PTR_DAT_070c6630);
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329C670 VA: 0x7818987670
		public static PixelSecurity.Core.SecuredTypes.SecuredChar op_Decrement(PixelSecurity.Core.SecuredTypes.SecuredChar input);
		/*
		 *   undefined *puVar1;
		 *   ushort uVar2;
		 *   void *pvVar3;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   void *in_x2;
		 *   undefined8 uStack_18;
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   uStack_18 = input;
		 *   if ((bRam000000000754ade3 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6630);
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade3 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   uVar2 = SecuredChar.InternalDecrypt((SecuredChar *)&uStack_18);
		 *   uVar2 = SecuredChar.EncryptDecrypt(uVar2 - 1,(ushort)uStack_18);
		 *   uStack_18._2_2_ = uVar2;
		 *   pvVar3 = PixelGuard.get_Instance();
		 *   if (pvVar3 != null) {
		 *     func_0x038d6228(pvVar3,*(undefined8 *)PTR_DAT_070c6630);
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329C714 VA: 0x7818987714
		public override bool Equals(object obj);
		/*
		 *   bool bVar1;
		 *   long lVar2;
		 *
		 *   if ((bRam000000000754ade4 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade4 = 1;
		 *   }
		 *   if ((obj == null) || (*(long *)obj != *(long *)PTR_DAT_070c6648)) {
		 *     bVar1 = false;
		 *   }
		 *   else {
		 *     lVar2 = func_0x031fde14(obj);
		 *     bVar1 = *(short *)&this.field_0x2 == *(short *)(lVar2 + 2);
		 *   }
		 *   return bVar1;
		 */
		// RVA: 0x329C78C VA: 0x781898778C
		public bool Equals(PixelSecurity.Core.SecuredTypes.SecuredChar obj);
		/*
		 *   return (uint)*(ushort *)&this.field_0x2 == (uint)obj >> 0x10;
		 */
		// RVA: 0x329C79C VA: 0x781898779C
		public override string ToString();
		/*
		 *   undefined *puVar1;
		 *   void *pvVar2;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   ushort auStack_24 [2];
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754ade5 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade5 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   auStack_24[0] = 0;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   auStack_24[0] = SecuredChar.InternalDecrypt(this);
		 *   if (*(int *)(*(long *)(PTR_DAT_070c0840 + 0x88) + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)(PTR_DAT_070c0840 + 0x88));
		 *   }
		 *   pvVar2 = System.Char.ToString(auStack_24);
		 *   return pvVar2;
		 */
		// RVA: 0x329C82C VA: 0x781898782C
		public string ToString(System.IFormatProvider provider);
		/*
		 *   undefined *puVar1;
		 *   void *pvVar2;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   ushort auStack_24 [2];
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   pvVar2 = provider;
		 *   if ((bRam000000000754ade6 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade6 = 1;
		 *     pvVar2 = extraout_x1;
		 *   }
		 *   auStack_24[0] = 0;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     pvVar2 = extraout_x1_00;
		 *   }
		 *   auStack_24[0] = SecuredChar.InternalDecrypt(this);
		 *   if (*(int *)(*(long *)(PTR_DAT_070c0840 + 0x88) + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)(PTR_DAT_070c0840 + 0x88));
		 *   }
		 *   pvVar2 = System.Char.ToString(auStack_24,provider);
		 *   return pvVar2;
		 */
		// RVA: 0x329C8C4 VA: 0x78189878C4
		public override int GetHashCode();
		/*
		 *   undefined *puVar1;
		 *   int iVar2;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   ushort auStack_24 [2];
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754ade7 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade7 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   auStack_24[0] = 0;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     methodInfo = extraout_x1_00;
		 *   }
		 *   auStack_24[0] = SecuredChar.InternalDecrypt(this);
		 *   if (*(int *)(*(long *)(PTR_DAT_070c0840 + 0x88) + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)(PTR_DAT_070c0840 + 0x88));
		 *   }
		 *   iVar2 = System.Char.GetHashCode(auStack_24);
		 *   return iVar2;
		 */
		// RVA: 0x329C954 VA: 0x7818987954
		private static void .cctor();
		/*
		 *   undefined *puVar1;
		 *
		 *   puVar1 = PTR_DAT_070c6648;
		 *   if ((bRam000000000754ade8 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6648);
		 *     bRam000000000754ade8 = 1;
		 *   }
		 *   **(undefined2 **)(*(long *)puVar1 + 0xb8) = 0x2014;
		 *   return;
		 */
	}
}
