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; } } }