Files
27Aug2021-Cpp2IL-Dump/Assembly-CSharp/BestHTTP/SecureProtocol/Org/BouncyCastle/Math/BigInteger.cs
T
niko c12fbe3fc6 m
2026-04-12 16:51:38 +02:00

3246 lines
106 KiB
C#

using System;
using System.Collections;
using System.Text;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Math
{
// Token: 0x02001AB4 RID: 6836
[Token(Token = "0x2001AB4")]
[Serializable]
public class BigInteger
{
// Token: 0x0600A1CB RID: 41419 RVA: 0x0021B228 File Offset: 0x00219428
[Token(Token = "0x600A1CB")]
[Address(RVA = "0x459230", Offset = "0x458230", VA = "0x180459230")]
static BigInteger()
{
/*
An exception occurred when decompiling this method (0600A1CB)
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: 0x0600A1CC RID: 41420 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x600A1CC")]
[Address(RVA = "0x451C60", Offset = "0x450C60", VA = "0x180451C60")]
private static int GetByteLength(int nBits)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600A1CD RID: 41421 RVA: 0x0021BA38 File Offset: 0x00219C38
[Token(Token = "0x600A1CD")]
[Address(RVA = "0x44F980", Offset = "0x44E980", VA = "0x18044F980")]
internal static BigInteger Arbitrary(int sizeInBits)
{
SecureRandom randomSource = BigInteger.RandomSource;
return new BigInteger(sizeInBits, randomSource);
}
// Token: 0x0600A1CE RID: 41422 RVA: 0x0021BA54 File Offset: 0x00219C54
[Token(Token = "0x600A1CE")]
[Address(RVA = "0x45BE80", Offset = "0x45AE80", VA = "0x18045BE80")]
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: 0x0600A1CF RID: 41423 RVA: 0x0021BB04 File Offset: 0x00219D04
[Token(Token = "0x600A1CF")]
[Address(RVA = "0x45C190", Offset = "0x45B190", VA = "0x18045C190")]
public BigInteger(string value)
{
}
// Token: 0x0600A1D0 RID: 41424 RVA: 0x0021BB14 File Offset: 0x00219D14
[Token(Token = "0x600A1D0")]
[Address(RVA = "0x45B850", Offset = "0x45A850", VA = "0x18045B850")]
public BigInteger(string str, int radix)
{
/*
An exception occurred when decompiling this method (0600A1D0)
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_43_1FA, newobj:FormatException(FormatException::.ctor, ldloc:string(var_42)))
}
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: 0x0600A1D1 RID: 41425 RVA: 0x0021BD1C File Offset: 0x00219F1C
[Token(Token = "0x600A1D1")]
[Address(RVA = "0x45C430", Offset = "0x45B430", VA = "0x18045C430")]
public BigInteger(byte[] bytes)
{
int length = bytes.Length;
}
// Token: 0x0600A1D2 RID: 41426 RVA: 0x0021BD38 File Offset: 0x00219F38
[Token(Token = "0x600A1D2")]
[Address(RVA = "0x45C1A0", Offset = "0x45B1A0", VA = "0x18045C1A0")]
public BigInteger(byte[] bytes, int offset, int length)
{
/*
An exception occurred when decompiling this method (0600A1D2)
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: 0x0600A1D3 RID: 41427 RVA: 0x0021BDE0 File Offset: 0x00219FE0
[Token(Token = "0x600A1D3")]
[Address(RVA = "0x452740", Offset = "0x451740", VA = "0x180452740")]
private static int[] MakeMagnitude(byte[] bytes, int offset, int length)
{
return BigInteger.ZeroMagnitude;
}
// Token: 0x0600A1D4 RID: 41428 RVA: 0x0021BE20 File Offset: 0x0021A020
[Token(Token = "0x600A1D4")]
[Address(RVA = "0x45B710", Offset = "0x45A710", VA = "0x18045B710")]
public BigInteger(int sign, byte[] bytes)
{
/*
An exception occurred when decompiling this method (0600A1D4)
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: 0x0600A1D5 RID: 41429 RVA: 0x0021BE90 File Offset: 0x0021A090
[Token(Token = "0x600A1D5")]
[Address(RVA = "0x45B5E0", Offset = "0x45A5E0", VA = "0x18045B5E0")]
public BigInteger(int sign, byte[] bytes, int offset, int length)
{
/*
An exception occurred when decompiling this method (0600A1D5)
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: 0x0600A1D6 RID: 41430 RVA: 0x0021BEE8 File Offset: 0x0021A0E8
[Token(Token = "0x600A1D6")]
[Address(RVA = "0x45BFC0", Offset = "0x45AFC0", VA = "0x18045BFC0")]
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: 0x0600A1D7 RID: 41431 RVA: 0x0021BF7C File Offset: 0x0021A17C
[Token(Token = "0x600A1D7")]
[Address(RVA = "0x45C460", Offset = "0x45B460", VA = "0x18045C460")]
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: 0x0600A1D8 RID: 41432 RVA: 0x0021C05C File Offset: 0x0021A25C
[Token(Token = "0x600A1D8")]
[Address(RVA = "0x44F110", Offset = "0x44E110", VA = "0x18044F110")]
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: 0x0600A1D9 RID: 41433 RVA: 0x0021C09C File Offset: 0x0021A29C
[Token(Token = "0x600A1D9")]
[Address(RVA = "0x44F1B0", Offset = "0x44E1B0", VA = "0x18044F1B0")]
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: 0x0600A1DA RID: 41434 RVA: 0x0021C0F4 File Offset: 0x0021A2F4
[Token(Token = "0x600A1DA")]
[Address(RVA = "0x44F440", Offset = "0x44E440", VA = "0x18044F440")]
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: 0x0600A1DB RID: 41435 RVA: 0x0021C14C File Offset: 0x0021A34C
[Token(Token = "0x600A1DB")]
[Address(RVA = "0x44F290", Offset = "0x44E290", VA = "0x18044F290")]
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: 0x0600A1DC RID: 41436 RVA: 0x0021C1B4 File Offset: 0x0021A3B4
[Token(Token = "0x600A1DC")]
[Address(RVA = "0x44F540", Offset = "0x44E540", VA = "0x18044F540")]
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: 0x0600A1DD RID: 41437 RVA: 0x0021C2E0 File Offset: 0x0021A4E0
[Token(Token = "0x600A1DD")]
[Address(RVA = "0x44F4F0", Offset = "0x44E4F0", VA = "0x18044F4F0")]
public BigInteger AndNot(BigInteger val)
{
BigInteger bigInteger = val.Inc().Negate();
return this.And(bigInteger);
}
// Token: 0x170019C3 RID: 6595
// (get) Token: 0x0600A1DE RID: 41438 RVA: 0x0021C308 File Offset: 0x0021A508
[Token(Token = "0x170019C3")]
public int BitCount
{
[Token(Token = "0x600A1DE")]
[Address(RVA = "0x45C8C0", Offset = "0x45B8C0", VA = "0x18045C8C0")]
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: 0x0600A1DF RID: 41439 RVA: 0x0021C388 File Offset: 0x0021A588
[Token(Token = "0x600A1DF")]
[Address(RVA = "0x44FA10", Offset = "0x44EA10", VA = "0x18044FA10")]
public static int BitCnt(int i)
{
return i;
}
// Token: 0x0600A1E0 RID: 41440 RVA: 0x0021C398 File Offset: 0x0021A598
[Token(Token = "0x600A1E0")]
[Address(RVA = "0x44FC20", Offset = "0x44EC20", VA = "0x18044FC20")]
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: 0x170019C4 RID: 6596
// (get) Token: 0x0600A1E1 RID: 41441 RVA: 0x0021C3F0 File Offset: 0x0021A5F0
[Token(Token = "0x170019C4")]
public int BitLength
{
[Token(Token = "0x600A1E1")]
[Address(RVA = "0x45CA20", Offset = "0x45BA20", VA = "0x18045CA20")]
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: 0x0600A1E2 RID: 41442 RVA: 0x0021C43C File Offset: 0x0021A63C
[Token(Token = "0x600A1E2")]
[Address(RVA = "0x44FA50", Offset = "0x44EA50", VA = "0x18044FA50")]
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: 0x0600A1E3 RID: 41443 RVA: 0x0021C474 File Offset: 0x0021A674
[Token(Token = "0x600A1E3")]
[Address(RVA = "0x455640", Offset = "0x454640", VA = "0x180455640")]
private bool QuickPow2Check()
{
return this.nBits == 1;
}
// Token: 0x0600A1E4 RID: 41444 RVA: 0x0021C48C File Offset: 0x0021A68C
[Token(Token = "0x600A1E4")]
[Address(RVA = "0x450170", Offset = "0x44F170", VA = "0x180450170")]
public int CompareTo(object obj)
{
do
{
if (obj == 0)
{
}
}
while (obj == 0);
int num;
return num;
}
// Token: 0x0600A1E5 RID: 41445 RVA: 0x0021C4A4 File Offset: 0x0021A6A4
[Token(Token = "0x600A1E5")]
[Address(RVA = "0x4502F0", Offset = "0x44F2F0", VA = "0x1804502F0")]
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: 0x0600A1E6 RID: 41446 RVA: 0x0021C4EC File Offset: 0x0021A6EC
[Token(Token = "0x600A1E6")]
[Address(RVA = "0x4500B0", Offset = "0x44F0B0", VA = "0x1804500B0")]
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: 0x0600A1E7 RID: 41447 RVA: 0x0021C540 File Offset: 0x0021A740
[Token(Token = "0x600A1E7")]
[Address(RVA = "0x450210", Offset = "0x44F210", VA = "0x180450210")]
public int CompareTo(BigInteger value)
{
int num = this.sign;
if (num < value.sign)
{
return -1;
}
if (num > value.sign)
{
return 1;
}
return 0;
}
// Token: 0x0600A1E8 RID: 41448 RVA: 0x0021C578 File Offset: 0x0021A778
[Token(Token = "0x600A1E8")]
[Address(RVA = "0x450E40", Offset = "0x44FE40", VA = "0x180450E40")]
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: 0x0600A1E9 RID: 41449 RVA: 0x0021C760 File Offset: 0x0021A960
[Token(Token = "0x600A1E9")]
[Address(RVA = "0x450C50", Offset = "0x44FC50", VA = "0x180450C50")]
public BigInteger Divide(BigInteger val)
{
/*
An exception occurred when decompiling this method (0600A1E9)
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: 0x0600A1EA RID: 41450 RVA: 0x0021C808 File Offset: 0x0021AA08
[Token(Token = "0x600A1EA")]
[Address(RVA = "0x4506C0", Offset = "0x44F6C0", VA = "0x1804506C0")]
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: 0x0600A1EB RID: 41451 RVA: 0x0021C928 File Offset: 0x0021AB28
[Token(Token = "0x600A1EB")]
[Address(RVA = "0x4516C0", Offset = "0x4506C0", VA = "0x1804516C0", 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: 0x0600A1EC RID: 41452 RVA: 0x0021C954 File Offset: 0x0021AB54
[Token(Token = "0x600A1EC")]
[Address(RVA = "0x452260", Offset = "0x451260", VA = "0x180452260")]
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: 0x0600A1ED RID: 41453 RVA: 0x0021C9A8 File Offset: 0x0021ABA8
[Token(Token = "0x600A1ED")]
[Address(RVA = "0x451B50", Offset = "0x450B50", VA = "0x180451B50")]
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: 0x0600A1EE RID: 41454 RVA: 0x0021CA10 File Offset: 0x0021AC10
[Token(Token = "0x600A1EE")]
[Address(RVA = "0x451C70", Offset = "0x450C70", VA = "0x180451C70", 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: 0x0600A1EF RID: 41455 RVA: 0x0021CA50 File Offset: 0x0021AC50
[Token(Token = "0x600A1EF")]
[Address(RVA = "0x452110", Offset = "0x451110", VA = "0x180452110")]
private BigInteger Inc()
{
if (this.sign != 0)
{
int[] array = BigInteger.One.magnitude;
return this.AddToMagnitude(array);
}
return BigInteger.One;
}
// Token: 0x170019C5 RID: 6597
// (get) Token: 0x0600A1F0 RID: 41456 RVA: 0x0021CA9C File Offset: 0x0021AC9C
[Token(Token = "0x170019C5")]
public int IntValue
{
[Token(Token = "0x600A1F0")]
[Address(RVA = "0x45CAC0", Offset = "0x45BAC0", VA = "0x18045CAC0")]
get
{
if (this.sign != 0)
{
int[] array = this.magnitude;
int num = array.Length - 1;
return array[num];
}
return 0;
}
}
// Token: 0x0600A1F1 RID: 41457 RVA: 0x0021CAD4 File Offset: 0x0021ACD4
[Token(Token = "0x600A1F1")]
[Address(RVA = "0x452480", Offset = "0x451480", VA = "0x180452480")]
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: 0x0600A1F2 RID: 41458 RVA: 0x0021CB18 File Offset: 0x0021AD18
[Token(Token = "0x600A1F2")]
[Address(RVA = "0x4522F0", Offset = "0x4512F0", VA = "0x1804522F0")]
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: 0x0600A1F3 RID: 41459 RVA: 0x0021CB58 File Offset: 0x0021AD58
[Token(Token = "0x600A1F3")]
[Address(RVA = "0x44FD50", Offset = "0x44ED50", VA = "0x18044FD50")]
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: 0x0600A1F4 RID: 41460 RVA: 0x0021CBDC File Offset: 0x0021ADDC
[Token(Token = "0x600A1F4")]
[Address(RVA = "0x455660", Offset = "0x454660", VA = "0x180455660")]
public bool RabinMillerTest(int certainty, Random random)
{
int num = 0;
return this.RabinMillerTest(certainty, random, num != 0);
}
// Token: 0x0600A1F5 RID: 41461 RVA: 0x0021CBF4 File Offset: 0x0021ADF4
[Token(Token = "0x600A1F5")]
[Address(RVA = "0x455680", Offset = "0x454680", VA = "0x180455680")]
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: 0x170019C6 RID: 6598
// (get) Token: 0x0600A1F6 RID: 41462 RVA: 0x0021CD1C File Offset: 0x0021AF1C
[Token(Token = "0x170019C6")]
public long LongValue
{
[Token(Token = "0x600A1F6")]
[Address(RVA = "0x45CB10", Offset = "0x45BB10", VA = "0x18045CB10")]
get
{
if (this.sign != 0)
{
int length = this.magnitude.Length;
int num = length - 1;
if (length > 1)
{
}
}
throw new IndexOutOfRangeException();
}
}
// Token: 0x0600A1F7 RID: 41463 RVA: 0x0021CD50 File Offset: 0x0021AF50
[Token(Token = "0x600A1F7")]
[Address(RVA = "0x4528E0", Offset = "0x4518E0", VA = "0x1804528E0")]
public BigInteger Max(BigInteger value)
{
int num = this.CompareTo(value);
return this;
}
// Token: 0x0600A1F8 RID: 41464 RVA: 0x0021CD68 File Offset: 0x0021AF68
[Token(Token = "0x600A1F8")]
[Address(RVA = "0x452910", Offset = "0x451910", VA = "0x180452910")]
public BigInteger Min(BigInteger value)
{
int num = this.CompareTo(value);
return this;
}
// Token: 0x0600A1F9 RID: 41465 RVA: 0x0021CD80 File Offset: 0x0021AF80
[Token(Token = "0x600A1F9")]
[Address(RVA = "0x454050", Offset = "0x453050", VA = "0x180454050")]
public BigInteger Mod(BigInteger m)
{
BigInteger bigInteger = this.Remainder(m);
if (bigInteger.sign < 0)
{
BigInteger bigInteger2 = bigInteger.Add(m);
}
return bigInteger;
}
// Token: 0x0600A1FA RID: 41466 RVA: 0x0021CDB0 File Offset: 0x0021AFB0
[Token(Token = "0x600A1FA")]
[Address(RVA = "0x452CD0", Offset = "0x451CD0", VA = "0x180452CD0")]
public BigInteger ModInverse(BigInteger m)
{
/*
An exception occurred when decompiling this method (0600A1FA)
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: 0x0600A1FB RID: 41467 RVA: 0x0021CE50 File Offset: 0x0021B050
[Token(Token = "0x600A1FB")]
[Address(RVA = "0x4529F0", Offset = "0x4519F0", VA = "0x1804529F0")]
private BigInteger ModInversePow2(BigInteger m)
{
/*
An exception occurred when decompiling this method (0600A1FB)
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: 0x0600A1FC RID: 41468 RVA: 0x0021CF7C File Offset: 0x0021B17C
[Token(Token = "0x600A1FC")]
[Address(RVA = "0x452940", Offset = "0x451940", VA = "0x180452940")]
private static int ModInverse32(int d)
{
/*
An exception occurred when decompiling this method (0600A1FC)
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: 0x0600A1FD RID: 41469 RVA: 0x0021CF98 File Offset: 0x0021B198
[Token(Token = "0x600A1FD")]
[Address(RVA = "0x452990", Offset = "0x451990", VA = "0x180452990")]
private static long ModInverse64(long d)
{
/*
An exception occurred when decompiling this method (0600A1FD)
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: 0x0600A1FE RID: 41470 RVA: 0x0021CFAC File Offset: 0x0021B1AC
[Token(Token = "0x600A1FE")]
[Address(RVA = "0x451770", Offset = "0x450770", VA = "0x180451770")]
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: 0x0600A1FF RID: 41471 RVA: 0x0021D010 File Offset: 0x0021B210
[Token(Token = "0x600A1FF")]
[Address(RVA = "0x459200", Offset = "0x458200", VA = "0x180459200")]
private static void ZeroOut(int[] x)
{
int length = x.Length;
int num = 0;
Array.Clear(x, num, length);
}
// Token: 0x0600A200 RID: 41472 RVA: 0x0021D034 File Offset: 0x0021B234
[Token(Token = "0x600A200")]
[Address(RVA = "0x453DA0", Offset = "0x452DA0", VA = "0x180453DA0")]
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: 0x0600A201 RID: 41473 RVA: 0x0021D0A8 File Offset: 0x0021B2A8
[Token(Token = "0x600A201")]
[Address(RVA = "0x452F60", Offset = "0x451F60", VA = "0x180452F60")]
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: 0x0600A202 RID: 41474 RVA: 0x0021D1F0 File Offset: 0x0021B3F0
[Token(Token = "0x600A202")]
[Address(RVA = "0x455A20", Offset = "0x454A20", VA = "0x180455A20")]
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: 0x0600A203 RID: 41475 RVA: 0x0021D290 File Offset: 0x0021B490
[Token(Token = "0x600A203")]
[Address(RVA = "0x453540", Offset = "0x452540", VA = "0x180453540")]
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: 0x0600A204 RID: 41476 RVA: 0x0021D498 File Offset: 0x0021B698
[Token(Token = "0x600A204")]
[Address(RVA = "0x451E90", Offset = "0x450E90", VA = "0x180451E90")]
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: 0x0600A205 RID: 41477 RVA: 0x0021D574 File Offset: 0x0021B774
[Token(Token = "0x600A205")]
[Address(RVA = "0x4506A0", Offset = "0x44F6A0", VA = "0x1804506A0")]
private static int CreateWindowEntry(int mult, int zeroes)
{
if (mult == 1)
{
while (mult == 1)
{
}
}
return zeroes;
}
// Token: 0x0600A206 RID: 41478 RVA: 0x0021D58C File Offset: 0x0021B78C
[Token(Token = "0x600A206")]
[Address(RVA = "0x4576C0", Offset = "0x4566C0", VA = "0x1804576C0")]
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: 0x0600A207 RID: 41479 RVA: 0x0021D670 File Offset: 0x0021B870
[Token(Token = "0x600A207")]
[Address(RVA = "0x4548C0", Offset = "0x4538C0", VA = "0x1804548C0")]
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: 0x0600A208 RID: 41480 RVA: 0x0021D6E4 File Offset: 0x0021B8E4
[Token(Token = "0x600A208")]
[Address(RVA = "0x451DB0", Offset = "0x450DB0", VA = "0x180451DB0")]
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: 0x0600A209 RID: 41481 RVA: 0x0021D744 File Offset: 0x0021B944
[Token(Token = "0x600A209")]
[Address(RVA = "0x4540F0", Offset = "0x4530F0", VA = "0x1804540F0")]
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: 0x0600A20A RID: 41482 RVA: 0x0021D7D8 File Offset: 0x0021B9D8
[Token(Token = "0x600A20A")]
[Address(RVA = "0x454320", Offset = "0x453320", VA = "0x180454320")]
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: 0x0600A20B RID: 41483 RVA: 0x0021D9A0 File Offset: 0x0021BBA0
[Token(Token = "0x600A20B")]
[Address(RVA = "0x4570B0", Offset = "0x4560B0", VA = "0x1804570B0")]
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: 0x0600A20C RID: 41484 RVA: 0x0021DC50 File Offset: 0x0021BE50
[Token(Token = "0x600A20C")]
[Address(RVA = "0x4542E0", Offset = "0x4532E0", VA = "0x1804542E0")]
private static uint MultiplyMontyNIsOne(uint x, uint y, uint m, uint mDash)
{
uint num = x * y;
uint num2 = x * mDash * m;
return y;
}
// Token: 0x0600A20D RID: 41485 RVA: 0x0021DC68 File Offset: 0x0021BE68
[Token(Token = "0x600A20D")]
[Address(RVA = "0x454A20", Offset = "0x453A20", VA = "0x180454A20")]
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: 0x0600A20E RID: 41486 RVA: 0x0021DD98 File Offset: 0x0021BF98
[Token(Token = "0x600A20E")]
[Address(RVA = "0x4578F0", Offset = "0x4568F0", VA = "0x1804578F0")]
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: 0x0600A20F RID: 41487 RVA: 0x0021DE1C File Offset: 0x0021C01C
[Token(Token = "0x600A20F")]
[Address(RVA = "0x454D20", Offset = "0x453D20", VA = "0x180454D20")]
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: 0x0600A210 RID: 41488 RVA: 0x0021DE54 File Offset: 0x0021C054
[Token(Token = "0x600A210")]
[Address(RVA = "0x454DB0", Offset = "0x453DB0", VA = "0x180454DB0")]
public BigInteger NextProbablePrime()
{
BigInteger bigInteger;
SecureRandom randomSource;
int num5;
do
{
BigInteger two = BigInteger.Two;
int num = this.CompareTo(two);
bigInteger = this.Inc();
int num2 = 0;
if (!bigInteger.TestBit(num2))
{
if (bigInteger.sign > 0 && bigInteger.BitLength > 0)
{
int num3 = 0;
BigInteger bigInteger2 = bigInteger.FlipExistingBit(num3);
}
BigInteger one = BigInteger.One;
int num4 = 0;
BigInteger bigInteger3 = one.ShiftLeft(num4);
BigInteger bigInteger4 = bigInteger.Or(bigInteger3);
}
randomSource = BigInteger.RandomSource;
num5 = 0;
}
while (bigInteger.CheckProbablePrime(100, randomSource, num5 != 0));
BigInteger two2 = BigInteger.Two;
return bigInteger.Add(two2);
}
// Token: 0x0600A211 RID: 41489 RVA: 0x0021DF00 File Offset: 0x0021C100
[Token(Token = "0x600A211")]
[Address(RVA = "0x455010", Offset = "0x454010", VA = "0x180455010")]
public BigInteger Not()
{
return this.Inc().Negate();
}
// Token: 0x0600A212 RID: 41490 RVA: 0x0021DF20 File Offset: 0x0021C120
[Token(Token = "0x600A212")]
[Address(RVA = "0x4553D0", Offset = "0x4543D0", VA = "0x1804553D0")]
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: 0x0600A213 RID: 41491 RVA: 0x0021DF94 File Offset: 0x0021C194
[Token(Token = "0x600A213")]
[Address(RVA = "0x4555D0", Offset = "0x4545D0", VA = "0x1804555D0")]
public static BigInteger ProbablePrime(int bitLength, Random random)
{
return new BigInteger(bitLength, 100, random);
}
// Token: 0x0600A214 RID: 41492 RVA: 0x0021DFAC File Offset: 0x0021C1AC
[Token(Token = "0x600A214")]
[Address(RVA = "0x455CB0", Offset = "0x454CB0", VA = "0x180455CB0")]
private int Remainder(int m)
{
int[] array = this.magnitude;
int num = 0;
int length = array.Length;
if (num < length)
{
num++;
}
return num;
}
// Token: 0x0600A215 RID: 41493 RVA: 0x0021DFD8 File Offset: 0x0021C1D8
[Token(Token = "0x600A215")]
[Address(RVA = "0x455FD0", Offset = "0x454FD0", VA = "0x180455FD0")]
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: 0x0600A216 RID: 41494 RVA: 0x0021E1B4 File Offset: 0x0021C3B4
[Token(Token = "0x600A216")]
[Address(RVA = "0x455D20", Offset = "0x454D20", VA = "0x180455D20")]
public BigInteger Remainder(BigInteger n)
{
/*
An exception occurred when decompiling this method (0600A216)
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: 0x0600A217 RID: 41495 RVA: 0x0021E2B0 File Offset: 0x0021C4B0
[Token(Token = "0x600A217")]
[Address(RVA = "0x4525F0", Offset = "0x4515F0", VA = "0x1804525F0")]
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: 0x0600A218 RID: 41496 RVA: 0x0021E30C File Offset: 0x0021C50C
[Token(Token = "0x600A218")]
[Address(RVA = "0x450B30", Offset = "0x44FB30", VA = "0x180450B30")]
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: 0x0600A219 RID: 41497 RVA: 0x0021E37C File Offset: 0x0021C57C
[Token(Token = "0x600A219")]
[Address(RVA = "0x455BB0", Offset = "0x454BB0", VA = "0x180455BB0")]
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: 0x0600A21A RID: 41498 RVA: 0x0021E3E8 File Offset: 0x0021C5E8
[Token(Token = "0x600A21A")]
[Address(RVA = "0x4567D0", Offset = "0x4557D0", VA = "0x1804567D0")]
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: 0x0600A21B RID: 41499 RVA: 0x0021E47C File Offset: 0x0021C67C
[Token(Token = "0x600A21B")]
[Address(RVA = "0x456770", Offset = "0x455770", VA = "0x180456770")]
private static int ShiftLeftOneInPlace(int[] x, int carry)
{
int length = x.Length;
x[0] = x;
return carry;
}
// Token: 0x0600A21C RID: 41500 RVA: 0x0021E4A4 File Offset: 0x0021C6A4
[Token(Token = "0x600A21C")]
[Address(RVA = "0x4569F0", Offset = "0x4559F0", VA = "0x1804569F0")]
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: 0x0600A21D RID: 41501 RVA: 0x0021E520 File Offset: 0x0021C720
[Token(Token = "0x600A21D")]
[Address(RVA = "0x456B60", Offset = "0x455B60", VA = "0x180456B60")]
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: 0x0600A21E RID: 41502 RVA: 0x0021E5C0 File Offset: 0x0021C7C0
[Token(Token = "0x600A21E")]
[Address(RVA = "0x456D10", Offset = "0x455D10", VA = "0x180456D10")]
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: 0x0600A21F RID: 41503 RVA: 0x0021E614 File Offset: 0x0021C814
[Token(Token = "0x600A21F")]
[Address(RVA = "0x456DE0", Offset = "0x455DE0", VA = "0x180456DE0")]
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: 0x170019C7 RID: 6599
// (get) Token: 0x0600A220 RID: 41504 RVA: 0x0021E714 File Offset: 0x0021C914
[Token(Token = "0x170019C7")]
public int SignValue
{
[Token(Token = "0x600A220")]
[Address(RVA = "0x411540", Offset = "0x410540", VA = "0x180411540")]
get
{
return this.sign;
}
}
// Token: 0x0600A221 RID: 41505 RVA: 0x0021E728 File Offset: 0x0021C928
[Token(Token = "0x600A221")]
[Address(RVA = "0x457A70", Offset = "0x456A70", VA = "0x180457A70")]
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: 0x0600A222 RID: 41506 RVA: 0x0021E764 File Offset: 0x0021C964
[Token(Token = "0x600A222")]
[Address(RVA = "0x457B70", Offset = "0x456B70", VA = "0x180457B70")]
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: 0x0600A223 RID: 41507 RVA: 0x0021E7F4 File Offset: 0x0021C9F4
[Token(Token = "0x600A223")]
[Address(RVA = "0x45C7F0", Offset = "0x45B7F0", VA = "0x18045C7F0")]
private static int[] doSubBigLil(int[] bigMag, int[] lilMag)
{
int[] array;
return array;
}
// Token: 0x0600A224 RID: 41508 RVA: 0x0021E80C File Offset: 0x0021CA0C
[Token(Token = "0x600A224")]
[Address(RVA = "0x457E60", Offset = "0x456E60", VA = "0x180457E60")]
public byte[] ToByteArray()
{
int num = 0;
return this.ToByteArray(num != 0);
}
// Token: 0x0600A225 RID: 41509 RVA: 0x0021E824 File Offset: 0x0021CA24
[Token(Token = "0x600A225")]
[Address(RVA = "0x457E50", Offset = "0x456E50", VA = "0x180457E50")]
public byte[] ToByteArrayUnsigned()
{
return this.ToByteArray(true);
}
// Token: 0x0600A226 RID: 41510 RVA: 0x0021E838 File Offset: 0x0021CA38
[Token(Token = "0x600A226")]
[Address(RVA = "0x457E70", Offset = "0x456E70", VA = "0x180457E70")]
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: 0x0600A227 RID: 41511 RVA: 0x0021E9EC File Offset: 0x0021CBEC
[Token(Token = "0x600A227")]
[Address(RVA = "0x458360", Offset = "0x457360", VA = "0x180458360", Slot = "3")]
public override string ToString()
{
return this.ToString(10);
}
// Token: 0x0600A228 RID: 41512 RVA: 0x0021EA04 File Offset: 0x0021CC04
[Token(Token = "0x600A228")]
[Address(RVA = "0x458370", Offset = "0x457370", VA = "0x180458370")]
public string ToString(int radix)
{
/*
An exception occurred when decompiling this method (0600A228)
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: 0x0600A229 RID: 41513 RVA: 0x0021EB6C File Offset: 0x0021CD6C
[Token(Token = "0x600A229")]
[Address(RVA = "0x458B00", Offset = "0x457B00", VA = "0x180458B00")]
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: 0x0600A22A RID: 41514 RVA: 0x0021EBF4 File Offset: 0x0021CDF4
[Token(Token = "0x600A22A")]
[Address(RVA = "0x44F900", Offset = "0x44E900", VA = "0x18044F900")]
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: 0x0600A22B RID: 41515 RVA: 0x0021EC20 File Offset: 0x0021CE20
[Token(Token = "0x600A22B")]
[Address(RVA = "0x4503E0", Offset = "0x44F3E0", VA = "0x1804503E0")]
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: 0x0600A22C RID: 41516 RVA: 0x0021ECAC File Offset: 0x0021CEAC
[Token(Token = "0x600A22C")]
[Address(RVA = "0x4505C0", Offset = "0x44F5C0", VA = "0x1804505C0")]
private static BigInteger CreateValueOf(long value)
{
return BigInteger.CreateUValueOf((ulong)value);
}
// Token: 0x0600A22D RID: 41517 RVA: 0x0021ECD8 File Offset: 0x0021CED8
[Token(Token = "0x600A22D")]
[Address(RVA = "0x458D70", Offset = "0x457D70", VA = "0x180458D70")]
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: 0x0600A22E RID: 41518 RVA: 0x0021ED0C File Offset: 0x0021CF0C
[Token(Token = "0x600A22E")]
[Address(RVA = "0x451D90", Offset = "0x450D90", VA = "0x180451D90")]
public int GetLowestSetBit()
{
if (this.sign != 0)
{
return this.GetLowestSetBitMaskFirst(-1);
}
return -1;
}
// Token: 0x0600A22F RID: 41519 RVA: 0x0021ED2C File Offset: 0x0021CF2C
[Token(Token = "0x600A22F")]
[Address(RVA = "0x451CF0", Offset = "0x450CF0", VA = "0x180451CF0")]
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: 0x0600A230 RID: 41520 RVA: 0x0021ED94 File Offset: 0x0021CF94
[Token(Token = "0x600A230")]
[Address(RVA = "0x457D20", Offset = "0x456D20", VA = "0x180457D20")]
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: 0x0600A231 RID: 41521 RVA: 0x0021EDD4 File Offset: 0x0021CFD4
[Token(Token = "0x600A231")]
[Address(RVA = "0x455040", Offset = "0x454040", VA = "0x180455040")]
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: 0x0600A232 RID: 41522 RVA: 0x0021EF08 File Offset: 0x0021D108
[Token(Token = "0x600A232")]
[Address(RVA = "0x458E60", Offset = "0x457E60", VA = "0x180458E60")]
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: 0x0600A233 RID: 41523 RVA: 0x0021F03C File Offset: 0x0021D23C
[Token(Token = "0x600A233")]
[Address(RVA = "0x456650", Offset = "0x455650", VA = "0x180456650")]
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: 0x0600A234 RID: 41524 RVA: 0x0021F090 File Offset: 0x0021D290
[Token(Token = "0x600A234")]
[Address(RVA = "0x44FF70", Offset = "0x44EF70", VA = "0x18044FF70")]
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: 0x0600A235 RID: 41525 RVA: 0x0021F0F0 File Offset: 0x0021D2F0
[Token(Token = "0x600A235")]
[Address(RVA = "0x4518C0", Offset = "0x4508C0", VA = "0x1804518C0")]
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: 0x0600A236 RID: 41526 RVA: 0x0021F164 File Offset: 0x0021D364
[Token(Token = "0x600A236")]
[Address(RVA = "0x451A20", Offset = "0x450A20", VA = "0x180451A20")]
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: 0x04006BDD RID: 27613
[Token(Token = "0x4006BDD")]
internal static readonly int[][] primeLists;
// Token: 0x04006BDE RID: 27614
[Token(Token = "0x4006BDE")]
internal static readonly int[] primeProducts;
// Token: 0x04006BDF RID: 27615
[Token(Token = "0x4006BDF")]
private const long IMASK = 4294967295L;
// Token: 0x04006BE0 RID: 27616
[Token(Token = "0x4006BE0")]
private const ulong UIMASK = 4294967295UL;
// Token: 0x04006BE1 RID: 27617
[Token(Token = "0x4006BE1")]
private static readonly int[] ZeroMagnitude;
// Token: 0x04006BE2 RID: 27618
[Token(Token = "0x4006BE2")]
private static readonly byte[] ZeroEncoding;
// Token: 0x04006BE3 RID: 27619
[Token(Token = "0x4006BE3")]
private static readonly BigInteger[] SMALL_CONSTANTS;
// Token: 0x04006BE4 RID: 27620
[Token(Token = "0x4006BE4")]
public static readonly BigInteger Zero;
// Token: 0x04006BE5 RID: 27621
[Token(Token = "0x4006BE5")]
public static readonly BigInteger One;
// Token: 0x04006BE6 RID: 27622
[Token(Token = "0x4006BE6")]
public static readonly BigInteger Two;
// Token: 0x04006BE7 RID: 27623
[Token(Token = "0x4006BE7")]
public static readonly BigInteger Three;
// Token: 0x04006BE8 RID: 27624
[Token(Token = "0x4006BE8")]
public static readonly BigInteger Ten;
// Token: 0x04006BE9 RID: 27625
[Token(Token = "0x4006BE9")]
private static readonly byte[] BitLengthTable;
// Token: 0x04006BEA RID: 27626
[Token(Token = "0x4006BEA")]
private const int chunk2 = 1;
// Token: 0x04006BEB RID: 27627
[Token(Token = "0x4006BEB")]
private const int chunk8 = 1;
// Token: 0x04006BEC RID: 27628
[Token(Token = "0x4006BEC")]
private const int chunk10 = 19;
// Token: 0x04006BED RID: 27629
[Token(Token = "0x4006BED")]
private const int chunk16 = 16;
// Token: 0x04006BEE RID: 27630
[Token(Token = "0x4006BEE")]
private static readonly BigInteger radix2;
// Token: 0x04006BEF RID: 27631
[Token(Token = "0x4006BEF")]
private static readonly BigInteger radix2E;
// Token: 0x04006BF0 RID: 27632
[Token(Token = "0x4006BF0")]
private static readonly BigInteger radix8;
// Token: 0x04006BF1 RID: 27633
[Token(Token = "0x4006BF1")]
private static readonly BigInteger radix8E;
// Token: 0x04006BF2 RID: 27634
[Token(Token = "0x4006BF2")]
private static readonly BigInteger radix10;
// Token: 0x04006BF3 RID: 27635
[Token(Token = "0x4006BF3")]
private static readonly BigInteger radix10E;
// Token: 0x04006BF4 RID: 27636
[Token(Token = "0x4006BF4")]
private static readonly BigInteger radix16;
// Token: 0x04006BF5 RID: 27637
[Token(Token = "0x4006BF5")]
private static readonly BigInteger radix16E;
// Token: 0x04006BF6 RID: 27638
[Token(Token = "0x4006BF6")]
private static readonly SecureRandom RandomSource;
// Token: 0x04006BF7 RID: 27639
[Token(Token = "0x4006BF7")]
private static readonly int[] ExpWindowThresholds;
// Token: 0x04006BF8 RID: 27640
[Token(Token = "0x4006BF8")]
private const int BitsPerByte = 8;
// Token: 0x04006BF9 RID: 27641
[Token(Token = "0x4006BF9")]
private const int BitsPerInt = 32;
// Token: 0x04006BFA RID: 27642
[Token(Token = "0x4006BFA")]
private const int BytesPerInt = 4;
// Token: 0x04006BFB RID: 27643
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4006BFB")]
private int[] magnitude;
// Token: 0x04006BFC RID: 27644
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x4006BFC")]
private int sign;
// Token: 0x04006BFD RID: 27645
[FieldOffset(Offset = "0x1C")]
[Token(Token = "0x4006BFD")]
private int nBits;
// Token: 0x04006BFE RID: 27646
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x4006BFE")]
private int nBitLength;
// Token: 0x04006BFF RID: 27647
[FieldOffset(Offset = "0x24")]
[Token(Token = "0x4006BFF")]
private int mQuote;
}
}