using System; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines { // Token: 0x02001CB1 RID: 7345 [Token(Token = "0x2001CB1")] public class ThreefishEngine : IBlockCipher { // Token: 0x0600B914 RID: 47380 RVA: 0x00295204 File Offset: 0x00293404 [Token(Token = "0x600B914")] [Address(RVA = "0x1E0C9D0", Offset = "0x1E0B7D0", VA = "0x181E0C9D0")] 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: 0x0600B915 RID: 47381 RVA: 0x002952C8 File Offset: 0x002934C8 [Token(Token = "0x600B915")] [Address(RVA = "0x1E0CC50", Offset = "0x1E0BA50", VA = "0x181E0CC50")] public ThreefishEngine(int blocksizeBits) { /* An exception occurred when decompiling this method (0600B915) 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_A8: stloc:ArgumentException(var_12_B2, 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: 0x0600B916 RID: 47382 RVA: 0x00295388 File Offset: 0x00293588 [Token(Token = "0x600B916")] [Address(RVA = "0x1E0BB10", Offset = "0x1E0A910", VA = "0x181E0BB10", Slot = "10")] public virtual void Init(bool forEncryption, ICipherParameters parameters) { /* An exception occurred when decompiling this method (0600B916) 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: 0x0600B917 RID: 47383 RVA: 0x002954A8 File Offset: 0x002936A8 [Token(Token = "0x600B917")] [Address(RVA = "0x1E0BAC0", Offset = "0x1E0A8C0", VA = "0x181E0BAC0")] 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: 0x0600B918 RID: 47384 RVA: 0x002954D4 File Offset: 0x002936D4 [Token(Token = "0x600B918")] [Address(RVA = "0x1E0C430", Offset = "0x1E0B230", VA = "0x181E0C430")] 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: 0x0600B919 RID: 47385 RVA: 0x00295564 File Offset: 0x00293764 [Token(Token = "0x600B919")] [Address(RVA = "0x1E0C5B0", Offset = "0x1E0B3B0", VA = "0x181E0C5B0")] 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: 0x17001CF8 RID: 7416 // (get) Token: 0x0600B91A RID: 47386 RVA: 0x00295620 File Offset: 0x00293820 [Token(Token = "0x17001CF8")] public virtual string AlgorithmName { [Token(Token = "0x600B91A")] [Address(RVA = "0x1E0CDC0", Offset = "0x1E0BBC0", VA = "0x181E0CDC0", Slot = "11")] get { int num = this.blocksizeBytes; return "Threefish-" + num; } } // Token: 0x17001CF9 RID: 7417 // (get) Token: 0x0600B91B RID: 47387 RVA: 0x00295640 File Offset: 0x00293840 [Token(Token = "0x17001CF9")] public virtual bool IsPartialBlockOkay { [Token(Token = "0x600B91B")] [Address(RVA = "0x403930", Offset = "0x402730", VA = "0x180403930", Slot = "12")] get { } } // Token: 0x0600B91C RID: 47388 RVA: 0x00295650 File Offset: 0x00293850 [Token(Token = "0x600B91C")] [Address(RVA = "0x3FA560", Offset = "0x3F9360", VA = "0x1803FA560", Slot = "13")] public virtual int GetBlockSize() { return this.blocksizeBytes; } // Token: 0x0600B91D RID: 47389 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600B91D")] [Address(RVA = "0x402080", Offset = "0x400E80", VA = "0x180402080", Slot = "14")] public virtual void Reset() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600B91E RID: 47390 RVA: 0x00295664 File Offset: 0x00293864 [Token(Token = "0x600B91E")] [Address(RVA = "0x1E0C100", Offset = "0x1E0AF00", VA = "0x181E0C100", Slot = "15")] public virtual int ProcessBlock(byte[] inBytes, int inOff, byte[] outBytes, int outOff) { /* An exception occurred when decompiling this method (0600B91E) 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: 0x0600B91F RID: 47391 RVA: 0x00295728 File Offset: 0x00293928 [Token(Token = "0x600B91F")] [Address(RVA = "0x1E0BF70", Offset = "0x1E0AD70", VA = "0x181E0BF70")] internal int ProcessBlock(ulong[] inWords, ulong[] outWords) { /* An exception occurred when decompiling this method (0600B91F) 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: 0x0600B920 RID: 47392 RVA: 0x002957A0 File Offset: 0x002939A0 [Token(Token = "0x600B920")] [Address(RVA = "0x1E0B8C0", Offset = "0x1E0A6C0", VA = "0x181E0B8C0")] internal static ulong BytesToWord(byte[] bytes, int off) { int length = bytes.Length; int num = off + 1; throw new NullReferenceException(); } // Token: 0x0600B921 RID: 47393 RVA: 0x002957C0 File Offset: 0x002939C0 [Token(Token = "0x600B921")] [Address(RVA = "0x1E0C7F0", Offset = "0x1E0B5F0", VA = "0x181E0C7F0")] internal static void WordToBytes(ulong word, byte[] bytes, int off) { int num = bytes.Length; int num2 = off + 1; num = off + 6; } // Token: 0x0600B922 RID: 47394 RVA: 0x002957E4 File Offset: 0x002939E4 [Token(Token = "0x600B922")] [Address(RVA = "0x1E0C410", Offset = "0x1E0B210", VA = "0x181E0C410")] private static ulong RotlXor(ulong x, int n, ulong xor) { return x; } // Token: 0x0600B923 RID: 47395 RVA: 0x002957F4 File Offset: 0x002939F4 [Token(Token = "0x600B923")] [Address(RVA = "0x1E0C9B0", Offset = "0x1E0B7B0", VA = "0x181E0C9B0")] private static ulong XorRotr(ulong x, int n, ulong xor) { return x; } // Token: 0x04007541 RID: 30017 [Token(Token = "0x4007541")] public const int BLOCKSIZE_256 = 256; // Token: 0x04007542 RID: 30018 [Token(Token = "0x4007542")] public const int BLOCKSIZE_512 = 512; // Token: 0x04007543 RID: 30019 [Token(Token = "0x4007543")] public const int BLOCKSIZE_1024 = 1024; // Token: 0x04007544 RID: 30020 [Token(Token = "0x4007544")] private const int TWEAK_SIZE_BYTES = 16; // Token: 0x04007545 RID: 30021 [Token(Token = "0x4007545")] private const int TWEAK_SIZE_WORDS = 2; // Token: 0x04007546 RID: 30022 [Token(Token = "0x4007546")] private const int ROUNDS_256 = 72; // Token: 0x04007547 RID: 30023 [Token(Token = "0x4007547")] private const int ROUNDS_512 = 72; // Token: 0x04007548 RID: 30024 [Token(Token = "0x4007548")] private const int ROUNDS_1024 = 80; // Token: 0x04007549 RID: 30025 [Token(Token = "0x4007549")] private const int MAX_ROUNDS = 80; // Token: 0x0400754A RID: 30026 [Token(Token = "0x400754A")] private const ulong C_240 = 2004413935125273122UL; // Token: 0x0400754B RID: 30027 [Token(Token = "0x400754B")] private static readonly int[] MOD9 = new int[80]; // Token: 0x0400754C RID: 30028 [Token(Token = "0x400754C")] private static readonly int[] MOD17 = new int[ThreefishEngine.MOD9.Length]; // Token: 0x0400754D RID: 30029 [Token(Token = "0x400754D")] private static readonly int[] MOD5 = new int[ThreefishEngine.MOD9.Length]; // Token: 0x0400754E RID: 30030 [Token(Token = "0x400754E")] private static readonly int[] MOD3; // Token: 0x0400754F RID: 30031 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400754F")] private readonly int blocksizeBytes; // Token: 0x04007550 RID: 30032 [FieldOffset(Offset = "0x14")] [Token(Token = "0x4007550")] private readonly int blocksizeWords; // Token: 0x04007551 RID: 30033 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4007551")] private readonly ulong[] currentBlock; // Token: 0x04007552 RID: 30034 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4007552")] private readonly ulong[] t; // Token: 0x04007553 RID: 30035 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4007553")] private readonly ulong[] kw; // Token: 0x04007554 RID: 30036 [FieldOffset(Offset = "0x30")] [Token(Token = "0x4007554")] private readonly ThreefishEngine.ThreefishCipher cipher; // Token: 0x04007555 RID: 30037 [FieldOffset(Offset = "0x38")] [Token(Token = "0x4007555")] private bool forEncryption; // Token: 0x02001CB2 RID: 7346 [Token(Token = "0x2001CB2")] private abstract class ThreefishCipher { // Token: 0x0600B924 RID: 47396 RVA: 0x00295804 File Offset: 0x00293A04 [Token(Token = "0x600B924")] [Address(RVA = "0x579630", Offset = "0x578430", VA = "0x180579630")] protected ThreefishCipher(ulong[] kw, ulong[] t) { this.kw = kw; this.t = t; } // Token: 0x0600B925 RID: 47397 [Token(Token = "0x600B925")] [Address(Slot = "4")] internal abstract void EncryptBlock(ulong[] block, ulong[] outWords); // Token: 0x0600B926 RID: 47398 [Token(Token = "0x600B926")] [Address(Slot = "5")] internal abstract void DecryptBlock(ulong[] block, ulong[] outWords); // Token: 0x04007556 RID: 30038 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4007556")] protected readonly ulong[] t; // Token: 0x04007557 RID: 30039 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4007557")] protected readonly ulong[] kw; } // Token: 0x02001CB3 RID: 7347 [Token(Token = "0x2001CB3")] private sealed class Threefish256Cipher : ThreefishEngine.ThreefishCipher { // Token: 0x0600B927 RID: 47399 RVA: 0x00295828 File Offset: 0x00293A28 [Token(Token = "0x600B927")] [Address(RVA = "0x579630", Offset = "0x578430", VA = "0x180579630")] public Threefish256Cipher(ulong[] kw, ulong[] t) { this.kw = kw; this.t = t; } // Token: 0x0600B928 RID: 47400 RVA: 0x0029584C File Offset: 0x00293A4C [Token(Token = "0x600B928")] [Address(RVA = "0x1A36330", Offset = "0x1A35130", VA = "0x181A36330", 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]; ulong num9 = ThreefishEngine.RotlXor(num, 14, (ulong)num6); num = num9; num = ThreefishEngine.RotlXor(num, 16, (ulong)num6); ulong num10; num = num10; ulong num11 = ThreefishEngine.RotlXor(num, 5, num); num = num11; ulong num12 = ThreefishEngine.RotlXor(num, 37, num); int length2 = kw.Length; int num13 = num6 + 1; int length3 = t.Length; num6 += 2; ulong num14 = kw[num6]; int num15 = num8 + 1; ulong num16 = t[num15]; ulong num17 = kw[num15]; num17 += (ulong)num7; num11 += num17; ulong num18 = t[num8]; num12 += num18; ulong num19 = kw[num6]; num = num12; num19 += num12; ulong num20 = ThreefishEngine.RotlXor(num, 25, num19); num16 += num14; num16 += num11; num19 = num16; ulong num21 = ThreefishEngine.RotlXor(num11, 33, num19); num19 += num21; num11 = num21; ulong num22 = ThreefishEngine.RotlXor(num11, 46, num19); num16 += num20; num19 = num16; num11 = num20; num14 = num22; ulong num23 = ThreefishEngine.RotlXor(num11, 12, num19); num19 += num23; num11 = num23; ulong num24 = ThreefishEngine.RotlXor(num11, 58, num19); num16 += num14; num19 = num16; num11 = num14; num20 = num24; ulong num25 = ThreefishEngine.RotlXor(num11, 22, num19); num19 += num25; num11 = num25; ulong num26 = ThreefishEngine.RotlXor(num11, 32, num19); int num27 = 0; num11 = num20; num19 = num14; ulong num28 = ThreefishEngine.RotlXor(num11, 32, num19); int length4 = kw.Length; int num29 = num6 + 1; num16 = num28; num27 = (int)((ulong)num27 + num19); int length5 = t.Length; num29 = num8; num16 += (ulong)num8; num29 += 2; num19 += num14; ulong num30 = kw[num8]; num7 += (uint)2; num30 += (ulong)num7; num26 += (ulong)1L; num30 += num26; if (num7 < (uint)18) { } } // Token: 0x0600B929 RID: 47401 RVA: 0x00295AE0 File Offset: 0x00293CE0 [Token(Token = "0x600B929")] [Address(RVA = "0x1A35C40", Offset = "0x1A34A40", VA = "0x181A35C40", Slot = "5")] internal override void DecryptBlock(ulong[] block, ulong[] state) { 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[0]; ulong num2 = block[1]; ulong num3 = block[2]; ulong num4 = block[3]; uint num6; int num5 = mod[(int)num6]; int num7 = mod2[(int)num6]; int num8 = num5 + 1; int length2 = kw.Length; int num9 = num7 + 1; int length3 = t.Length; ulong num10 = t[num9]; num2 -= num10; ulong num11 = t[(int)num10]; num3 -= num11; num4 -= (ulong)num6; ulong num12 = num4 - 1UL; ulong num13 = ThreefishEngine.XorRotr(num12, 32, num); num = num3; num12 = num2; num4 = num13; num -= num13; ulong num14 = ThreefishEngine.XorRotr(num12, 32, num); num12 = num14; num3 -= num14; ulong num15 = ThreefishEngine.XorRotr(num12, 58, num); num = num3; num12 = num4; num2 = num15; num -= num15; ulong num16 = ThreefishEngine.XorRotr(num12, 22, num); num12 = num16; num3 -= num16; ulong num17 = ThreefishEngine.XorRotr(num12, 46, num); num = num3; num12 = num2; num4 = num17; num -= num17; ulong num18 = ThreefishEngine.XorRotr(num12, 12, num); num12 = num18; num3 -= num18; ulong num19 = ThreefishEngine.XorRotr(num12, 25, num); num = num3; num12 = num4; ulong num20 = ThreefishEngine.XorRotr(num12, 33, num); int length4 = kw.Length; int num21 = num5 + 1; ulong num22 = kw[num21]; int length5 = t.Length; ulong num23 = t[num7]; int num24 = num7 + 1; ulong num25 = t[num24]; num25 += num20; num3 -= num25; ulong num26 = kw[num5]; num26 += num19; num -= num26; ulong num27 = ThreefishEngine.XorRotr(num20, 5, num); num19 -= num23; num = num3; num20 = num19; num2 = num27; num -= num27; ulong num28 = ThreefishEngine.XorRotr(num20, 37, num); num20 = num28; num3 -= num28; ulong num29 = ThreefishEngine.XorRotr(num20, 23, num); num = num3; num20 = num2; num23 = num29; num -= num29; ulong num30 = ThreefishEngine.XorRotr(num20, 40, num); num20 = num30; num3 -= num30; ulong num31 = ThreefishEngine.XorRotr(num20, 52, num); num = num3; num20 = num23; num2 = num31; num -= num31; ulong num32 = ThreefishEngine.XorRotr(num20, 57, num); num20 = num32; num3 -= num32; ulong num33 = ThreefishEngine.XorRotr(num20, 14, num); num = num3; num20 = num2; num19 = num33; num -= num33; ulong num34 = ThreefishEngine.XorRotr(num20, 16, num); num3 -= num34; num23 = num34; int length6 = kw.Length; int length7 = t.Length; ulong num35 = kw[1]; ulong num36 = t[0]; ulong num37 = kw[2]; ulong num38 = t[1]; ulong num39 = kw[3]; num19 -= num36; num19 -= num35; num3 -= num38; num3 -= num37; num23 -= num39; } // Token: 0x04007558 RID: 30040 [Token(Token = "0x4007558")] private const int ROTATION_0_0 = 14; // Token: 0x04007559 RID: 30041 [Token(Token = "0x4007559")] private const int ROTATION_0_1 = 16; // Token: 0x0400755A RID: 30042 [Token(Token = "0x400755A")] private const int ROTATION_1_0 = 52; // Token: 0x0400755B RID: 30043 [Token(Token = "0x400755B")] private const int ROTATION_1_1 = 57; // Token: 0x0400755C RID: 30044 [Token(Token = "0x400755C")] private const int ROTATION_2_0 = 23; // Token: 0x0400755D RID: 30045 [Token(Token = "0x400755D")] private const int ROTATION_2_1 = 40; // Token: 0x0400755E RID: 30046 [Token(Token = "0x400755E")] private const int ROTATION_3_0 = 5; // Token: 0x0400755F RID: 30047 [Token(Token = "0x400755F")] private const int ROTATION_3_1 = 37; // Token: 0x04007560 RID: 30048 [Token(Token = "0x4007560")] private const int ROTATION_4_0 = 25; // Token: 0x04007561 RID: 30049 [Token(Token = "0x4007561")] private const int ROTATION_4_1 = 33; // Token: 0x04007562 RID: 30050 [Token(Token = "0x4007562")] private const int ROTATION_5_0 = 46; // Token: 0x04007563 RID: 30051 [Token(Token = "0x4007563")] private const int ROTATION_5_1 = 12; // Token: 0x04007564 RID: 30052 [Token(Token = "0x4007564")] private const int ROTATION_6_0 = 58; // Token: 0x04007565 RID: 30053 [Token(Token = "0x4007565")] private const int ROTATION_6_1 = 22; // Token: 0x04007566 RID: 30054 [Token(Token = "0x4007566")] private const int ROTATION_7_0 = 32; // Token: 0x04007567 RID: 30055 [Token(Token = "0x4007567")] private const int ROTATION_7_1 = 32; } // Token: 0x02001CB4 RID: 7348 [Token(Token = "0x2001CB4")] private sealed class Threefish512Cipher : ThreefishEngine.ThreefishCipher { // Token: 0x0600B92A RID: 47402 RVA: 0x00295E20 File Offset: 0x00294020 [Token(Token = "0x600B92A")] [Address(RVA = "0x579630", Offset = "0x578430", VA = "0x180579630")] internal Threefish512Cipher(ulong[] kw, ulong[] t) { this.kw = kw; this.t = t; } // Token: 0x0600B92B RID: 47403 RVA: 0x00295E44 File Offset: 0x00294044 [Token(Token = "0x600B92B")] [Address(RVA = "0x1A375F0", Offset = "0x1A363F0", VA = "0x181A375F0", 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[5]; ulong num5 = block[6]; ulong num6 = t[0]; ulong num7 = block[7]; num4 += num6; ulong num8 = t[1]; num5 += num8; uint num10; int num9 = mod[(int)num10]; int num11 = mod2[(int)num10]; ulong num12 = ThreefishEngine.RotlXor(num, 46, block); num = num3; ulong num13 = ThreefishEngine.RotlXor(num, 36, num); num = num4; num2 = num13; ulong num14 = ThreefishEngine.RotlXor(num, 19, num); num = num4; ulong num15 = ThreefishEngine.RotlXor(num7, 37, num); num5 = num15; num7 = num12; num = num15; ulong num16 = ThreefishEngine.RotlXor(num7, 33, num); num7 = num5; num12 = num16; ulong num17 = ThreefishEngine.RotlXor(num7, 27, num); num = num3; ulong num18 = ThreefishEngine.RotlXor(num7, 14, num); num7 = num2; ulong num19 = ThreefishEngine.RotlXor(num7, 42, block); num5 = num19; num7 = num12; ulong num20 = ThreefishEngine.RotlXor(num7, 17, num19); num19 = num; num7 = num5; num12 = num20; ulong num21 = ThreefishEngine.RotlXor(num7, 49, num19); num19 = num3; num2 = num21; ulong num22 = ThreefishEngine.RotlXor(num7, 36, num19); num19 = num15; ulong num23 = ThreefishEngine.RotlXor(num17, 39, num19); num5 = num23; num17 = num12; num19 = num23; ulong num24 = ThreefishEngine.RotlXor(num17, 44, num19); num19 = num12; num17 = num5; num = num24; ulong num25 = ThreefishEngine.RotlXor(num17, 9, num19); num19 = num25; num3 = ThreefishEngine.RotlXor(num17, 54, num19); num17 = num2; num19 += num2; num5 = ThreefishEngine.RotlXor(num17, 56, num19); int length2 = kw.Length; int num26 = num9 + 1; ulong num27 = kw[num26]; ulong num28 = kw[num26]; int length3 = t.Length; ulong num29 = kw[num26]; num3 += num29; ulong num30 = kw[(int)num29]; int num31 = num11 + 1; ulong num32 = t[num31]; ulong num33 = kw[num31]; num33 += (ulong)num10; ulong num34 = kw[num9]; num34 += num12; num34 += num; ulong num35 = ThreefishEngine.RotlXor(num, 39, num34); num27 += num5; num = num5; num34 = num27; num12 = num35; ulong num36 = ThreefishEngine.RotlXor(num, 30, num34); num19 += num28; num19 += num3; num = num3; num34 = num19; ulong num37 = ThreefishEngine.RotlXor(num, 34, num34); num30 += num32; num28 = num37; num34 = num30; ulong num38 = ThreefishEngine.RotlXor(num25, 24, num34); num5 = num38; num25 = num12; num34 = num38; ulong num39 = ThreefishEngine.RotlXor(num25, 13, num34); num19 += num5; num34 = num19; num25 = num5; num12 = num39; ulong num40 = ThreefishEngine.RotlXor(num25, 50, num34); num30 += num28; num34 = num30; num25 = num28; num32 = num40; num28 = ThreefishEngine.RotlXor(num25, 10, num34); ulong num41 = ThreefishEngine.RotlXor(num36, 17, num34); num5 = num41; num36 = num12; num34 = num41; num12 = ThreefishEngine.RotlXor(num36, 25, num34); num34 = num19; num36 = num5; ulong num42 = ThreefishEngine.RotlXor(num36, 29, num34); num36 = num28; num34 = num30; ulong num43 = ThreefishEngine.RotlXor(num36, 39, num34); num38 += num32; num36 = num32; num34 = num38; num28 = num43; ulong num44 = ThreefishEngine.RotlXor(num36, 43, num34); num5 = num44; num36 = num12; num34 = num44; ulong num45 = ThreefishEngine.RotlXor(num36, 8, num34); num34 = num12; num36 = num5; ulong num46 = ThreefishEngine.RotlXor(num36, 35, num34); num36 = num28; num34 = num5; num38 = ThreefishEngine.RotlXor(num36, 56, num34); num34 = num41; ulong num47 = ThreefishEngine.RotlXor(num42, 22, num34); int length4 = kw.Length; ulong num48 = kw[num26]; num48 += num12; ulong num49 = kw[num26]; num49 += num5; ulong num50 = kw[num26]; num41 += num50; int num51 = num11 + 1; int length5 = t.Length; ulong num52 = t[num51]; num38 += num52; num11 += 2; num9 += 8; ulong num53 = kw[num9]; num53 += (ulong)num10; num10 += (uint)2; num46 += (ulong)1L; num53 += num46; if (num10 < (uint)18) { } } // Token: 0x0600B92C RID: 47404 RVA: 0x002962E0 File Offset: 0x002944E0 [Token(Token = "0x600B92C")] [Address(RVA = "0x1A369B0", Offset = "0x1A357B0", VA = "0x181A369B0", Slot = "5")] internal override void DecryptBlock(ulong[] block, ulong[] state) { ulong[] t; ulong[] kw; int[] array; int[] mod; do { t = this.t; kw = this.kw; array = ThreefishEngine.MOD9; mod = ThreefishEngine.MOD3; } while (kw.Length != 17 || t.Length != 5); int length = 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]; uint num10; int num9 = array[(int)num10]; int num11 = mod[(int)num10]; int num12 = num9 + 1; int length2 = kw.Length; int length3 = t.Length; int num13 = num11 + 1; ulong num14 = t[num13]; num6 -= num14; ulong num15; num15 -= (ulong)num10; ulong num16 = t[mod]; num7 -= num16; ulong num17 = ThreefishEngine.XorRotr(num2, 8, num7); num7 -= num17; num7 = num; num2 = num17; ulong num18 = ThreefishEngine.XorRotr(num8, 35, num7); num -= num18; num7 = num3; num6 = num18; ulong num19 = ThreefishEngine.XorRotr(num6, 56, num7); num3 -= num19; num7 = num19; ulong num20 = ThreefishEngine.XorRotr(num4, 22, num7); num5 -= num20; num7 = num5; num4 = num2; num3 = num20; ulong num21 = ThreefishEngine.XorRotr(num4, 25, num7); num5 -= num21; num4 = num3; num2 = num21; ulong num22 = ThreefishEngine.XorRotr(num4, 29, num7); num7 = num; num4 = num7; num = num22; ulong num23 = ThreefishEngine.XorRotr(num4, 39, num7); num -= num23; num4 = num6; num7 = num23; num = ThreefishEngine.XorRotr(num4, 43, num3); num4 = num2; num3 -= num; ulong num24 = ThreefishEngine.XorRotr(num4, 13, num3); num3 = num5; num4 = num; num6 = num24; num5 = ThreefishEngine.XorRotr(num4, 50, num3); num4 = num7; ulong num25 = ThreefishEngine.XorRotr(num4, 10, num7); num4 = num; num2 = num25; num7 -= num25; ulong num26 = ThreefishEngine.XorRotr(num4, 17, num); num -= num26; num4 = num6; num = num26; ulong num27 = ThreefishEngine.XorRotr(num4, 39, num); num = num3; num4 = num; ulong num28 = ThreefishEngine.XorRotr(num4, 30, num); num = num5; num4 = num2; ulong num29 = ThreefishEngine.XorRotr(num4, 34, num); num = num7; num4 = num5; num2 = num29; ulong num30 = ThreefishEngine.XorRotr(num4, 24, num); int length4 = kw.Length; num5 = num30; ulong num31 = kw[num9]; int num32 = num9 + 1; num31 += num27; num -= num31; ulong num33 = kw[(int)num30]; num3 -= num33; ulong num34 = kw[(int)num33]; ulong num35 = kw[(int)num34]; num35 += num2; num5 -= num35; ulong num36 = kw[(int)num35]; int length5 = t.Length; ulong num37 = t[num11]; num11++; ulong num38 = t[num11]; num38 += num5; ulong num39 = kw[(int)num5]; num7 -= num38; ulong num40 = ThreefishEngine.XorRotr(num27, 44, num7); num7 -= num40; num5 -= num39; num7 = num; num27 = num5; num2 = num40; ulong num41 = ThreefishEngine.XorRotr(num27, 9, num7); num7 = num3; num5 = num41; num -= num41; ulong num42 = ThreefishEngine.XorRotr(num29, 54, num7); num3 -= num42; num7 = num42; ulong num43 = ThreefishEngine.XorRotr(num28, 56, num7); num5 -= num43; num7 = num5; num28 = num2; num39 = num43; ulong num44 = ThreefishEngine.XorRotr(num28, 17, num7); num28 = num39; num2 = num44; num5 -= num44; ulong num45 = ThreefishEngine.XorRotr(num28, 49, num7); num7 = num; num28 = num7; num3 = num45; ulong num46 = ThreefishEngine.XorRotr(num28, 36, num7); num28 = num5; num7 = num46; num -= num46; ulong num47 = ThreefishEngine.XorRotr(num28, 39, num3); num3 -= num47; num28 = num2; num39 = num47; ulong num48 = ThreefishEngine.XorRotr(num28, 33, num3); num3 -= num48; num2 = num48; num3 = num5; num28 = num39; ulong num49 = ThreefishEngine.XorRotr(num28, 27, num3); num28 = num7; num3 = num49; num5 -= num49; ulong num50 = ThreefishEngine.XorRotr(num28, 14, num3); num7 -= num50; num3 = num; num28 = num3; ulong num51 = ThreefishEngine.XorRotr(num28, 42, num3); num -= num51; num3 = num; num28 = num2; num7 = num51; ulong num52 = ThreefishEngine.XorRotr(num28, 46, num3); num28 = num7; num -= num52; ulong num53 = ThreefishEngine.XorRotr(num28, 36, num3); num3 = num5; num28 = num7; num3 -= num53; ulong num54 = ThreefishEngine.XorRotr(num28, 19, num3); num3 = num7; num28 = num3; num3 = num54; num5 -= num54; ulong num55 = ThreefishEngine.XorRotr(num28, 37, num3); num7 -= num55; num3 = num5; int length6 = kw.Length; ulong num56 = kw[1]; ulong num57 = kw[2]; ulong num58 = kw[3]; ulong num59 = kw[4]; ulong num60 = kw[5]; int length7 = t.Length; ulong num61 = t[0]; ulong num62 = kw[6]; ulong num63 = t[1]; ulong num64 = kw[7]; num5 -= num59; num3 -= num61; num7 -= num63; num7 -= num62; array -= num64; } // Token: 0x04007568 RID: 30056 [Token(Token = "0x4007568")] private const int ROTATION_0_0 = 46; // Token: 0x04007569 RID: 30057 [Token(Token = "0x4007569")] private const int ROTATION_0_1 = 36; // Token: 0x0400756A RID: 30058 [Token(Token = "0x400756A")] private const int ROTATION_0_2 = 19; // Token: 0x0400756B RID: 30059 [Token(Token = "0x400756B")] private const int ROTATION_0_3 = 37; // Token: 0x0400756C RID: 30060 [Token(Token = "0x400756C")] private const int ROTATION_1_0 = 33; // Token: 0x0400756D RID: 30061 [Token(Token = "0x400756D")] private const int ROTATION_1_1 = 27; // Token: 0x0400756E RID: 30062 [Token(Token = "0x400756E")] private const int ROTATION_1_2 = 14; // Token: 0x0400756F RID: 30063 [Token(Token = "0x400756F")] private const int ROTATION_1_3 = 42; // Token: 0x04007570 RID: 30064 [Token(Token = "0x4007570")] private const int ROTATION_2_0 = 17; // Token: 0x04007571 RID: 30065 [Token(Token = "0x4007571")] private const int ROTATION_2_1 = 49; // Token: 0x04007572 RID: 30066 [Token(Token = "0x4007572")] private const int ROTATION_2_2 = 36; // Token: 0x04007573 RID: 30067 [Token(Token = "0x4007573")] private const int ROTATION_2_3 = 39; // Token: 0x04007574 RID: 30068 [Token(Token = "0x4007574")] private const int ROTATION_3_0 = 44; // Token: 0x04007575 RID: 30069 [Token(Token = "0x4007575")] private const int ROTATION_3_1 = 9; // Token: 0x04007576 RID: 30070 [Token(Token = "0x4007576")] private const int ROTATION_3_2 = 54; // Token: 0x04007577 RID: 30071 [Token(Token = "0x4007577")] private const int ROTATION_3_3 = 56; // Token: 0x04007578 RID: 30072 [Token(Token = "0x4007578")] private const int ROTATION_4_0 = 39; // Token: 0x04007579 RID: 30073 [Token(Token = "0x4007579")] private const int ROTATION_4_1 = 30; // Token: 0x0400757A RID: 30074 [Token(Token = "0x400757A")] private const int ROTATION_4_2 = 34; // Token: 0x0400757B RID: 30075 [Token(Token = "0x400757B")] private const int ROTATION_4_3 = 24; // Token: 0x0400757C RID: 30076 [Token(Token = "0x400757C")] private const int ROTATION_5_0 = 13; // Token: 0x0400757D RID: 30077 [Token(Token = "0x400757D")] private const int ROTATION_5_1 = 50; // Token: 0x0400757E RID: 30078 [Token(Token = "0x400757E")] private const int ROTATION_5_2 = 10; // Token: 0x0400757F RID: 30079 [Token(Token = "0x400757F")] private const int ROTATION_5_3 = 17; // Token: 0x04007580 RID: 30080 [Token(Token = "0x4007580")] private const int ROTATION_6_0 = 25; // Token: 0x04007581 RID: 30081 [Token(Token = "0x4007581")] private const int ROTATION_6_1 = 29; // Token: 0x04007582 RID: 30082 [Token(Token = "0x4007582")] private const int ROTATION_6_2 = 39; // Token: 0x04007583 RID: 30083 [Token(Token = "0x4007583")] private const int ROTATION_6_3 = 43; // Token: 0x04007584 RID: 30084 [Token(Token = "0x4007584")] private const int ROTATION_7_0 = 8; // Token: 0x04007585 RID: 30085 [Token(Token = "0x4007585")] private const int ROTATION_7_1 = 35; // Token: 0x04007586 RID: 30086 [Token(Token = "0x4007586")] private const int ROTATION_7_2 = 56; // Token: 0x04007587 RID: 30087 [Token(Token = "0x4007587")] private const int ROTATION_7_3 = 22; } // Token: 0x02001CB5 RID: 7349 [Token(Token = "0x2001CB5")] private sealed class Threefish1024Cipher : ThreefishEngine.ThreefishCipher { // Token: 0x0600B92D RID: 47405 RVA: 0x0029685C File Offset: 0x00294A5C [Token(Token = "0x600B92D")] [Address(RVA = "0x1E0B8B0", Offset = "0x1E0A6B0", VA = "0x181E0B8B0")] public Threefish1024Cipher(ulong[] kw, ulong[] t) : base(kw, t) { } // Token: 0x0600B92E RID: 47406 RVA: 0x00296874 File Offset: 0x00294A74 [Token(Token = "0x600B92E")] [Address(RVA = "0x1E0A400", Offset = "0x1E09200", VA = "0x181E0A400", 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: 0x0600B92F RID: 47407 RVA: 0x00296A30 File Offset: 0x00294C30 [Token(Token = "0x600B92F")] [Address(RVA = "0x1E08CB0", Offset = "0x1E07AB0", VA = "0x181E08CB0", 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: 0x04007588 RID: 30088 [Token(Token = "0x4007588")] private const int ROTATION_0_0 = 24; // Token: 0x04007589 RID: 30089 [Token(Token = "0x4007589")] private const int ROTATION_0_1 = 13; // Token: 0x0400758A RID: 30090 [Token(Token = "0x400758A")] private const int ROTATION_0_2 = 8; // Token: 0x0400758B RID: 30091 [Token(Token = "0x400758B")] private const int ROTATION_0_3 = 47; // Token: 0x0400758C RID: 30092 [Token(Token = "0x400758C")] private const int ROTATION_0_4 = 8; // Token: 0x0400758D RID: 30093 [Token(Token = "0x400758D")] private const int ROTATION_0_5 = 17; // Token: 0x0400758E RID: 30094 [Token(Token = "0x400758E")] private const int ROTATION_0_6 = 22; // Token: 0x0400758F RID: 30095 [Token(Token = "0x400758F")] private const int ROTATION_0_7 = 37; // Token: 0x04007590 RID: 30096 [Token(Token = "0x4007590")] private const int ROTATION_1_0 = 38; // Token: 0x04007591 RID: 30097 [Token(Token = "0x4007591")] private const int ROTATION_1_1 = 19; // Token: 0x04007592 RID: 30098 [Token(Token = "0x4007592")] private const int ROTATION_1_2 = 10; // Token: 0x04007593 RID: 30099 [Token(Token = "0x4007593")] private const int ROTATION_1_3 = 55; // Token: 0x04007594 RID: 30100 [Token(Token = "0x4007594")] private const int ROTATION_1_4 = 49; // Token: 0x04007595 RID: 30101 [Token(Token = "0x4007595")] private const int ROTATION_1_5 = 18; // Token: 0x04007596 RID: 30102 [Token(Token = "0x4007596")] private const int ROTATION_1_6 = 23; // Token: 0x04007597 RID: 30103 [Token(Token = "0x4007597")] private const int ROTATION_1_7 = 52; // Token: 0x04007598 RID: 30104 [Token(Token = "0x4007598")] private const int ROTATION_2_0 = 33; // Token: 0x04007599 RID: 30105 [Token(Token = "0x4007599")] private const int ROTATION_2_1 = 4; // Token: 0x0400759A RID: 30106 [Token(Token = "0x400759A")] private const int ROTATION_2_2 = 51; // Token: 0x0400759B RID: 30107 [Token(Token = "0x400759B")] private const int ROTATION_2_3 = 13; // Token: 0x0400759C RID: 30108 [Token(Token = "0x400759C")] private const int ROTATION_2_4 = 34; // Token: 0x0400759D RID: 30109 [Token(Token = "0x400759D")] private const int ROTATION_2_5 = 41; // Token: 0x0400759E RID: 30110 [Token(Token = "0x400759E")] private const int ROTATION_2_6 = 59; // Token: 0x0400759F RID: 30111 [Token(Token = "0x400759F")] private const int ROTATION_2_7 = 17; // Token: 0x040075A0 RID: 30112 [Token(Token = "0x40075A0")] private const int ROTATION_3_0 = 5; // Token: 0x040075A1 RID: 30113 [Token(Token = "0x40075A1")] private const int ROTATION_3_1 = 20; // Token: 0x040075A2 RID: 30114 [Token(Token = "0x40075A2")] private const int ROTATION_3_2 = 48; // Token: 0x040075A3 RID: 30115 [Token(Token = "0x40075A3")] private const int ROTATION_3_3 = 41; // Token: 0x040075A4 RID: 30116 [Token(Token = "0x40075A4")] private const int ROTATION_3_4 = 47; // Token: 0x040075A5 RID: 30117 [Token(Token = "0x40075A5")] private const int ROTATION_3_5 = 28; // Token: 0x040075A6 RID: 30118 [Token(Token = "0x40075A6")] private const int ROTATION_3_6 = 16; // Token: 0x040075A7 RID: 30119 [Token(Token = "0x40075A7")] private const int ROTATION_3_7 = 25; // Token: 0x040075A8 RID: 30120 [Token(Token = "0x40075A8")] private const int ROTATION_4_0 = 41; // Token: 0x040075A9 RID: 30121 [Token(Token = "0x40075A9")] private const int ROTATION_4_1 = 9; // Token: 0x040075AA RID: 30122 [Token(Token = "0x40075AA")] private const int ROTATION_4_2 = 37; // Token: 0x040075AB RID: 30123 [Token(Token = "0x40075AB")] private const int ROTATION_4_3 = 31; // Token: 0x040075AC RID: 30124 [Token(Token = "0x40075AC")] private const int ROTATION_4_4 = 12; // Token: 0x040075AD RID: 30125 [Token(Token = "0x40075AD")] private const int ROTATION_4_5 = 47; // Token: 0x040075AE RID: 30126 [Token(Token = "0x40075AE")] private const int ROTATION_4_6 = 44; // Token: 0x040075AF RID: 30127 [Token(Token = "0x40075AF")] private const int ROTATION_4_7 = 30; // Token: 0x040075B0 RID: 30128 [Token(Token = "0x40075B0")] private const int ROTATION_5_0 = 16; // Token: 0x040075B1 RID: 30129 [Token(Token = "0x40075B1")] private const int ROTATION_5_1 = 34; // Token: 0x040075B2 RID: 30130 [Token(Token = "0x40075B2")] private const int ROTATION_5_2 = 56; // Token: 0x040075B3 RID: 30131 [Token(Token = "0x40075B3")] private const int ROTATION_5_3 = 51; // Token: 0x040075B4 RID: 30132 [Token(Token = "0x40075B4")] private const int ROTATION_5_4 = 4; // Token: 0x040075B5 RID: 30133 [Token(Token = "0x40075B5")] private const int ROTATION_5_5 = 53; // Token: 0x040075B6 RID: 30134 [Token(Token = "0x40075B6")] private const int ROTATION_5_6 = 42; // Token: 0x040075B7 RID: 30135 [Token(Token = "0x40075B7")] private const int ROTATION_5_7 = 41; // Token: 0x040075B8 RID: 30136 [Token(Token = "0x40075B8")] private const int ROTATION_6_0 = 31; // Token: 0x040075B9 RID: 30137 [Token(Token = "0x40075B9")] private const int ROTATION_6_1 = 44; // Token: 0x040075BA RID: 30138 [Token(Token = "0x40075BA")] private const int ROTATION_6_2 = 47; // Token: 0x040075BB RID: 30139 [Token(Token = "0x40075BB")] private const int ROTATION_6_3 = 46; // Token: 0x040075BC RID: 30140 [Token(Token = "0x40075BC")] private const int ROTATION_6_4 = 19; // Token: 0x040075BD RID: 30141 [Token(Token = "0x40075BD")] private const int ROTATION_6_5 = 42; // Token: 0x040075BE RID: 30142 [Token(Token = "0x40075BE")] private const int ROTATION_6_6 = 44; // Token: 0x040075BF RID: 30143 [Token(Token = "0x40075BF")] private const int ROTATION_6_7 = 25; // Token: 0x040075C0 RID: 30144 [Token(Token = "0x40075C0")] private const int ROTATION_7_0 = 9; // Token: 0x040075C1 RID: 30145 [Token(Token = "0x40075C1")] private const int ROTATION_7_1 = 48; // Token: 0x040075C2 RID: 30146 [Token(Token = "0x40075C2")] private const int ROTATION_7_2 = 35; // Token: 0x040075C3 RID: 30147 [Token(Token = "0x40075C3")] private const int ROTATION_7_3 = 52; // Token: 0x040075C4 RID: 30148 [Token(Token = "0x40075C4")] private const int ROTATION_7_4 = 23; // Token: 0x040075C5 RID: 30149 [Token(Token = "0x40075C5")] private const int ROTATION_7_5 = 31; // Token: 0x040075C6 RID: 30150 [Token(Token = "0x40075C6")] private const int ROTATION_7_6 = 37; // Token: 0x040075C7 RID: 30151 [Token(Token = "0x40075C7")] private const int ROTATION_7_7 = 20; } } }