using System;
using System.Runtime.InteropServices;
using Il2CppInterop.Common.Attributes;
using Il2CppInterop.Runtime;
using Il2CppSystem;

namespace MTAssets.UltimateLODSystem.MeshSimplifier
{
	// Token: 0x02000622 RID: 1570
	[StructLayout(LayoutKind.Explicit)]
	public struct SymmetricMatrix
	{
		// Token: 0x17003679 RID: 13945
		public unsafe double this[int index]
		{
			[CallerCount(18)]
			[CachedScanResults(RefRangeStart = 624372, RefRangeEnd = 624390, XrefRangeStart = 624372, XrefRangeEnd = 624372, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
			get
			{
				checked
				{
					IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
					*ptr = ref index;
					IntPtr intPtr2;
					IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr_get_Item_Public_get_Double_Int32_0, ref this, (void**)ptr, ref intPtr2);
					Il2CppException.RaiseExceptionIfNecessary(intPtr2);
					return *IL2CPP.il2cpp_object_unbox(intPtr);
				}
			}
		}

		// Token: 0x0600A091 RID: 41105 RVA: 0x00291880 File Offset: 0x0028FA80
		[CallerCount(0)]
		public unsafe SymmetricMatrix(double c)
		{
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref c;
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr__ctor_Public_Void_Double_0, ref this, (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			}
		}

		// Token: 0x0600A092 RID: 41106 RVA: 0x002918C8 File Offset: 0x0028FAC8
		[CallerCount(0)]
		public unsafe SymmetricMatrix(double m0, double m1, double m2, double m3, double m4, double m5, double m6, double m7, double m8, double m9)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)10) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref m0;
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m1;
			ptr[checked(unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m2;
			ptr[checked(unchecked((UIntPtr)3) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m3;
			ptr[checked(unchecked((UIntPtr)4) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m4;
			ptr[checked(unchecked((UIntPtr)5) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m5;
			ptr[checked(unchecked((UIntPtr)6) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m6;
			ptr[checked(unchecked((UIntPtr)7) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m7;
			ptr[checked(unchecked((UIntPtr)8) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m8;
			ptr[checked(unchecked((UIntPtr)9) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref m9;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr__ctor_Public_Void_Double_Double_Double_Double_Double_Double_Double_Double_Double_Double_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x0600A093 RID: 41107 RVA: 0x002919BC File Offset: 0x0028FBBC
		[CallerCount(0)]
		public unsafe SymmetricMatrix(double a, double b, double c, double d)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)4) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref a;
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref b;
			ptr[checked(unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref c;
			ptr[checked(unchecked((UIntPtr)3) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref d;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr__ctor_Public_Void_Double_Double_Double_Double_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x0600A094 RID: 41108 RVA: 0x00291A3C File Offset: 0x0028FC3C
		[CallerCount(0)]
		public unsafe static SymmetricMatrix operator +(SymmetricMatrix a, SymmetricMatrix b)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref a;
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref b;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr_op_Addition_Public_Static_SymmetricMatrix_SymmetricMatrix_SymmetricMatrix_0, 0, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600A095 RID: 41109 RVA: 0x00291AA4 File Offset: 0x0028FCA4
		[CallerCount(0)]
		public unsafe double Determinant1()
		{
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr_Determinant1_Internal_Double_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600A096 RID: 41110 RVA: 0x00291AE8 File Offset: 0x0028FCE8
		[CallerCount(0)]
		public unsafe double Determinant2()
		{
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr_Determinant2_Internal_Double_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600A097 RID: 41111 RVA: 0x00291B2C File Offset: 0x0028FD2C
		[CallerCount(0)]
		public unsafe double Determinant3()
		{
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr_Determinant3_Internal_Double_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600A098 RID: 41112 RVA: 0x00291B70 File Offset: 0x0028FD70
		[CallerCount(0)]
		public unsafe double Determinant4()
		{
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr_Determinant4_Internal_Double_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600A099 RID: 41113 RVA: 0x00291BB4 File Offset: 0x0028FDB4
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 624390, XrefRangeEnd = 624408, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe double Determinant(int a11, int a12, int a13, int a21, int a22, int a23, int a31, int a32, int a33)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)9) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref a11;
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref a12;
			ptr[checked(unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref a13;
			ptr[checked(unchecked((UIntPtr)3) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref a21;
			ptr[checked(unchecked((UIntPtr)4) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref a22;
			ptr[checked(unchecked((UIntPtr)5) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref a23;
			ptr[checked(unchecked((UIntPtr)6) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref a31;
			ptr[checked(unchecked((UIntPtr)7) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref a32;
			ptr[checked(unchecked((UIntPtr)8) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref a33;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(SymmetricMatrix.NativeMethodInfoPtr_Determinant_Public_Double_Int32_Int32_Int32_Int32_Int32_Int32_Int32_Int32_Int32_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600A09A RID: 41114 RVA: 0x00291CA0 File Offset: 0x0028FEA0
		// Note: this type is marked as 'beforefieldinit'.
		static SymmetricMatrix()
		{
			Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr = IL2CPP.GetIl2CppClass("Assembly-CSharp.dll", "MTAssets.UltimateLODSystem.MeshSimplifier", "SymmetricMatrix");
			IL2CPP.il2cpp_runtime_class_init(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr);
			SymmetricMatrix.NativeFieldInfoPtr_m0 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m0");
			SymmetricMatrix.NativeFieldInfoPtr_m1 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m1");
			SymmetricMatrix.NativeFieldInfoPtr_m2 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m2");
			SymmetricMatrix.NativeFieldInfoPtr_m3 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m3");
			SymmetricMatrix.NativeFieldInfoPtr_m4 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m4");
			SymmetricMatrix.NativeFieldInfoPtr_m5 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m5");
			SymmetricMatrix.NativeFieldInfoPtr_m6 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m6");
			SymmetricMatrix.NativeFieldInfoPtr_m7 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m7");
			SymmetricMatrix.NativeFieldInfoPtr_m8 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m8");
			SymmetricMatrix.NativeFieldInfoPtr_m9 = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, "m9");
			SymmetricMatrix.NativeMethodInfoPtr_get_Item_Public_get_Double_Int32_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675646);
			SymmetricMatrix.NativeMethodInfoPtr__ctor_Public_Void_Double_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675647);
			SymmetricMatrix.NativeMethodInfoPtr__ctor_Public_Void_Double_Double_Double_Double_Double_Double_Double_Double_Double_Double_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675648);
			SymmetricMatrix.NativeMethodInfoPtr__ctor_Public_Void_Double_Double_Double_Double_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675649);
			SymmetricMatrix.NativeMethodInfoPtr_op_Addition_Public_Static_SymmetricMatrix_SymmetricMatrix_SymmetricMatrix_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675650);
			SymmetricMatrix.NativeMethodInfoPtr_Determinant1_Internal_Double_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675651);
			SymmetricMatrix.NativeMethodInfoPtr_Determinant2_Internal_Double_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675652);
			SymmetricMatrix.NativeMethodInfoPtr_Determinant3_Internal_Double_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675653);
			SymmetricMatrix.NativeMethodInfoPtr_Determinant4_Internal_Double_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675654);
			SymmetricMatrix.NativeMethodInfoPtr_Determinant_Public_Double_Int32_Int32_Int32_Int32_Int32_Int32_Int32_Int32_Int32_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, 100675655);
		}

		// Token: 0x0600A09B RID: 41115 RVA: 0x00291E60 File Offset: 0x00290060
		public Object BoxIl2CppObject()
		{
			return new Object(IL2CPP.il2cpp_value_box(Il2CppClassPointerStore<SymmetricMatrix>.NativeClassPtr, ref this));
		}

		// Token: 0x04006B7C RID: 27516
		private static readonly IntPtr NativeFieldInfoPtr_m0;

		// Token: 0x04006B7D RID: 27517
		private static readonly IntPtr NativeFieldInfoPtr_m1;

		// Token: 0x04006B7E RID: 27518
		private static readonly IntPtr NativeFieldInfoPtr_m2;

		// Token: 0x04006B7F RID: 27519
		private static readonly IntPtr NativeFieldInfoPtr_m3;

		// Token: 0x04006B80 RID: 27520
		private static readonly IntPtr NativeFieldInfoPtr_m4;

		// Token: 0x04006B81 RID: 27521
		private static readonly IntPtr NativeFieldInfoPtr_m5;

		// Token: 0x04006B82 RID: 27522
		private static readonly IntPtr NativeFieldInfoPtr_m6;

		// Token: 0x04006B83 RID: 27523
		private static readonly IntPtr NativeFieldInfoPtr_m7;

		// Token: 0x04006B84 RID: 27524
		private static readonly IntPtr NativeFieldInfoPtr_m8;

		// Token: 0x04006B85 RID: 27525
		private static readonly IntPtr NativeFieldInfoPtr_m9;

		// Token: 0x04006B86 RID: 27526
		private static readonly IntPtr NativeMethodInfoPtr_get_Item_Public_get_Double_Int32_0;

		// Token: 0x04006B87 RID: 27527
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_Double_0;

		// Token: 0x04006B88 RID: 27528
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_Double_Double_Double_Double_Double_Double_Double_Double_Double_Double_0;

		// Token: 0x04006B89 RID: 27529
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_Double_Double_Double_Double_0;

		// Token: 0x04006B8A RID: 27530
		private static readonly IntPtr NativeMethodInfoPtr_op_Addition_Public_Static_SymmetricMatrix_SymmetricMatrix_SymmetricMatrix_0;

		// Token: 0x04006B8B RID: 27531
		private static readonly IntPtr NativeMethodInfoPtr_Determinant1_Internal_Double_0;

		// Token: 0x04006B8C RID: 27532
		private static readonly IntPtr NativeMethodInfoPtr_Determinant2_Internal_Double_0;

		// Token: 0x04006B8D RID: 27533
		private static readonly IntPtr NativeMethodInfoPtr_Determinant3_Internal_Double_0;

		// Token: 0x04006B8E RID: 27534
		private static readonly IntPtr NativeMethodInfoPtr_Determinant4_Internal_Double_0;

		// Token: 0x04006B8F RID: 27535
		private static readonly IntPtr NativeMethodInfoPtr_Determinant_Public_Double_Int32_Int32_Int32_Int32_Int32_Int32_Int32_Int32_Int32_0;

		// Token: 0x04006B90 RID: 27536
		[FieldOffset(0)]
		public double m0;

		// Token: 0x04006B91 RID: 27537
		[FieldOffset(8)]
		public double m1;

		// Token: 0x04006B92 RID: 27538
		[FieldOffset(16)]
		public double m2;

		// Token: 0x04006B93 RID: 27539
		[FieldOffset(24)]
		public double m3;

		// Token: 0x04006B94 RID: 27540
		[FieldOffset(32)]
		public double m4;

		// Token: 0x04006B95 RID: 27541
		[FieldOffset(40)]
		public double m5;

		// Token: 0x04006B96 RID: 27542
		[FieldOffset(48)]
		public double m6;

		// Token: 0x04006B97 RID: 27543
		[FieldOffset(56)]
		public double m7;

		// Token: 0x04006B98 RID: 27544
		[FieldOffset(64)]
		public double m8;

		// Token: 0x04006B99 RID: 27545
		[FieldOffset(72)]
		public double m9;
	}
}
