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

1540 lines
50 KiB
C#

using System;
using System.Runtime.InteropServices;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines
{
// Token: 0x020016D4 RID: 5844
[Token(Token = "0x20016D4")]
[StructLayout(3)]
public class ThreefishEngine : IBlockCipher
{
// Token: 0x06009D3A RID: 40250 RVA: 0x0023D938 File Offset: 0x0023BB38
[Token(Token = "0x6009D3A")]
[Address(RVA = "0x2111FC0", Offset = "0x21109C0", VA = "0x182111FC0")]
static ThreefishEngine()
{
int[] array = new int[ThreefishEngine.MOD9.Length];
int num = 0;
ThreefishEngine.MOD3 = array;
int[] mod = ThreefishEngine.MOD9;
if (num < mod.Length)
{
int[] mod2 = ThreefishEngine.MOD17;
ulong num2;
num2 += num2;
long num3 = (long)(num2 * (ulong)((uint)17));
num = (int)((long)num - num3);
int[] mod3 = ThreefishEngine.MOD9;
ulong num4;
num4 += num4;
num = (int)((ulong)num - num4);
int[] mod4 = ThreefishEngine.MOD5;
ulong num5;
num5 += num5;
num = (int)((ulong)num - num5);
int[] mod5 = ThreefishEngine.MOD3;
num++;
int[] mod6 = ThreefishEngine.MOD9;
}
}
// Token: 0x06009D3B RID: 40251 RVA: 0x0023D9FC File Offset: 0x0023BBFC
[Token(Token = "0x6009D3B")]
[Address(RVA = "0x2112240", Offset = "0x2110C40", VA = "0x182112240")]
public ThreefishEngine(int blocksizeBits)
{
/*
An exception occurred when decompiling this method (06009D3B)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.ThreefishEngine::.ctor(System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_86:
stloc:ArgumentException(var_8_90, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("Invalid blocksize - Threefish is defined with block size of 256, 512, or 1024 bits")))
}
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: 0x06009D3C RID: 40252 RVA: 0x0023DA9C File Offset: 0x0023BC9C
[Token(Token = "0x6009D3C")]
[Address(RVA = "0x2111100", Offset = "0x210FB00", VA = "0x182111100", Slot = "10")]
public virtual void Init(bool forEncryption, ICipherParameters parameters)
{
/*
An exception occurred when decompiling this method (06009D3C)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.ThreefishEngine::Init(System.Boolean,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.ICipherParameters)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_E2:
stloc:ArgumentException(var_18_F8, newobj:ArgumentException(ArgumentException::.ctor, call:string(string::Concat, ldstr:string[exp:object]("Threefish key must be same size as block ("), ldloc:ArgumentException[exp:object](var_17), ldstr:string[exp:object](" bytes)"))))
stloc:ArgumentException(var_21_110, newobj:ArgumentException(ArgumentException::.ctor, call:string(string::Concat, ldstr:string[exp:object]("Threefish tweak must be "), ldloc:int32[exp:object](var_20), ldstr:string[exp:object](" bytes"))))
}
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: 0x06009D3D RID: 40253 RVA: 0x0023DBBC File Offset: 0x0023BDBC
[Token(Token = "0x6009D3D")]
[Address(RVA = "0x21110B0", Offset = "0x210FAB0", VA = "0x1821110B0")]
internal void Init(bool forEncryption, ulong[] key, ulong[] tweak)
{
this.forEncryption = forEncryption;
if (key != 0)
{
this.SetKey(key);
}
if (tweak != 0)
{
this.SetTweak(tweak);
}
}
// Token: 0x06009D3E RID: 40254 RVA: 0x0023DBE8 File Offset: 0x0023BDE8
[Token(Token = "0x6009D3E")]
[Address(RVA = "0x2111A20", Offset = "0x2110420", VA = "0x182111A20")]
private void SetKey(ulong[] key)
{
int num;
do
{
num = this.blocksizeWords;
}
while (key.Length != num);
ulong[] array = this.kw;
int num2 = 0;
if (num > 0)
{
ulong num3 = key[num2];
array[0] = num3;
ulong[] array2 = this.kw;
num2++;
int num4 = this.blocksizeWords;
}
int num5 = 0;
array[0] = (ulong)2004413935125273122L;
int num6 = this.blocksizeWords;
ulong[] array3 = this.kw;
int num7 = num6 + 1;
Array.Copy(array3, num5, array3, num7, num6);
}
// Token: 0x06009D3F RID: 40255 RVA: 0x0023DC78 File Offset: 0x0023BE78
[Token(Token = "0x6009D3F")]
[Address(RVA = "0x2111BA0", Offset = "0x21105A0", VA = "0x182111BA0")]
private void SetTweak(ulong[] tweak)
{
while (tweak.Length != 2)
{
}
ulong[] array = this.t;
ulong num = tweak[0];
array[0] = num;
ulong[] array2 = this.t;
ulong num2 = tweak[1];
array2[1] = num2;
ulong[] array3 = this.t;
int length = array3.Length;
ulong num3 = array3[1];
array3[2] = num3;
ulong[] array4 = this.t;
int length2 = array4.Length;
ulong num4 = array4[0];
array4[3] = num4;
ulong[] array5 = this.t;
int length3 = array5.Length;
ulong num5 = array5[1];
array5[4] = num5;
}
// Token: 0x170018F7 RID: 6391
// (get) Token: 0x06009D40 RID: 40256 RVA: 0x0023DD34 File Offset: 0x0023BF34
[Token(Token = "0x170018F7")]
public virtual string AlgorithmName
{
[Token(Token = "0x6009D40")]
[Address(RVA = "0x2112380", Offset = "0x2110D80", VA = "0x182112380", Slot = "11")]
get
{
int num = this.blocksizeBytes;
return "Threefish-" + num;
}
}
// Token: 0x170018F8 RID: 6392
// (get) Token: 0x06009D41 RID: 40257 RVA: 0x0023DD54 File Offset: 0x0023BF54
[Token(Token = "0x170018F8")]
public virtual bool IsPartialBlockOkay
{
[Token(Token = "0x6009D41")]
[Address(RVA = "0x413970", Offset = "0x412370", VA = "0x180413970", Slot = "12")]
get
{
}
}
// Token: 0x06009D42 RID: 40258 RVA: 0x0023DD64 File Offset: 0x0023BF64
[Token(Token = "0x6009D42")]
[Address(RVA = "0x3C1C50", Offset = "0x3C0650", VA = "0x1803C1C50", Slot = "13")]
public virtual int GetBlockSize()
{
return this.blocksizeBytes;
}
// Token: 0x06009D43 RID: 40259 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x6009D43")]
[Address(RVA = "0x3C9F60", Offset = "0x3C8960", VA = "0x1803C9F60", Slot = "14")]
public virtual void Reset()
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x06009D44 RID: 40260 RVA: 0x0023DD78 File Offset: 0x0023BF78
[Token(Token = "0x6009D44")]
[Address(RVA = "0x21116F0", Offset = "0x21100F0", VA = "0x1821116F0", Slot = "15")]
public virtual int ProcessBlock(byte[] inBytes, int inOff, byte[] outBytes, int outOff)
{
/*
An exception occurred when decompiling this method (06009D44)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.ThreefishEngine::ProcessBlock(System.Byte[],System.Int32,System.Byte[],System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_A9:
stloc:DataLengthException(var_10_B3, newobj:DataLengthException(DataLengthException::.ctor, ldstr:string("Input buffer too short")))
}
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: 0x06009D45 RID: 40261 RVA: 0x0023DE3C File Offset: 0x0023C03C
[Token(Token = "0x6009D45")]
[Address(RVA = "0x2111560", Offset = "0x210FF60", VA = "0x182111560")]
internal int ProcessBlock(ulong[] inWords, ulong[] outWords)
{
/*
An exception occurred when decompiling this method (06009D45)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.ThreefishEngine::ProcessBlock(System.UInt64[],System.UInt64[])
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_5D:
stloc:DataLengthException(var_4_67, newobj:DataLengthException(DataLengthException::.ctor, ldstr:string("Output buffer too short")))
}
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: 0x06009D46 RID: 40262 RVA: 0x0023DEB4 File Offset: 0x0023C0B4
[Token(Token = "0x6009D46")]
[Address(RVA = "0x2110EB0", Offset = "0x210F8B0", VA = "0x182110EB0")]
internal static ulong BytesToWord(byte[] bytes, int off)
{
int length = bytes.Length;
int num = off + 1;
throw new NullReferenceException();
}
// Token: 0x06009D47 RID: 40263 RVA: 0x0023DED4 File Offset: 0x0023C0D4
[Token(Token = "0x6009D47")]
[Address(RVA = "0x2111DE0", Offset = "0x21107E0", VA = "0x182111DE0")]
internal static void WordToBytes(ulong word, byte[] bytes, int off)
{
int num = bytes.Length;
int num2 = off + 1;
num = off + 6;
}
// Token: 0x06009D48 RID: 40264 RVA: 0x0023DEF8 File Offset: 0x0023C0F8
[Token(Token = "0x6009D48")]
[Address(RVA = "0x2111A00", Offset = "0x2110400", VA = "0x182111A00")]
private static ulong RotlXor(ulong x, int n, ulong xor)
{
return x;
}
// Token: 0x06009D49 RID: 40265 RVA: 0x0023DF08 File Offset: 0x0023C108
[Token(Token = "0x6009D49")]
[Address(RVA = "0x2111FA0", Offset = "0x21109A0", VA = "0x182111FA0")]
private static ulong XorRotr(ulong x, int n, ulong xor)
{
return x;
}
// Token: 0x040066FE RID: 26366
[Token(Token = "0x40066FE")]
public const int BLOCKSIZE_256 = 256;
// Token: 0x040066FF RID: 26367
[Token(Token = "0x40066FF")]
public const int BLOCKSIZE_512 = 512;
// Token: 0x04006700 RID: 26368
[Token(Token = "0x4006700")]
public const int BLOCKSIZE_1024 = 1024;
// Token: 0x04006701 RID: 26369
[Token(Token = "0x4006701")]
private const int TWEAK_SIZE_BYTES = 16;
// Token: 0x04006702 RID: 26370
[Token(Token = "0x4006702")]
private const int TWEAK_SIZE_WORDS = 2;
// Token: 0x04006703 RID: 26371
[Token(Token = "0x4006703")]
private const int ROUNDS_256 = 72;
// Token: 0x04006704 RID: 26372
[Token(Token = "0x4006704")]
private const int ROUNDS_512 = 72;
// Token: 0x04006705 RID: 26373
[Token(Token = "0x4006705")]
private const int ROUNDS_1024 = 80;
// Token: 0x04006706 RID: 26374
[Token(Token = "0x4006706")]
private const int MAX_ROUNDS = 80;
// Token: 0x04006707 RID: 26375
[Token(Token = "0x4006707")]
private const ulong C_240 = 2004413935125273122UL;
// Token: 0x04006708 RID: 26376
[Token(Token = "0x4006708")]
private static readonly int[] MOD9 = new int[80];
// Token: 0x04006709 RID: 26377
[Token(Token = "0x4006709")]
private static readonly int[] MOD17 = new int[ThreefishEngine.MOD9.Length];
// Token: 0x0400670A RID: 26378
[Token(Token = "0x400670A")]
private static readonly int[] MOD5 = new int[ThreefishEngine.MOD9.Length];
// Token: 0x0400670B RID: 26379
[Token(Token = "0x400670B")]
private static readonly int[] MOD3;
// Token: 0x0400670C RID: 26380
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
[Token(Token = "0x400670C")]
private readonly int blocksizeBytes;
// Token: 0x0400670D RID: 26381
[global::Cpp2IlInjected.FieldOffset(Offset = "0x14")]
[Token(Token = "0x400670D")]
private readonly int blocksizeWords;
// Token: 0x0400670E RID: 26382
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
[Token(Token = "0x400670E")]
private readonly ulong[] currentBlock;
// Token: 0x0400670F RID: 26383
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
[Token(Token = "0x400670F")]
private readonly ulong[] t;
// Token: 0x04006710 RID: 26384
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
[Token(Token = "0x4006710")]
private readonly ulong[] kw;
// Token: 0x04006711 RID: 26385
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
[Token(Token = "0x4006711")]
private readonly ThreefishEngine.ThreefishCipher cipher;
// Token: 0x04006712 RID: 26386
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
[Token(Token = "0x4006712")]
private bool forEncryption;
// Token: 0x020016D5 RID: 5845
[Token(Token = "0x20016D5")]
private abstract class ThreefishCipher
{
// Token: 0x06009D4A RID: 40266 RVA: 0x0023DF18 File Offset: 0x0023C118
[Token(Token = "0x6009D4A")]
[Address(RVA = "0x641430", Offset = "0x63FE30", VA = "0x180641430")]
protected ThreefishCipher(ulong[] kw, ulong[] t)
{
this.kw = kw;
this.t = t;
}
// Token: 0x06009D4B RID: 40267
[Token(Token = "0x6009D4B")]
[Address(Slot = "4")]
internal abstract void EncryptBlock(ulong[] block, ulong[] outWords);
// Token: 0x06009D4C RID: 40268
[Token(Token = "0x6009D4C")]
[Address(Slot = "5")]
internal abstract void DecryptBlock(ulong[] block, ulong[] outWords);
// Token: 0x04006713 RID: 26387
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
[Token(Token = "0x4006713")]
protected readonly ulong[] t;
// Token: 0x04006714 RID: 26388
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
[Token(Token = "0x4006714")]
protected readonly ulong[] kw;
}
// Token: 0x020016D6 RID: 5846
[Token(Token = "0x20016D6")]
private sealed class Threefish256Cipher : ThreefishEngine.ThreefishCipher
{
// Token: 0x06009D4D RID: 40269 RVA: 0x0023DF3C File Offset: 0x0023C13C
[Token(Token = "0x6009D4D")]
[Address(RVA = "0x641430", Offset = "0x63FE30", VA = "0x180641430")]
public Threefish256Cipher(ulong[] kw, ulong[] t)
{
this.kw = kw;
this.t = t;
}
// Token: 0x06009D4E RID: 40270 RVA: 0x0023DF60 File Offset: 0x0023C160
[Token(Token = "0x6009D4E")]
[Address(RVA = "0x210F2E0", Offset = "0x210DCE0", VA = "0x18210F2E0", Slot = "4")]
internal override void EncryptBlock(ulong[] block, ulong[] outWords)
{
ulong[] kw;
ulong[] t;
int[] mod;
int[] mod2;
do
{
kw = this.kw;
t = this.t;
mod = ThreefishEngine.MOD5;
mod2 = ThreefishEngine.MOD3;
}
while (kw.Length != 9 || t.Length != 5);
int length = block.Length;
ulong num = block[1];
ulong num2 = block[2];
ulong num3 = t[0];
ulong num4 = block[3];
num += num3;
ulong num5 = t[1];
num2 += num5;
uint num7;
int num6 = mod[(int)num7];
int num8 = mod2[(int)num7];
int length2 = kw.Length;
num8 = (int)((ulong)num8 + num4);
num4 = num;
num = num4;
int num9 = num6 + 1;
int length3 = t.Length;
ulong num10 = kw[num9];
num4 += num10;
int num11 = num8 + 1;
num10 = num;
num10 += (ulong)num7;
ulong num12;
num10 += num12;
ulong num13 = kw[num6];
num13 += num4;
ulong num14 = t[num11];
num11 = (int)((ulong)num11 + num14);
num14 = num10;
num11 = (int)((ulong)num11 + num10);
num11 = (int)((ulong)num11 + num4);
num13 += num14;
num = num14;
num13 = num;
int num15 = num6 + 1;
num10 += num;
int num16 = num8 + 1;
num8 += 2;
ulong num17 = t[num8];
num6 += 4;
num17 += (ulong)num11;
num13 += (ulong)1L;
num7 = (uint)((ulong)num7 + num13);
num7 += (uint)2;
}
// Token: 0x06009D4F RID: 40271 RVA: 0x0023E0D8 File Offset: 0x0023C2D8
[Token(Token = "0x6009D4F")]
[Address(RVA = "0x210EC20", Offset = "0x210D620", VA = "0x18210EC20", Slot = "5")]
internal override void DecryptBlock(ulong[] block, ulong[] state)
{
ulong[] kw;
ulong[] t;
int[] mod;
int[] mod2;
int length;
do
{
kw = this.kw;
t = this.t;
mod = ThreefishEngine.MOD5;
mod2 = ThreefishEngine.MOD3;
length = kw.Length;
}
while (length != 9 || t.Length != 5);
int length2 = block.Length;
ulong num = block[0];
ulong num2 = block[1];
ulong num3 = block[2];
ulong num4 = block[3];
int num5 = mod[length2];
int num6 = mod2[length2];
num5++;
int num7 = num6 + 1;
ulong num8 = t[num7];
num2 -= num8;
ulong num9 = t[(int)num8];
num3 -= num9;
num4 -= (ulong)length;
num3 -= num3;
num -= num4;
num3 = num4;
num3 -= num3;
num -= num3;
num4 = num3;
num -= num4;
num3 -= num3;
int length3 = kw.Length;
int num10 = num5 + 1;
int length4 = t.Length;
int num11 = num6 + 1;
ulong num12 = t[num11];
num12 += num4;
num3 -= num12;
ulong num13 = kw[num5];
num13 += num3;
num -= num13;
num4 -= num13;
num13 = num3;
num -= num4;
num3 -= num13;
num3 = num13;
num13 = num4;
num -= num3;
num3 -= num13;
num4 = num13;
num13 = num3;
num -= num4;
num3 = num13;
num3 -= num3;
num3 -= num4;
num -= num3;
ulong num14 = kw[1];
ulong num15 = t[0];
ulong num16 = kw[2];
ulong num17 = t[1];
ulong num18 = kw[3];
num3 -= num15;
num3 -= num14;
num3 -= num17;
num3 -= num16;
num4 -= num18;
}
// Token: 0x04006715 RID: 26389
[Token(Token = "0x4006715")]
private const int ROTATION_0_0 = 14;
// Token: 0x04006716 RID: 26390
[Token(Token = "0x4006716")]
private const int ROTATION_0_1 = 16;
// Token: 0x04006717 RID: 26391
[Token(Token = "0x4006717")]
private const int ROTATION_1_0 = 52;
// Token: 0x04006718 RID: 26392
[Token(Token = "0x4006718")]
private const int ROTATION_1_1 = 57;
// Token: 0x04006719 RID: 26393
[Token(Token = "0x4006719")]
private const int ROTATION_2_0 = 23;
// Token: 0x0400671A RID: 26394
[Token(Token = "0x400671A")]
private const int ROTATION_2_1 = 40;
// Token: 0x0400671B RID: 26395
[Token(Token = "0x400671B")]
private const int ROTATION_3_0 = 5;
// Token: 0x0400671C RID: 26396
[Token(Token = "0x400671C")]
private const int ROTATION_3_1 = 37;
// Token: 0x0400671D RID: 26397
[Token(Token = "0x400671D")]
private const int ROTATION_4_0 = 25;
// Token: 0x0400671E RID: 26398
[Token(Token = "0x400671E")]
private const int ROTATION_4_1 = 33;
// Token: 0x0400671F RID: 26399
[Token(Token = "0x400671F")]
private const int ROTATION_5_0 = 46;
// Token: 0x04006720 RID: 26400
[Token(Token = "0x4006720")]
private const int ROTATION_5_1 = 12;
// Token: 0x04006721 RID: 26401
[Token(Token = "0x4006721")]
private const int ROTATION_6_0 = 58;
// Token: 0x04006722 RID: 26402
[Token(Token = "0x4006722")]
private const int ROTATION_6_1 = 22;
// Token: 0x04006723 RID: 26403
[Token(Token = "0x4006723")]
private const int ROTATION_7_0 = 32;
// Token: 0x04006724 RID: 26404
[Token(Token = "0x4006724")]
private const int ROTATION_7_1 = 32;
}
// Token: 0x020016D7 RID: 5847
[Token(Token = "0x20016D7")]
private sealed class Threefish512Cipher : ThreefishEngine.ThreefishCipher
{
// Token: 0x06009D50 RID: 40272 RVA: 0x0023E2B8 File Offset: 0x0023C4B8
[Token(Token = "0x6009D50")]
[Address(RVA = "0x641430", Offset = "0x63FE30", VA = "0x180641430")]
internal Threefish512Cipher(ulong[] kw, ulong[] t)
{
this.kw = kw;
this.t = t;
}
// Token: 0x06009D51 RID: 40273 RVA: 0x0023E2DC File Offset: 0x0023C4DC
[Token(Token = "0x6009D51")]
[Address(RVA = "0x2110480", Offset = "0x210EE80", VA = "0x182110480", Slot = "4")]
internal override void EncryptBlock(ulong[] block, ulong[] outWords)
{
ulong[] t;
ulong[] kw;
int[] mod;
int[] mod2;
do
{
t = this.t;
kw = this.kw;
mod = ThreefishEngine.MOD9;
mod2 = ThreefishEngine.MOD3;
}
while (kw.Length != 17 || t.Length != 5);
int length = block.Length;
ulong num = block[1];
ulong num2 = block[2];
ulong num3 = block[3];
ulong num4 = block[4];
ulong num5 = block[5];
ulong num6 = block[6];
ulong num7 = t[0];
ulong num8 = block[7];
num5 += num7;
ulong num9 = t[1];
num6 += num9;
uint num11;
int num10 = mod[(int)num11];
int num12 = mod2[(int)num11];
num2 += num3;
num = num3;
num4 = num;
num3 = num8;
num8 = num;
num6 = num8;
num = num4;
num5 = num3;
int length2 = kw.Length;
int num13 = num10 + 1;
ulong num14 = kw[num13];
num += num14;
ulong num15 = kw[(int)num14];
num4 = num6;
num4 += num15;
int length3 = t.Length;
ulong num16 = kw[mod];
num5 += num16;
int num17 = num12 + 1;
ulong num18 = kw[length3];
num16 = num5;
num6 = num4;
num3 += num4;
ulong num19 = kw[num10];
num16 += (ulong)num11;
num16 += num18;
ulong num20 = t[num17];
num19 += num;
num5 = num;
num4 = num5;
num += num5;
num5 += num20;
num20 = num16;
num5 += num16;
num16 = num5;
num += num20;
num5 += num4;
num20 = num6;
num6 = num20;
num5 = num20;
num3 = num5;
num += num5;
num4 += num6;
int num21 = num10 + 1;
num14 += num;
num15 += num5;
num16 += num4;
int length4 = t.Length;
num5 = num3;
num12 += 2;
num10 += 8;
uint num22 = num11 + 1U;
num11 += (uint)2;
num22 = (uint)((ulong)num22 + num5);
}
// Token: 0x06009D52 RID: 40274 RVA: 0x0023E4F4 File Offset: 0x0023C6F4
[Token(Token = "0x6009D52")]
[Address(RVA = "0x210F910", Offset = "0x210E310", VA = "0x18210F910", Slot = "5")]
internal override void DecryptBlock(ulong[] block, ulong[] state)
{
ulong[] t;
ulong[] kw;
int[] mod;
int[] mod2;
int length;
do
{
t = this.t;
kw = this.kw;
mod = ThreefishEngine.MOD9;
mod2 = ThreefishEngine.MOD3;
length = kw.Length;
}
while (length != 17 || t.Length != 5);
int i = block.Length;
ulong num = block[0];
ulong num2 = block[1];
ulong num3 = block[2];
ulong num4 = block[3];
ulong num5 = block[4];
ulong num6 = block[5];
ulong num7 = block[6];
ulong num8 = block[7];
i = length;
int num9 = mod[i];
int num10 = mod2[i];
int num11 = num9 + 1;
int num12 = num10 + 1;
ulong num13 = t[num12];
num6 -= num13;
ulong num14;
num14 -= (ulong)i;
num8 += num14;
ulong num15 = t[(int)num13];
num7 -= num15;
num15 = num5;
num7 -= num2;
num2 = num8;
num5 -= num15;
num3 -= num6;
num -= num2;
num15 = num5;
num2 = num15;
num5 -= num2;
num15 = num7;
num -= num6;
num8 = num15;
num15 = num2;
num7 -= num8;
num3 -= num15;
num15 = num3;
num6 = num15;
num2 = num15;
num3 -= num2;
num5 -= num6;
num15 = num8;
num7 -= num15;
num -= num15;
num6 = num2;
int length2 = kw.Length;
num2 = num15;
num15 = num6;
ulong num16 = kw[num9];
int num17 = num9 + 1;
num16 += num6;
num -= num16;
ulong num18 = kw[(int)num16];
num18 += num2;
num3 -= num18;
ulong num19 = kw[(int)num18];
num19 += num2;
num5 -= num19;
int length3 = t.Length;
num10++;
ulong num20 = t[num10];
num7 -= num20;
num2 = num6;
num7 -= num2;
num -= num15;
num6 = num2;
num3 -= num6;
num2 = num6;
num5 -= num2;
num18 = num5;
num2 = num18;
num -= num2;
num5 -= num2;
num2 = num15;
num3 -= num2;
num18 = num3;
num6 = num2;
num2 = num18;
num7 -= num2;
num3 -= num2;
num5 -= num6;
num18 = num7;
num2 = num18;
num18 = num2;
num7 -= num2;
num -= num18;
num15 = num6;
num2 = num18;
num7 -= num15;
num -= num2;
num3 -= num2;
num5 -= num2;
while (i >= 1)
{
}
ulong num21 = kw[1];
ulong num22 = kw[2];
ulong num23 = kw[3];
ulong num24 = kw[4];
ulong num25 = kw[5];
int length4 = t.Length;
ulong num26 = t[0];
ulong num27 = kw[6];
ulong num28 = t[1];
ulong num29 = kw[7];
num5 -= num24;
num2 -= num26;
num7 -= num28;
num7 -= num27;
num15 -= num29;
}
// Token: 0x04006725 RID: 26405
[Token(Token = "0x4006725")]
private const int ROTATION_0_0 = 46;
// Token: 0x04006726 RID: 26406
[Token(Token = "0x4006726")]
private const int ROTATION_0_1 = 36;
// Token: 0x04006727 RID: 26407
[Token(Token = "0x4006727")]
private const int ROTATION_0_2 = 19;
// Token: 0x04006728 RID: 26408
[Token(Token = "0x4006728")]
private const int ROTATION_0_3 = 37;
// Token: 0x04006729 RID: 26409
[Token(Token = "0x4006729")]
private const int ROTATION_1_0 = 33;
// Token: 0x0400672A RID: 26410
[Token(Token = "0x400672A")]
private const int ROTATION_1_1 = 27;
// Token: 0x0400672B RID: 26411
[Token(Token = "0x400672B")]
private const int ROTATION_1_2 = 14;
// Token: 0x0400672C RID: 26412
[Token(Token = "0x400672C")]
private const int ROTATION_1_3 = 42;
// Token: 0x0400672D RID: 26413
[Token(Token = "0x400672D")]
private const int ROTATION_2_0 = 17;
// Token: 0x0400672E RID: 26414
[Token(Token = "0x400672E")]
private const int ROTATION_2_1 = 49;
// Token: 0x0400672F RID: 26415
[Token(Token = "0x400672F")]
private const int ROTATION_2_2 = 36;
// Token: 0x04006730 RID: 26416
[Token(Token = "0x4006730")]
private const int ROTATION_2_3 = 39;
// Token: 0x04006731 RID: 26417
[Token(Token = "0x4006731")]
private const int ROTATION_3_0 = 44;
// Token: 0x04006732 RID: 26418
[Token(Token = "0x4006732")]
private const int ROTATION_3_1 = 9;
// Token: 0x04006733 RID: 26419
[Token(Token = "0x4006733")]
private const int ROTATION_3_2 = 54;
// Token: 0x04006734 RID: 26420
[Token(Token = "0x4006734")]
private const int ROTATION_3_3 = 56;
// Token: 0x04006735 RID: 26421
[Token(Token = "0x4006735")]
private const int ROTATION_4_0 = 39;
// Token: 0x04006736 RID: 26422
[Token(Token = "0x4006736")]
private const int ROTATION_4_1 = 30;
// Token: 0x04006737 RID: 26423
[Token(Token = "0x4006737")]
private const int ROTATION_4_2 = 34;
// Token: 0x04006738 RID: 26424
[Token(Token = "0x4006738")]
private const int ROTATION_4_3 = 24;
// Token: 0x04006739 RID: 26425
[Token(Token = "0x4006739")]
private const int ROTATION_5_0 = 13;
// Token: 0x0400673A RID: 26426
[Token(Token = "0x400673A")]
private const int ROTATION_5_1 = 50;
// Token: 0x0400673B RID: 26427
[Token(Token = "0x400673B")]
private const int ROTATION_5_2 = 10;
// Token: 0x0400673C RID: 26428
[Token(Token = "0x400673C")]
private const int ROTATION_5_3 = 17;
// Token: 0x0400673D RID: 26429
[Token(Token = "0x400673D")]
private const int ROTATION_6_0 = 25;
// Token: 0x0400673E RID: 26430
[Token(Token = "0x400673E")]
private const int ROTATION_6_1 = 29;
// Token: 0x0400673F RID: 26431
[Token(Token = "0x400673F")]
private const int ROTATION_6_2 = 39;
// Token: 0x04006740 RID: 26432
[Token(Token = "0x4006740")]
private const int ROTATION_6_3 = 43;
// Token: 0x04006741 RID: 26433
[Token(Token = "0x4006741")]
private const int ROTATION_7_0 = 8;
// Token: 0x04006742 RID: 26434
[Token(Token = "0x4006742")]
private const int ROTATION_7_1 = 35;
// Token: 0x04006743 RID: 26435
[Token(Token = "0x4006743")]
private const int ROTATION_7_2 = 56;
// Token: 0x04006744 RID: 26436
[Token(Token = "0x4006744")]
private const int ROTATION_7_3 = 22;
}
// Token: 0x020016D8 RID: 5848
[Token(Token = "0x20016D8")]
private sealed class Threefish1024Cipher : ThreefishEngine.ThreefishCipher
{
// Token: 0x06009D53 RID: 40275 RVA: 0x0023E818 File Offset: 0x0023CA18
[Token(Token = "0x6009D53")]
[Address(RVA = "0x641430", Offset = "0x63FE30", VA = "0x180641430")]
public Threefish1024Cipher(ulong[] kw, ulong[] t)
{
this.kw = kw;
this.t = t;
}
// Token: 0x06009D54 RID: 40276 RVA: 0x0023E83C File Offset: 0x0023CA3C
[Token(Token = "0x6009D54")]
[Address(RVA = "0x210D770", Offset = "0x210C170", VA = "0x18210D770", Slot = "4")]
internal override void EncryptBlock(ulong[] block, ulong[] outWords)
{
ulong[] array;
ulong[] array2;
int[] array3;
int[] array4;
do
{
array = this.kw;
array2 = this.t;
array3 = ThreefishEngine.MOD17;
array4 = ThreefishEngine.MOD3;
}
while (array.Length != 33 || array2.Length != 5);
ulong num = array2[0];
ulong num2 = array2[1];
array4 += num2;
uint num4;
int num3 = array3[(int)num4];
int num5 = array4[(int)num4];
array += typeof(ThreefishEngine).TypeHandle;
array4 += this;
array += this;
array4 += array4;
array3 += array4;
int length = array.Length;
int num6 = num3 + 1;
int length2 = array2.Length;
int num7 = num5 + 1;
num3 += 15;
array3 += num4;
ulong num8 = array[num3];
num8 += this;
ulong num9 = array[num6];
array3 += num9;
array3 += this;
ulong num10 = array[array4];
array4 += num10;
array4 += this;
ulong num11 = array[this];
array4 += num11;
array4 += array4;
ulong num12 = array[this];
ulong num13 = array[this];
array += num12;
num13 += array4;
ulong num14 = array[this];
array2 += array3;
array += this;
num13 += this;
array4 += array4;
ulong num15 = array[num6];
ulong num16 = array[array4];
num16 += array3;
ulong num17 = array[array4];
num17 += array4;
ulong num18 = array[this];
ulong num19 = array[this];
num19 += num8;
ulong num20 = array[this];
ulong num21 = array[this];
num21 += this;
num5++;
int length3 = array2.Length;
num5 += 2;
ulong num22 = array2[num5];
num4 += (uint)1;
num4 += array3;
num4 += (uint)2;
}
// Token: 0x06009D55 RID: 40277 RVA: 0x0023E9F8 File Offset: 0x0023CBF8
[Token(Token = "0x6009D55")]
[Address(RVA = "0x210C020", Offset = "0x210AA20", VA = "0x18210C020", Slot = "5")]
internal override void DecryptBlock(ulong[] block, ulong[] state)
{
ulong[] t;
ulong[] kw;
int[] mod;
int[] mod2;
do
{
t = this.t;
kw = this.kw;
mod = ThreefishEngine.MOD17;
mod2 = ThreefishEngine.MOD3;
}
while (kw.Length != 33 || t.Length != 5);
int length = block.Length;
ulong num = block[1];
ulong num2 = block[2];
ulong num3 = block[3];
ulong num4 = block[5];
ulong num5 = block[6];
ulong num6 = block[7];
ulong num7 = block[8];
ulong num8 = block[9];
ulong num9 = block[10];
ulong num10 = block[11];
ulong num11 = block[12];
ulong num12 = block[13];
ulong num13 = block[14];
ulong num14 = block[15];
uint num16;
int num15 = mod[(int)num16];
int num17 = mod2[(int)num16];
int num18 = num15 + 1;
num17++;
ulong num19 = t[num17];
num17 += 2;
ulong num20 = t[num17];
num13 -= num20;
num14 -= (ulong)num16;
num2 -= num10;
num13 = num12;
num5 -= num13;
num14 = num8;
num8 = num7;
num13 -= num8;
num5 = num8;
num8 = num9;
num7 -= num5;
num7 = num8;
num8 = num11;
num9 -= num7;
num13 = num8;
num11 -= num13;
num11 = num13;
num2 -= num5;
num5 -= num5;
num8 = num14;
num11 -= num8;
num5 = num10;
num11 = num13;
num7 = num11;
num7 -= num5;
num13 -= num7;
num13 = num9;
num9 -= num13;
num7 = num13;
num10 = num7;
num2 -= num10;
num5 -= num5;
num14 = num8;
num9 = num11;
num5 = num9;
num11 -= num5;
num9 = num13;
num7 = num9;
num13 -= num7;
num9 = num7;
num13 = num9;
num7 -= num13;
num5 = num13;
num9 = num14;
int length2 = kw.Length;
ulong num21 = kw[num15];
num21 += num5;
int num22 = num15 + 1;
ulong num23 = kw[num22];
num23 += num5;
num2 -= num23;
ulong num24 = kw[(int)num23];
ulong num25 = kw[(int)num24];
num5 -= num25;
ulong num26 = kw[(int)num25];
num7 -= num26;
ulong num27 = kw[(int)num26];
num9 -= num27;
ulong num28 = kw[(int)num27];
num28 += num10;
num11 -= num28;
int length3 = t.Length;
num17++;
ulong num29 = t[num17];
num15 += 15;
num29 += num9;
num13 -= num29;
num9 -= (ulong)num16;
num2 -= num9;
num5 -= num10;
num13 -= num5;
num5 = num9;
num7 -= num5;
num9 = num5;
num9 -= num9;
num25 = num9;
num11 -= num25;
num9 = num5;
num11 = num9;
num2 -= num9;
num2 = num5;
num5 -= num2;
num5 = num13;
num13 -= num5;
num5 = num9;
num7 -= num5;
num13 = num9;
num9 -= num13;
num9 = num5;
num2 -= num9;
num5 -= num5;
num9 = num11;
num11 = num9;
num9 = num11;
num9 -= num11;
num5 = num9;
num9 = num13;
num11 -= num5;
num5 = num9;
num9 = num7;
num13 -= num5;
num11 = num9;
num7 -= num11;
num9 = num5;
num2 -= num9;
num5 -= num11;
num11 = num9;
num2 = num9;
num7 -= num11;
num11 = num5;
num13 -= num2;
num5 = num9;
num5 -= num11;
num11 -= num9;
while (num16 >= (uint)1)
{
}
ulong num30 = kw[1];
ulong num31 = kw[2];
ulong num32 = kw[3];
ulong num33 = kw[4];
ulong num34 = kw[5];
ulong num35 = kw[6];
ulong num36 = kw[7];
ulong num37 = kw[8];
ulong num38 = kw[9];
ulong num39 = kw[10];
ulong num40 = kw[11];
ulong num41 = kw[12];
ulong num42 = kw[13];
int length4 = t.Length;
ulong num43 = t[0];
ulong num44 = kw[14];
ulong num45 = t[1];
ulong num46 = kw[15];
num13 -= num45;
num13 -= num44;
num2 -= num46;
}
// Token: 0x04006745 RID: 26437
[Token(Token = "0x4006745")]
private const int ROTATION_0_0 = 24;
// Token: 0x04006746 RID: 26438
[Token(Token = "0x4006746")]
private const int ROTATION_0_1 = 13;
// Token: 0x04006747 RID: 26439
[Token(Token = "0x4006747")]
private const int ROTATION_0_2 = 8;
// Token: 0x04006748 RID: 26440
[Token(Token = "0x4006748")]
private const int ROTATION_0_3 = 47;
// Token: 0x04006749 RID: 26441
[Token(Token = "0x4006749")]
private const int ROTATION_0_4 = 8;
// Token: 0x0400674A RID: 26442
[Token(Token = "0x400674A")]
private const int ROTATION_0_5 = 17;
// Token: 0x0400674B RID: 26443
[Token(Token = "0x400674B")]
private const int ROTATION_0_6 = 22;
// Token: 0x0400674C RID: 26444
[Token(Token = "0x400674C")]
private const int ROTATION_0_7 = 37;
// Token: 0x0400674D RID: 26445
[Token(Token = "0x400674D")]
private const int ROTATION_1_0 = 38;
// Token: 0x0400674E RID: 26446
[Token(Token = "0x400674E")]
private const int ROTATION_1_1 = 19;
// Token: 0x0400674F RID: 26447
[Token(Token = "0x400674F")]
private const int ROTATION_1_2 = 10;
// Token: 0x04006750 RID: 26448
[Token(Token = "0x4006750")]
private const int ROTATION_1_3 = 55;
// Token: 0x04006751 RID: 26449
[Token(Token = "0x4006751")]
private const int ROTATION_1_4 = 49;
// Token: 0x04006752 RID: 26450
[Token(Token = "0x4006752")]
private const int ROTATION_1_5 = 18;
// Token: 0x04006753 RID: 26451
[Token(Token = "0x4006753")]
private const int ROTATION_1_6 = 23;
// Token: 0x04006754 RID: 26452
[Token(Token = "0x4006754")]
private const int ROTATION_1_7 = 52;
// Token: 0x04006755 RID: 26453
[Token(Token = "0x4006755")]
private const int ROTATION_2_0 = 33;
// Token: 0x04006756 RID: 26454
[Token(Token = "0x4006756")]
private const int ROTATION_2_1 = 4;
// Token: 0x04006757 RID: 26455
[Token(Token = "0x4006757")]
private const int ROTATION_2_2 = 51;
// Token: 0x04006758 RID: 26456
[Token(Token = "0x4006758")]
private const int ROTATION_2_3 = 13;
// Token: 0x04006759 RID: 26457
[Token(Token = "0x4006759")]
private const int ROTATION_2_4 = 34;
// Token: 0x0400675A RID: 26458
[Token(Token = "0x400675A")]
private const int ROTATION_2_5 = 41;
// Token: 0x0400675B RID: 26459
[Token(Token = "0x400675B")]
private const int ROTATION_2_6 = 59;
// Token: 0x0400675C RID: 26460
[Token(Token = "0x400675C")]
private const int ROTATION_2_7 = 17;
// Token: 0x0400675D RID: 26461
[Token(Token = "0x400675D")]
private const int ROTATION_3_0 = 5;
// Token: 0x0400675E RID: 26462
[Token(Token = "0x400675E")]
private const int ROTATION_3_1 = 20;
// Token: 0x0400675F RID: 26463
[Token(Token = "0x400675F")]
private const int ROTATION_3_2 = 48;
// Token: 0x04006760 RID: 26464
[Token(Token = "0x4006760")]
private const int ROTATION_3_3 = 41;
// Token: 0x04006761 RID: 26465
[Token(Token = "0x4006761")]
private const int ROTATION_3_4 = 47;
// Token: 0x04006762 RID: 26466
[Token(Token = "0x4006762")]
private const int ROTATION_3_5 = 28;
// Token: 0x04006763 RID: 26467
[Token(Token = "0x4006763")]
private const int ROTATION_3_6 = 16;
// Token: 0x04006764 RID: 26468
[Token(Token = "0x4006764")]
private const int ROTATION_3_7 = 25;
// Token: 0x04006765 RID: 26469
[Token(Token = "0x4006765")]
private const int ROTATION_4_0 = 41;
// Token: 0x04006766 RID: 26470
[Token(Token = "0x4006766")]
private const int ROTATION_4_1 = 9;
// Token: 0x04006767 RID: 26471
[Token(Token = "0x4006767")]
private const int ROTATION_4_2 = 37;
// Token: 0x04006768 RID: 26472
[Token(Token = "0x4006768")]
private const int ROTATION_4_3 = 31;
// Token: 0x04006769 RID: 26473
[Token(Token = "0x4006769")]
private const int ROTATION_4_4 = 12;
// Token: 0x0400676A RID: 26474
[Token(Token = "0x400676A")]
private const int ROTATION_4_5 = 47;
// Token: 0x0400676B RID: 26475
[Token(Token = "0x400676B")]
private const int ROTATION_4_6 = 44;
// Token: 0x0400676C RID: 26476
[Token(Token = "0x400676C")]
private const int ROTATION_4_7 = 30;
// Token: 0x0400676D RID: 26477
[Token(Token = "0x400676D")]
private const int ROTATION_5_0 = 16;
// Token: 0x0400676E RID: 26478
[Token(Token = "0x400676E")]
private const int ROTATION_5_1 = 34;
// Token: 0x0400676F RID: 26479
[Token(Token = "0x400676F")]
private const int ROTATION_5_2 = 56;
// Token: 0x04006770 RID: 26480
[Token(Token = "0x4006770")]
private const int ROTATION_5_3 = 51;
// Token: 0x04006771 RID: 26481
[Token(Token = "0x4006771")]
private const int ROTATION_5_4 = 4;
// Token: 0x04006772 RID: 26482
[Token(Token = "0x4006772")]
private const int ROTATION_5_5 = 53;
// Token: 0x04006773 RID: 26483
[Token(Token = "0x4006773")]
private const int ROTATION_5_6 = 42;
// Token: 0x04006774 RID: 26484
[Token(Token = "0x4006774")]
private const int ROTATION_5_7 = 41;
// Token: 0x04006775 RID: 26485
[Token(Token = "0x4006775")]
private const int ROTATION_6_0 = 31;
// Token: 0x04006776 RID: 26486
[Token(Token = "0x4006776")]
private const int ROTATION_6_1 = 44;
// Token: 0x04006777 RID: 26487
[Token(Token = "0x4006777")]
private const int ROTATION_6_2 = 47;
// Token: 0x04006778 RID: 26488
[Token(Token = "0x4006778")]
private const int ROTATION_6_3 = 46;
// Token: 0x04006779 RID: 26489
[Token(Token = "0x4006779")]
private const int ROTATION_6_4 = 19;
// Token: 0x0400677A RID: 26490
[Token(Token = "0x400677A")]
private const int ROTATION_6_5 = 42;
// Token: 0x0400677B RID: 26491
[Token(Token = "0x400677B")]
private const int ROTATION_6_6 = 44;
// Token: 0x0400677C RID: 26492
[Token(Token = "0x400677C")]
private const int ROTATION_6_7 = 25;
// Token: 0x0400677D RID: 26493
[Token(Token = "0x400677D")]
private const int ROTATION_7_0 = 9;
// Token: 0x0400677E RID: 26494
[Token(Token = "0x400677E")]
private const int ROTATION_7_1 = 48;
// Token: 0x0400677F RID: 26495
[Token(Token = "0x400677F")]
private const int ROTATION_7_2 = 35;
// Token: 0x04006780 RID: 26496
[Token(Token = "0x4006780")]
private const int ROTATION_7_3 = 52;
// Token: 0x04006781 RID: 26497
[Token(Token = "0x4006781")]
private const int ROTATION_7_4 = 23;
// Token: 0x04006782 RID: 26498
[Token(Token = "0x4006782")]
private const int ROTATION_7_5 = 31;
// Token: 0x04006783 RID: 26499
[Token(Token = "0x4006783")]
private const int ROTATION_7_6 = 37;
// Token: 0x04006784 RID: 26500
[Token(Token = "0x4006784")]
private const int ROTATION_7_7 = 20;
}
}
}