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

1538 lines
49 KiB
C#

using System;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines
{
// Token: 0x02001D91 RID: 7569
[Token(Token = "0x2001D91")]
public class ThreefishEngine : IBlockCipher
{
// Token: 0x0600BCE2 RID: 48354 RVA: 0x0029E318 File Offset: 0x0029C518
[Token(Token = "0x600BCE2")]
[Address(RVA = "0x258AAD0", Offset = "0x2589AD0", VA = "0x18258AAD0")]
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: 0x0600BCE3 RID: 48355 RVA: 0x0029E3DC File Offset: 0x0029C5DC
[Token(Token = "0x600BCE3")]
[Address(RVA = "0x258AD50", Offset = "0x2589D50", VA = "0x18258AD50")]
public ThreefishEngine(int blocksizeBits)
{
/*
An exception occurred when decompiling this method (0600BCE3)
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: 0x0600BCE4 RID: 48356 RVA: 0x0029E47C File Offset: 0x0029C67C
[Token(Token = "0x600BCE4")]
[Address(RVA = "0x2589C10", Offset = "0x2588C10", VA = "0x182589C10", Slot = "10")]
public virtual void Init(bool forEncryption, ICipherParameters parameters)
{
/*
An exception occurred when decompiling this method (0600BCE4)
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: 0x0600BCE5 RID: 48357 RVA: 0x0029E59C File Offset: 0x0029C79C
[Token(Token = "0x600BCE5")]
[Address(RVA = "0x2589BC0", Offset = "0x2588BC0", VA = "0x182589BC0")]
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: 0x0600BCE6 RID: 48358 RVA: 0x0029E5C8 File Offset: 0x0029C7C8
[Token(Token = "0x600BCE6")]
[Address(RVA = "0x258A530", Offset = "0x2589530", VA = "0x18258A530")]
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: 0x0600BCE7 RID: 48359 RVA: 0x0029E658 File Offset: 0x0029C858
[Token(Token = "0x600BCE7")]
[Address(RVA = "0x258A6B0", Offset = "0x25896B0", VA = "0x18258A6B0")]
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: 0x17001D95 RID: 7573
// (get) Token: 0x0600BCE8 RID: 48360 RVA: 0x0029E714 File Offset: 0x0029C914
[Token(Token = "0x17001D95")]
public virtual string AlgorithmName
{
[Token(Token = "0x600BCE8")]
[Address(RVA = "0x258AE90", Offset = "0x2589E90", VA = "0x18258AE90", Slot = "11")]
get
{
int num = this.blocksizeBytes;
return "Threefish-" + num;
}
}
// Token: 0x17001D96 RID: 7574
// (get) Token: 0x0600BCE9 RID: 48361 RVA: 0x0029E734 File Offset: 0x0029C934
[Token(Token = "0x17001D96")]
public virtual bool IsPartialBlockOkay
{
[Token(Token = "0x600BCE9")]
[Address(RVA = "0x424690", Offset = "0x423690", VA = "0x180424690", Slot = "12")]
get
{
}
}
// Token: 0x0600BCEA RID: 48362 RVA: 0x0029E744 File Offset: 0x0029C944
[Token(Token = "0x600BCEA")]
[Address(RVA = "0x40F000", Offset = "0x40E000", VA = "0x18040F000", Slot = "13")]
public virtual int GetBlockSize()
{
return this.blocksizeBytes;
}
// Token: 0x0600BCEB RID: 48363 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x600BCEB")]
[Address(RVA = "0x4242D0", Offset = "0x4232D0", VA = "0x1804242D0", Slot = "14")]
public virtual void Reset()
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600BCEC RID: 48364 RVA: 0x0029E758 File Offset: 0x0029C958
[Token(Token = "0x600BCEC")]
[Address(RVA = "0x258A200", Offset = "0x2589200", VA = "0x18258A200", Slot = "15")]
public virtual int ProcessBlock(byte[] inBytes, int inOff, byte[] outBytes, int outOff)
{
/*
An exception occurred when decompiling this method (0600BCEC)
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: 0x0600BCED RID: 48365 RVA: 0x0029E81C File Offset: 0x0029CA1C
[Token(Token = "0x600BCED")]
[Address(RVA = "0x258A070", Offset = "0x2589070", VA = "0x18258A070")]
internal int ProcessBlock(ulong[] inWords, ulong[] outWords)
{
/*
An exception occurred when decompiling this method (0600BCED)
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: 0x0600BCEE RID: 48366 RVA: 0x0029E894 File Offset: 0x0029CA94
[Token(Token = "0x600BCEE")]
[Address(RVA = "0x25899C0", Offset = "0x25889C0", VA = "0x1825899C0")]
internal static ulong BytesToWord(byte[] bytes, int off)
{
int length = bytes.Length;
int num = off + 1;
throw new NullReferenceException();
}
// Token: 0x0600BCEF RID: 48367 RVA: 0x0029E8B4 File Offset: 0x0029CAB4
[Token(Token = "0x600BCEF")]
[Address(RVA = "0x258A8F0", Offset = "0x25898F0", VA = "0x18258A8F0")]
internal static void WordToBytes(ulong word, byte[] bytes, int off)
{
int num = bytes.Length;
int num2 = off + 1;
num = off + 6;
}
// Token: 0x0600BCF0 RID: 48368 RVA: 0x0029E8D8 File Offset: 0x0029CAD8
[Token(Token = "0x600BCF0")]
[Address(RVA = "0x258A510", Offset = "0x2589510", VA = "0x18258A510")]
private static ulong RotlXor(ulong x, int n, ulong xor)
{
return x;
}
// Token: 0x0600BCF1 RID: 48369 RVA: 0x0029E8E8 File Offset: 0x0029CAE8
[Token(Token = "0x600BCF1")]
[Address(RVA = "0x258AAB0", Offset = "0x2589AB0", VA = "0x18258AAB0")]
private static ulong XorRotr(ulong x, int n, ulong xor)
{
return x;
}
// Token: 0x040076FA RID: 30458
[Token(Token = "0x40076FA")]
public const int BLOCKSIZE_256 = 256;
// Token: 0x040076FB RID: 30459
[Token(Token = "0x40076FB")]
public const int BLOCKSIZE_512 = 512;
// Token: 0x040076FC RID: 30460
[Token(Token = "0x40076FC")]
public const int BLOCKSIZE_1024 = 1024;
// Token: 0x040076FD RID: 30461
[Token(Token = "0x40076FD")]
private const int TWEAK_SIZE_BYTES = 16;
// Token: 0x040076FE RID: 30462
[Token(Token = "0x40076FE")]
private const int TWEAK_SIZE_WORDS = 2;
// Token: 0x040076FF RID: 30463
[Token(Token = "0x40076FF")]
private const int ROUNDS_256 = 72;
// Token: 0x04007700 RID: 30464
[Token(Token = "0x4007700")]
private const int ROUNDS_512 = 72;
// Token: 0x04007701 RID: 30465
[Token(Token = "0x4007701")]
private const int ROUNDS_1024 = 80;
// Token: 0x04007702 RID: 30466
[Token(Token = "0x4007702")]
private const int MAX_ROUNDS = 80;
// Token: 0x04007703 RID: 30467
[Token(Token = "0x4007703")]
private const ulong C_240 = 2004413935125273122UL;
// Token: 0x04007704 RID: 30468
[Token(Token = "0x4007704")]
private static readonly int[] MOD9 = new int[80];
// Token: 0x04007705 RID: 30469
[Token(Token = "0x4007705")]
private static readonly int[] MOD17 = new int[ThreefishEngine.MOD9.Length];
// Token: 0x04007706 RID: 30470
[Token(Token = "0x4007706")]
private static readonly int[] MOD5 = new int[ThreefishEngine.MOD9.Length];
// Token: 0x04007707 RID: 30471
[Token(Token = "0x4007707")]
private static readonly int[] MOD3;
// Token: 0x04007708 RID: 30472
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4007708")]
private readonly int blocksizeBytes;
// Token: 0x04007709 RID: 30473
[FieldOffset(Offset = "0x14")]
[Token(Token = "0x4007709")]
private readonly int blocksizeWords;
// Token: 0x0400770A RID: 30474
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x400770A")]
private readonly ulong[] currentBlock;
// Token: 0x0400770B RID: 30475
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x400770B")]
private readonly ulong[] t;
// Token: 0x0400770C RID: 30476
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x400770C")]
private readonly ulong[] kw;
// Token: 0x0400770D RID: 30477
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x400770D")]
private readonly ThreefishEngine.ThreefishCipher cipher;
// Token: 0x0400770E RID: 30478
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x400770E")]
private bool forEncryption;
// Token: 0x02001D92 RID: 7570
[Token(Token = "0x2001D92")]
private abstract class ThreefishCipher
{
// Token: 0x0600BCF2 RID: 48370 RVA: 0x0029E8F8 File Offset: 0x0029CAF8
[Token(Token = "0x600BCF2")]
[Address(RVA = "0xE5DFE0", Offset = "0xE5CFE0", VA = "0x180E5DFE0")]
protected ThreefishCipher(ulong[] kw, ulong[] t)
{
this.kw = kw;
this.t = t;
}
// Token: 0x0600BCF3 RID: 48371
[Token(Token = "0x600BCF3")]
[Address(Slot = "4")]
internal abstract void EncryptBlock(ulong[] block, ulong[] outWords);
// Token: 0x0600BCF4 RID: 48372
[Token(Token = "0x600BCF4")]
[Address(Slot = "5")]
internal abstract void DecryptBlock(ulong[] block, ulong[] outWords);
// Token: 0x0400770F RID: 30479
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x400770F")]
protected readonly ulong[] t;
// Token: 0x04007710 RID: 30480
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x4007710")]
protected readonly ulong[] kw;
}
// Token: 0x02001D93 RID: 7571
[Token(Token = "0x2001D93")]
private sealed class Threefish256Cipher : ThreefishEngine.ThreefishCipher
{
// Token: 0x0600BCF5 RID: 48373 RVA: 0x0029E91C File Offset: 0x0029CB1C
[Token(Token = "0x600BCF5")]
[Address(RVA = "0xE5DFE0", Offset = "0xE5CFE0", VA = "0x180E5DFE0")]
public Threefish256Cipher(ulong[] kw, ulong[] t)
{
this.kw = kw;
this.t = t;
}
// Token: 0x0600BCF6 RID: 48374 RVA: 0x0029E940 File Offset: 0x0029CB40
[Token(Token = "0x600BCF6")]
[Address(RVA = "0x2587DF0", Offset = "0x2586DF0", VA = "0x182587DF0", 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: 0x0600BCF7 RID: 48375 RVA: 0x0029EAB8 File Offset: 0x0029CCB8
[Token(Token = "0x600BCF7")]
[Address(RVA = "0x2587730", Offset = "0x2586730", VA = "0x182587730", 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: 0x04007711 RID: 30481
[Token(Token = "0x4007711")]
private const int ROTATION_0_0 = 14;
// Token: 0x04007712 RID: 30482
[Token(Token = "0x4007712")]
private const int ROTATION_0_1 = 16;
// Token: 0x04007713 RID: 30483
[Token(Token = "0x4007713")]
private const int ROTATION_1_0 = 52;
// Token: 0x04007714 RID: 30484
[Token(Token = "0x4007714")]
private const int ROTATION_1_1 = 57;
// Token: 0x04007715 RID: 30485
[Token(Token = "0x4007715")]
private const int ROTATION_2_0 = 23;
// Token: 0x04007716 RID: 30486
[Token(Token = "0x4007716")]
private const int ROTATION_2_1 = 40;
// Token: 0x04007717 RID: 30487
[Token(Token = "0x4007717")]
private const int ROTATION_3_0 = 5;
// Token: 0x04007718 RID: 30488
[Token(Token = "0x4007718")]
private const int ROTATION_3_1 = 37;
// Token: 0x04007719 RID: 30489
[Token(Token = "0x4007719")]
private const int ROTATION_4_0 = 25;
// Token: 0x0400771A RID: 30490
[Token(Token = "0x400771A")]
private const int ROTATION_4_1 = 33;
// Token: 0x0400771B RID: 30491
[Token(Token = "0x400771B")]
private const int ROTATION_5_0 = 46;
// Token: 0x0400771C RID: 30492
[Token(Token = "0x400771C")]
private const int ROTATION_5_1 = 12;
// Token: 0x0400771D RID: 30493
[Token(Token = "0x400771D")]
private const int ROTATION_6_0 = 58;
// Token: 0x0400771E RID: 30494
[Token(Token = "0x400771E")]
private const int ROTATION_6_1 = 22;
// Token: 0x0400771F RID: 30495
[Token(Token = "0x400771F")]
private const int ROTATION_7_0 = 32;
// Token: 0x04007720 RID: 30496
[Token(Token = "0x4007720")]
private const int ROTATION_7_1 = 32;
}
// Token: 0x02001D94 RID: 7572
[Token(Token = "0x2001D94")]
private sealed class Threefish512Cipher : ThreefishEngine.ThreefishCipher
{
// Token: 0x0600BCF8 RID: 48376 RVA: 0x0029EC98 File Offset: 0x0029CE98
[Token(Token = "0x600BCF8")]
[Address(RVA = "0xE5DFE0", Offset = "0xE5CFE0", VA = "0x180E5DFE0")]
internal Threefish512Cipher(ulong[] kw, ulong[] t)
{
this.kw = kw;
this.t = t;
}
// Token: 0x0600BCF9 RID: 48377 RVA: 0x0029ECBC File Offset: 0x0029CEBC
[Token(Token = "0x600BCF9")]
[Address(RVA = "0x2588F90", Offset = "0x2587F90", VA = "0x182588F90", 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: 0x0600BCFA RID: 48378 RVA: 0x0029EED4 File Offset: 0x0029D0D4
[Token(Token = "0x600BCFA")]
[Address(RVA = "0x2588420", Offset = "0x2587420", VA = "0x182588420", 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: 0x04007721 RID: 30497
[Token(Token = "0x4007721")]
private const int ROTATION_0_0 = 46;
// Token: 0x04007722 RID: 30498
[Token(Token = "0x4007722")]
private const int ROTATION_0_1 = 36;
// Token: 0x04007723 RID: 30499
[Token(Token = "0x4007723")]
private const int ROTATION_0_2 = 19;
// Token: 0x04007724 RID: 30500
[Token(Token = "0x4007724")]
private const int ROTATION_0_3 = 37;
// Token: 0x04007725 RID: 30501
[Token(Token = "0x4007725")]
private const int ROTATION_1_0 = 33;
// Token: 0x04007726 RID: 30502
[Token(Token = "0x4007726")]
private const int ROTATION_1_1 = 27;
// Token: 0x04007727 RID: 30503
[Token(Token = "0x4007727")]
private const int ROTATION_1_2 = 14;
// Token: 0x04007728 RID: 30504
[Token(Token = "0x4007728")]
private const int ROTATION_1_3 = 42;
// Token: 0x04007729 RID: 30505
[Token(Token = "0x4007729")]
private const int ROTATION_2_0 = 17;
// Token: 0x0400772A RID: 30506
[Token(Token = "0x400772A")]
private const int ROTATION_2_1 = 49;
// Token: 0x0400772B RID: 30507
[Token(Token = "0x400772B")]
private const int ROTATION_2_2 = 36;
// Token: 0x0400772C RID: 30508
[Token(Token = "0x400772C")]
private const int ROTATION_2_3 = 39;
// Token: 0x0400772D RID: 30509
[Token(Token = "0x400772D")]
private const int ROTATION_3_0 = 44;
// Token: 0x0400772E RID: 30510
[Token(Token = "0x400772E")]
private const int ROTATION_3_1 = 9;
// Token: 0x0400772F RID: 30511
[Token(Token = "0x400772F")]
private const int ROTATION_3_2 = 54;
// Token: 0x04007730 RID: 30512
[Token(Token = "0x4007730")]
private const int ROTATION_3_3 = 56;
// Token: 0x04007731 RID: 30513
[Token(Token = "0x4007731")]
private const int ROTATION_4_0 = 39;
// Token: 0x04007732 RID: 30514
[Token(Token = "0x4007732")]
private const int ROTATION_4_1 = 30;
// Token: 0x04007733 RID: 30515
[Token(Token = "0x4007733")]
private const int ROTATION_4_2 = 34;
// Token: 0x04007734 RID: 30516
[Token(Token = "0x4007734")]
private const int ROTATION_4_3 = 24;
// Token: 0x04007735 RID: 30517
[Token(Token = "0x4007735")]
private const int ROTATION_5_0 = 13;
// Token: 0x04007736 RID: 30518
[Token(Token = "0x4007736")]
private const int ROTATION_5_1 = 50;
// Token: 0x04007737 RID: 30519
[Token(Token = "0x4007737")]
private const int ROTATION_5_2 = 10;
// Token: 0x04007738 RID: 30520
[Token(Token = "0x4007738")]
private const int ROTATION_5_3 = 17;
// Token: 0x04007739 RID: 30521
[Token(Token = "0x4007739")]
private const int ROTATION_6_0 = 25;
// Token: 0x0400773A RID: 30522
[Token(Token = "0x400773A")]
private const int ROTATION_6_1 = 29;
// Token: 0x0400773B RID: 30523
[Token(Token = "0x400773B")]
private const int ROTATION_6_2 = 39;
// Token: 0x0400773C RID: 30524
[Token(Token = "0x400773C")]
private const int ROTATION_6_3 = 43;
// Token: 0x0400773D RID: 30525
[Token(Token = "0x400773D")]
private const int ROTATION_7_0 = 8;
// Token: 0x0400773E RID: 30526
[Token(Token = "0x400773E")]
private const int ROTATION_7_1 = 35;
// Token: 0x0400773F RID: 30527
[Token(Token = "0x400773F")]
private const int ROTATION_7_2 = 56;
// Token: 0x04007740 RID: 30528
[Token(Token = "0x4007740")]
private const int ROTATION_7_3 = 22;
}
// Token: 0x02001D95 RID: 7573
[Token(Token = "0x2001D95")]
private sealed class Threefish1024Cipher : ThreefishEngine.ThreefishCipher
{
// Token: 0x0600BCFB RID: 48379 RVA: 0x0029F1F8 File Offset: 0x0029D3F8
[Token(Token = "0x600BCFB")]
[Address(RVA = "0xE5DFE0", Offset = "0xE5CFE0", VA = "0x180E5DFE0")]
public Threefish1024Cipher(ulong[] kw, ulong[] t)
{
this.kw = kw;
this.t = t;
}
// Token: 0x0600BCFC RID: 48380 RVA: 0x0029F21C File Offset: 0x0029D41C
[Token(Token = "0x600BCFC")]
[Address(RVA = "0x2586280", Offset = "0x2585280", VA = "0x182586280", 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: 0x0600BCFD RID: 48381 RVA: 0x0029F3D8 File Offset: 0x0029D5D8
[Token(Token = "0x600BCFD")]
[Address(RVA = "0x2584B30", Offset = "0x2583B30", VA = "0x182584B30", 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: 0x04007741 RID: 30529
[Token(Token = "0x4007741")]
private const int ROTATION_0_0 = 24;
// Token: 0x04007742 RID: 30530
[Token(Token = "0x4007742")]
private const int ROTATION_0_1 = 13;
// Token: 0x04007743 RID: 30531
[Token(Token = "0x4007743")]
private const int ROTATION_0_2 = 8;
// Token: 0x04007744 RID: 30532
[Token(Token = "0x4007744")]
private const int ROTATION_0_3 = 47;
// Token: 0x04007745 RID: 30533
[Token(Token = "0x4007745")]
private const int ROTATION_0_4 = 8;
// Token: 0x04007746 RID: 30534
[Token(Token = "0x4007746")]
private const int ROTATION_0_5 = 17;
// Token: 0x04007747 RID: 30535
[Token(Token = "0x4007747")]
private const int ROTATION_0_6 = 22;
// Token: 0x04007748 RID: 30536
[Token(Token = "0x4007748")]
private const int ROTATION_0_7 = 37;
// Token: 0x04007749 RID: 30537
[Token(Token = "0x4007749")]
private const int ROTATION_1_0 = 38;
// Token: 0x0400774A RID: 30538
[Token(Token = "0x400774A")]
private const int ROTATION_1_1 = 19;
// Token: 0x0400774B RID: 30539
[Token(Token = "0x400774B")]
private const int ROTATION_1_2 = 10;
// Token: 0x0400774C RID: 30540
[Token(Token = "0x400774C")]
private const int ROTATION_1_3 = 55;
// Token: 0x0400774D RID: 30541
[Token(Token = "0x400774D")]
private const int ROTATION_1_4 = 49;
// Token: 0x0400774E RID: 30542
[Token(Token = "0x400774E")]
private const int ROTATION_1_5 = 18;
// Token: 0x0400774F RID: 30543
[Token(Token = "0x400774F")]
private const int ROTATION_1_6 = 23;
// Token: 0x04007750 RID: 30544
[Token(Token = "0x4007750")]
private const int ROTATION_1_7 = 52;
// Token: 0x04007751 RID: 30545
[Token(Token = "0x4007751")]
private const int ROTATION_2_0 = 33;
// Token: 0x04007752 RID: 30546
[Token(Token = "0x4007752")]
private const int ROTATION_2_1 = 4;
// Token: 0x04007753 RID: 30547
[Token(Token = "0x4007753")]
private const int ROTATION_2_2 = 51;
// Token: 0x04007754 RID: 30548
[Token(Token = "0x4007754")]
private const int ROTATION_2_3 = 13;
// Token: 0x04007755 RID: 30549
[Token(Token = "0x4007755")]
private const int ROTATION_2_4 = 34;
// Token: 0x04007756 RID: 30550
[Token(Token = "0x4007756")]
private const int ROTATION_2_5 = 41;
// Token: 0x04007757 RID: 30551
[Token(Token = "0x4007757")]
private const int ROTATION_2_6 = 59;
// Token: 0x04007758 RID: 30552
[Token(Token = "0x4007758")]
private const int ROTATION_2_7 = 17;
// Token: 0x04007759 RID: 30553
[Token(Token = "0x4007759")]
private const int ROTATION_3_0 = 5;
// Token: 0x0400775A RID: 30554
[Token(Token = "0x400775A")]
private const int ROTATION_3_1 = 20;
// Token: 0x0400775B RID: 30555
[Token(Token = "0x400775B")]
private const int ROTATION_3_2 = 48;
// Token: 0x0400775C RID: 30556
[Token(Token = "0x400775C")]
private const int ROTATION_3_3 = 41;
// Token: 0x0400775D RID: 30557
[Token(Token = "0x400775D")]
private const int ROTATION_3_4 = 47;
// Token: 0x0400775E RID: 30558
[Token(Token = "0x400775E")]
private const int ROTATION_3_5 = 28;
// Token: 0x0400775F RID: 30559
[Token(Token = "0x400775F")]
private const int ROTATION_3_6 = 16;
// Token: 0x04007760 RID: 30560
[Token(Token = "0x4007760")]
private const int ROTATION_3_7 = 25;
// Token: 0x04007761 RID: 30561
[Token(Token = "0x4007761")]
private const int ROTATION_4_0 = 41;
// Token: 0x04007762 RID: 30562
[Token(Token = "0x4007762")]
private const int ROTATION_4_1 = 9;
// Token: 0x04007763 RID: 30563
[Token(Token = "0x4007763")]
private const int ROTATION_4_2 = 37;
// Token: 0x04007764 RID: 30564
[Token(Token = "0x4007764")]
private const int ROTATION_4_3 = 31;
// Token: 0x04007765 RID: 30565
[Token(Token = "0x4007765")]
private const int ROTATION_4_4 = 12;
// Token: 0x04007766 RID: 30566
[Token(Token = "0x4007766")]
private const int ROTATION_4_5 = 47;
// Token: 0x04007767 RID: 30567
[Token(Token = "0x4007767")]
private const int ROTATION_4_6 = 44;
// Token: 0x04007768 RID: 30568
[Token(Token = "0x4007768")]
private const int ROTATION_4_7 = 30;
// Token: 0x04007769 RID: 30569
[Token(Token = "0x4007769")]
private const int ROTATION_5_0 = 16;
// Token: 0x0400776A RID: 30570
[Token(Token = "0x400776A")]
private const int ROTATION_5_1 = 34;
// Token: 0x0400776B RID: 30571
[Token(Token = "0x400776B")]
private const int ROTATION_5_2 = 56;
// Token: 0x0400776C RID: 30572
[Token(Token = "0x400776C")]
private const int ROTATION_5_3 = 51;
// Token: 0x0400776D RID: 30573
[Token(Token = "0x400776D")]
private const int ROTATION_5_4 = 4;
// Token: 0x0400776E RID: 30574
[Token(Token = "0x400776E")]
private const int ROTATION_5_5 = 53;
// Token: 0x0400776F RID: 30575
[Token(Token = "0x400776F")]
private const int ROTATION_5_6 = 42;
// Token: 0x04007770 RID: 30576
[Token(Token = "0x4007770")]
private const int ROTATION_5_7 = 41;
// Token: 0x04007771 RID: 30577
[Token(Token = "0x4007771")]
private const int ROTATION_6_0 = 31;
// Token: 0x04007772 RID: 30578
[Token(Token = "0x4007772")]
private const int ROTATION_6_1 = 44;
// Token: 0x04007773 RID: 30579
[Token(Token = "0x4007773")]
private const int ROTATION_6_2 = 47;
// Token: 0x04007774 RID: 30580
[Token(Token = "0x4007774")]
private const int ROTATION_6_3 = 46;
// Token: 0x04007775 RID: 30581
[Token(Token = "0x4007775")]
private const int ROTATION_6_4 = 19;
// Token: 0x04007776 RID: 30582
[Token(Token = "0x4007776")]
private const int ROTATION_6_5 = 42;
// Token: 0x04007777 RID: 30583
[Token(Token = "0x4007777")]
private const int ROTATION_6_6 = 44;
// Token: 0x04007778 RID: 30584
[Token(Token = "0x4007778")]
private const int ROTATION_6_7 = 25;
// Token: 0x04007779 RID: 30585
[Token(Token = "0x4007779")]
private const int ROTATION_7_0 = 9;
// Token: 0x0400777A RID: 30586
[Token(Token = "0x400777A")]
private const int ROTATION_7_1 = 48;
// Token: 0x0400777B RID: 30587
[Token(Token = "0x400777B")]
private const int ROTATION_7_2 = 35;
// Token: 0x0400777C RID: 30588
[Token(Token = "0x400777C")]
private const int ROTATION_7_3 = 52;
// Token: 0x0400777D RID: 30589
[Token(Token = "0x400777D")]
private const int ROTATION_7_4 = 23;
// Token: 0x0400777E RID: 30590
[Token(Token = "0x400777E")]
private const int ROTATION_7_5 = 31;
// Token: 0x0400777F RID: 30591
[Token(Token = "0x400777F")]
private const int ROTATION_7_6 = 37;
// Token: 0x04007780 RID: 30592
[Token(Token = "0x4007780")]
private const int ROTATION_7_7 = 20;
}
}
}