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