using System; using System.Runtime.CompilerServices; using System.Text; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC { // Token: 0x02001AE4 RID: 6884 [Token(Token = "0x2001AE4")] internal class LongArray { // Token: 0x0600A51B RID: 42267 RVA: 0x00231968 File Offset: 0x0022FB68 [Token(Token = "0x600A51B")] [Address(RVA = "0x73E890", Offset = "0x73D890", VA = "0x18073E890")] public LongArray(int intLen) { long[] array = new long[intLen]; this.m_ints = array; } // Token: 0x0600A51C RID: 42268 RVA: 0x0023198C File Offset: 0x0022FB8C [Token(Token = "0x600A51C")] [Address(RVA = "0x493D90", Offset = "0x492D90", VA = "0x180493D90")] public LongArray(long[] ints) { this.m_ints = ints; } // Token: 0x0600A51D RID: 42269 RVA: 0x002319A8 File Offset: 0x0022FBA8 [Token(Token = "0x600A51D")] [Address(RVA = "0x73E590", Offset = "0x73D590", VA = "0x18073E590")] public LongArray(long[] ints, int off, int len) { if (off == 0 && len == ints.Length) { this.m_ints = ints; } long[] array = new long[len]; int num = 0; this.m_ints = array; Array.Copy(ints, len, array, num, len); } // Token: 0x0600A51E RID: 42270 RVA: 0x002319F0 File Offset: 0x0022FBF0 [Token(Token = "0x600A51E")] [Address(RVA = "0x73E640", Offset = "0x73D640", VA = "0x18073E640")] public LongArray(BigInteger bigInt) { /* An exception occurred when decompiling this method (0600A51E) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC.LongArray::.ctor(BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_A8: stloc:ArgumentException(var_15_B7, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("invalid F2m field value"), ldstr:string("bigInt"))) } at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88 --- End of inner exception stack trace --- at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663 */; } // Token: 0x0600A51F RID: 42271 RVA: 0x00231AB8 File Offset: 0x0022FCB8 [Token(Token = "0x600A51F")] [Address(RVA = "0x738B00", Offset = "0x737B00", VA = "0x180738B00")] internal void CopyTo(long[] z, int zOff) { long[] ints = this.m_ints; int length = ints.Length; int num = 0; Array.Copy(ints, num, z, zOff, length); } // Token: 0x0600A520 RID: 42272 RVA: 0x00231AE8 File Offset: 0x0022FCE8 [Token(Token = "0x600A520")] [Address(RVA = "0x73A5D0", Offset = "0x7395D0", VA = "0x18073A5D0")] public bool IsOne() { int length = this.m_ints.Length; if ("{il2cpp array field local1->}" == (ulong)1L && ((uint)1 >= (uint)length || "{il2cpp array field local1->}" == (ulong)0L)) { return true; } throw new NullReferenceException(); } // Token: 0x0600A521 RID: 42273 RVA: 0x00231B24 File Offset: 0x0022FD24 [Token(Token = "0x600A521")] [Address(RVA = "0x73A640", Offset = "0x739640", VA = "0x18073A640")] public bool IsZero() { long[] ints = this.m_ints; int num = 0; int length = ints.Length; if (num < length) { if ("{il2cpp array field local1->}" == (ulong)0L) { num++; } } return true; } // Token: 0x0600A522 RID: 42274 RVA: 0x00231B5C File Offset: 0x0022FD5C [Token(Token = "0x600A522")] [Address(RVA = "0x7393A0", Offset = "0x7383A0", VA = "0x1807393A0")] public int GetUsedLength() { int num = this.m_ints.Length; long[] ints = this.m_ints; int num2 = ints.Length; num = Math.Min(num, num2); int length = ints.Length; if ("{il2cpp array field local3->}" == (ulong)0L) { int num3 = num - 1; num2 = num; if ("{il2cpp array field local3->}" == (ulong)0L) { } return num2; } int num4 = num - 1; num2 = num; while ("{il2cpp array field local3->}" == (ulong)0L) { } return num2; } // Token: 0x0600A523 RID: 42275 RVA: 0x00231BD8 File Offset: 0x0022FDD8 [Token(Token = "0x600A523")] [Address(RVA = "0x739290", Offset = "0x738290", VA = "0x180739290")] public int GetUsedLengthFrom(int from) { long[] ints = this.m_ints; int num = ints.Length; int num2 = Math.Min(from, num); num = num2; int length = ints.Length; if ("{il2cpp array field local2->}" != (ulong)0L) { int num3 = num - 1; num2 = num; while ("{il2cpp array field local2->}" == (ulong)0L) { } return num2; } int num4 = num - 1; if ("{il2cpp array field local2->}" == (ulong)0L) { return 0; } return from; } // Token: 0x0600A524 RID: 42276 RVA: 0x00231C44 File Offset: 0x0022FE44 [Token(Token = "0x600A524")] [Address(RVA = "0x738C90", Offset = "0x737C90", VA = "0x180738C90")] public int Degree() { long[] ints = this.m_ints; int length = ints.Length; if (length != 0) { int num = LongArray.BitLength(ints[length]); return num + length; } return 0; } // Token: 0x0600A525 RID: 42277 RVA: 0x00231C80 File Offset: 0x0022FE80 [Token(Token = "0x600A525")] [Address(RVA = "0x738BD0", Offset = "0x737BD0", VA = "0x180738BD0")] private int DegreeFrom(int limit) { if (limit != 0) { int num = LongArray.BitLength(this.m_ints[limit]); return num + limit; } return 0; } // Token: 0x0600A526 RID: 42278 RVA: 0x00231CB0 File Offset: 0x0022FEB0 [Token(Token = "0x600A526")] [Address(RVA = "0x7388F0", Offset = "0x7378F0", VA = "0x1807388F0")] private static int BitLength(long w) { byte[] bitLengths = LongArray.BitLengths; byte[] bitLengths2 = LongArray.BitLengths; byte[] bitLengths3 = LongArray.BitLengths; byte[] bitLengths4 = LongArray.BitLengths; throw new NullReferenceException(); } // Token: 0x0600A527 RID: 42279 RVA: 0x00231CDC File Offset: 0x0022FEDC [Token(Token = "0x600A527")] [Address(RVA = "0x73DA40", Offset = "0x73CA40", VA = "0x18073DA40")] private long[] ResizedInts(int newLen) { long[] array = new long[newLen]; long[] ints = this.m_ints; int num = Math.Min(ints.Length, newLen); int num2 = 0; int num3 = 0; Array.Copy(ints, num3, array, num2, num); return array; } // Token: 0x0600A528 RID: 42280 RVA: 0x00231D1C File Offset: 0x0022FF1C [Token(Token = "0x600A528")] [Address(RVA = "0x73DFC0", Offset = "0x73CFC0", VA = "0x18073DFC0")] public BigInteger ToBigInteger() { int num = this.GetUsedLength(); if (num != 0) { long[] ints = this.m_ints; num--; long num2 = ints[num]; byte[] array = new byte[8]; int num3 = 0; int num4 = 0; if (num4 == 0) { } num3++; byte[] array2 = new byte[0]; if (num3 > 0) { num3++; } long num5 = this.m_ints[num4]; num3++; return new BigInteger(1, array2); } return BigInteger.Zero; } // Token: 0x0600A529 RID: 42281 RVA: 0x00231D9C File Offset: 0x0022FF9C [Token(Token = "0x600A529")] [Address(RVA = "0x73DAF0", Offset = "0x73CAF0", VA = "0x18073DAF0")] private static long ShiftUp(long[] x, int xOff, int count, int shift) { long num; if (count > 0) { num = x[shift]; x[0] = num; } return num; } // Token: 0x0600A52A RID: 42282 RVA: 0x00231DC4 File Offset: 0x0022FFC4 [Token(Token = "0x600A52A")] [Address(RVA = "0x73DB90", Offset = "0x73CB90", VA = "0x18073DB90")] private static long ShiftUp(long[] x, int xOff, long[] z, int zOff, int count, int shift) { long num; z[0] = num; return num; } // Token: 0x0600A52B RID: 42283 RVA: 0x00231DE0 File Offset: 0x0022FFE0 [Token(Token = "0x600A52B")] [Address(RVA = "0x7382B0", Offset = "0x7372B0", VA = "0x1807382B0")] public LongArray AddOne() { if (this.m_ints.Length != 0) { int num = this.GetUsedLength(); num = Math.Max(1, num); long[] array = this.ResizedInts(num); } LongArray longArray; longArray.m_ints = new long[] { (long)((ulong)1L) }; return longArray; } // Token: 0x0600A52C RID: 42284 RVA: 0x00231E34 File Offset: 0x00230034 [Token(Token = "0x600A52C")] [Address(RVA = "0x7383C0", Offset = "0x7373C0", VA = "0x1807383C0")] private void AddShiftedByBitsSafe(LongArray other, int otherDegree, int bits) { long[] ints = this.m_ints; long[] ints2 = other.m_ints; int num = 0; long num2 = LongArray.AddShiftedUp(ints, bits, ints2, num, otherDegree, bits); long[] ints3 = this.m_ints; } // Token: 0x0600A52D RID: 42285 RVA: 0x00231E6C File Offset: 0x0023006C [Token(Token = "0x600A52D")] [Address(RVA = "0x7386B0", Offset = "0x7376B0", VA = "0x1807386B0")] private static long AddShiftedUp(long[] x, int xOff, long[] y, int yOff, int count, int shift) { return y[x]; } // Token: 0x0600A52E RID: 42286 RVA: 0x00231E88 File Offset: 0x00230088 [Token(Token = "0x600A52E")] [Address(RVA = "0x7385E0", Offset = "0x7375E0", VA = "0x1807385E0")] private static long AddShiftedDown(long[] x, int xOff, long[] y, int yOff, int count, int shift) { return y[x]; } // Token: 0x0600A52F RID: 42287 RVA: 0x00231EA4 File Offset: 0x002300A4 [Token(Token = "0x600A52F")] [Address(RVA = "0x738500", Offset = "0x737500", VA = "0x180738500")] public void AddShiftedByWords(LongArray other, int words) { int num = 0; int usedLength = other.GetUsedLength(); if (usedLength != 0) { long[] ints = this.m_ints; if (num > ints.Length) { long[] array = this.ResizedInts(num); this.m_ints = array; } long[] ints2 = other.m_ints; int num2 = 0; LongArray.Add(ints, words, ints2, num2, usedLength); } } // Token: 0x0600A530 RID: 42288 RVA: 0x00231EFC File Offset: 0x002300FC [Token(Token = "0x600A530")] [Address(RVA = "0x738860", Offset = "0x737860", VA = "0x180738860")] private static void Add(long[] x, int xOff, long[] y, int yOff, int count) { } // Token: 0x0600A531 RID: 42289 RVA: 0x00231F10 File Offset: 0x00230110 [Token(Token = "0x600A531")] [Address(RVA = "0x738780", Offset = "0x737780", VA = "0x180738780")] private static void Add(long[] x, int xOff, long[] y, int yOff, long[] z, int zOff, int count) { } // Token: 0x0600A532 RID: 42290 RVA: 0x00231F24 File Offset: 0x00230124 [Token(Token = "0x600A532")] [Address(RVA = "0x7381D0", Offset = "0x7371D0", VA = "0x1807381D0")] private static void AddBoth(long[] x, int xOff, long[] y1, int y1Off, long[] y2, int y2Off, int count) { } // Token: 0x0600A533 RID: 42291 RVA: 0x00231F38 File Offset: 0x00230138 [Token(Token = "0x600A533")] [Address(RVA = "0x738D40", Offset = "0x737D40", VA = "0x180738D40")] private static void Distribute(long[] x, int src, int dst1, int dst2, int count) { int num = x.Length; num = dst1 - dst1; } // Token: 0x17001A12 RID: 6674 // (get) Token: 0x0600A534 RID: 42292 RVA: 0x00231F5C File Offset: 0x0023015C [Token(Token = "0x17001A12")] public int Length { [Token(Token = "0x600A534")] [Address(RVA = "0x73E8F0", Offset = "0x73D8F0", VA = "0x18073E8F0")] get { return this.m_ints.Length; } } // Token: 0x0600A535 RID: 42293 RVA: 0x00231F7C File Offset: 0x0023017C [Token(Token = "0x600A535")] [Address(RVA = "0x739180", Offset = "0x738180", VA = "0x180739180")] private static void FlipWord(long[] buf, int off, int bit, long word) { if (bit != 0) { int num = off + 1; } } // Token: 0x0600A536 RID: 42294 RVA: 0x00231F98 File Offset: 0x00230198 [Token(Token = "0x600A536")] [Address(RVA = "0x73DF10", Offset = "0x73CF10", VA = "0x18073DF10")] public bool TestBitZero() { if (this.m_ints.Length == 0) { } throw new NullReferenceException(); } // Token: 0x0600A537 RID: 42295 RVA: 0x00231FBC File Offset: 0x002301BC [Token(Token = "0x600A537")] [Address(RVA = "0x73DF60", Offset = "0x73CF60", VA = "0x18073DF60")] private static bool TestBit(long[] buf, int off, int n) { throw new NullReferenceException(); } // Token: 0x0600A538 RID: 42296 RVA: 0x00231FD0 File Offset: 0x002301D0 [Token(Token = "0x600A538")] [Address(RVA = "0x738F40", Offset = "0x737F40", VA = "0x180738F40")] private static void FlipBit(long[] buf, int off, int n) { } // Token: 0x0600A539 RID: 42297 RVA: 0x00231FE4 File Offset: 0x002301E4 [Token(Token = "0x600A539")] [Address(RVA = "0x73C520", Offset = "0x73B520", VA = "0x18073C520")] private static void MultiplyWord(long a, long[] b, int bLen, long[] c, int cOff) { while (c != c.Length) { } } // Token: 0x0600A53A RID: 42298 RVA: 0x00232004 File Offset: 0x00230204 [Token(Token = "0x600A53A")] [Address(RVA = "0x73B4D0", Offset = "0x73A4D0", VA = "0x18073B4D0")] public LongArray ModMultiplyLD(LongArray other, int m, int[] ks) { int num = this.Degree(); if (num != 0) { int num2 = other.Degree(); if (num2 != 0) { if (num > num2) { num = num2; } long[] ints2; if (other != (ulong)1L) { int[] array = new int[16]; long[] array2 = new long[num]; array[0] = num; long[] ints = other.m_ints; int num3 = 0; int num4 = 0; Array.Copy(ints, num4, array2, num, ks); num += num; array[0] = num; uint num5; if (num5 != (uint)1) { LongArray.Add(array2, num, array2, num, array2, num, num); } if ("{il2cpp array field local10->}" == (ulong)2L || "{il2cpp array field local10->}" == num3) { } ulong num7; long num6 = LongArray.ShiftUp(array2, num, array2, num, num, (int)num7); num5 += (uint)1; long[] array3 = new long[array2.Length]; int length = array2.Length; int num8 = 0; int num9 = 0; ulong num11; long num10 = LongArray.ShiftUp(array2, num9, array3, num8, length, (int)num11); ints2 = this.m_ints; long[] array4 = new long[0]; uint num12; if (other > num12) { int length2 = array.Length; long num13 = ints2[(int)num12]; int num14 = array[(int)num13]; int num15 = array[(int)num13]; uint num16 = num12 - 1U; LongArray.AddBoth(array4, (int)num16, array2, num14, array3, num15, num); num12 += (uint)2; } if (other != 0) { int length3 = array.Length; long num17 = ints2[num3]; int num18 = array[(int)num17]; int num19 = array[(int)num17]; LongArray.AddBoth(array4, num3, array2, num18, array3, num19, num); num3 += 2; } uint num20; if (num20 > (uint)0) { } LongArray longArray; return longArray; } if (ints2 != (ulong)1L) { long[] array5 = new long[0]; } } } return this; } // Token: 0x0600A53B RID: 42299 RVA: 0x002321AC File Offset: 0x002303AC [Token(Token = "0x600A53B")] [Address(RVA = "0x73BB40", Offset = "0x73AB40", VA = "0x18073BB40")] public LongArray ModMultiply(LongArray other, int m, int[] ks) { int num = this.Degree(); if (num != 0) { int num2 = other.Degree(); if (num2 != 0) { if (num > num2) { num = num2; } int length3; if (other != (ulong)1L) { int[] array = new int[16]; long[] array2 = new long[num]; array[0] = num; long[] ints = other.m_ints; int num3 = 0; Array.Copy(ints, num3, array2, num, ks); num += num; array[0] = num; uint num4; if (num4 != (uint)1) { LongArray.Add(array2, num, array2, num, array2, num, num); } if ("{il2cpp array field local10->}" == (ulong)2L || "{il2cpp array field local10->}" == (ulong)0L) { } int num5 = 0; ulong num7; long num6 = LongArray.ShiftUp(array2, num, array2, num, num, (int)num7); num4 += (uint)1; long[] array3 = new long[array2.Length]; int length = array2.Length; int num8 = 0; int num9 = 0; ulong num11; long num10 = LongArray.ShiftUp(array2, num9, array3, num8, length, (int)num11); long[] ints2 = this.m_ints; long[] array4 = new long[num9]; long num12 = ints2[num5]; int length2 = array.Length; int num13 = array[(int)num12]; int num14 = array[(int)num12]; LongArray.AddBoth(array4, num5, array2, num13, array3, num14, num); num5++; length3 = array4.Length; if (array4 != 0) { while (length3 != 0) { } } LongArray longArray; return longArray; } if (length3 != 1) { long[] array5 = new long[0]; } } } return this; } // Token: 0x0600A53C RID: 42300 RVA: 0x0023231C File Offset: 0x0023051C [Token(Token = "0x600A53C")] [Address(RVA = "0x73ADE0", Offset = "0x739DE0", VA = "0x18073ADE0")] public LongArray ModMultiplyAlt(LongArray other, int m, int[] ks) { int num = this.Degree(); if (num != 0) { int num2 = other.Degree(); if (num2 != 0) { if (num > num2) { } int[] array = new int[16]; uint num3; array[0] = (int)num3; int length = array.Length; num3 += this; uint num4; if (num4 < (uint)length) { num4 += (uint)1; array[0] = (int)num3; } num3 += (uint)1; long[] array2 = new long[16]; long[] ints = this.m_ints; int num5 = 0; int num6 = 0; ulong num7; LongArray.Interleave(ints, num6, array2, num5, ks, (int)num7); long[] ints2 = other.m_ints; int num8 = 0; Array.Copy(ints2, num8, array2, num5, ks); int num9 = 0; int num10 = 0; long num11 = array2[num10]; if (num10 != array2.Length) { int num12 = array[(int)num11]; int length2 = array2.Length; } if (1UL != (ulong)8L) { } num9 += 32; if (num9 < 64) { long num13; array2[0] = num13; } int length3 = array.Length; int num14 = length3 - 1; if (num14 > 1) { int length4 = array.Length; if (num14 != 1) { } int length5 = array.Length; } int num15 = array[0]; LongArray longArray; return longArray; } } return this; } // Token: 0x0600A53D RID: 42301 RVA: 0x00232474 File Offset: 0x00230674 [Token(Token = "0x600A53D")] [Address(RVA = "0x73C080", Offset = "0x73B080", VA = "0x18073C080")] public LongArray ModReduce(int m, int[] ks) { long[] array = Arrays.Clone(this.m_ints); int length = array.Length; int num = 0; int num2 = LongArray.ReduceInPlace(array, num, length, m, ks); LongArray longArray; if (m != array.Length) { long[] array2 = new long[m]; int num3 = 0; longArray.m_ints = array2; int num4 = 0; Array.Copy(array, num4, array2, num3, m); return longArray; } longArray.m_ints = array; return longArray; } // Token: 0x0600A53E RID: 42302 RVA: 0x002324E4 File Offset: 0x002306E4 [Token(Token = "0x600A53E")] [Address(RVA = "0x73C650", Offset = "0x73B650", VA = "0x18073C650")] public LongArray Multiply(LongArray other, int m, int[] ks) { int num = this.Degree(); if (num != 0) { int num2 = other.Degree(); if (num2 != 0) { if (num > num2) { num = num2; } if (other == (ulong)1L) { while (this == (ulong)1L) { } long[] array = new long[0]; long[] array2 = new long[0]; LongArray longArray; longArray.m_ints = array2; longArray.m_ints = array; return this; } int[] array3 = new int[16]; long[] array4 = new long[num]; array3[0] = num; long[] ints = other.m_ints; num += num; array3[0] = num; uint num3; if (num3 != (uint)1) { LongArray.Add(array4, num, array4, num, array4, num, num); } if ("{il2cpp array field local10->}" == (ulong)2L || "{il2cpp array field local10->}" == (ulong)0L) { } int num4 = 0; ulong num6; long num5 = LongArray.ShiftUp(array4, num, array4, num, num, (int)num6); num3 += (uint)1; long[] array5 = new long[array4.Length]; int length = array4.Length; int num7 = 0; int num8 = 0; ulong num10; long num9 = LongArray.ShiftUp(array4, num8, array5, num7, length, (int)num10); long[] ints2 = this.m_ints; long[] array6 = new long[num8]; long num11 = ints2[num4]; int length2 = array3.Length; int num12 = array3[(int)num11]; int num13 = array3[(int)num11]; LongArray.AddBoth(array6, num4, array4, num12, array5, num13, num); num4++; int length3 = array6.Length; if (array6 != 0) { num12 = length3; while (length3 != 0) { } } int num14; LongArray longArray2 = new LongArray(array6, num14, num12); num14 = 0; } return other; } return this; } // Token: 0x0600A53F RID: 42303 RVA: 0x0023266C File Offset: 0x0023086C [Token(Token = "0x600A53F")] [Address(RVA = "0x73D960", Offset = "0x73C960", VA = "0x18073D960")] public void Reduce(int m, int[] ks) { long[] ints = this.m_ints; int length = ints.Length; int num = 0; int num2 = LongArray.ReduceInPlace(ints, num, length, m, ks); if (num2 < ints.Length) { long[] array = new long[num2]; int num3 = 0; this.m_ints = array; int num4 = 0; Array.Copy(ints, num4, array, num3, num2); } } // Token: 0x0600A540 RID: 42304 RVA: 0x002326CC File Offset: 0x002308CC [Token(Token = "0x600A540")] [Address(RVA = "0x73D400", Offset = "0x73C400", VA = "0x18073D400")] private static LongArray ReduceResult(long[] buf, int off, int len, int m, int[] ks) { return new LongArray(buf, len, m); } // Token: 0x0600A541 RID: 42305 RVA: 0x002326E4 File Offset: 0x002308E4 [Token(Token = "0x600A541")] [Address(RVA = "0x73CE70", Offset = "0x73BE70", VA = "0x18073CE70")] private static int ReduceInPlace(long[] buf, int off, int len, int m, int[] ks) { int num = Math.Min(len, off); num = len; int num2 = len - 1; if (len > 1) { } int num3 = 0; num2 += 64; int num4 = Math.Max(m, num2); num2 = m - num3; int num5 = Math.Min(m, num2); num5 += len; if (num5 > 1) { num = len - num5; num -= m; num += num; LongArray.FlipVector(buf, off, buf, m, len, num); int num6 = 0; LongArray.FlipVector(buf, off, buf, m, len, num); if (len > num) { int num7 = len - 1; buf[0] = (long)num6; } } if (num > num4) { num = num4; if (len - 1 > num) { long num8 = buf[len]; } long num9 = buf[m]; buf[0] = num9; } if (num4 <= m || LongArray.TestBit(buf, off, num4)) { } return len; } // Token: 0x0600A542 RID: 42306 RVA: 0x002327B0 File Offset: 0x002309B0 [Token(Token = "0x600A542")] [Address(RVA = "0x73CBE0", Offset = "0x73BBE0", VA = "0x18073CBE0")] private static void ReduceBitWise(long[] buf, int off, int BitLength, int m, int[] ks) { if (LongArray.TestBit(buf, off, BitLength)) { } while (BitLength >= m) { } } // Token: 0x0600A543 RID: 42307 RVA: 0x002327D0 File Offset: 0x002309D0 [Token(Token = "0x600A543")] [Address(RVA = "0x73CCC0", Offset = "0x73BCC0", VA = "0x18073CCC0")] private static void ReduceBit(long[] buf, int off, int bit, int m, int[] ks) { long num = buf[bit]; buf[0] = num; } // Token: 0x0600A544 RID: 42308 RVA: 0x002327F4 File Offset: 0x002309F4 [Token(Token = "0x600A544")] [Address(RVA = "0x73D610", Offset = "0x73C610", VA = "0x18073D610")] private static void ReduceWordWise(long[] buf, int off, int len, int toBit, int m, int[] ks) { if (len > toBit) { long num = buf[toBit]; } long num2 = buf[off]; buf[0] = num2; } // Token: 0x0600A545 RID: 42309 RVA: 0x00232824 File Offset: 0x00230A24 [Token(Token = "0x600A545")] [Address(RVA = "0x73D7D0", Offset = "0x73C7D0", VA = "0x18073D7D0")] private static void ReduceWord(long[] buf, int off, int bit, long word, int m, int[] ks) { LongArray.FlipWord(buf, off, bit, word); if (bit != 0) { int num = off + 1; } } // Token: 0x0600A546 RID: 42310 RVA: 0x0023284C File Offset: 0x00230A4C [Token(Token = "0x600A546")] [Address(RVA = "0x73D4C0", Offset = "0x73C4C0", VA = "0x18073D4C0")] private static void ReduceVectorWise(long[] buf, int off, int len, int words, int m, int[] ks) { } // Token: 0x0600A547 RID: 42311 RVA: 0x00232860 File Offset: 0x00230A60 [Token(Token = "0x600A547")] [Address(RVA = "0x738F90", Offset = "0x737F90", VA = "0x180738F90")] private static void FlipVector(long[] x, int xOff, long[] y, int yOff, int yLen, int bits) { } // Token: 0x0600A548 RID: 42312 RVA: 0x00232874 File Offset: 0x00230A74 [Token(Token = "0x600A548")] [Address(RVA = "0x73C320", Offset = "0x73B320", VA = "0x18073C320")] public LongArray ModSquare(int m, int[] ks) { int num = 0; if (this.GetUsedLength() != 0) { long[] array = new long[num]; int num2 = 0; long num3 = this.m_ints[num2]; num2++; long num4 = LongArray.Interleave2_32to64((int)num3); array[0] = num4; num2++; long num5 = LongArray.Interleave2_32to64((int)num3); array[0] = num5; int length = array.Length; int num6 = 0; int num7 = LongArray.ReduceInPlace(array, num6, length, m, ks); int num8; LongArray longArray = new LongArray(array, num8, m); num8 = 0; return longArray; } return this; } // Token: 0x0600A549 RID: 42313 RVA: 0x00232900 File Offset: 0x00230B00 [Token(Token = "0x600A549")] [Address(RVA = "0x73C1D0", Offset = "0x73B1D0", VA = "0x18073C1D0")] public LongArray ModSquareN(int n, int m, int[] ks) { int num = 0; int num2 = this.GetUsedLength(); if (num2 != 0) { long[] array = new long[num]; long[] ints = this.m_ints; int num3 = 0; int num4 = 0; Array.Copy(ints, num4, array, num3, num2); int num5 = n - 1; LongArray.SquareInPlace(array, num2, m, ks); int length = array.Length; int num6 = 0; num2 = LongArray.ReduceInPlace(array, num6, length, m, ks); int num7; LongArray longArray = new LongArray(array, num7, m); num7 = 0; return longArray; } throw new NullReferenceException(); } // Token: 0x0600A54A RID: 42314 RVA: 0x0023297C File Offset: 0x00230B7C [Token(Token = "0x600A54A")] [Address(RVA = "0x73DD60", Offset = "0x73CD60", VA = "0x18073DD60")] public LongArray Square(int m, int[] ks) { int num = 0; if (this.GetUsedLength() != 0) { long[] array = new long[num]; int num2 = 0; long num3 = this.m_ints[num2]; num2++; long num4 = LongArray.Interleave2_32to64((int)num3); array[0] = num4; num2++; long num5 = LongArray.Interleave2_32to64((int)num3); array[0] = num5; int num6; int length; LongArray longArray = new LongArray(array, num6, length); length = array.Length; num6 = 0; return longArray; } return this; } // Token: 0x0600A54B RID: 42315 RVA: 0x002329F8 File Offset: 0x00230BF8 [Token(Token = "0x600A54B")] [Address(RVA = "0x73DC60", Offset = "0x73CC60", VA = "0x18073DC60")] private static void SquareInPlace(long[] x, int xLen, int m, int[] ks) { long num = x[xLen]; long num2 = LongArray.Interleave2_32to64((int)num); x[0] = num2; long num3 = LongArray.Interleave2_32to64((int)num); x[0] = num3; } // Token: 0x0600A54C RID: 42316 RVA: 0x00232A34 File Offset: 0x00230C34 [Token(Token = "0x600A54C")] [Address(RVA = "0x73A140", Offset = "0x739140", VA = "0x18073A140")] private static void Interleave(long[] x, int xOff, long[] z, int zOff, int count, int width) { long num2; long num = LongArray.Interleave7(num2); z[0] = num; long num3 = LongArray.Interleave5(x[zOff]); z[0] = num3; byte[] bitLengths = LongArray.BitLengths; byte b2; byte b = b2 - 1; long num5; long num4 = LongArray.Interleave2_n(num5, (int)b); z[0] = num4; long num6 = LongArray.Interleave3(x[zOff]); z[0] = num6; } // Token: 0x0600A54D RID: 42317 RVA: 0x00232AA4 File Offset: 0x00230CA4 [Token(Token = "0x600A54D")] [Address(RVA = "0x739A90", Offset = "0x738A90", VA = "0x180739A90")] private static void Interleave3(long[] x, int xOff, long[] z, int zOff, int count) { long num2; long num = LongArray.Interleave3(num2); z[0] = num; } // Token: 0x0600A54E RID: 42318 RVA: 0x00232AC8 File Offset: 0x00230CC8 [Token(Token = "0x600A54E")] [Address(RVA = "0x7399D0", Offset = "0x7389D0", VA = "0x1807399D0")] private static long Interleave3(long x) { long num = LongArray.Interleave3_21to63((int)x); long num2 = LongArray.Interleave3_21to63((int)x); long num3 = LongArray.Interleave3_21to63((int)x); num3 += num3; return num3 + num3; } // Token: 0x0600A54F RID: 42319 RVA: 0x00232AF4 File Offset: 0x00230CF4 [Token(Token = "0x600A54F")] [Address(RVA = "0x7398F0", Offset = "0x7388F0", VA = "0x1807398F0")] private static long Interleave3_21to63(int x) { int[] interleave3_TABLE = LongArray.INTERLEAVE3_TABLE; int length = interleave3_TABLE.Length; int num = interleave3_TABLE[x]; throw new NullReferenceException(); } // Token: 0x0600A550 RID: 42320 RVA: 0x00232B1C File Offset: 0x00230D1C [Token(Token = "0x600A550")] [Address(RVA = "0x739C40", Offset = "0x738C40", VA = "0x180739C40")] private static void Interleave5(long[] x, int xOff, long[] z, int zOff, int count) { long num2; long num = LongArray.Interleave5(num2); z[0] = num; } // Token: 0x0600A551 RID: 42321 RVA: 0x00232B40 File Offset: 0x00230D40 [Token(Token = "0x600A551")] [Address(RVA = "0x739D40", Offset = "0x738D40", VA = "0x180739D40")] private static long Interleave5(long x) { long num = LongArray.Interleave3_13to65((int)x); long num2 = LongArray.Interleave3_13to65((int)x); long num3 = LongArray.Interleave3_13to65((int)x); long num4 = LongArray.Interleave3_13to65((int)x); long num5 = LongArray.Interleave3_13to65((int)x); num5 += num5; num5 += num5; num5 += num5; return num5 + num5; } // Token: 0x0600A552 RID: 42322 RVA: 0x00232B90 File Offset: 0x00230D90 [Token(Token = "0x600A552")] [Address(RVA = "0x739840", Offset = "0x738840", VA = "0x180739840")] private static long Interleave3_13to65(int x) { int[] interleave5_TABLE = LongArray.INTERLEAVE5_TABLE; int length = interleave5_TABLE.Length; int num = interleave5_TABLE[x]; throw new NullReferenceException(); } // Token: 0x0600A553 RID: 42323 RVA: 0x00232BB8 File Offset: 0x00230DB8 [Token(Token = "0x600A553")] [Address(RVA = "0x73A040", Offset = "0x739040", VA = "0x18073A040")] private static void Interleave7(long[] x, int xOff, long[] z, int zOff, int count) { long num2; long num = LongArray.Interleave7(num2); z[0] = num; } // Token: 0x0600A554 RID: 42324 RVA: 0x00232BDC File Offset: 0x00230DDC [Token(Token = "0x600A554")] [Address(RVA = "0x739E30", Offset = "0x738E30", VA = "0x180739E30")] private static long Interleave7(long x) { long[] interleave7_TABLE = LongArray.INTERLEAVE7_TABLE; int length = interleave7_TABLE.Length; long num = interleave7_TABLE[(int)x]; num += num; num += num; num += num; num += num; num += num; return num + num; } // Token: 0x0600A555 RID: 42325 RVA: 0x00232C20 File Offset: 0x00230E20 [Token(Token = "0x600A555")] [Address(RVA = "0x7395E0", Offset = "0x7385E0", VA = "0x1807395E0")] private static void Interleave2_n(long[] x, int xOff, long[] z, int zOff, int count, int rounds) { long num; z[0] = num; } // Token: 0x0600A556 RID: 42326 RVA: 0x00232C3C File Offset: 0x00230E3C [Token(Token = "0x600A556")] [Address(RVA = "0x7396F0", Offset = "0x7386F0", VA = "0x1807396F0")] private static long Interleave2_n(long x, int rounds) { if (rounds > 1) { long num = LongArray.Interleave4_16to64((int)x); long num2 = LongArray.Interleave4_16to64((int)x); long num3 = LongArray.Interleave4_16to64((int)x); long num4 = LongArray.Interleave4_16to64((int)x); } if (rounds > 0) { long num5 = LongArray.Interleave2_32to64((int)x); long num6 = LongArray.Interleave2_32to64((int)x); return num6 + num6; } return x; } // Token: 0x0600A557 RID: 42327 RVA: 0x00232C8C File Offset: 0x00230E8C [Token(Token = "0x600A557")] [Address(RVA = "0x739B90", Offset = "0x738B90", VA = "0x180739B90")] private static long Interleave4_16to64(int x) { int[] interleave4_TABLE = LongArray.INTERLEAVE4_TABLE; int length = interleave4_TABLE.Length; int num = interleave4_TABLE[x]; throw new NullReferenceException(); } // Token: 0x0600A558 RID: 42328 RVA: 0x00232CB4 File Offset: 0x00230EB4 [Token(Token = "0x600A558")] [Address(RVA = "0x7394C0", Offset = "0x7384C0", VA = "0x1807394C0")] private static long Interleave2_32to64(int x) { ushort[] interleave2_TABLE = LongArray.INTERLEAVE2_TABLE; int length = interleave2_TABLE.Length; ushort num = interleave2_TABLE[x]; throw new NullReferenceException(); } // Token: 0x0600A559 RID: 42329 RVA: 0x00232CDC File Offset: 0x00230EDC [Token(Token = "0x600A559")] [Address(RVA = "0x73A6A0", Offset = "0x7396A0", VA = "0x18073A6A0")] public LongArray ModInverse(int m, int[] ks) { /* An exception occurred when decompiling this method (0600A559) ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC.LongArray BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC.LongArray::ModInverse(System.Int32,System.Int32[]) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_17B: stloc:InvalidOperationException(var_39_180, newobj:InvalidOperationException(InvalidOperationException::.ctor)) } at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88 --- End of inner exception stack trace --- at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663 */; } // Token: 0x0600A55A RID: 42330 RVA: 0x00232E6C File Offset: 0x0023106C [Token(Token = "0x600A55A")] [Address(RVA = "0x738DF0", Offset = "0x737DF0", VA = "0x180738DF0", Slot = "0")] public override bool Equals(object obj) { if (obj == 0) { return; } } // Token: 0x0600A55B RID: 42331 RVA: 0x00232E80 File Offset: 0x00231080 [Token(Token = "0x600A55B")] [Address(RVA = "0x738E80", Offset = "0x737E80", VA = "0x180738E80", Slot = "4")] public virtual bool Equals(LongArray other) { if (this != other) { if (other != 0) { int usedLength = this.GetUsedLength(); if (other.GetUsedLength() == usedLength) { int num = 0; if (usedLength <= 0) { return true; } long[] ints = this.m_ints; long num2 = other.m_ints[num]; if ("{il2cpp array field local7->}" == num2) { num++; return true; } } } throw new IndexOutOfRangeException(); } return true; } // Token: 0x0600A55C RID: 42332 RVA: 0x00232ED8 File Offset: 0x002310D8 [Token(Token = "0x600A55C")] [Address(RVA = "0x739220", Offset = "0x738220", VA = "0x180739220", Slot = "2")] public override int GetHashCode() { int usedLength = this.GetUsedLength(); int num = 0; if (usedLength > 0) { long[] ints = this.m_ints; num++; long num2 = (long)(1U * (uint)31); } throw new NullReferenceException(); } // Token: 0x0600A55D RID: 42333 RVA: 0x00232F08 File Offset: 0x00231108 [Token(Token = "0x600A55D")] [Address(RVA = "0x738B40", Offset = "0x737B40", VA = "0x180738B40")] public LongArray Copy() { long[] array = Arrays.Clone(this.m_ints); LongArray longArray; longArray.m_ints = array; return longArray; } // Token: 0x0600A55E RID: 42334 RVA: 0x00232F2C File Offset: 0x0023112C [Token(Token = "0x600A55E")] [Address(RVA = "0x73E240", Offset = "0x73D240", VA = "0x18073E240", Slot = "3")] public override string ToString() { int num = this.GetUsedLength(); if (num != 0) { long[] ints = this.m_ints; int num2 = num - 1; num = num2; StringBuilder stringBuilder = new StringBuilder(Convert.ToString(ints[num], 2)); int num3 = num2 - 1; string text = Convert.ToString(this.m_ints[num3], 2); if (text.m_stringLength < 64) { string text2; StringBuilder stringBuilder2 = stringBuilder.Append(text2); } StringBuilder stringBuilder3 = stringBuilder.Append(text); } return "0"; } // Token: 0x0600A55F RID: 42335 RVA: 0x00232FA8 File Offset: 0x002311A8 // Note: this type is marked as 'beforefieldinit'. [Token(Token = "0x600A55F")] [Address(RVA = "0x73E410", Offset = "0x73D410", VA = "0x18073E410")] static LongArray() { ushort[] array = new ushort[256]; RuntimeHelpers.InitializeArray(array, fieldof(.CA1986CBA4E4F0DFA3BF6A654EF8A36E6077AD99).FieldHandle); LongArray.INTERLEAVE2_TABLE = array; int[] array2 = new int[128]; RuntimeHelpers.InitializeArray(array2, fieldof(.239B59488F1CE7EBE225785FDC22A8E3102A2E82).FieldHandle); LongArray.INTERLEAVE3_TABLE = array2; int[] array3 = new int[256]; RuntimeHelpers.InitializeArray(array3, fieldof(.310EFB639F3C7677A2A82B54EEED1124ED69E9A3).FieldHandle); LongArray.INTERLEAVE4_TABLE = array3; int[] array4 = new int[128]; RuntimeHelpers.InitializeArray(array4, fieldof(.428007959831954B0C2DCFAF9DD641D629B00DBF).FieldHandle); LongArray.INTERLEAVE5_TABLE = array4; long[] array5 = new long[512]; RuntimeHelpers.InitializeArray(array5, fieldof(.FA5B1C8B2F287078ED719C15595DB729BDB85911).FieldHandle); LongArray.INTERLEAVE7_TABLE = array5; byte[] array6 = new byte[256]; RuntimeHelpers.InitializeArray(array6, fieldof(.C95356610D5583976B69017BED7048EB50121B90).FieldHandle); LongArray.BitLengths = array6; } // Token: 0x04006C52 RID: 27730 [Token(Token = "0x4006C52")] private static readonly ushort[] INTERLEAVE2_TABLE; // Token: 0x04006C53 RID: 27731 [Token(Token = "0x4006C53")] private static readonly int[] INTERLEAVE3_TABLE; // Token: 0x04006C54 RID: 27732 [Token(Token = "0x4006C54")] private static readonly int[] INTERLEAVE4_TABLE; // Token: 0x04006C55 RID: 27733 [Token(Token = "0x4006C55")] private static readonly int[] INTERLEAVE5_TABLE; // Token: 0x04006C56 RID: 27734 [Token(Token = "0x4006C56")] private static readonly long[] INTERLEAVE7_TABLE; // Token: 0x04006C57 RID: 27735 [Token(Token = "0x4006C57")] private const string ZEROES = "0000000000000000000000000000000000000000000000000000000000000000"; // Token: 0x04006C58 RID: 27736 [Token(Token = "0x4006C58")] internal static readonly byte[] BitLengths; // Token: 0x04006C59 RID: 27737 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4006C59")] private long[] m_ints; } }