using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace TestFuckFramework
{
	class MatrixAPI
	{
		private static bool Is32Bit()
		{
			return IntPtr.Size == 4;
		}

		// Token: 0x06001395 RID: 5013 RVA: 0x0000EC0A File Offset: 0x0000CE0A
		public static short Init_MatrixAPI()
		{
			if (MatrixAPI.Is32Bit())
			{
				return MatrixAPI.Matrix32.Init_MatrixAPI();
			}
			return MatrixAPI.Matrix64.Init_MatrixAPI();
		}

		// Token: 0x06001396 RID: 5014 RVA: 0x0000EC1E File Offset: 0x0000CE1E
		public static short Release_MatrixAPI()
		{
			if (MatrixAPI.Is32Bit())
			{
				return MatrixAPI.Matrix32.Release_MatrixAPI();
			}
			return MatrixAPI.Matrix64.Release_MatrixAPI();
		}

		// Token: 0x06001397 RID: 5015 RVA: 0x0000EC32 File Offset: 0x0000CE32
		public static int Dongle_Model(short A_0, short A_1)
		{
			if (MatrixAPI.Is32Bit())
			{
				return MatrixAPI.Matrix32.Dongle_Model(A_0, A_1);
			}
			return MatrixAPI.Matrix64.Dongle_Model(A_0, A_1);
		}

		// Token: 0x06001398 RID: 5016 RVA: 0x0000EC4A File Offset: 0x0000CE4A
		public static int Dongle_ReadSerNr(int A_0, short A_1, short A_2)
		{
			if (MatrixAPI.Is32Bit())
			{
				return MatrixAPI.Matrix32.Dongle_ReadSerNr(A_0, A_1, A_2);
			}
			return MatrixAPI.Matrix64.Dongle_ReadSerNr(A_0, A_1, A_2);
		}

		// Token: 0x06001399 RID: 5017 RVA: 0x0000EC64 File Offset: 0x0000CE64
		public static short Dongle_MemSize(short A_0, short A_1)
		{
			if (MatrixAPI.Is32Bit())
			{
				return MatrixAPI.Matrix32.Dongle_MemSize(A_0, A_1);
			}
			return MatrixAPI.Matrix64.Dongle_MemSize(A_0, A_1);
		}

		// Token: 0x0600139A RID: 5018 RVA: 0x0000EC7C File Offset: 0x0000CE7C
		public static short Dongle_Count(short A_0)
		{
			return 1;
		}

		// Token: 0x0600139B RID: 5019 RVA: 0x0000EC85 File Offset: 0x0000CE85
		public static short Dongle_ReadData(int A_0, IntPtr A_1, short A_2, short A_3, short A_4)
		{
			if (MatrixAPI.Is32Bit())
			{
				return MatrixAPI.Matrix32.Dongle_ReadData(A_0, A_1, A_2, A_3, A_4);
			}
			return MatrixAPI.Matrix64.Dongle_ReadData(A_0, A_1, A_2, A_3, A_4);
		}



		// Token: 0x02000155 RID: 341
		private sealed class Matrix32
		{
			// Token: 0x0600139E RID: 5022
			[DllImport("matrix32.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Init_MatrixAPI();

			// Token: 0x0600139F RID: 5023
			[DllImport("matrix32.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Release_MatrixAPI();

			// Token: 0x060013A0 RID: 5024
			[DllImport("matrix32.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern int Dongle_Model(short a, short b);

			// Token: 0x060013A1 RID: 5025
			[DllImport("matrix32.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Dongle_MemSize(short a, short b);
			
			// Token: 0x060013A2 RID: 5026
			[DllImport("matrix32.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Dongle_Count(short a);

			// Token: 0x060013A3 RID: 5027
			[DllImport("matrix32.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Dongle_ReadData(int a, IntPtr b, short c, short d, short e);

			// Token: 0x060013A4 RID: 5028
			[DllImport("matrix32.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern int Dongle_ReadSerNr(int a, short b, short c);
		}

		// Token: 0x02000156 RID: 342
		private sealed class Matrix64
		{
			// Token: 0x060013A6 RID: 5030
			[DllImport("matrix64.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Init_MatrixAPI();

			// Token: 0x060013A7 RID: 5031
			[DllImport("matrix64.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Release_MatrixAPI();

			// Token: 0x060013A8 RID: 5032
			[DllImport("matrix64.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern int Dongle_Model(short a, short b);

			// Token: 0x060013A9 RID: 5033
			[DllImport("matrix64.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Dongle_MemSize(short a, short b);

			// Token: 0x060013AA RID: 5034
			[DllImport("matrix64.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Dongle_Count(short a);

			// Token: 0x060013AB RID: 5035
			[DllImport("matrix64.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern short Dongle_ReadData(int a, IntPtr b, short c, short d, short e);

			// Token: 0x060013AC RID: 5036
			[DllImport("matrix64.dll", CallingConvention = CallingConvention.StdCall)]
			public static extern int Dongle_ReadSerNr(int a, short b, short c);
		}
	}
}