Files
2026-04-08 23:40:05 +02:00

3234 lines
106 KiB
C#

using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Text;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Math
{
// Token: 0x020013F7 RID: 5111
[Token(Token = "0x20013F7")]
[Serializable]
[StructLayout(3)]
public class BigInteger
{
// Token: 0x06008223 RID: 33315 RVA: 0x001BAC14 File Offset: 0x001B8E14
[Token(Token = "0x6008223")]
[Address(RVA = "0x21D0110", Offset = "0x21CEB10", VA = "0x1821D0110")]
static BigInteger()
{
/*
An exception occurred when decompiling this method (06008223)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::.cctor()
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_7FA:
stelem:int32[]([mscorlib]System.Int32, ldloc:int32[][](var_0_07), ldc.i4:int32(58), ldloc:int32[](var_59_7E7))
}
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.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: 0x06008224 RID: 33316 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x6008224")]
[Address(RVA = "0x21C8BE0", Offset = "0x21C75E0", VA = "0x1821C8BE0")]
private static int GetByteLength(int nBits)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x06008225 RID: 33317 RVA: 0x001BB424 File Offset: 0x001B9624
[Token(Token = "0x6008225")]
[Address(RVA = "0x21C6900", Offset = "0x21C5300", VA = "0x1821C6900")]
internal static BigInteger Arbitrary(int sizeInBits)
{
SecureRandom randomSource = BigInteger.RandomSource;
return new BigInteger(sizeInBits, randomSource);
}
// Token: 0x06008226 RID: 33318 RVA: 0x001BB440 File Offset: 0x001B9640
[Token(Token = "0x6008226")]
[Address(RVA = "0x21D2D60", Offset = "0x21D1760", VA = "0x1821D2D60")]
private BigInteger(int signum, int[] mag, bool checkMag)
{
this.nBits = (int)((ulong)(-1L));
base..ctor();
if (!checkMag)
{
this.sign = signum;
this.magnitude = mag;
return;
}
int num = 0;
int num2 = 0;
int length = mag.Length;
if (num2 < length && "{il2cpp array field mag->}" == (ulong)0L)
{
num++;
}
if (num != length)
{
this.sign = signum;
while (num == 0)
{
}
int num3 = mag.Length;
num3 -= num;
int[] array = new int[num3];
this.magnitude = array;
int length2 = array.Length;
int num4 = 0;
Array.Copy(mag, num, array, num4, length2);
}
this.sign = (int)((ulong)0L);
int[] zeroMagnitude = BigInteger.ZeroMagnitude;
this.magnitude = zeroMagnitude;
throw new NullReferenceException();
}
// Token: 0x06008227 RID: 33319 RVA: 0x001BB4F0 File Offset: 0x001B96F0
[Token(Token = "0x6008227")]
[Address(RVA = "0x21D3070", Offset = "0x21D1A70", VA = "0x1821D3070")]
public BigInteger(string value)
{
}
// Token: 0x06008228 RID: 33320 RVA: 0x001BB500 File Offset: 0x001B9700
[Token(Token = "0x6008228")]
[Address(RVA = "0x21D2730", Offset = "0x21D1130", VA = "0x1821D2730")]
public BigInteger(string str, int radix)
{
/*
An exception occurred when decompiling this method (06008228)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::.ctor(System.String,System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_1F3:
stloc:FormatException(var_42_1FA, newobj:FormatException(FormatException::.ctor, ldloc:string(var_41)))
}
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.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: 0x06008229 RID: 33321 RVA: 0x001BB708 File Offset: 0x001B9908
[Token(Token = "0x6008229")]
[Address(RVA = "0x21D3310", Offset = "0x21D1D10", VA = "0x1821D3310")]
public BigInteger(byte[] bytes)
{
int length = bytes.Length;
}
// Token: 0x0600822A RID: 33322 RVA: 0x001BB724 File Offset: 0x001B9924
[Token(Token = "0x600822A")]
[Address(RVA = "0x21D3080", Offset = "0x21D1A80", VA = "0x1821D3080")]
public BigInteger(byte[] bytes, int offset, int length)
{
/*
An exception occurred when decompiling this method (0600822A)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::.ctor(System.Byte[],System.Int32,System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_8F:
stloc:FormatException(var_11_99, newobj:FormatException(FormatException::.ctor, ldstr:string("Zero length BigInteger")))
}
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: 0x0600822B RID: 33323 RVA: 0x001BB7CC File Offset: 0x001B99CC
[Token(Token = "0x600822B")]
[Address(RVA = "0x21C96C0", Offset = "0x21C80C0", VA = "0x1821C96C0")]
private static int[] MakeMagnitude(byte[] bytes, int offset, int length)
{
return BigInteger.ZeroMagnitude;
}
// Token: 0x0600822C RID: 33324 RVA: 0x001BB80C File Offset: 0x001B9A0C
[Token(Token = "0x600822C")]
[Address(RVA = "0x21D25F0", Offset = "0x21D0FF0", VA = "0x1821D25F0")]
public BigInteger(int sign, byte[] bytes)
{
/*
An exception occurred when decompiling this method (0600822C)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::.ctor(System.Int32,System.Byte[])
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_58:
stloc:FormatException(var_5_62, newobj:FormatException(FormatException::.ctor, ldstr:string("Invalid sign value")))
}
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: 0x0600822D RID: 33325 RVA: 0x001BB87C File Offset: 0x001B9A7C
[Token(Token = "0x600822D")]
[Address(RVA = "0x21D24C0", Offset = "0x21D0EC0", VA = "0x1821D24C0")]
public BigInteger(int sign, byte[] bytes, int offset, int length)
{
/*
An exception occurred when decompiling this method (0600822D)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::.ctor(System.Int32,System.Byte[],System.Int32,System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_3E:
stloc:FormatException(var_3_48, newobj:FormatException(FormatException::.ctor, ldstr:string("Invalid sign value")))
}
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.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: 0x0600822E RID: 33326 RVA: 0x001BB8D4 File Offset: 0x001B9AD4
[Token(Token = "0x600822E")]
[Address(RVA = "0x21D2EA0", Offset = "0x21D18A0", VA = "0x1821D2EA0")]
public BigInteger(int sizeInBits, Random random)
{
int num = 0;
this.nBits = (int)((ulong)(-1L));
base..ctor();
this.nBits = (int)((ulong)(-1L));
if (sizeInBits != 0)
{
byte[] array = new byte[num];
double num2 = random.NextDouble();
int num3 = 0;
int length = array.Length;
int[] array2 = BigInteger.MakeMagnitude(array, num3, length);
this.magnitude = array2;
bool flag = array2.Length >= 1;
this.sign = (flag ? 1 : 0);
return;
}
int num4 = 0;
this.sign = num4;
int[] zeroMagnitude = BigInteger.ZeroMagnitude;
this.magnitude = zeroMagnitude;
}
// Token: 0x0600822F RID: 33327 RVA: 0x001BB968 File Offset: 0x001B9B68
[Token(Token = "0x600822F")]
[Address(RVA = "0x21D3340", Offset = "0x21D1D40", VA = "0x1821D3340")]
public BigInteger(int bitLength, int certainty, Random random)
{
int num = 0;
base..ctor();
this.nBitLength = bitLength;
if (bitLength != 2)
{
byte[] array = new byte[num];
num -= bitLength;
uint num2;
num2 -= (uint)num;
int num3 = 0;
byte b = array[0];
array[0] = b;
array[0] = b;
int length = array.Length;
int num4 = 0;
int[] array2 = BigInteger.MakeMagnitude(array, num4, length);
this.magnitude = array2;
this.mQuote = num3;
ulong num5;
if (this.CheckProbablePrime(certainty, random, num5 != 0UL))
{
return;
}
int num6 = this.magnitude.Length - 1;
uint num7;
if (num7 < (uint)num6)
{
double num8 = random.Sample();
ulong num9;
if (this.CheckProbablePrime(certainty, random, num9 != 0UL))
{
return;
}
num7 += (uint)1;
}
}
int num10;
if (num10 == 0)
{
}
int[] array3 = BigInteger.Three.magnitude;
this.magnitude = array3;
}
// Token: 0x06008230 RID: 33328 RVA: 0x001BBA48 File Offset: 0x001B9C48
[Token(Token = "0x6008230")]
[Address(RVA = "0x21C6090", Offset = "0x21C4A90", VA = "0x1821C6090")]
public BigInteger Abs()
{
int num = this.sign;
int num2 = this.sign;
if (num2 != 0)
{
int[] array = this.magnitude;
BigInteger bigInteger;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.magnitude = array;
bigInteger.sign = num2;
}
return this;
}
// Token: 0x06008231 RID: 33329 RVA: 0x001BBA88 File Offset: 0x001B9C88
[Token(Token = "0x6008231")]
[Address(RVA = "0x21C6130", Offset = "0x21C4B30", VA = "0x1821C6130")]
private static int[] AddMagnitudes(int[] a, int[] b)
{
int length = a.Length;
int length2 = b.Length;
int num = a[length];
int num2 = b[length2];
uint num3;
num3 += (uint)num;
num3 += (uint)num2;
a[0] = (int)num3;
if (num3 != (uint)0)
{
num2 = length;
while (num2 == a.Length)
{
}
}
return a;
}
// Token: 0x06008232 RID: 33330 RVA: 0x001BBAE0 File Offset: 0x001B9CE0
[Token(Token = "0x6008232")]
[Address(RVA = "0x21C63C0", Offset = "0x21C4DC0", VA = "0x1821C63C0")]
public BigInteger Add(BigInteger value)
{
int num = this.sign;
if (num == 0)
{
return value;
}
int num2 = value.sign;
if (num == num2)
{
int[] array = value.magnitude;
return this.AddToMagnitude(array);
}
if (num2 != 0)
{
BigInteger bigInteger = this.Negate();
return value.Subtract(bigInteger);
}
return this;
}
// Token: 0x06008233 RID: 33331 RVA: 0x001BBB38 File Offset: 0x001B9D38
[Token(Token = "0x6008233")]
[Address(RVA = "0x21C6210", Offset = "0x21C4C10", VA = "0x1821C6210")]
private BigInteger AddToMagnitude(int[] magToAdd)
{
int[] array;
int length3;
do
{
array = this.magnitude;
int length = magToAdd.Length;
int length2 = magToAdd.Length;
length3 = array.Length;
if (length2 == length3)
{
}
if ("{il2cpp array field magToAdd->}" >= (uint)(-1))
{
break;
}
if (length3 == 0)
{
}
}
while (length3 == 0);
int[] array2 = new int[0];
int num = 0;
int[] array3 = BigInteger.AddMagnitudes(array2, array);
return new BigInteger(this.sign, array3, num != 0);
}
// Token: 0x06008234 RID: 33332 RVA: 0x001BBBA0 File Offset: 0x001B9DA0
[Token(Token = "0x6008234")]
[Address(RVA = "0x21C64C0", Offset = "0x21C4EC0", VA = "0x1821C64C0")]
public BigInteger And(BigInteger value)
{
int num = this.sign;
if (num != 0 && value.sign != 0)
{
if (num > 0)
{
}
BigInteger one = BigInteger.One;
int[] array = this.Add(one).magnitude;
if (value.sign > 0)
{
}
BigInteger one2 = BigInteger.One;
int[] array2 = value.Add(one2).magnitude;
int num2 = value.sign;
int num3 = array2.Length;
num3 = Math.Max(array.Length, num3);
int[] array3 = new int[num3];
int num4 = array3.Length;
int num5 = 0;
int num6 = 0;
num4 -= num4;
int length = array3.Length;
if (num6 < length)
{
num6 += num5;
int num7 = 0;
array3[0] = num7;
if (num2 != 0)
{
array3[0] = num7;
}
num5++;
}
uint num8;
ulong num9;
BigInteger bigInteger = new BigInteger((int)num8, array3, num9 != 0UL);
if (num2 != 0)
{
BigInteger bigInteger2 = bigInteger.Inc();
int num10 = bigInteger2.sign;
if (num10 != 0)
{
int[] array4 = bigInteger2.magnitude;
BigInteger bigInteger3;
bigInteger3.nBits = (int)((ulong)(-1L));
bigInteger3.sign = num10;
bigInteger3.magnitude = array4;
}
}
}
return BigInteger.Zero;
}
// Token: 0x06008235 RID: 33333 RVA: 0x001BBCCC File Offset: 0x001B9ECC
[Token(Token = "0x6008235")]
[Address(RVA = "0x21C6470", Offset = "0x21C4E70", VA = "0x1821C6470")]
public BigInteger AndNot(BigInteger val)
{
BigInteger bigInteger = val.Inc().Negate();
return this.And(bigInteger);
}
// Token: 0x17001525 RID: 5413
// (get) Token: 0x06008236 RID: 33334 RVA: 0x001BBCF4 File Offset: 0x001B9EF4
[Token(Token = "0x17001525")]
public int BitCount
{
[Token(Token = "0x6008236")]
[Address(RVA = "0x21D37A0", Offset = "0x21D21A0", VA = "0x1821D37A0")]
get
{
int num = this.nBits;
if (num == -1)
{
int[] array = this.magnitude;
int num2 = 0;
if (num2 < array.Length)
{
int num3 = array[num2];
int[] array2 = this.magnitude;
num2++;
num3 -= num3;
num3 += num3;
num3 += num3;
num3 += num3;
num3 += num3;
num2 += num3;
}
this.nBits = num2;
}
return num;
}
}
// Token: 0x06008237 RID: 33335 RVA: 0x001BBD74 File Offset: 0x001B9F74
[Token(Token = "0x6008237")]
[Address(RVA = "0x21C6990", Offset = "0x21C5390", VA = "0x1821C6990")]
public static int BitCnt(int i)
{
return i;
}
// Token: 0x06008238 RID: 33336 RVA: 0x001BBD84 File Offset: 0x001B9F84
[Token(Token = "0x6008238")]
[Address(RVA = "0x21C6BA0", Offset = "0x21C55A0", VA = "0x1821C6BA0")]
private static int CalcBitLength(int sign, int indx, int[] mag)
{
int num = mag.Length;
if (indx < num)
{
int num2 = mag[indx];
if (num2 == 0)
{
}
num -= indx;
int num3 = 0;
int num4 = BigInteger.BitLen(num2);
num4 = num2;
if (num4 == num2)
{
int length = mag.Length;
if (indx < length)
{
while ("{il2cpp array field mag->}" == (ulong)0L)
{
}
}
}
return num3;
}
throw new NullReferenceException();
}
// Token: 0x17001526 RID: 5414
// (get) Token: 0x06008239 RID: 33337 RVA: 0x001BBDDC File Offset: 0x001B9FDC
[Token(Token = "0x17001526")]
public int BitLength
{
[Token(Token = "0x6008239")]
[Address(RVA = "0x21D3900", Offset = "0x21D2300", VA = "0x1821D3900")]
get
{
int num = this.nBitLength;
if (num == -1)
{
int num2 = this.sign;
if (num2 == 0)
{
int num3 = 0;
this.nBitLength = num3;
return num3;
}
int[] array = this.magnitude;
int num4 = 0;
int num5 = BigInteger.CalcBitLength(num2, num4, array);
this.nBitLength = num5;
}
return num;
}
}
// Token: 0x0600823A RID: 33338 RVA: 0x001BBE28 File Offset: 0x001BA028
[Token(Token = "0x600823A")]
[Address(RVA = "0x21C69D0", Offset = "0x21C53D0", VA = "0x1821C69D0")]
internal static int BitLen(int w)
{
if (w == 0)
{
if (w == 0)
{
if (w == 0)
{
byte[] bitLengthTable = BigInteger.BitLengthTable;
}
byte[] bitLengthTable2 = BigInteger.BitLengthTable;
}
byte[] bitLengthTable3 = BigInteger.BitLengthTable;
}
byte[] bitLengthTable4 = BigInteger.BitLengthTable;
throw new NullReferenceException();
}
// Token: 0x0600823B RID: 33339 RVA: 0x001BBE60 File Offset: 0x001BA060
[Token(Token = "0x600823B")]
[Address(RVA = "0x21CC520", Offset = "0x21CAF20", VA = "0x1821CC520")]
private bool QuickPow2Check()
{
return this.nBits == 1;
}
// Token: 0x0600823C RID: 33340 RVA: 0x001BBE78 File Offset: 0x001BA078
[Token(Token = "0x600823C")]
[Address(RVA = "0x21C70F0", Offset = "0x21C5AF0", VA = "0x1821C70F0")]
public int CompareTo(object obj)
{
do
{
if (obj == 0)
{
}
}
while (obj == 0);
int num;
return num;
}
// Token: 0x0600823D RID: 33341 RVA: 0x001BBE90 File Offset: 0x001BA090
[Token(Token = "0x600823D")]
[Address(RVA = "0x21C7270", Offset = "0x21C5C70", VA = "0x1821C7270")]
private static int CompareTo(int xIndx, int[] x, int yIndx, int[] y)
{
int length = x.Length;
if (xIndx == length || "{il2cpp array field x->}" == (ulong)0L)
{
}
int length2 = y.Length;
if (yIndx == length2 || "{il2cpp array field y->}" == (ulong)0L)
{
}
return BigInteger.CompareNoLeadingZeroes(xIndx, x, yIndx, y);
}
// Token: 0x0600823E RID: 33342 RVA: 0x001BBED8 File Offset: 0x001BA0D8
[Token(Token = "0x600823E")]
[Address(RVA = "0x21C7030", Offset = "0x21C5A30", VA = "0x1821C7030")]
private static int CompareNoLeadingZeroes(int xIndx, int[] x, int yIndx, int[] y)
{
int num = x.Length;
int length = y.Length;
num -= length;
num -= xIndx;
num += yIndx;
if (y == 0)
{
if (xIndx < xIndx)
{
int num2 = y[yIndx];
while ("{il2cpp array field x->}" == num2)
{
}
if ("{il2cpp array field x->}" >= num2)
{
goto IL_40;
}
}
return 0;
}
IL_40:
throw new NullReferenceException();
}
// Token: 0x0600823F RID: 33343 RVA: 0x001BBF2C File Offset: 0x001BA12C
[Token(Token = "0x600823F")]
[Address(RVA = "0x21C7190", Offset = "0x21C5B90", VA = "0x1821C7190")]
public int CompareTo(BigInteger value)
{
int num = this.sign;
if (num < value.sign)
{
return -1;
}
if (num > value.sign)
{
return 1;
}
return 0;
}
// Token: 0x06008240 RID: 33344 RVA: 0x001BBF64 File Offset: 0x001BA164
[Token(Token = "0x6008240")]
[Address(RVA = "0x21C7DC0", Offset = "0x21C67C0", VA = "0x1821C7DC0")]
private int[] Divide(int[] x, int[] y)
{
int num = 0;
int num2 = 0;
int length = x.Length;
if (num2 < length && "{il2cpp array field x->}" == (ulong)0L)
{
num++;
}
int num3 = 0;
int num4 = 0;
int length2 = y.Length;
if (num4 < length2 && "{il2cpp array field y->}" == (ulong)0L)
{
num3++;
}
int num5 = BigInteger.CompareNoLeadingZeroes(num, x, num3, y);
int[] array = new int[1];
int num6 = y.Length;
if (num3 < num6)
{
if (y[num3] == 0)
{
num3++;
}
num6 -= num3;
}
int num7 = 0;
ulong num8;
if (num8 == (ulong)0L)
{
}
int num9 = x.Length;
if (num < num9)
{
int num10 = x[num];
if (num10 == 0)
{
num++;
}
num9 -= num;
int num11 = BigInteger.BitLen(num10);
}
int num12 = 0;
num12 -= num7;
int num13 = 0;
int num14 = 0;
(new int[0])[0] = (int)((ulong)1L);
num12 -= num3;
int[] array2 = new int[num12];
num7++;
if (array2.Length < num13)
{
num7++;
}
uint num15;
array2[0] = (int)num15;
int[] array3 = new int[array2.Length];
int[] array4;
int num16 = BigInteger.CompareNoLeadingZeroes(num, x, num14, array4);
int[] array5 = BigInteger.Subtract(num, x, num14, array4);
int[] array6 = BigInteger.AddMagnitudes(array3, array2);
int length3 = x.Length;
if (x[num] == 0)
{
while (1 != length3)
{
}
return array3;
}
int num17 = x.Length;
num17--;
int num18;
num17 += num18;
int num19 = x.Length;
num19--;
num19 += num3;
if (1 < num19)
{
num3++;
uint num20;
if (num20 == (uint)0)
{
int[] array7 = BigInteger.One.magnitude;
int[] array8 = BigInteger.AddMagnitudes(array3, array7);
int num21 = x.Length;
num21--;
Array.Clear(x, 1, num21);
}
}
uint num22;
while (num22 == (uint)0)
{
}
num12 -= num17;
if (num12 != 1 || x > "{il2cpp array field x->}")
{
}
num14++;
throw new NullReferenceException();
}
// Token: 0x06008241 RID: 33345 RVA: 0x001BC14C File Offset: 0x001BA34C
[Token(Token = "0x6008241")]
[Address(RVA = "0x21C7BD0", Offset = "0x21C65D0", VA = "0x1821C7BD0")]
public BigInteger Divide(BigInteger val)
{
/*
An exception occurred when decompiling this method (06008241)
ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::Divide(BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_90:
stloc:ArithmeticException(var_10_9A, newobj:ArithmeticException(ArithmeticException::.ctor, ldstr:string("Division by zero error")))
}
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.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: 0x06008242 RID: 33346 RVA: 0x001BC1F4 File Offset: 0x001BA3F4
[Token(Token = "0x6008242")]
[Address(RVA = "0x21C7640", Offset = "0x21C6040", VA = "0x1821C7640")]
public BigInteger[] DivideAndRemainder(BigInteger val)
{
BigInteger[] array;
for (;;)
{
if (val.sign != 0)
{
array = new BigInteger[2];
if (this.sign == 0)
{
goto IL_E0;
}
if (val.sign > 0 && val.nBits == 1)
{
int bitLength = val.Abs().BitLength;
BigInteger bigInteger = this.Abs();
int num = bitLength - 1;
BigInteger bigInteger2 = bigInteger.ShiftRight(num);
int num2 = bitLength - 1;
int[] array2 = this.LastNBits(num2);
int num3 = this.sign;
if (val.sign != num3)
{
BigInteger bigInteger3 = bigInteger2.Negate();
}
if (bigInteger2 != 0)
{
}
array[0] = bigInteger2;
if (new BigInteger(this.sign, array2, true) != 0)
{
}
}
int[] array3 = this.magnitude;
if (array == 0)
{
}
if (array != 0)
{
break;
}
}
}
int num4 = this.sign;
int num5 = val.sign;
int num6;
int[] array4;
BigInteger bigInteger4 = new BigInteger(num6, array4, true);
num6 = num5 * num4;
if (bigInteger4 != 0)
{
}
array[0] = bigInteger4;
BigInteger bigInteger5;
if (bigInteger5 != 0)
{
}
IL_E0:
BigInteger zero = BigInteger.Zero;
if (zero != 0)
{
}
array[0] = zero;
BigInteger zero2 = BigInteger.Zero;
if (zero2 != 0)
{
}
array[1] = zero2;
return array;
}
// Token: 0x06008243 RID: 33347 RVA: 0x001BC314 File Offset: 0x001BA514
[Token(Token = "0x6008243")]
[Address(RVA = "0x21C8640", Offset = "0x21C7040", VA = "0x1821C8640", Slot = "0")]
public override bool Equals(object obj)
{
if (obj != this)
{
if (obj != 0)
{
int num = 0;
if (obj != 0 && this.sign == num)
{
bool flag;
return flag;
}
}
}
return true;
}
// Token: 0x06008244 RID: 33348 RVA: 0x001BC340 File Offset: 0x001BA540
[Token(Token = "0x6008244")]
[Address(RVA = "0x21C91E0", Offset = "0x21C7BE0", VA = "0x1821C91E0")]
private bool IsEqualMagnitude(BigInteger x)
{
int[] array = this.magnitude;
int[] array2 = x.magnitude;
int length = array.Length;
if (length == array2.Length)
{
int num = 0;
if (num < length)
{
int num2 = array2[num];
if ("{il2cpp array field local2->}" != num2)
{
goto IL_3C;
}
num++;
}
return true;
}
IL_3C:
throw new NullReferenceException();
}
// Token: 0x06008245 RID: 33349 RVA: 0x001BC394 File Offset: 0x001BA594
[Token(Token = "0x6008245")]
[Address(RVA = "0x21C8AD0", Offset = "0x21C74D0", VA = "0x1821C8AD0")]
public BigInteger Gcd(BigInteger value)
{
int num;
do
{
num = this.sign;
if (value.sign == 0)
{
goto IL_2A;
}
}
while (num == 0);
if (value.sign != 0)
{
return this.Mod(value).Abs();
}
BigInteger bigInteger;
return bigInteger;
IL_2A:
int num2 = this.sign;
if (num2 != 0)
{
int[] array = this.magnitude;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.magnitude = array;
bigInteger.sign = num2;
}
return bigInteger;
}
// Token: 0x06008246 RID: 33350 RVA: 0x001BC3FC File Offset: 0x001BA5FC
[Token(Token = "0x6008246")]
[Address(RVA = "0x21C8BF0", Offset = "0x21C75F0", VA = "0x1821C8BF0", Slot = "2")]
public override int GetHashCode()
{
int[] array = this.magnitude;
int length = array.Length;
int length2 = array.Length;
if (length != 0 && length2 > 1)
{
int num = length2 - 1;
}
if (this.sign < 0)
{
}
return length2;
}
// Token: 0x06008247 RID: 33351 RVA: 0x001BC43C File Offset: 0x001BA63C
[Token(Token = "0x6008247")]
[Address(RVA = "0x21C9090", Offset = "0x21C7A90", VA = "0x1821C9090")]
private BigInteger Inc()
{
if (this.sign != 0)
{
int[] array = BigInteger.One.magnitude;
return this.AddToMagnitude(array);
}
return BigInteger.One;
}
// Token: 0x17001527 RID: 5415
// (get) Token: 0x06008248 RID: 33352 RVA: 0x001BC488 File Offset: 0x001BA688
[Token(Token = "0x17001527")]
public int IntValue
{
[Token(Token = "0x6008248")]
[Address(RVA = "0x21D39A0", Offset = "0x21D23A0", VA = "0x1821D39A0")]
get
{
if (this.sign != 0)
{
int[] array = this.magnitude;
int num = array.Length - 1;
return array[num];
}
return 0;
}
}
// Token: 0x06008249 RID: 33353 RVA: 0x001BC4C0 File Offset: 0x001BA6C0
[Token(Token = "0x6008249")]
[Address(RVA = "0x21C9400", Offset = "0x21C7E00", VA = "0x1821C9400")]
public bool IsProbablePrime(int certainty)
{
if (certainty > 0)
{
BigInteger bigInteger = this.Abs();
int num = 0;
if (bigInteger.TestBit(num))
{
int num2 = 0;
SecureRandom randomSource = BigInteger.RandomSource;
return bigInteger.CheckProbablePrime(certainty, randomSource, num2 != 0);
}
}
return true;
}
// Token: 0x0600824A RID: 33354 RVA: 0x001BC504 File Offset: 0x001BA704
[Token(Token = "0x600824A")]
[Address(RVA = "0x21C9270", Offset = "0x21C7C70", VA = "0x1821C9270")]
internal bool IsProbablePrime(int certainty, bool randomlySelected)
{
if (certainty > 0)
{
BigInteger bigInteger = this.Abs();
int num = 0;
if (bigInteger.TestBit(num))
{
SecureRandom randomSource = BigInteger.RandomSource;
return bigInteger.CheckProbablePrime(certainty, randomSource, randomlySelected);
}
}
return true;
}
// Token: 0x0600824B RID: 33355 RVA: 0x001BC544 File Offset: 0x001BA744
[Token(Token = "0x600824B")]
[Address(RVA = "0x21C6CD0", Offset = "0x21C56D0", VA = "0x1821C6CD0")]
private bool CheckProbablePrime(int certainty, Random random, bool randomlySelected)
{
int bitLength = this.BitLength;
int length = BigInteger.primeLists.Length;
int num = Math.Min(bitLength - 1, length);
int num2 = 0;
if (num > 0)
{
int num3 = BigInteger.primeProducts[num2];
int num4 = this.Remainder(num3);
int[] array = BigInteger.primeLists[num2];
int num5 = 0;
if (num5 < array.Length)
{
if (num3 == 0)
{
throw new NullReferenceException();
}
num5++;
}
num2++;
}
return this.RabinMillerTest(certainty, random, randomlySelected);
}
// Token: 0x0600824C RID: 33356 RVA: 0x001BC5C8 File Offset: 0x001BA7C8
[Token(Token = "0x600824C")]
[Address(RVA = "0x21CC540", Offset = "0x21CAF40", VA = "0x1821CC540")]
public bool RabinMillerTest(int certainty, Random random)
{
int num = 0;
return this.RabinMillerTest(certainty, random, num != 0);
}
// Token: 0x0600824D RID: 33357 RVA: 0x001BC5E0 File Offset: 0x001BA7E0
[Token(Token = "0x600824D")]
[Address(RVA = "0x21CC560", Offset = "0x21CAF60", VA = "0x1821CC560")]
internal bool RabinMillerTest(int certainty, Random random, bool randomlySelected)
{
int num3;
int lowestSetBitMaskFirst;
BigInteger bigInteger;
BigInteger bigInteger2;
BigInteger bigInteger3;
BigInteger bigInteger4;
do
{
int num = 0;
int bitLength = this.BitLength;
int num2 = certainty - 1;
num2 -= num;
num3 = num2 + 1;
if (randomlySelected)
{
num3 += -50;
uint num4;
num3 += (int)num4;
num3 = Math.Min((int)num4, num3);
}
lowestSetBitMaskFirst = this.GetLowestSetBitMaskFirst(-2);
bigInteger = this.ShiftRight(lowestSetBitMaskFirst);
int[] array = this.magnitude;
BigInteger one = BigInteger.One;
int length = array.Length;
bigInteger2 = one.ShiftLeft(length).Remainder(this);
bigInteger3 = this.Subtract(bigInteger2);
if (this.nBitLength == -1)
{
int num5 = this.sign;
if (num5 == 0)
{
}
int[] array2 = this.magnitude;
int num6 = 0;
num5 = BigInteger.CalcBitLength(num5, num6, array2);
this.nBitLength = num5;
}
while (bigInteger4.sign == 0)
{
}
int num7 = bigInteger4.CompareTo(this);
}
while (bigInteger4.IsEqualMagnitude(bigInteger2) || bigInteger4.IsEqualMagnitude(bigInteger3));
int num8 = 0;
BigInteger bigInteger5 = BigInteger.ModPowMonty(bigInteger4, bigInteger, this, num8 != 0);
if (bigInteger5 == 0)
{
if (1 != lowestSetBitMaskFirst)
{
int num9 = 0;
BigInteger two = BigInteger.Two;
BigInteger bigInteger6 = BigInteger.ModPowMonty(bigInteger5, two, this, num9 != 0);
}
}
num3--;
throw new NullReferenceException();
}
// Token: 0x17001528 RID: 5416
// (get) Token: 0x0600824E RID: 33358 RVA: 0x001BC708 File Offset: 0x001BA908
[Token(Token = "0x17001528")]
public long LongValue
{
[Token(Token = "0x600824E")]
[Address(RVA = "0x21D39F0", Offset = "0x21D23F0", VA = "0x1821D39F0")]
get
{
if (this.sign != 0)
{
int length = this.magnitude.Length;
int num = length - 1;
if (length > 1)
{
}
}
throw new IndexOutOfRangeException();
}
}
// Token: 0x0600824F RID: 33359 RVA: 0x001BC73C File Offset: 0x001BA93C
[Token(Token = "0x600824F")]
[Address(RVA = "0x21C9860", Offset = "0x21C8260", VA = "0x1821C9860")]
public BigInteger Max(BigInteger value)
{
int num = this.CompareTo(value);
return this;
}
// Token: 0x06008250 RID: 33360 RVA: 0x001BC754 File Offset: 0x001BA954
[Token(Token = "0x6008250")]
[Address(RVA = "0x21C9890", Offset = "0x21C8290", VA = "0x1821C9890")]
public BigInteger Min(BigInteger value)
{
int num = this.CompareTo(value);
return this;
}
// Token: 0x06008251 RID: 33361 RVA: 0x001BC76C File Offset: 0x001BA96C
[Token(Token = "0x6008251")]
[Address(RVA = "0x21CAFD0", Offset = "0x21C99D0", VA = "0x1821CAFD0")]
public BigInteger Mod(BigInteger m)
{
BigInteger bigInteger = this.Remainder(m);
if (bigInteger.sign < 0)
{
BigInteger bigInteger2 = bigInteger.Add(m);
}
return bigInteger;
}
// Token: 0x06008252 RID: 33362 RVA: 0x001BC79C File Offset: 0x001BA99C
[Token(Token = "0x6008252")]
[Address(RVA = "0x21C9C50", Offset = "0x21C8650", VA = "0x1821C9C50")]
public BigInteger ModInverse(BigInteger m)
{
/*
An exception occurred when decompiling this method (06008252)
ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::ModInverse(BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_73:
stloc:BigInteger(var_8_7A, call:BigInteger(BigInteger::ModInversePow2, ldloc:BigInteger(this), ldloc:BigInteger(m)))
stloc:ArithmeticException(var_9_86, newobj:ArithmeticException(ArithmeticException::.ctor, ldstr:string("Modulus must be positive")))
stloc:ArithmeticException(var_10_92, newobj:ArithmeticException(ArithmeticException::.ctor, ldstr:string("Numbers not relatively prime.")))
}
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.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: 0x06008253 RID: 33363 RVA: 0x001BC83C File Offset: 0x001BAA3C
[Token(Token = "0x6008253")]
[Address(RVA = "0x21C9970", Offset = "0x21C8370", VA = "0x1821C9970")]
private BigInteger ModInversePow2(BigInteger m)
{
/*
An exception occurred when decompiling this method (06008253)
ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::ModInversePow2(BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_111:
stloc:ArithmeticException(var_23_11B, newobj:ArithmeticException(ArithmeticException::.ctor, ldstr:string("Numbers not relatively prime.")))
}
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.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: 0x06008254 RID: 33364 RVA: 0x001BC968 File Offset: 0x001BAB68
[Token(Token = "0x6008254")]
[Address(RVA = "0x21C98C0", Offset = "0x21C82C0", VA = "0x1821C98C0")]
private static int ModInverse32(int d)
{
/*
An exception occurred when decompiling this method (06008254)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::ModInverse32(System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
Block_0:
stloc:uint32(var_1_03, mul:uint32(ldloc:uint32(var_0), ldloc:int32[exp:uint32](d)))
stloc:uint32(var_0, sub:uint32(ldloc:uint32(var_0), ldloc:uint32(var_1_03)))
stloc:uint32(var_2_0B, mul:uint32(ldloc:uint32(var_0), ldloc:int32[exp:uint32](d)))
stloc:uint32(var_0, sub:uint32(ldloc:uint32(var_0), ldloc:uint32(var_2_0B)))
}
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.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: 0x06008255 RID: 33365 RVA: 0x001BC984 File Offset: 0x001BAB84
[Token(Token = "0x6008255")]
[Address(RVA = "0x21C9910", Offset = "0x21C8310", VA = "0x1821C9910")]
private static long ModInverse64(long d)
{
/*
An exception occurred when decompiling this method (06008255)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int64 BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::ModInverse64(System.Int64)
---> System.Exception: Basic block has to end with unconditional control flow.
{
Block_0:
stloc:uint32(var_1_03, mul:int64[exp:uint32](ldloc:uint32[exp:int64](var_0), ldloc:int64(d)))
stloc:uint32(var_0, sub:uint32(ldloc:uint32(var_0), ldloc:uint32(var_1_03)))
}
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.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: 0x06008256 RID: 33366 RVA: 0x001BC998 File Offset: 0x001BAB98
[Token(Token = "0x6008256")]
[Address(RVA = "0x21C86F0", Offset = "0x21C70F0", VA = "0x1821C86F0")]
private static BigInteger ExtEuclid(BigInteger a, BigInteger b, out BigInteger u1Out)
{
BigInteger one = BigInteger.One;
BigInteger zero = BigInteger.Zero;
if (b.sign > 0)
{
BigInteger[] array = a.DivideAndRemainder(b);
int length = array.Length;
if (array[1].sign > 0)
{
BigInteger bigInteger = array[0];
BigInteger bigInteger2 = zero.Multiply(bigInteger);
BigInteger bigInteger3 = one.Subtract(bigInteger2);
}
}
return a;
}
// Token: 0x06008257 RID: 33367 RVA: 0x001BC9FC File Offset: 0x001BABFC
[Token(Token = "0x6008257")]
[Address(RVA = "0x21D00E0", Offset = "0x21CEAE0", VA = "0x1821D00E0")]
private static void ZeroOut(int[] x)
{
int length = x.Length;
int num = 0;
Array.Clear(x, num, length);
}
// Token: 0x06008258 RID: 33368 RVA: 0x001BCA20 File Offset: 0x001BAC20
[Token(Token = "0x6008258")]
[Address(RVA = "0x21CAD20", Offset = "0x21C9720", VA = "0x1821CAD20")]
public BigInteger ModPow(BigInteger e, BigInteger m)
{
int num;
BigInteger bigInteger4;
do
{
num = e.sign;
if (num == 0 || this.sign == 0)
{
goto IL_61;
}
if (num != 0)
{
BigInteger bigInteger = e.Negate();
}
BigInteger bigInteger2 = this.Mod(m);
int num2 = m.magnitude.Length - 1;
if ("{il2cpp array field local10->}" != (ulong)1L)
{
BigInteger bigInteger3 = BigInteger.ModPowMonty(bigInteger2, e, m, true);
}
bigInteger4 = BigInteger.ModPowBarrett(bigInteger2, e, m);
}
while (num == 0);
return bigInteger4.ModInverse(m);
IL_61:
throw new NullReferenceException();
}
// Token: 0x06008259 RID: 33369 RVA: 0x001BCA94 File Offset: 0x001BAC94
[Token(Token = "0x6008259")]
[Address(RVA = "0x21C9EE0", Offset = "0x21C88E0", VA = "0x1821C9EE0")]
private static BigInteger ModPowBarrett(BigInteger b, BigInteger e, BigInteger m)
{
int num = m.magnitude.Length;
BigInteger one = BigInteger.One;
int num2 = num + 1;
BigInteger bigInteger = one.ShiftLeft(num2);
BigInteger one2 = BigInteger.One;
num2 = num;
BigInteger bigInteger2 = one2.ShiftLeft(num2).Divide(m);
int num3 = 0;
num = e.BitLength;
int[] expWindowThresholds = BigInteger.ExpWindowThresholds;
if (num > "{il2cpp array field local17->}")
{
num3++;
}
BigInteger[] array = new BigInteger[1];
if (b != 0)
{
}
array[0] = b;
BigInteger bigInteger3 = BigInteger.ReduceBarrett(b.Square(), m, bigInteger, bigInteger2);
uint num4;
if (num4 > num4)
{
uint num5 = num4 - 1U;
BigInteger bigInteger4 = array[(int)num5].Multiply(bigInteger3);
throw new ArrayTypeMismatchException();
}
int[] array2;
int num6 = array2[0];
BigInteger bigInteger5;
if (num6 != (int)num4)
{
bigInteger5 = array[num6];
}
int num7 = array2[(int)num4];
if (num7 != -1)
{
byte[] bitLengthTable = BigInteger.BitLengthTable;
int num8 = 0;
byte b2 = (byte)((int)b2 + num6);
BigInteger bigInteger6 = bigInteger5.Square();
num8++;
BigInteger bigInteger7 = array[num7];
BigInteger bigInteger9;
BigInteger bigInteger8 = bigInteger9.Multiply(bigInteger7);
ulong num9;
num9 += (ulong)1L;
}
int num10 = 0;
if (num7 > 0)
{
BigInteger bigInteger11;
BigInteger bigInteger10 = bigInteger11.Square();
num10++;
}
BigInteger bigInteger12;
return bigInteger12;
}
// Token: 0x0600825A RID: 33370 RVA: 0x001BCBDC File Offset: 0x001BADDC
[Token(Token = "0x600825A")]
[Address(RVA = "0x21CC900", Offset = "0x21CB300", VA = "0x1821CC900")]
private static BigInteger ReduceBarrett(BigInteger x, BigInteger m, BigInteger mr, BigInteger yu)
{
int num = x.BitLength;
int bitLength = m.BitLength;
num -= bitLength;
if (num > 1)
{
int num2 = m.magnitude.Length;
int num3 = num2 - 1;
BigInteger bigInteger = x.DivideWords(num3).Multiply(yu);
num2++;
BigInteger bigInteger2 = bigInteger.DivideWords(num2);
BigInteger bigInteger3 = x.RemainderWords(num2);
BigInteger bigInteger4 = bigInteger2.Multiply(m).RemainderWords(num2);
BigInteger bigInteger5 = bigInteger3.Subtract(bigInteger4);
if (bigInteger5.sign < 0)
{
BigInteger bigInteger6 = bigInteger5.Add(mr);
}
}
int num4 = x.CompareTo(m);
return x.Subtract(m);
}
// Token: 0x0600825B RID: 33371 RVA: 0x001BCC7C File Offset: 0x001BAE7C
[Token(Token = "0x600825B")]
[Address(RVA = "0x21CA4C0", Offset = "0x21C8EC0", VA = "0x1821CA4C0")]
private static BigInteger ModPowMonty(BigInteger b, BigInteger e, BigInteger m, bool convert)
{
int length = m.magnitude.Length;
int num = m.BitLength;
num += 2;
int num2 = m.mQuote;
uint num5;
if (num2 == 0)
{
int[] array = m.magnitude;
int num3 = array.Length - 1;
int num4 = array[num3];
array += num4;
int[] array2 = array * num4;
num5 -= array2;
int[] array3 = array * num5;
int[] array4 = array3 * num4;
num5 -= array4;
int[] array5 = array3 * num5;
int[] array6 = array5 * num4;
num5 -= array6;
uint num6 = num5 * array5;
m.mQuote = (int)num6;
}
BigInteger bigInteger;
if (convert)
{
bigInteger = b.ShiftLeft(length).Remainder(m);
}
int num7 = length + 1;
int[] array7 = new int[num7];
int[] array8;
if (bigInteger.magnitude.Length < length)
{
num7 = length;
array8 = new int[num7];
}
int num8 = 0;
int[] array9 = e.magnitude;
if (e.BitCount > (int)num5)
{
int bitLength = e.BitLength;
int[] expWindowThresholds = BigInteger.ExpWindowThresholds;
if (bitLength > "{il2cpp array field local36->}")
{
num8++;
}
}
int[][] array10 = new int[1][];
if (array8 != 0)
{
}
array10[0] = array8;
int[] array11 = Arrays.Clone(array8);
uint num9;
uint num10;
if (num9 > num10)
{
uint num11 = num10 - 1U;
int[] array12 = Arrays.Clone(array10[(int)num11]);
throw new ArrayTypeMismatchException();
}
int[] windowList = BigInteger.GetWindowList(e.magnitude, num8);
int num12 = windowList[0];
int[] array13;
if (num12 != 1)
{
array13 = Arrays.Clone(array10[num12]);
}
uint num14;
int num13 = windowList[(int)num14];
if (num13 != -1)
{
num2 = num13;
byte[] bitLengthTable = BigInteger.BitLengthTable;
byte b2 = (byte)((int)b2 + num12);
num14 = num5;
num5 += (uint)1;
}
if (num13 > 0)
{
}
int[] array14 = m.magnitude;
int num15 = 0;
int num16 = BigInteger.CompareTo(0, array13, num15, array14);
int[] array15 = m.magnitude;
int num17 = 0;
int[] array16 = BigInteger.Subtract(0, array13, num17, array15);
int[] array17 = m.magnitude;
BigInteger.MontgomeryReduce(array13, array17, (uint)num2);
uint num18;
ulong num19;
return new BigInteger((int)num18, array13, num19 != 0UL);
}
// Token: 0x0600825C RID: 33372 RVA: 0x001BCE84 File Offset: 0x001BB084
[Token(Token = "0x600825C")]
[Address(RVA = "0x21C8E10", Offset = "0x21C7810", VA = "0x1821C8E10")]
private static int[] GetWindowList(int[] mag, int extraBits)
{
int num = mag[0];
int num2 = 0;
int num3 = BigInteger.BitLen(num);
int num4 = mag.Length;
num4 += num3;
int[] array = new int[num2];
uint num5;
num5 -= (uint)num3;
int num6 = 0;
int num7 = 0;
int num8 = 0;
uint num9;
if (num5 < (uint)32)
{
num7++;
num += num;
num5 += (uint)1;
num6++;
if (num9 == (uint)1)
{
num7++;
while (num9 == (uint)1)
{
}
}
num += num;
array[0] = num7;
num5 += (uint)1;
num += num;
num5 += (uint)1;
}
num8++;
if (num8 != mag.Length)
{
}
if (num9 == (uint)1)
{
num7++;
while (num9 == (uint)1)
{
}
}
array[0] = num7;
num6++;
array[0] = (int)((ulong)4294967295L);
return array;
}
// Token: 0x0600825D RID: 33373 RVA: 0x001BCF60 File Offset: 0x001BB160
[Token(Token = "0x600825D")]
[Address(RVA = "0x21C7620", Offset = "0x21C6020", VA = "0x1821C7620")]
private static int CreateWindowEntry(int mult, int zeroes)
{
if (mult == 1)
{
while (mult == 1)
{
}
}
return zeroes;
}
// Token: 0x0600825E RID: 33374 RVA: 0x001BCF78 File Offset: 0x001BB178
[Token(Token = "0x600825E")]
[Address(RVA = "0x21CE5A0", Offset = "0x21CCFA0", VA = "0x1821CE5A0")]
private static int[] Square(int[] w, int[] x)
{
int num = w.Length;
int num2 = x.Length;
int num3 = num2 - 1;
if (num3 > 0)
{
num2 = num3;
int num4 = num3 - 1;
int num5 = x[num2];
int num6 = w[num];
int num7 = num5 * num5;
num7 += num6;
w[0] = num7;
num = num7;
num6 = num4;
int num8 = x[num6] * num5;
num7 += num6;
num7 += num;
num7 += num8;
num8 = num7;
int num9 = num - 1;
num6 += num8;
if (num9 > 0)
{
w[0] = num6;
}
int num10 = num3 - 1;
num10 += num9;
}
int num11 = x[0];
int num12 = w[num];
int num13 = num11 * num11;
num13 += num12;
w[0] = num13;
if (num > 0)
{
int num14 = num - 1;
}
return w;
}
// Token: 0x0600825F RID: 33375 RVA: 0x001BD05C File Offset: 0x001BB25C
[Token(Token = "0x600825F")]
[Address(RVA = "0x21CB840", Offset = "0x21CA240", VA = "0x1821CB840")]
private static int[] Multiply(int[] x, int[] y, int[] z)
{
int num = z.Length;
int length = x.Length;
num--;
int num2 = z[num];
int num3 = 0;
if (num2 != 0)
{
int length2 = y.Length;
int num4 = y[length2];
int num5 = x[z];
num3 += num5;
int num6 = num4 * num2;
num3 += num6;
x[0] = num3;
}
x[0] = num3;
return x;
}
// Token: 0x06008260 RID: 33376 RVA: 0x001BD0D0 File Offset: 0x001BB2D0
[Token(Token = "0x6008260")]
[Address(RVA = "0x21C8D30", Offset = "0x21C7730", VA = "0x1821C8D30")]
private int GetMQuote()
{
int num = this.mQuote;
if (num == 0)
{
int[] array = this.magnitude;
int num2 = array.Length - 1;
int num3 = array[num2];
uint num4;
num4 -= typeof(BigInteger).TypeHandle;
num4 -= typeof(BigInteger).TypeHandle;
uint num5 = num4 * (uint)num3;
num4 -= num5;
this.mQuote = (int)num4;
}
return num;
}
// Token: 0x06008261 RID: 33377 RVA: 0x001BD130 File Offset: 0x001BB330
[Token(Token = "0x6008261")]
[Address(RVA = "0x21CB070", Offset = "0x21C9A70", VA = "0x1821CB070")]
private static void MontgomeryReduce(int[] x, int[] m, uint mDash)
{
int length = m.Length;
int num = length - 1;
int num2 = length - 1;
int num3 = x[num2];
int num4 = num3 * (int)mDash;
int num5 = m[num2] * num4;
num5 += num3;
int length2 = x.Length;
int num6;
num5 += num6;
int num8;
int num7 = num8 * num4;
num5 += num7;
x[0] = num5;
x[0] = num5;
int num9 = 0;
int num10 = BigInteger.CompareTo(0, x, num9, m);
int num11 = 0;
int[] array = BigInteger.Subtract(0, x, num11, m);
}
// Token: 0x06008262 RID: 33378 RVA: 0x001BD1C4 File Offset: 0x001BB3C4
[Token(Token = "0x6008262")]
[Address(RVA = "0x21CB2A0", Offset = "0x21C9CA0", VA = "0x1821CB2A0")]
private static void MultiplyMonty(int[] a, int[] x, int[] y, int[] m, uint mDash, bool smallMontyModulus)
{
int num = m.Length;
if (num != 1)
{
int num2 = num - 1;
int num3 = y[num2];
int num5;
int num4 = num3 * num5;
int num7;
int num6 = num7 * num4;
num6 += num4;
num6 += num6;
int num8 = m[num4];
int num9 = y[num4];
int num10 = num8 * num4;
num = num10;
num += num6;
num += num2;
num6 += num10;
a[0] = num;
num6 += num;
a[0] = num6;
int num11 = a[num];
int num13;
int num12 = num3 * num13;
num11 += num12;
int num14 = num - 1;
num = num11;
int num15 = m[num14] * num;
num14 = num15;
num14 += num11;
num14 += num15;
num14 += num12;
int length = a.Length;
int num16 = a[num15];
int num18;
int num17 = num18 * num13;
num15 = num17;
num16 += num15;
num += num14;
num += num16;
a[0] = num;
num14 += num;
num14 += num17;
num15 = num6;
num14 += num15;
a[0] = num14;
num6 = num14;
a[0] = num6;
int num19 = 0;
int num20 = BigInteger.CompareTo(0, a, num19, m);
int num21 = 0;
int[] array = BigInteger.Subtract(0, a, num21, m);
int num22 = 0;
Array.Copy(a, 1, x, num22, num);
return;
}
int length2 = x.Length;
int num23 = x[0];
int num24 = y[0];
int num25 = m[0];
int length3 = x.Length;
int num26 = num24 * num23;
int num27 = num26 * num25;
num26 += num27;
num26 += num27;
num27 = num26;
num27 -= num25;
if (num26 <= num25)
{
num27 = num26;
}
x[0] = num27;
throw new NullReferenceException();
}
// Token: 0x06008263 RID: 33379 RVA: 0x001BD38C File Offset: 0x001BB58C
[Token(Token = "0x6008263")]
[Address(RVA = "0x21CDF90", Offset = "0x21CC990", VA = "0x1821CDF90")]
private static void SquareMonty(int[] a, int[] x, int[] m, uint mDash, bool smallMontyModulus)
{
int num = m.Length;
if (num != 1)
{
int num2 = num - 1;
int num3 = x[num2];
int num4 = num3 * num3;
int num5 = num4 * (int)mDash;
int num6 = m[num2] * num5;
num6 += num4;
num6 += num6;
int num7 = x[(int)mDash] * num3;
int num8 = m[(int)mDash] * num5;
num8 += num6;
num8 += num2;
num6 = num7;
num6 += num8;
a[0] = num8;
num6 += num8;
num8 = num;
a[0] = num6;
int num9 = a[num8];
int num10 = num8 - 1;
num = num9;
int num11 = num * (int)mDash;
int num12 = m[num10] * num11;
num12 += num9;
int num13;
if (num7 > num7)
{
int length = a.Length;
num10 = num7;
num13 = num10 + 1;
int num14 = m[num10];
int num15 = a[num13];
num12 += num15;
int num16 = num14 * num11;
num12 += num16;
a[0] = num12;
}
num13 = num7;
int num17 = x[num13];
num7 = num17;
int num18 = num7 * num17;
int length2 = a.Length;
int num19 = num13 + 1;
int num20 = a[num19];
int num21 = m[num13];
num13 += 2;
int num22 = num21 * num11;
num19 = num18;
num20 += num19;
num19 = num22;
num12 += num19;
num12 += num20;
int num23 = num7 - 1;
a[0] = num12;
num22 += num18;
num13 = num23;
num22 += num12;
num7 = num13;
int num24 = x[num7] * num17;
int length3 = a.Length;
int num25 = num7 + 1;
int num26 = m[num7];
int num27 = a[num25];
num7 += 2;
num27 += num23;
num23 += num22;
num23 += num27;
num22 += num24;
a[0] = num23;
num22 += num23;
num25 = num6;
num22 += num25;
a[0] = num22;
num6 = num22;
a[0] = num6;
int num28 = 0;
int num29 = BigInteger.CompareTo(0, a, num28, m);
int num30 = 0;
int[] array = BigInteger.Subtract(0, a, num30, m);
int num31 = 0;
Array.Copy(a, 1, x, num31, num);
return;
}
int length4 = x.Length;
int num32 = x[0];
int num33 = m[0];
int length5 = x.Length;
int num34 = num32 * num32;
int num35 = num34 * (int)mDash * num33;
num34 += num35;
num34 += num35;
num35 = num34;
num35 -= num33;
if (num34 <= num33)
{
num35 = num34;
}
x[0] = num35;
throw new NullReferenceException();
}
// Token: 0x06008264 RID: 33380 RVA: 0x001BD63C File Offset: 0x001BB83C
[Token(Token = "0x6008264")]
[Address(RVA = "0x21CB260", Offset = "0x21C9C60", VA = "0x1821CB260")]
private static uint MultiplyMontyNIsOne(uint x, uint y, uint m, uint mDash)
{
uint num = x * y;
uint num2 = x * mDash * m;
return y;
}
// Token: 0x06008265 RID: 33381 RVA: 0x001BD654 File Offset: 0x001BB854
[Token(Token = "0x6008265")]
[Address(RVA = "0x21CB9A0", Offset = "0x21CA3A0", VA = "0x1821CB9A0")]
public BigInteger Multiply(BigInteger val)
{
if (val != this)
{
int num = val.sign;
int num2 = this.sign;
if (num2 != num)
{
if (num > 0 && val.nBits == 1)
{
int num3 = val.Abs().BitLength - 1;
BigInteger bigInteger = this.ShiftLeft(num3);
}
if (num2 > 0 && this.nBits == 1)
{
int num4 = this.Abs().BitLength - 1;
return val.ShiftLeft(num4).Negate();
}
int[] array = this.magnitude;
int[] array2 = new int[val.magnitude.Length];
int[] array3 = this.magnitude;
int[] array4 = val.magnitude;
int num5 = array4.Length;
int length = array2.Length;
int num6 = num5 - 1;
num5 = num6;
int num7 = array4[num5];
int num8 = 0;
int length2;
int num10;
if (num7 != 0)
{
length2 = array3.Length;
num6 = length2;
int num9 = array3[num6];
num8 += num10;
int num11 = num9 * num7;
num8 += num11;
array2[0] = num8;
}
num10 = length;
array2[0] = num8;
ulong num12;
BigInteger bigInteger2 = new BigInteger(length2, array2, num12 != 0UL);
}
}
return this.Square();
}
// Token: 0x06008266 RID: 33382 RVA: 0x001BD784 File Offset: 0x001BB984
[Token(Token = "0x6008266")]
[Address(RVA = "0x21CE7D0", Offset = "0x21CD1D0", VA = "0x1821CE7D0")]
public BigInteger Square()
{
int num = this.sign;
if (num == 0)
{
return BigInteger.Zero;
}
if (num > 0 && this.nBits == 1)
{
int num2 = this.Abs().BitLength - 1;
return this.ShiftLeft(num2);
}
int length = this.magnitude.Length;
int[] array = this.magnitude;
int[] array3;
int[] array2 = BigInteger.Square(array3, array);
BigInteger bigInteger;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.sign = (int)((ulong)1L);
bigInteger.magnitude = array3;
return bigInteger;
}
// Token: 0x06008267 RID: 33383 RVA: 0x001BD808 File Offset: 0x001BBA08
[Token(Token = "0x6008267")]
[Address(RVA = "0x21CBCA0", Offset = "0x21CA6A0", VA = "0x1821CBCA0")]
public BigInteger Negate()
{
int num = this.sign;
if (num != 0)
{
int[] array = this.magnitude;
BigInteger bigInteger;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.magnitude = array;
bigInteger.sign = num;
}
return this;
}
// Token: 0x06008268 RID: 33384 RVA: 0x001BD840 File Offset: 0x001BBA40
[Token(Token = "0x6008268")]
[Address(RVA = "0x21CBD30", Offset = "0x21CA730", VA = "0x1821CBD30")]
public BigInteger NextProbablePrime()
{
BigInteger two = BigInteger.Two;
int num = this.CompareTo(two);
BigInteger bigInteger = this.Inc();
int num2 = 0;
BigInteger bigInteger2 = bigInteger.SetBit(num2);
SecureRandom randomSource = BigInteger.RandomSource;
int num3 = 0;
if (!bigInteger2.CheckProbablePrime(100, randomSource, num3 != 0))
{
BigInteger two2 = BigInteger.Two;
BigInteger bigInteger3 = bigInteger2.Add(two2);
}
return bigInteger2;
}
// Token: 0x06008269 RID: 33385 RVA: 0x001BD8B0 File Offset: 0x001BBAB0
[Token(Token = "0x6008269")]
[Address(RVA = "0x21CBEF0", Offset = "0x21CA8F0", VA = "0x1821CBEF0")]
public BigInteger Not()
{
return this.Inc().Negate();
}
// Token: 0x0600826A RID: 33386 RVA: 0x001BD8D0 File Offset: 0x001BBAD0
[Token(Token = "0x600826A")]
[Address(RVA = "0x21CC2B0", Offset = "0x21CACB0", VA = "0x1821CC2B0")]
public BigInteger Pow(int exp)
{
if (exp <= 0)
{
return BigInteger.One;
}
int num = this.sign;
if (num == 0)
{
return this;
}
if (num > 0 && this.nBits == 1)
{
int num2 = this.BitLength * exp;
return BigInteger.One.ShiftLeft(num2);
}
BigInteger one = BigInteger.One;
BigInteger bigInteger;
if (exp != 1)
{
bigInteger = one.Multiply(this);
}
if (one != 0)
{
BigInteger bigInteger2 = this.Multiply(this);
}
return bigInteger;
}
// Token: 0x0600826B RID: 33387 RVA: 0x001BD944 File Offset: 0x001BBB44
[Token(Token = "0x600826B")]
[Address(RVA = "0x21CC4B0", Offset = "0x21CAEB0", VA = "0x1821CC4B0")]
public static BigInteger ProbablePrime(int bitLength, Random random)
{
return new BigInteger(bitLength, 100, random);
}
// Token: 0x0600826C RID: 33388 RVA: 0x001BD95C File Offset: 0x001BBB5C
[Token(Token = "0x600826C")]
[Address(RVA = "0x21CCB90", Offset = "0x21CB590", VA = "0x1821CCB90")]
private int Remainder(int m)
{
int[] array = this.magnitude;
int num = 0;
int length = array.Length;
if (num < length)
{
num++;
}
return num;
}
// Token: 0x0600826D RID: 33389 RVA: 0x001BD988 File Offset: 0x001BBB88
[Token(Token = "0x600826D")]
[Address(RVA = "0x21CCEB0", Offset = "0x21CB8B0", VA = "0x1821CCEB0")]
private static int[] Remainder(int[] x, int[] y)
{
int num = 0;
int num2 = 0;
int length = x.Length;
if (num2 < length && "{il2cpp array field x->}" == (ulong)0L)
{
num++;
}
int num3 = 0;
int num4 = 0;
int length2 = y.Length;
if (num4 < length2 && "{il2cpp array field y->}" == (ulong)0L)
{
num3++;
}
if (BigInteger.CompareNoLeadingZeroes(num, x, num3, y) > 0)
{
int num5 = y.Length;
if (num3 < num5)
{
if (y[num3] == 0)
{
num3++;
}
num5 -= num3;
}
int num6 = 0;
ulong num7;
if (num7 == (ulong)0L)
{
}
int num8 = x.Length;
if (num < num8)
{
int num9 = x[num];
if (num9 == 0)
{
num++;
}
num8 -= num;
int num10 = BigInteger.BitLen(num9);
}
int num11 = 0;
int num12 = 0;
num11 -= num6;
num11 -= num3;
int[] array = new int[num11];
int num13 = x.Length;
int[] array2;
int length3 = array2.Length;
num13 -= length3;
num13 -= num;
num13 += num12;
if (array2 == 0 && num < num13)
{
num++;
num12++;
int num14 = array2[num12];
while ("{il2cpp array field x->}" == num14)
{
}
if ("{il2cpp array field x->}" < num14)
{
}
}
int[] array3 = BigInteger.Subtract(num, x, num12, array2);
int length4 = x.Length;
int num15 = x[num];
if (num15 == 0)
{
while (1 != length4)
{
}
}
int num16 = BigInteger.BitLen(num15);
int num17 = x.Length;
num17--;
num17 += num16;
int num18 = x.Length;
num18 -= num15;
num18--;
num18 += num3;
if (1 >= num18)
{
uint num19;
while (num19 == (uint)0)
{
}
int num20;
if (num20 > "{il2cpp array field x->}")
{
}
while ("{il2cpp array field local25->}" != (ulong)0L)
{
}
throw new NullReferenceException();
}
num3++;
}
uint num21;
if (num21 == (uint)0)
{
int num22 = x.Length;
num22--;
Array.Clear(x, 1, num22);
}
return x;
}
// Token: 0x0600826E RID: 33390 RVA: 0x001BDB64 File Offset: 0x001BBD64
[Token(Token = "0x600826E")]
[Address(RVA = "0x21CCC00", Offset = "0x21CB600", VA = "0x1821CCC00")]
public BigInteger Remainder(BigInteger n)
{
/*
An exception occurred when decompiling this method (0600826E)
ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::Remainder(BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_E1:
stloc:ArithmeticException(var_16_EB, newobj:ArithmeticException(ArithmeticException::.ctor, ldstr:string("Division by zero error")))
}
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: 0x0600826F RID: 33391 RVA: 0x001BDC60 File Offset: 0x001BBE60
[Token(Token = "0x600826F")]
[Address(RVA = "0x21C9570", Offset = "0x21C7F70", VA = "0x1821C9570")]
private int[] LastNBits(int n)
{
int num = this.magnitude.Length;
int num2;
num = num2;
int[] array = new int[num];
int[] array2 = this.magnitude;
int num3 = array2.Length;
int num4 = 0;
num3 -= num2;
Array.Copy(array2, num3, array, num4, num2);
num2 -= n;
if (num2 > 0)
{
}
return array;
}
// Token: 0x06008270 RID: 33392 RVA: 0x001BDCBC File Offset: 0x001BBEBC
[Token(Token = "0x6008270")]
[Address(RVA = "0x21C7AB0", Offset = "0x21C64B0", VA = "0x1821C7AB0")]
private BigInteger DivideWords(int w)
{
int num = this.magnitude.Length;
if (w < num)
{
num -= w;
int[] array = new int[w];
int[] array2 = this.magnitude;
int num2 = 0;
int num3 = 0;
Array.Copy(array2, num3, array, num2, num);
int num4 = this.sign;
BigInteger bigInteger;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.sign = num4;
bigInteger.magnitude = array;
return bigInteger;
}
return BigInteger.Zero;
}
// Token: 0x06008271 RID: 33393 RVA: 0x001BDD2C File Offset: 0x001BBF2C
[Token(Token = "0x6008271")]
[Address(RVA = "0x21CCA90", Offset = "0x21CB490", VA = "0x1821CCA90")]
private BigInteger RemainderWords(int w)
{
int num = this.magnitude.Length;
if (w < num)
{
int[] array = new int[w];
int[] array2 = this.magnitude;
num -= w;
int num2 = 0;
Array.Copy(array2, w, array, num2, w);
int num3 = this.sign;
BigInteger bigInteger;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.sign = num3;
bigInteger.magnitude = array;
return bigInteger;
}
return this;
}
// Token: 0x06008272 RID: 33394 RVA: 0x001BDD98 File Offset: 0x001BBF98
[Token(Token = "0x6008272")]
[Address(RVA = "0x21CD6B0", Offset = "0x21CC0B0", VA = "0x1821CD6B0")]
private static int[] ShiftLeft(int[] mag, int n)
{
int length = mag.Length;
if (n != 0)
{
int num = 0;
int num2 = mag[0];
if (num2 == 0)
{
int[] array = new int[n];
}
int[] array2 = new int[n];
array2[0] = num2;
int length2 = mag.Length;
if (length - 1 > 0)
{
num++;
num++;
array2[0] = n;
int length3 = mag.Length;
}
int num3 = length - 1;
int num4 = mag[num3];
array2[0] = num4;
}
return new int[n];
}
// Token: 0x06008273 RID: 33395 RVA: 0x001BDE2C File Offset: 0x001BC02C
[Token(Token = "0x6008273")]
[Address(RVA = "0x21CD650", Offset = "0x21CC050", VA = "0x1821CD650")]
private static int ShiftLeftOneInPlace(int[] x, int carry)
{
int length = x.Length;
x[0] = x;
return carry;
}
// Token: 0x06008274 RID: 33396 RVA: 0x001BDE54 File Offset: 0x001BC054
[Token(Token = "0x6008274")]
[Address(RVA = "0x21CD8D0", Offset = "0x21CC2D0", VA = "0x1821CD8D0")]
public BigInteger ShiftLeft(int n)
{
if (this.sign != 0)
{
int[] array = this.magnitude;
if (array.Length != 0 && n != 0)
{
int[] array2 = BigInteger.ShiftLeft(array, n);
ulong num;
BigInteger bigInteger = new BigInteger(n, array2, num != 0UL);
if (this.nBits != -1)
{
bigInteger.nBits = bigInteger;
}
int num2 = this.nBitLength;
if (num2 != -1)
{
num2 += n;
bigInteger.nBitLength = num2;
}
BigInteger bigInteger2 = this.ShiftRight(n);
}
}
return BigInteger.Zero;
}
// Token: 0x06008275 RID: 33397 RVA: 0x001BDED0 File Offset: 0x001BC0D0
[Token(Token = "0x6008275")]
[Address(RVA = "0x21CDA40", Offset = "0x21CC440", VA = "0x1821CDA40")]
private static void ShiftRightInPlace(int start, int[] mag, int n)
{
int i = mag.Length;
if (n != start)
{
int length = mag.Length;
int num = mag[start];
mag[0] = num;
while (i >= n)
{
}
int j = n - 1;
int num2 = 0;
mag[0] = num2;
while (j >= start)
{
}
}
if (n != 0)
{
int length2 = mag.Length;
int num = i;
int num3 = mag[num];
if (i > n)
{
int length3 = mag.Length;
int num4 = start - 1;
mag[0] = num3;
}
int num5 = mag[n];
mag[0] = num5;
}
}
// Token: 0x06008276 RID: 33398 RVA: 0x001BDF70 File Offset: 0x001BC170
[Token(Token = "0x6008276")]
[Address(RVA = "0x21CDBF0", Offset = "0x21CC5F0", VA = "0x1821CDBF0")]
private static void ShiftRightOneInPlace(int start, int[] mag)
{
int num = mag.Length;
int num2 = num - 1;
int num3 = mag[num2];
if (num2 > start)
{
int length = mag.Length;
num = num2;
int num4 = num - 1;
mag[0] = num3;
}
int num5 = mag[start];
mag[0] = num5;
}
// Token: 0x06008277 RID: 33399 RVA: 0x001BDFC4 File Offset: 0x001BC1C4
[Token(Token = "0x6008277")]
[Address(RVA = "0x21CDCC0", Offset = "0x21CC6C0", VA = "0x1821CDCC0")]
public BigInteger ShiftRight(int n)
{
while (n != 0)
{
int bitLength = this.BitLength;
if (n < bitLength)
{
int bitLength2 = this.BitLength;
uint num;
num -= (uint)n;
num += (uint)bitLength2;
int[] array = new int[31];
if (n != bitLength)
{
int num2 = this.magnitude.Length;
uint num3 = num - 1U;
num2 -= n;
int num4 = this.magnitude[num2];
array[0] = num4;
int[] array2 = this.magnitude;
int num5 = array2[n];
array[0] = num5;
}
int length = array.Length;
int num6 = 0;
int[] array3 = this.magnitude;
int num7 = 0;
Array.Copy(array3, num7, array, num6, length);
int num8 = this.sign;
BigInteger bigInteger;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.sign = num8;
bigInteger.magnitude = array;
return bigInteger;
}
if (this.sign < 0)
{
return BigInteger.One.Negate().ShiftLeft(n);
}
}
return this;
}
// Token: 0x17001529 RID: 5417
// (get) Token: 0x06008278 RID: 33400 RVA: 0x001BE0C4 File Offset: 0x001BC2C4
[Token(Token = "0x17001529")]
public int SignValue
{
[Token(Token = "0x6008278")]
[Address(RVA = "0x3EE8D0", Offset = "0x3ED2D0", VA = "0x1803EE8D0")]
get
{
return this.sign;
}
}
// Token: 0x06008279 RID: 33401 RVA: 0x001BE0D8 File Offset: 0x001BC2D8
[Token(Token = "0x6008279")]
[Address(RVA = "0x21CE950", Offset = "0x21CD350", VA = "0x1821CE950")]
private static int[] Subtract(int xStart, int[] x, int yStart, int[] y)
{
int length = x.Length;
int num = y.Length;
num--;
int num2 = y[num];
if (yStart != 0)
{
while (length == -1)
{
}
}
return x;
}
// Token: 0x0600827A RID: 33402 RVA: 0x001BE114 File Offset: 0x001BC314
[Token(Token = "0x600827A")]
[Address(RVA = "0x21CEA50", Offset = "0x21CD450", VA = "0x1821CEA50")]
public BigInteger Subtract(BigInteger n)
{
int num = n.sign;
if (num != 0)
{
int num2 = this.sign;
if (num2 != 0)
{
if (num2 == num)
{
int[] array = this.magnitude;
int[] array2 = n.magnitude;
int num3 = 0;
int num4 = BigInteger.CompareNoLeadingZeroes(0, array, num3, array2);
if (num4 != 0)
{
int num5 = this.sign;
int[] array3 = n.magnitude;
int[] array4 = this.magnitude;
int[] array5 = BigInteger.doSubBigLil(array3, array4);
int num6;
BigInteger bigInteger = new BigInteger(num6, array5, true);
num6 = num5 * num4;
return this;
}
}
BigInteger bigInteger3;
BigInteger bigInteger2 = this.Add(bigInteger3);
}
throw new NullReferenceException();
}
return this;
}
// Token: 0x0600827B RID: 33403 RVA: 0x001BE1A4 File Offset: 0x001BC3A4
[Token(Token = "0x600827B")]
[Address(RVA = "0x21D36D0", Offset = "0x21D20D0", VA = "0x1821D36D0")]
private static int[] doSubBigLil(int[] bigMag, int[] lilMag)
{
int[] array;
return array;
}
// Token: 0x0600827C RID: 33404 RVA: 0x001BE1BC File Offset: 0x001BC3BC
[Token(Token = "0x600827C")]
[Address(RVA = "0x21CED40", Offset = "0x21CD740", VA = "0x1821CED40")]
public byte[] ToByteArray()
{
int num = 0;
return this.ToByteArray(num != 0);
}
// Token: 0x0600827D RID: 33405 RVA: 0x001BE1D4 File Offset: 0x001BC3D4
[Token(Token = "0x600827D")]
[Address(RVA = "0x21CED30", Offset = "0x21CD730", VA = "0x1821CED30")]
public byte[] ToByteArrayUnsigned()
{
return this.ToByteArray(true);
}
// Token: 0x0600827E RID: 33406 RVA: 0x001BE1E8 File Offset: 0x001BC3E8
[Token(Token = "0x600827E")]
[Address(RVA = "0x21CED50", Offset = "0x21CD750", VA = "0x1821CED50")]
private byte[] ToByteArray(bool unsigned)
{
byte[] array2;
int num5;
int num6;
do
{
int num = this.sign;
if (num == 0)
{
goto IL_196;
}
if (unsigned && num > 0)
{
int bitLength = this.BitLength;
}
if (this.nBitLength == -1)
{
int num2 = this.sign;
if (num2 == 0)
{
}
int[] array = this.magnitude;
int num3 = 0;
int num4 = BigInteger.CalcBitLength(num2, num3, array);
this.nBitLength = num4;
}
array2 = new byte[unsigned ? 1 : 0];
num5 = this.magnitude.Length;
num6 = array2.Length;
}
while (num5 <= 1);
int num7 = this.magnitude[num5];
ulong num8;
int num9;
bool flag;
if (num8 != (ulong)0L)
{
num9 = num7 + 1;
num7 = num9;
flag = num9 == 0;
}
num9 = num6;
int num10 = num9 - 1;
array2[0] = (byte)num7;
num9 = num7;
array2[0] = (byte)num9;
num10 = num6;
num10 += -3;
num9 = num7;
num6 += -4;
array2[0] = (byte)num9;
int i = this.magnitude[0];
if (flag)
{
}
if (i > 255)
{
num6--;
while (i > 255)
{
}
}
num5 = num6;
int num11 = num5 - 1;
if (num6 - 1 > 0)
{
return array2;
}
return array2;
IL_196:
if (unsigned)
{
return BigInteger.ZeroEncoding;
}
throw new IndexOutOfRangeException();
}
// Token: 0x0600827F RID: 33407 RVA: 0x001BE39C File Offset: 0x001BC59C
[Token(Token = "0x600827F")]
[Address(RVA = "0x21CF240", Offset = "0x21CDC40", VA = "0x1821CF240", Slot = "3")]
public override string ToString()
{
return this.ToString(10);
}
// Token: 0x06008280 RID: 33408 RVA: 0x001BE3B4 File Offset: 0x001BC5B4
[Token(Token = "0x6008280")]
[Address(RVA = "0x21CF250", Offset = "0x21CDC50", VA = "0x1821CF250")]
public string ToString(int radix)
{
/*
An exception occurred when decompiling this method (06008280)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.String BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger::ToString(System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_14F:
stloc:FormatException(var_34_159, newobj:FormatException(FormatException::.ctor, ldstr:string("Only bases 2, 8, 10, 16 are allowed")))
}
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.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: 0x06008281 RID: 33409 RVA: 0x001BE51C File Offset: 0x001BC71C
[Token(Token = "0x6008281")]
[Address(RVA = "0x21CF9E0", Offset = "0x21CE3E0", VA = "0x1821CF9E0")]
private static void ToString(StringBuilder sb, int radix, IList moduli, int scale, BigInteger pos)
{
int num;
int num2;
do
{
num = 0;
num2 = scale - 1;
if (radix == 0)
{
}
}
while (radix == 0);
BigInteger[] array;
BigInteger bigInteger = array[0];
BigInteger.ToString(sb, radix, moduli, num2, bigInteger);
BigInteger bigInteger2 = array[1];
string text = Convert.ToString(bigInteger2.LongValue, radix);
int length = sb.Length;
if (sb.Length == 1)
{
int num3 = 0;
char c = sb[num3];
}
if (bigInteger2.sign != num)
{
StringBuilder stringBuilder = sb.Append(text);
}
}
// Token: 0x06008282 RID: 33410 RVA: 0x001BE5A4 File Offset: 0x001BC7A4
[Token(Token = "0x6008282")]
[Address(RVA = "0x21C6880", Offset = "0x21C5280", VA = "0x1821C6880")]
private static void AppendZeroExtendedString(StringBuilder sb, string s, int minLength)
{
int num = s.m_stringLength;
if (num < minLength)
{
num++;
}
StringBuilder stringBuilder = sb.Append(s);
}
// Token: 0x06008283 RID: 33411 RVA: 0x001BE5D0 File Offset: 0x001BC7D0
[Token(Token = "0x6008283")]
[Address(RVA = "0x21C7360", Offset = "0x21C5D60", VA = "0x1821C7360")]
private static BigInteger CreateUValueOf(ulong value)
{
if (value != (ulong)0L)
{
int[] array = new int[2];
array[0] = (int)value;
array[0] = (int)value;
BigInteger bigInteger;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.sign = (int)((ulong)1L);
bigInteger.magnitude = array;
return bigInteger;
}
if (value == (ulong)0L)
{
return BigInteger.Zero;
}
int[] array2 = new int[] { (int)value };
BigInteger bigInteger2;
bigInteger2.nBits = (int)((ulong)(-1L));
bigInteger2.sign = (int)((ulong)1L);
bigInteger2.magnitude = array2;
if (value == 0UL)
{
bigInteger2.nBits = (int)((ulong)1L);
}
return bigInteger2;
}
// Token: 0x06008284 RID: 33412 RVA: 0x001BE65C File Offset: 0x001BC85C
[Token(Token = "0x6008284")]
[Address(RVA = "0x21C7540", Offset = "0x21C5F40", VA = "0x1821C7540")]
private static BigInteger CreateValueOf(long value)
{
return BigInteger.CreateUValueOf((ulong)value);
}
// Token: 0x06008285 RID: 33413 RVA: 0x001BE688 File Offset: 0x001BC888
[Token(Token = "0x6008285")]
[Address(RVA = "0x21CFC50", Offset = "0x21CE650", VA = "0x1821CFC50")]
public static BigInteger ValueOf(long value)
{
int length = BigInteger.SMALL_CONSTANTS.Length;
if (value < (long)length)
{
return BigInteger.SMALL_CONSTANTS[(int)value];
}
return BigInteger.CreateValueOf(value);
}
// Token: 0x06008286 RID: 33414 RVA: 0x001BE6BC File Offset: 0x001BC8BC
[Token(Token = "0x6008286")]
[Address(RVA = "0x21C8D10", Offset = "0x21C7710", VA = "0x1821C8D10")]
public int GetLowestSetBit()
{
if (this.sign != 0)
{
return this.GetLowestSetBitMaskFirst(-1);
}
return -1;
}
// Token: 0x06008287 RID: 33415 RVA: 0x001BE6DC File Offset: 0x001BC8DC
[Token(Token = "0x6008287")]
[Address(RVA = "0x21C8C70", Offset = "0x21C7670", VA = "0x1821C8C70")]
private int GetLowestSetBitMaskFirst(int firstWordMask)
{
int[] array;
int num2;
int num4;
do
{
array = this.magnitude;
int num = array.Length;
num2 = 0;
int num3 = num - 1;
num = num3;
num4 = array[num];
if (num3 != num)
{
break;
}
num4 = num3;
num2 += 32;
}
while (array[num4] == 0);
if (num4 == 0)
{
num2 += 8;
while (num4 == 0)
{
}
}
if (num4 == 1)
{
num2++;
while (num4 == 1)
{
}
}
return num2;
}
// Token: 0x06008288 RID: 33416 RVA: 0x001BE744 File Offset: 0x001BC944
[Token(Token = "0x6008288")]
[Address(RVA = "0x21CEC00", Offset = "0x21CD600", VA = "0x1821CEC00")]
public bool TestBit(int n)
{
int length = this.magnitude.Length;
if (n < length)
{
int num = n - 1;
}
BigInteger bigInteger;
return !bigInteger.Negate().TestBit(n);
}
// Token: 0x06008289 RID: 33417 RVA: 0x001BE784 File Offset: 0x001BC984
[Token(Token = "0x6008289")]
[Address(RVA = "0x21CBF20", Offset = "0x21CA920", VA = "0x1821CBF20")]
public BigInteger Or(BigInteger value)
{
int num = this.sign;
if (num != 0 && value.sign != 0)
{
if (num > 0)
{
}
BigInteger one = BigInteger.One;
int[] array = this.Add(one).magnitude;
if (value.sign > 0)
{
}
BigInteger one2 = BigInteger.One;
int[] array2 = value.Add(one2).magnitude;
if (this.sign < 0)
{
}
int num2 = value.sign;
int num3 = array2.Length;
num3 = Math.Max(array.Length, num3);
int[] array3 = new int[num3];
int num4 = array3.Length;
int num5 = 0;
int num6 = 0;
num4 -= num4;
int length = array3.Length;
if (num6 < length)
{
num6 += num5;
int num7 = 0;
array3[0] = num7;
if (num2 != 0)
{
array3[0] = num7;
}
num5++;
}
uint num8;
ulong num9;
BigInteger bigInteger = new BigInteger((int)num8, array3, num9 != 0UL);
BigInteger bigInteger3;
if (num2 != 0)
{
BigInteger bigInteger2 = bigInteger.Inc();
int num10 = bigInteger2.sign;
if (num10 != 0)
{
int[] array4 = bigInteger2.magnitude;
bigInteger3.nBits = (int)((ulong)(-1L));
bigInteger3.sign = num10;
bigInteger3.magnitude = array4;
}
}
return bigInteger3;
}
return value;
}
// Token: 0x0600828A RID: 33418 RVA: 0x001BE8B8 File Offset: 0x001BCAB8
[Token(Token = "0x600828A")]
[Address(RVA = "0x21CFD40", Offset = "0x21CE740", VA = "0x1821CFD40")]
public BigInteger Xor(BigInteger value)
{
int num = this.sign;
if (num != 0 && value.sign != 0)
{
if (num > 0)
{
}
BigInteger one = BigInteger.One;
int[] array = this.Add(one).magnitude;
if (value.sign > 0)
{
}
BigInteger one2 = BigInteger.One;
int[] array2 = value.Add(one2).magnitude;
int num2 = value.sign;
if (this.sign < 0)
{
}
int num3 = array2.Length;
num3 = Math.Max(array.Length, num3);
int[] array3 = new int[num3];
int num4 = array3.Length;
int num5 = 0;
int num6 = 0;
num4 -= num4;
int length = array3.Length;
if (num6 < length)
{
num6 += num5;
int num7 = 0;
array3[0] = num7;
if (num2 != 0)
{
array3[0] = num7;
}
num5++;
}
uint num8;
ulong num9;
BigInteger bigInteger = new BigInteger((int)num8, array3, num9 != 0UL);
BigInteger bigInteger3;
if (num2 != 0)
{
BigInteger bigInteger2 = bigInteger.Inc();
int num10 = bigInteger2.sign;
if (num10 != 0)
{
int[] array4 = bigInteger2.magnitude;
bigInteger3.nBits = (int)((ulong)(-1L));
bigInteger3.sign = num10;
bigInteger3.magnitude = array4;
}
}
return bigInteger3;
}
return value;
}
// Token: 0x0600828B RID: 33419 RVA: 0x001BE9EC File Offset: 0x001BCBEC
[Token(Token = "0x600828B")]
[Address(RVA = "0x21CD530", Offset = "0x21CBF30", VA = "0x1821CD530")]
public BigInteger SetBit(int n)
{
if (!this.TestBit(n))
{
if (this.sign > 0)
{
int bitLength = this.BitLength;
if (n < bitLength)
{
return this.FlipExistingBit(n);
}
}
BigInteger bigInteger = BigInteger.One.ShiftLeft(n);
return this.Or(bigInteger);
}
return this;
}
// Token: 0x0600828C RID: 33420 RVA: 0x001BEA40 File Offset: 0x001BCC40
[Token(Token = "0x600828C")]
[Address(RVA = "0x21C6EF0", Offset = "0x21C58F0", VA = "0x1821C6EF0")]
public BigInteger ClearBit(int n)
{
if (this.TestBit(n))
{
if (this.sign > 0)
{
int bitLength = this.BitLength;
if (n < bitLength)
{
return this.FlipExistingBit(n);
}
}
BigInteger bigInteger = BigInteger.One.ShiftLeft(n).Inc().Negate();
return this.And(bigInteger);
}
return this;
}
// Token: 0x0600828D RID: 33421 RVA: 0x001BEAA0 File Offset: 0x001BCCA0
[Token(Token = "0x600828D")]
[Address(RVA = "0x21C8840", Offset = "0x21C7240", VA = "0x1821C8840")]
public BigInteger FlipBit(int n)
{
if (this.sign > 0)
{
int num = this.nBitLength;
if (num == -1)
{
int num2 = this.sign;
if (num2 == 0)
{
}
int[] array = this.magnitude;
int num3 = 0;
int num4 = BigInteger.CalcBitLength(num2, num3, array);
this.nBitLength = num4;
}
if (n < num)
{
return this.FlipExistingBit(n);
}
}
BigInteger bigInteger = BigInteger.One.ShiftLeft(n);
return this.Xor(bigInteger);
}
// Token: 0x0600828E RID: 33422 RVA: 0x001BEB14 File Offset: 0x001BCD14
[Token(Token = "0x600828E")]
[Address(RVA = "0x21C89A0", Offset = "0x21C73A0", VA = "0x1821C89A0")]
private BigInteger FlipExistingBit(int n)
{
int[] array = this.magnitude;
array -= n;
int num = this.sign;
BigInteger bigInteger;
bigInteger.nBits = (int)((ulong)(-1L));
bigInteger.sign = num;
return bigInteger;
}
// Token: 0x04005BE1 RID: 23521
[Token(Token = "0x4005BE1")]
internal static readonly int[][] primeLists;
// Token: 0x04005BE2 RID: 23522
[Token(Token = "0x4005BE2")]
internal static readonly int[] primeProducts;
// Token: 0x04005BE3 RID: 23523
[Token(Token = "0x4005BE3")]
private const long IMASK = 4294967295L;
// Token: 0x04005BE4 RID: 23524
[Token(Token = "0x4005BE4")]
private const ulong UIMASK = 4294967295UL;
// Token: 0x04005BE5 RID: 23525
[Token(Token = "0x4005BE5")]
private static readonly int[] ZeroMagnitude;
// Token: 0x04005BE6 RID: 23526
[Token(Token = "0x4005BE6")]
private static readonly byte[] ZeroEncoding;
// Token: 0x04005BE7 RID: 23527
[Token(Token = "0x4005BE7")]
private static readonly BigInteger[] SMALL_CONSTANTS;
// Token: 0x04005BE8 RID: 23528
[Token(Token = "0x4005BE8")]
public static readonly BigInteger Zero;
// Token: 0x04005BE9 RID: 23529
[Token(Token = "0x4005BE9")]
public static readonly BigInteger One;
// Token: 0x04005BEA RID: 23530
[Token(Token = "0x4005BEA")]
public static readonly BigInteger Two;
// Token: 0x04005BEB RID: 23531
[Token(Token = "0x4005BEB")]
public static readonly BigInteger Three;
// Token: 0x04005BEC RID: 23532
[Token(Token = "0x4005BEC")]
public static readonly BigInteger Ten;
// Token: 0x04005BED RID: 23533
[Token(Token = "0x4005BED")]
private static readonly byte[] BitLengthTable;
// Token: 0x04005BEE RID: 23534
[Token(Token = "0x4005BEE")]
private const int chunk2 = 1;
// Token: 0x04005BEF RID: 23535
[Token(Token = "0x4005BEF")]
private const int chunk8 = 1;
// Token: 0x04005BF0 RID: 23536
[Token(Token = "0x4005BF0")]
private const int chunk10 = 19;
// Token: 0x04005BF1 RID: 23537
[Token(Token = "0x4005BF1")]
private const int chunk16 = 16;
// Token: 0x04005BF2 RID: 23538
[Token(Token = "0x4005BF2")]
private static readonly BigInteger radix2;
// Token: 0x04005BF3 RID: 23539
[Token(Token = "0x4005BF3")]
private static readonly BigInteger radix2E;
// Token: 0x04005BF4 RID: 23540
[Token(Token = "0x4005BF4")]
private static readonly BigInteger radix8;
// Token: 0x04005BF5 RID: 23541
[Token(Token = "0x4005BF5")]
private static readonly BigInteger radix8E;
// Token: 0x04005BF6 RID: 23542
[Token(Token = "0x4005BF6")]
private static readonly BigInteger radix10;
// Token: 0x04005BF7 RID: 23543
[Token(Token = "0x4005BF7")]
private static readonly BigInteger radix10E;
// Token: 0x04005BF8 RID: 23544
[Token(Token = "0x4005BF8")]
private static readonly BigInteger radix16;
// Token: 0x04005BF9 RID: 23545
[Token(Token = "0x4005BF9")]
private static readonly BigInteger radix16E;
// Token: 0x04005BFA RID: 23546
[Token(Token = "0x4005BFA")]
private static readonly SecureRandom RandomSource;
// Token: 0x04005BFB RID: 23547
[Token(Token = "0x4005BFB")]
private static readonly int[] ExpWindowThresholds;
// Token: 0x04005BFC RID: 23548
[Token(Token = "0x4005BFC")]
private const int BitsPerByte = 8;
// Token: 0x04005BFD RID: 23549
[Token(Token = "0x4005BFD")]
private const int BitsPerInt = 32;
// Token: 0x04005BFE RID: 23550
[Token(Token = "0x4005BFE")]
private const int BytesPerInt = 4;
// Token: 0x04005BFF RID: 23551
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
[Token(Token = "0x4005BFF")]
private int[] magnitude;
// Token: 0x04005C00 RID: 23552
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
[Token(Token = "0x4005C00")]
private int sign;
// Token: 0x04005C01 RID: 23553
[global::Cpp2IlInjected.FieldOffset(Offset = "0x1C")]
[Token(Token = "0x4005C01")]
private int nBits;
// Token: 0x04005C02 RID: 23554
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
[Token(Token = "0x4005C02")]
private int nBitLength;
// Token: 0x04005C03 RID: 23555
[global::Cpp2IlInjected.FieldOffset(Offset = "0x24")]
[Token(Token = "0x4005C03")]
private int mQuote;
}
}