namespace PixelSecurity.Modules.InjectionProtector
{

	// [TypeInfo RVA: 0x0]
	public class InjectionProtector : Object
	{
		private bool _signaturesAreNotGenuine; // 0x10
		private PixelSecurity.Modules.InjectionProtector.AllowedAssembly[] _allowedAssemblies; // 0x18
		private System.String[] _hexTable; // 0x20
		private PixelSecurity.Modules.InjectionProtector.InjectionProtector.ModuleOptions _options; // 0x28

		// RVA: 0x329A06C VA: 0x781898506C
		public PixelSecurity.Modules.InjectionProtector.InjectionProtector.ModuleOptions get_Options();
		/*
		 *   return *(undefined8 *)(param_1 + 0x28);
		 */
		// RVA: 0x329A074 VA: 0x7818985074
		public void .ctor(PixelSecurity.Modules.InjectionProtector.InjectionProtector.ModuleOptions options);
		/*
		 *   undefined *puVar1;
		 *   bool bVar2;
		 *   SecurityWarningHandler *this;
		 *   undefined8 *puVar3;
		 *   void *pvVar4;
		 *   void *pvVar5;
		 *   void *extraout_x1;
		 *   void *extraout_x1_00;
		 *   void *pvVar6;
		 *   void *methodInfo;
		 *   long lVar7;
		 *   ulong uVar8;
		 *   int *piVar9;
		 *   long *plVar10;
		 *   void *a;
		 *
		 *   if ((bRam000000000754adae & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c65b8);
		 *     func_0x031fdc8c(PTR_DAT_070c65c0);
		 *     func_0x031fdc8c(PTR_DAT_070c65c8);
		 *     bRam000000000754adae = 1;
		 *   }
		 *   System.Object..ctor(param_1);
		 *   if (param_2 == null) {
		 *     param_2 = (void *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c65c8);
		 *     System.Object..ctor(param_2);
		 *   }
		 *   param_1->options = param_2;
		 *   func_0x031fdc38(&param_1->options,param_2);
		 *   if (param_1->options != null) {
		 *     pvVar5 = *(void **)((long)param_1->options + 0x10);
		 *     if ((pvVar5 != null) && (*(long *)((long)pvVar5 + 0x18) != 0)) {
		 *       param_1->allowedAssemblies = pvVar5;
		 *       func_0x031fdc38();
		 *       pvVar5 = extraout_x1;
		 *     }
		 *     if (param_1->allowedAssemblies == null) {
		 *       InjectionProtector.LoadAndParseAllowedAssemblies(param_1);
		 *       pvVar5 = extraout_x1_00;
		 *     }
		 *     if ((param_1->signaturesAreNotGenuine != false) ||
		 *        (bVar2 = InjectionProtector.FindInjectionInCurrentAssemblies(param_1), bVar2)) {
		 *       if ((bRam000000000754adb0 & 1) == 0) {
		 *         func_0x031fdc8c(PTR_DAT_070c6610);
		 *         bRam000000000754adb0 = 1;
		 *       }
		 *       pvVar5 = PixelGuard.get_Instance();
		 *       if (pvVar5 == null) {
		 *         IL2CPP.ThrowNullReferenceException();
		 *       }
		 *       pvVar6 = *(void **)PTR_DAT_070c6610;
		 *       if ((bRam000000000754ad6c & 1) == 0) {
		 *         func_0x031fdc8c(PTR_DAT_070c62f0,pvVar6,param_1,0);
		 *         func_0x031fdc8c(PTR_DAT_070c62f8);
		 *         bRam000000000754ad6c = 1;
		 *       }
		 *       plVar10 = *(long **)((long)pvVar5 + 0x28);
		 *       if (plVar10 == null) {
		 *         return;
		 *       }
		 *       this = (SecurityWarningHandler *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c62f8);
		 *       SecurityWarningHandler..ctor(this);
		 *       puVar1 = PTR_DAT_070c62f0;
		 *       if (this == null) {
		 *         IL2CPP.ThrowNullReferenceException();
		 *       }
		 *       this.message = pvVar6;
		 *       func_0x031fdc38(&this.message,pvVar6);
		 *       this.module = param_1;
		 *       func_0x031fdc38(&this.module,param_1);
		 *       lVar7 = *plVar10;
		 *       uVar8 = (ulong)*(ushort *)(lVar7 + 0x12e);
		 *       if (uVar8 != 0) {
		 *         piVar9 = (int *)(*(long *)(lVar7 + 0xb0) + 8);
		 *         do {
		 *           if (*(long *)(piVar9 + -2) == *(long *)puVar1) {
		 *             puVar3 = (undefined8 *)(lVar7 + (long)*piVar9 * 0x10 + 0x138);
		 *             goto LAB_03395670;
		 *           }
		 *           uVar8 = uVar8 - 1;
		 *           piVar9 = piVar9 + 4;
		 *         } while (uVar8 != 0);
		 *       }
		 *       puVar3 = (undefined8 *)func_0x03237558(plVar10,*(long *)puVar1,0);
		 * LAB_03395670:
		 *       (*(code *)*puVar3)(plVar10,this,0,puVar3[1]);
		 *       return;
		 *     }
		 *     pvVar5 = System.AppDomain.get_CurrentDomain();
		 *     pvVar6 = (void *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c65b8);
		 *     System.AssemblyLoadEventHandler..ctor(pvVar6,param_1,*(void **)PTR_DAT_070c65c0);
		 *     if (pvVar5 != null) {
		 *       methodInfo = null;
		 *       if ((bRam000000000755195d & 1) == 0) {
		 *         func_0x031fdc8c(PTR_DAT_070c65b8);
		 *         bRam000000000755195d = 1;
		 *       }
		 *       puVar1 = PTR_DAT_070c65b8;
		 *       a = *(void **)((long)pvVar5 + 0x38);
		 *       while ((plVar10 = System.Delegate.Combine(a,pvVar6),
		 *              plVar10 == null || (*plVar10 == *(long *)puVar1))) {
		 *         methodInfo = a;
		 *         pvVar4 = (void *)func_0x03236d84((undefined8 *)((long)pvVar5 + 0x38),plVar10);
		 *         bVar2 = pvVar4 == a;
		 *         a = pvVar4;
		 *         if (bVar2) {
		 *           return;
		 *         }
		 *       }
		 *       noreturn_helper_30fe2b4(plVar10);
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329A7D0 VA: 0x78189857D0
		protected override void Finalize();
		/*
		 *   void *this_00;
		 *   void *this_01;
		 *
		 *   if ((bRam000000000754adaf & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c65b8);
		 *     func_0x031fdc8c(PTR_DAT_070c65c0);
		 *     bRam000000000754adaf = 1;
		 *   }
		 *   this_00 = System.AppDomain.get_CurrentDomain();
		 *   this_01 = (void *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c65b8);
		 *   System.AssemblyLoadEventHandler..ctor(this_01,this,*(void **)PTR_DAT_070c65c0);
		 *   if (this_00 != null) {
		 *     System.AppDomain.remove_AssemblyLoad(this_00,this_01);
		 *     System.Object.Finalize(this);
		 *     return;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329A6D8 VA: 0x78189856D8
		private void OnInjectionDetected();
		/*
		 *   undefined *puVar1;
		 *   SecurityWarningHandler *this_00;
		 *   undefined8 *puVar2;
		 *   void *pvVar3;
		 *   void *pvVar4;
		 *   long lVar5;
		 *   ulong uVar6;
		 *   int *piVar7;
		 *   long *plVar8;
		 *
		 *   if ((bRam000000000754adb0 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6610);
		 *     bRam000000000754adb0 = 1;
		 *   }
		 *   pvVar3 = PixelGuard.get_Instance();
		 *   if (pvVar3 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   pvVar4 = *(void **)PTR_DAT_070c6610;
		 *   if ((bRam000000000754ad6c & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c62f0,pvVar4,this,0);
		 *     func_0x031fdc8c(PTR_DAT_070c62f8);
		 *     bRam000000000754ad6c = 1;
		 *   }
		 *   plVar8 = *(long **)((long)pvVar3 + 0x28);
		 *   if (plVar8 == null) {
		 *     return;
		 *   }
		 *   this_00 = (SecurityWarningHandler *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c62f8);
		 *   SecurityWarningHandler..ctor(this_00);
		 *   puVar1 = PTR_DAT_070c62f0;
		 *   if (this_00 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   this_00->message = pvVar4;
		 *   func_0x031fdc38(&this_00->message,pvVar4);
		 *   this_00->module = this;
		 *   func_0x031fdc38(&this_00->module,this);
		 *   lVar5 = *plVar8;
		 *   uVar6 = (ulong)*(ushort *)(lVar5 + 0x12e);
		 *   if (uVar6 != 0) {
		 *     piVar7 = (int *)(*(long *)(lVar5 + 0xb0) + 8);
		 *     do {
		 *       if (*(long *)(piVar7 + -2) == *(long *)puVar1) {
		 *         puVar2 = (undefined8 *)(lVar5 + (long)*piVar7 * 0x10 + 0x138);
		 *         goto LAB_03395670;
		 *       }
		 *       uVar6 = uVar6 - 1;
		 *       piVar7 = piVar7 + 4;
		 *     } while (uVar6 != 0);
		 *   }
		 *   puVar2 = (undefined8 *)func_0x03237558(plVar8,*(long *)puVar1,0);
		 * LAB_03395670:
		 *   (*(code *)*puVar2)(plVar8,this_00,0,puVar2[1]);
		 *   return;
		 */
		// RVA: 0x329A8D4 VA: 0x78189858D4
		private void OnNewAssemblyLoaded(object sender, System.AssemblyLoadEventArgs args);
		/*
		 *   undefined *puVar1;
		 *   bool bVar2;
		 *   SecurityWarningHandler *this_00;
		 *   undefined8 *puVar3;
		 *   void *pvVar4;
		 *   void *pvVar5;
		 *   long lVar6;
		 *   ulong uVar7;
		 *   int *piVar8;
		 *   long *plVar9;
		 *
		 *   if (args == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   bVar2 = InjectionProtector.AssemblyAllowed(this,*(void **)((long)args + 0x10));
		 *   if (bVar2) {
		 *     return;
		 *   }
		 *   if ((bRam000000000754adb0 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6610);
		 *     bRam000000000754adb0 = 1;
		 *   }
		 *   pvVar4 = PixelGuard.get_Instance();
		 *   if (pvVar4 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   pvVar5 = *(void **)PTR_DAT_070c6610;
		 *   if ((bRam000000000754ad6c & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c62f0,pvVar5,this,0);
		 *     func_0x031fdc8c(PTR_DAT_070c62f8);
		 *     bRam000000000754ad6c = 1;
		 *   }
		 *   plVar9 = *(long **)((long)pvVar4 + 0x28);
		 *   if (plVar9 == null) {
		 *     return;
		 *   }
		 *   this_00 = (SecurityWarningHandler *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c62f8);
		 *   SecurityWarningHandler..ctor(this_00);
		 *   puVar1 = PTR_DAT_070c62f0;
		 *   if (this_00 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   this_00->message = pvVar5;
		 *   func_0x031fdc38(&this_00->message,pvVar5);
		 *   this_00->module = this;
		 *   func_0x031fdc38(&this_00->module,this);
		 *   lVar6 = *plVar9;
		 *   uVar7 = (ulong)*(ushort *)(lVar6 + 0x12e);
		 *   if (uVar7 != 0) {
		 *     piVar8 = (int *)(*(long *)(lVar6 + 0xb0) + 8);
		 *     do {
		 *       if (*(long *)(piVar8 + -2) == *(long *)puVar1) {
		 *         puVar3 = (undefined8 *)(lVar6 + (long)*piVar8 * 0x10 + 0x138);
		 *         goto LAB_03395670;
		 *       }
		 *       uVar7 = uVar7 - 1;
		 *       piVar8 = piVar8 + 4;
		 *     } while (uVar7 != 0);
		 *   }
		 *   puVar3 = (undefined8 *)func_0x03237558(plVar9,*(long *)puVar1,0);
		 * LAB_03395670:
		 *   (*(code *)*puVar3)(plVar9,this_00,0,puVar3[1]);
		 *   return;
		 */
		// RVA: 0x329A734 VA: 0x7818985734
		private bool FindInjectionInCurrentAssemblies();
		/*
		 *   bool bVar1;
		 *   void *pvVar2;
		 *   void *in_x2;
		 *   ulong uVar3;
		 *   ulong uVar4;
		 *
		 *   pvVar2 = System.AppDomain.get_CurrentDomain();
		 *   if ((pvVar2 == null) ||
		 *      (pvVar2 = System.AppDomain.GetAssemblies(pvVar2), pvVar2 == null
		 *      )) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   uVar3 = *(ulong *)((long)pvVar2 + 0x18);
		 *   if (uVar3 == 0) {
		 *     bVar1 = true;
		 *   }
		 *   else if ((int)uVar3 < 1) {
		 *     bVar1 = false;
		 *   }
		 *   else {
		 *     uVar4 = 0;
		 *     do {
		 *       if ((uVar3 & 0xffffffff) <= uVar4) {
		 *         IL2CPP.ThrowIndexOutOfRangeException();
		 *       }
		 *       bVar1 = InjectionProtector.AssemblyAllowed(this,*(void **)((long)pvVar2 + uVar4 * 8 + 0x20));
		 *       if (!bVar1) break;
		 *       uVar3 = (ulong)*(uint *)((long)pvVar2 + 0x18);
		 *       uVar4 = uVar4 + 1;
		 *     } while ((long)uVar4 < (long)(int)*(uint *)((long)pvVar2 + 0x18));
		 *     bVar1 = !bVar1;
		 *   }
		 *   return bVar1;
		 */
		// RVA: 0x329A904 VA: 0x7818985904
		private bool AssemblyAllowed(System.Reflection.Assembly ass);
		/*
		 *   uint uVar1;
		 *   undefined *puVar2;
		 *   bool bVar3;
		 *   int iVar4;
		 *   int iVar5;
		 *   long lVar6;
		 *   void *pvVar7;
		 *   void *b;
		 *   uint uVar8;
		 *
		 *   if ((bRam000000000754adb1 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6618);
		 *     bRam000000000754adb1 = 1;
		 *   }
		 *   if (ass != null) {
		 *     lVar6 = (**(code **)(*(long *)ass + 0x2a8))(ass,*(undefined8 *)(*(long *)ass + 0x2b0));
		 *     if (lVar6 != 0) {
		 *       b = *(void **)(lVar6 + 0x10);
		 *       iVar4 = InjectionProtector.GetAssemblyHash(this,ass);
		 *       puVar2 = PTR_DAT_070c6618;
		 *       pvVar7 = this.allowedAssemblies;
		 *       if (pvVar7 != null) {
		 *         uVar8 = 0;
		 *         do {
		 *           uVar1 = *(uint *)((long)pvVar7 + 0x18);
		 *           if ((int)uVar1 <= (int)uVar8) {
		 * LAB_0339a9d8:
		 *             return (int)uVar8 < (int)uVar1;
		 *           }
		 *           if (uVar1 <= uVar8) {
		 *             IL2CPP.ThrowIndexOutOfRangeException();
		 *           }
		 *           lVar6 = *(long *)((long)pvVar7 + (long)(int)uVar8 * 8 + 0x20);
		 *           if (lVar6 == 0) break;
		 *           bVar3 = System.String.op_Equality(*(void **)(lVar6 + 0x10),b);
		 *           if ((bVar3) &&
		 *              (iVar5 = func_0x03a38b60(*(undefined8 *)(lVar6 + 0x18),iVar4,*(undefined8 *)puVar2),
		 *              iVar5 != -1)) goto LAB_0339a9d8;
		 *           pvVar7 = this.allowedAssemblies;
		 *           uVar8 = uVar8 + 1;
		 *         } while (pvVar7 != null);
		 *       }
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329A1B4 VA: 0x78189851B4
		private void LoadAndParseAllowedAssemblies();
		/*
		 *   ulong uVar1;
		 *   byte bVar2;
		 *   undefined *puVar3;
		 *   undefined *puVar4;
		 *   uint uVar5;
		 *   int iVar6;
		 *   long *this_00;
		 *   ulong uVar7;
		 *   void *pvVar8;
		 *   void *pvVar9;
		 *   long *this_01;
		 *   long *this_02;
		 *   void *pvVar10;
		 *   AllowedAssembly *this_03;
		 *   long lVar11;
		 *   void *extraout_x1;
		 *   void *methodInfo_00;
		 *   ulong uVar12;
		 *   undefined8 uVar13;
		 *   long *plVar14;
		 *   ulong uVar15;
		 *   void **ppvVar16;
		 *   void *name;
		 *   uint uStack_64;
		 *
		 *   puVar3 = PTR_DAT_070c65d0;
		 *   if ((bRam000000000754adb2 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c65d8);
		 *     func_0x031fdc8c(PTR_DAT_070c65e0);
		 *     func_0x031fdc8c(PTR_DAT_070c65e8);
		 *     func_0x031fdc8c(PTR_DAT_070c1f30);
		 *     func_0x031fdc8c(PTR_DAT_070c2b48);
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
		 *     func_0x031fdc8c(PTR_DAT_070c65f0);
		 *     func_0x031fdc8c(PTR_DAT_070c0a80);
		 *     func_0x031fdc8c(PTR_DAT_070c65d0);
		 *     func_0x031fdc8c(PTR_DAT_070c65f8);
		 *     func_0x031fdc8c(PTR_DAT_070c2970);
		 *     func_0x031fdc8c(PTR_DAT_070c4d50);
		 *     func_0x031fdc8c(PTR_DAT_070c6600);
		 *     func_0x031fdc8c(PTR_DAT_070c6608);
		 *     bRam000000000754adb2 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   puVar4 = PTR_DAT_070c6608;
		 *   uVar13 = *(undefined8 *)puVar3;
		 *   uStack_64 = 0;
		 *   if (*(int *)(*(long *)(PTR_DAT_070c0840 + 0xe0) + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)(PTR_DAT_070c0840 + 0xe0),methodInfo);
		 *   }
		 *   uVar13 = System.Type.GetTypeFromHandle(uVar13);
		 *   this_00 = (long *)UnityEngine.UI.DefaultControls.Resources.Load(*(undefined8 *)puVar4,uVar13);
		 *   if (this_00 != null) {
		 *     bVar2 = *(byte *)(*(long *)PTR_DAT_070c65f8 + 0x130);
		 *     if ((*(byte *)(*this_00 + 0x130) < bVar2) ||
		 *        (*(long *)(*(long *)(*this_00 + 200) + (ulong)bVar2 * 8 + -8) != *(long *)PTR_DAT_070c65f8))
		 *     {
		 *       noreturn_helper_30fe2b4(this_00);
		 *     }
		 *   }
		 *   if (*(int *)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar7 = UnityEngine.Object.op_Equality(this_00,null);
		 *   if ((uVar7 & 1) != 0) {
		 *     this.signaturesAreNotGenuine = true;
		 *     return;
		 *   }
		 *   pvVar8 = (void *)func_0x031fdd78(*(undefined8 *)PTR_DAT_070c0a80,1);
		 *   if (pvVar8 != null) {
		 *     if (*(int *)((long)pvVar8 + 0x18) == 0) {
		 * LAB_0339a6bc:
		 *       IL2CPP.ThrowIndexOutOfRangeException();
		 *     }
		 *     *(undefined8 *)((long)pvVar8 + 0x20) = *(undefined8 *)PTR_DAT_070c4d50;
		 *     func_0x031fdc38();
		 *     if (this_00 != null) {
		 *       pvVar9 = UnityEngine.TextAsset.get_bytes(this_00);
		 *       this_01 = (long *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c2b48);
		 *       System.IO.MemoryStream..ctor(this_01,pvVar9);
		 *       this_02 = (long *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c65e8);
		 *       pvVar9 = null;
		 *       System.IO.BinaryReader..ctor(this_02,this_01);
		 *       if (this_02 != null) {
		 *         uVar5 = (**(code **)(*this_02 + 0x228))(this_02,*(undefined8 *)(*this_02 + 0x230));
		 *         pvVar10 = (void *)func_0x031fdd78(*(undefined8 *)PTR_DAT_070c65d8,(ulong)uVar5);
		 *         ppvVar16 = &this.allowedAssemblies;
		 *         *ppvVar16 = pvVar10;
		 *         func_0x031fdc38(ppvVar16,pvVar10);
		 *         if (0 < (int)uVar5) {
		 *           uVar7 = 0;
		 *           do {
		 *             pvVar10 = (void *)(**(code **)(*this_02 + 0x298))
		 *                                         (this_02,*(undefined8 *)(*this_02 + 0x2a0));
		 *             if (*(int *)(*(long *)PTR_DAT_070c65f0 + 0xe4) == 0) {
		 *               func_0x031fde08(*(long *)PTR_DAT_070c65f0);
		 *             }
		 *             pvVar9 = SecuredString.EncryptDecrypt(pvVar10,*(void **)PTR_DAT_070c6600);
		 *             if (pvVar9 == null) goto LAB_0339a6c0;
		 *             methodInfo_00 = null;
		 *             pvVar10 = System.String.Split(pvVar9,pvVar8,1);
		 *             if (pvVar10 == null) goto LAB_0339a6c0;
		 *             uVar12 = *(ulong *)((long)pvVar10 + 0x18);
		 *             iVar6 = (int)uVar12;
		 *             if (iVar6 < 2) {
		 *               this.signaturesAreNotGenuine = true;
		 *               (**(code **)(*this_02 + 0x198))(this_02,*(undefined8 *)(*this_02 + 0x1a0));
		 *               if (this_01 != null) {
		 *                 (**(code **)(*this_01 + 0x278))(this_01,*(undefined8 *)(*this_01 + 0x280));
		 *                 return;
		 *               }
		 *               goto LAB_0339a6c0;
		 *             }
		 *             name = *(void **)((long)pvVar10 + 0x20);
		 *             pvVar9 = (void *)func_0x031fdd78(*(undefined8 *)PTR_DAT_070c1f30,iVar6 + -1);
		 *             uVar15 = 0;
		 *             do {
		 *               if ((ulong)*(uint *)((long)pvVar10 + 0x18) <= uVar15 + 1) goto LAB_0339a6bc;
		 *               iVar6 = System.Int32.Parse(*(void **)((long)pvVar10 + uVar15 * 8 + 0x28));
		 *               if (pvVar9 == null) goto LAB_0339a6c0;
		 *               if (*(uint *)((long)pvVar9 + 0x18) <= uVar15) goto LAB_0339a6bc;
		 *               lVar11 = uVar15 * 4;
		 *               uVar1 = uVar15 + 2;
		 *               uVar15 = uVar15 + 1;
		 *               *(int *)((long)pvVar9 + lVar11 + 0x20) = iVar6;
		 *             } while (uVar1 != (uVar12 & 0xffffffff));
		 *             plVar14 = *ppvVar16;
		 *             this_03 = (AllowedAssembly *)func_0x031fdf24(*(undefined8 *)PTR_DAT_070c65e0);
		 *             AllowedAssembly..ctor(this_03,name,pvVar9);
		 *             if (plVar14 == null) goto LAB_0339a6c0;
		 *             if ((this_03 != null) &&
		 *                (lVar11 = func_0x031fde0c(this_03,*(undefined8 *)(*plVar14 + 0x40)), lVar11 == 0)) {
		 *               uVar13 = func_0x031fdf58();
		 *               IL2CPP.ThrowManagedException();
		 *             }
		 *             if (*(uint *)(plVar14 + 3) <= uVar7) goto LAB_0339a6bc;
		 *             plVar14[uVar7 + 4] = (long)this_03;
		 *             func_0x031fdc38(plVar14 + uVar7 + 4,this_03);
		 *             uVar7 = uVar7 + 1;
		 *           } while (uVar7 != uVar5);
		 *         }
		 *         (**(code **)(*this_02 + 0x198))(this_02,*(undefined8 *)(*this_02 + 0x1a0));
		 *         if (this_01 != null) {
		 *           (**(code **)(*this_01 + 0x278))(this_01,*(undefined8 *)(*this_01 + 0x280));
		 *           UnityEngine.UI.DefaultControls.Resources.UnloadAsset(this_00);
		 *           pvVar8 = (void *)func_0x031fdd78(*(undefined8 *)PTR_DAT_070c0a80,0x100);
		 *           ppvVar16 = &this.hexTable;
		 *           *ppvVar16 = pvVar8;
		 *           func_0x031fdc38(ppvVar16,pvVar8);
		 *           puVar3 = PTR_DAT_070c2970;
		 *           uStack_64 = 0;
		 *           while( true ) {
		 *             uVar5 = uStack_64;
		 *             pvVar9 = *ppvVar16;
		 *             pvVar8 = System.Int32.ToString(&uStack_64,*(void **)puVar3);
		 *             if (pvVar9 == null) break;
		 *             if (*(uint *)((long)pvVar9 + 0x18) <= uVar5) goto LAB_0339a6bc;
		 *             *(void **)((long)pvVar9 + (long)(int)uVar5 * 8 + 0x20) = pvVar8;
		 *             func_0x031fdc38();
		 *             uStack_64 = uStack_64 + 1;
		 *             if (0xff < (int)uStack_64) {
		 *               return;
		 *             }
		 *           }
		 *         }
		 *       }
		 *     }
		 *   }
		 * LAB_0339a6c0:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329A9F8 VA: 0x78189859F8
		private int GetAssemblyHash(System.Reflection.Assembly ass);
		/*
		 *   int iVar1;
		 *   ushort uVar2;
		 *   void *pvVar3;
		 *   void *pvVar4;
		 *   int index;
		 *   uint uVar5;
		 *
		 *   if (((ass != null) &&
		 *       (pvVar3 = (void *)(**(code **)(*(long *)ass + 0x2a8))
		 *                                   (ass,*(undefined8 *)(*(long *)ass + 0x2b0)), pvVar3 != null
		 *       )) && (pvVar4 = System.Reflection.AssemblyName.GetPublicKeyToken(pvVar3),
		 *             pvVar4 != null)) {
		 *     pvVar3 = *(void **)((long)pvVar3 + 0x10);
		 *     if (*(int *)((long)pvVar4 + 0x18) == 8) {
		 *       pvVar4 = InjectionProtector.PublicKeyTokenToString(this,pvVar4);
		 *       pvVar3 = System.String.Concat(pvVar3,pvVar4);
		 *     }
		 *     if (pvVar3 != null) {
		 *       iVar1 = *(int *)((long)pvVar3 + 0x10);
		 *       if (iVar1 < 1) {
		 *         uVar5 = 0;
		 *       }
		 *       else {
		 *         uVar5 = 0;
		 *         index = 0;
		 *         do {
		 *           uVar2 = System.String.get_Chars(pvVar3,index);
		 *           index = index + 1;
		 *           uVar5 = (uVar5 + uVar2) * 0x401;
		 *           uVar5 = uVar5 ^ (int)uVar5 >> 6;
		 *         } while (iVar1 != index);
		 *         uVar5 = uVar5 * 9;
		 *       }
		 *       return (uVar5 ^ (int)uVar5 >> 0xb) * 0x8001;
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x329AC3C VA: 0x7818985C3C
		private string PublicKeyTokenToString(System.Byte[] bytes);
		/*
		 *   byte bVar1;
		 *   void *str0;
		 *   void *pvVar2;
		 *   ulong uVar3;
		 *
		 *   if ((bRam000000000754adb3 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c0df0);
		 *     bRam000000000754adb3 = 1;
		 *   }
		 *   if (bytes != null) {
		 *     uVar3 = 0;
		 *     str0 = *(void **)PTR_DAT_070c0df0;
		 *     do {
		 *       if (*(uint *)((long)bytes + 0x18) <= uVar3) {
		 * LAB_0339acd8:
		 *         IL2CPP.ThrowIndexOutOfRangeException();
		 *       }
		 *       pvVar2 = this.hexTable;
		 *       if (pvVar2 == null) break;
		 *       bVar1 = *(byte *)((long)bytes + uVar3 + 0x20);
		 *       if (*(uint *)((long)pvVar2 + 0x18) <= (uint)bVar1) goto LAB_0339acd8;
		 *       str0 = System.String.Concat(str0,*(void **)((long)pvVar2 + (ulong)bVar1 * 8 + 0x20));
		 *       uVar3 = uVar3 + 1;
		 *       if (uVar3 == 8) {
		 *         return str0;
		 *       }
		 *     } while( true );
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
	}
}
