using System; using System.Runtime.CompilerServices; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines { // Token: 0x02001C86 RID: 7302 [Token(Token = "0x2001C86")] public class CamelliaLightEngine : IBlockCipher { // Token: 0x0600B714 RID: 46868 RVA: 0x002856FC File Offset: 0x002838FC [Token(Token = "0x600B714")] [Address(RVA = "0x1A6BDB0", Offset = "0x1A6ABB0", VA = "0x181A6BDB0")] private static uint rightRotate(uint x, int s) { return x; } // Token: 0x0600B715 RID: 46869 RVA: 0x0028570C File Offset: 0x0028390C [Token(Token = "0x600B715")] [Address(RVA = "0x1A6B260", Offset = "0x1A6A060", VA = "0x181A6B260")] private static uint leftRotate(uint x, int s) { return x; } // Token: 0x0600B716 RID: 46870 RVA: 0x0028571C File Offset: 0x0028391C [Token(Token = "0x600B716")] [Address(RVA = "0x1A6BDD0", Offset = "0x1A6ABD0", VA = "0x181A6BDD0")] private static void roldq(int rot, uint[] ki, int ioff, uint[] ko, int ooff) { int length = ki.Length; uint num = ki[ioff]; int num2 = ioff + 1; uint num3 = ki[num2]; ko[0] = num3; int length2 = ki.Length; uint num4 = ki[(int)num]; ko[0] = num4; int length3 = ki.Length; uint num5 = ki[(int)num4]; ko[0] = num5; int length4 = ki.Length; ko[0] = num5; uint num6; ki[0] = num6; uint num7; ki[0] = num7; ki[0] = num7; } // Token: 0x0600B717 RID: 46871 RVA: 0x002857BC File Offset: 0x002839BC [Token(Token = "0x600B717")] [Address(RVA = "0x1A6ABC0", Offset = "0x1A699C0", VA = "0x181A6ABC0")] private static void decroldq(int rot, uint[] ki, int ioff, uint[] ko, int ooff) { int length = ki.Length; uint num = ki[ioff]; int num2 = ioff + 1; uint num3 = ki[num2]; ko[0] = num3; int length2 = ki.Length; uint num4 = ki[(int)num]; ko[0] = num4; int length3 = ki.Length; uint num5 = ki[(int)num]; uint num6 = ki[(int)num4]; ko[0] = num6; int length4 = ki.Length; ko[0] = num6; uint num7; ki[0] = num7; uint num8; ki[0] = num8; ki[0] = num8; } // Token: 0x0600B718 RID: 46872 RVA: 0x0028585C File Offset: 0x00283A5C [Token(Token = "0x600B718")] [Address(RVA = "0x1A6C110", Offset = "0x1A6AF10", VA = "0x181A6C110")] private static void roldqo32(int rot, uint[] ki, int ioff, uint[] ko, int ooff) { int length = ki.Length; int num = ioff + 1; uint num2; ko[0] = num2; int length2 = ki.Length; uint num3 = ki[(int)num2]; ko[0] = num3; int length3 = ki.Length; uint num4 = ki[(int)num2]; uint num5 = ki[ioff]; ko[0] = num5; int length4 = ki.Length; uint num6 = ki[num]; ko[0] = num6; uint num7; ki[0] = num7; uint num8; ki[0] = num8; uint num9 = ko[(int)num3]; ki[0] = num9; } // Token: 0x0600B719 RID: 46873 RVA: 0x00285908 File Offset: 0x00283B08 [Token(Token = "0x600B719")] [Address(RVA = "0x1A6AF00", Offset = "0x1A69D00", VA = "0x181A6AF00")] private static void decroldqo32(int rot, uint[] ki, int ioff, uint[] ko, int ooff) { int length = ki.Length; int num = ioff + 1; uint num2; ko[0] = num2; int length2 = ki.Length; uint num3 = ki[(int)num2]; ko[0] = num3; int length3 = ki.Length; uint num4 = ki[(int)num2]; uint num5 = ki[ioff]; ko[0] = num5; int length4 = ki.Length; uint num6 = ki[num]; ko[0] = num6; uint num7; ki[0] = num7; uint num8; ki[0] = num8; uint num9; ki[0] = num9; } // Token: 0x0600B71A RID: 46874 RVA: 0x002859A4 File Offset: 0x00283BA4 [Token(Token = "0x600B71A")] [Address(RVA = "0x1A6A410", Offset = "0x1A69210", VA = "0x181A6A410")] private static uint bytes2uint(byte[] src, int offset) { int num = 0; byte b; num += (int)b; throw new NullReferenceException(); } // Token: 0x0600B71B RID: 46875 RVA: 0x002859BC File Offset: 0x00283BBC [Token(Token = "0x600B71B")] [Address(RVA = "0x1A6E280", Offset = "0x1A6D080", VA = "0x181A6E280")] private static void uint2bytes(uint word, byte[] dst, int offset) { int num = 0; num++; } // Token: 0x0600B71C RID: 46876 RVA: 0x002859D8 File Offset: 0x00283BD8 [Token(Token = "0x600B71C")] [Address(RVA = "0x1A6ED20", Offset = "0x1A6DB20", VA = "0x181A6ED20")] private byte lRot8(byte v, int rot) { uint num; num -= (uint)rot; return v; } // Token: 0x0600B71D RID: 46877 RVA: 0x002859EC File Offset: 0x00283BEC [Token(Token = "0x600B71D")] [Address(RVA = "0x1A6F8F0", Offset = "0x1A6E6F0", VA = "0x181A6F8F0")] private uint sbox2(int x) { byte[] sbox = CamelliaLightEngine.SBOX1; throw new NullReferenceException(); } // Token: 0x0600B71E RID: 46878 RVA: 0x00285A04 File Offset: 0x00283C04 [Token(Token = "0x600B71E")] [Address(RVA = "0x1A6F980", Offset = "0x1A6E780", VA = "0x181A6F980")] private uint sbox3(int x) { byte[] sbox = CamelliaLightEngine.SBOX1; throw new NullReferenceException(); } // Token: 0x0600B71F RID: 46879 RVA: 0x00285A1C File Offset: 0x00283C1C [Token(Token = "0x600B71F")] [Address(RVA = "0x1A6FA10", Offset = "0x1A6E810", VA = "0x181A6FA10")] private uint sbox4(int x) { byte[] sbox = CamelliaLightEngine.SBOX1; throw new NullReferenceException(); } // Token: 0x0600B720 RID: 46880 RVA: 0x00285A34 File Offset: 0x00283C34 [Token(Token = "0x600B720")] [Address(RVA = "0x1A6E660", Offset = "0x1A6D460", VA = "0x181A6E660")] private void camelliaF2(uint[] s, uint[] skey, int keyoff) { uint num = skey[keyoff]; uint num2 = this.sbox4((int)num); uint num3 = this.sbox3((int)num); uint num4 = this.sbox2((int)num); int length = CamelliaLightEngine.SBOX1.Length; int num5 = keyoff + 1; uint num6 = skey[num5]; num3 = this.sbox4((int)num6); uint num7 = this.sbox3((int)num6); uint num8 = this.sbox2((int)num6); num8 += num8; num6 = num8; num6 += num8; byte b; b += b; num6 += num6; s[1] = num6; b += b; uint num9 = skey[(int)b]; num6 = num9; num7 = this.sbox4((int)num6); num6 = num9; num3 = this.sbox3((int)num6); num6 = num9; uint num10 = this.sbox2((int)num6); int length2 = CamelliaLightEngine.SBOX1.Length; num3 = this.sbox4((int)num10); uint num11 = this.sbox3((int)num10); uint num12 = this.sbox2((int)num10); num12 += num12; num10 = num12; num10 += num12; byte b2; b2 += b2; num10 += num10; s[0] = num10; b2 += b2; } // Token: 0x0600B721 RID: 46881 RVA: 0x00285B60 File Offset: 0x00283D60 [Token(Token = "0x600B721")] [Address(RVA = "0x1A6EB10", Offset = "0x1A6D910", VA = "0x181A6EB10")] private void camelliaFLs(uint[] s, uint[] fkey, int keyoff) { s[0] = typeof(CamelliaLightEngine).TypeHandle; int length = s.Length; int num = keyoff + 1; uint num2 = fkey[num]; s[1] = num2; } // Token: 0x0600B722 RID: 46882 RVA: 0x00285B9C File Offset: 0x00283D9C [Token(Token = "0x600B722")] [Address(RVA = "0x1A6FAA0", Offset = "0x1A6E8A0", VA = "0x181A6FAA0")] private void setKey(bool forEncryption, byte[] key) { /* An exception occurred when decompiling this method (0600B722) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.CamelliaLightEngine::setKey(System.Boolean,System.Byte[]) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_A9D: stloc:uint32(var_225_AA4, ldelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_1_06), ldc.i4:int32(0))) stelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_171_829), ldc.i4:int32(0), ldloc:uint32(var_225_AA4)) stloc:uint32[](var_226_AB6, ldfld:uint32[](CamelliaLightEngine::kw, ldloc:CamelliaLightEngine(this))) stloc:uint32(var_227_ABF, ldelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_1_06), ldc.i4:int32(0))) stelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_226_AB6), ldc.i4:int32(0), ldloc:uint32(var_227_ABF)) stloc:uint32[](var_228_AD1, ldfld:uint32[](CamelliaLightEngine::kw, ldloc:CamelliaLightEngine(this))) stloc:uint32(var_229_ADA, ldelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_1_06), ldc.i4:int32(1))) stelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_228_AD1), ldc.i4:int32(1), ldloc:uint32(var_229_ADA)) stloc:uint32[](var_230_AEC, ldfld:uint32[](CamelliaLightEngine::kw, ldloc:CamelliaLightEngine(this))) stloc:uint32(var_231_AF5, ldelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_1_06), ldc.i4:int32(1))) stelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_230_AEC), ldc.i4:int32(1), ldloc:uint32(var_231_AF5)) stloc:uint32[](var_232_B07, ldfld:uint32[](CamelliaLightEngine::subkey, ldloc:CamelliaLightEngine(this))) stloc:int32(var_233_B0A, ldc.i4:int32(0)) call:void(CamelliaEngine::roldq, ldc.i4:int32(15), ldloc:uint32[](var_1_06), ldloc:int32(var_233_B0A), ldloc:uint32[](var_232_B07), ldloc:uint64[exp:int32](var_234)) stloc:uint32[](var_235_B20, ldfld:uint32[](CamelliaLightEngine::subkey, ldloc:CamelliaLightEngine(this))) stloc:int32(var_236_B23, ldc.i4:int32(0)) call:void(CamelliaEngine::roldq, ldc.i4:int32(30), ldloc:uint32[](var_1_06), ldloc:int32(var_236_B23), ldloc:uint32[](var_235_B20), ldloc:uint64[exp:int32](var_237)) stloc:int32(var_238_B34, ldc.i4:int32(0)) call:void(CamelliaEngine::roldq, ldc.i4:int32(15), ldloc:uint32[](var_1_06), ldloc:int32(var_238_B34), ldloc:uint32[](var_7_1C), ldloc:int32(var_9_25A)) stloc:uint32[](var_239_B4A, ldfld:uint32[](CamelliaLightEngine::subkey, ldloc:CamelliaLightEngine(this))) stloc:uint32(var_240_B54, ldelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_7_1C), ldc.i4:int32(1))) stelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_239_B4A), ldc.i4:int32(9), ldloc:uint32(var_240_B54)) stloc:uint32[](var_241_B67, ldfld:uint32[](CamelliaLightEngine::subkey, ldloc:CamelliaLightEngine(this))) stloc:uint32(var_242_B71, ldelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_7_1C), ldc.i4:int32(1))) stelem:uint32([mscorlib]System.UInt32, ldloc:uint32[](var_241_B67), ldc.i4:int32(9), ldloc:uint32(var_242_B71)) stloc:int32(var_243_B7F, ldc.i4:int32(0)) stloc:uint32[](var_244_B87, ldfld:uint32[](CamelliaLightEngine::ke, ldloc:CamelliaLightEngine(this))) call:void(CamelliaEngine::roldq, ldc.i4:int32(17), ldloc:uint32[](var_1_06), ldloc:int32(var_243_B7F), ldloc:uint32[](var_244_B87), ldloc:uint64[exp:int32](var_245)) } 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: 0x0600B723 RID: 46883 RVA: 0x00286740 File Offset: 0x00284940 [Token(Token = "0x600B723")] [Address(RVA = "0x1A6ED50", Offset = "0x1A6DB50", VA = "0x181A6ED50")] private int processBlock128(byte[] input, int inOff, byte[] output, int outOff) { int num = 0; uint[] array = this.state; num++; byte b; num += (int)b; array[0] = (uint)num; uint[] array2 = this.state; uint[] array3 = this.kw; num++; uint[] array4 = this.subkey; int num2 = 0; uint[] array5 = this.state; this.camelliaF2(array5, array4, num2); uint[] array6 = this.subkey; uint[] array7 = this.state; uint num3; this.camelliaF2(array7, array6, (int)num3); uint[] array8 = this.subkey; uint[] array9 = this.state; uint num4; this.camelliaF2(array9, array8, (int)num4); uint[] array10 = this.ke; int num5 = 0; uint[] array11 = this.state; this.camelliaFLs(array11, array10, num5); uint[] array12 = this.subkey; uint[] array13 = this.state; uint num6; this.camelliaF2(array13, array12, (int)num6); uint[] array14 = this.subkey; uint[] array15 = this.state; uint num7; this.camelliaF2(array15, array14, (int)num7); uint[] array16 = this.subkey; uint[] array17 = this.state; uint num8; this.camelliaF2(array17, array16, (int)num8); uint[] array18 = this.ke; uint[] array19 = this.state; uint num9; this.camelliaFLs(array19, array18, (int)num9); uint[] array20 = this.subkey; uint[] array21 = this.state; uint num10; this.camelliaF2(array21, array20, (int)num10); uint[] array22 = this.subkey; uint[] array23 = this.state; uint num11; this.camelliaF2(array23, array22, (int)num11); uint[] array24 = this.subkey; uint[] array25 = this.state; uint num12; this.camelliaF2(array25, array24, (int)num12); uint[] array26 = this.state; uint[] array27 = this.kw; uint[] array28 = this.state; uint[] array29 = this.kw; uint[] array30 = this.state; uint[] array31 = this.kw; uint[] array32 = this.state; uint[] array33 = this.kw; uint[] array34 = this.state; num++; uint num13 = this.state[1]; output[0] = (byte)num13; num++; uint num14 = this.state[0]; output[0] = (byte)num14; num++; uint num15 = this.state[0]; output[0] = (byte)num15; num++; throw new NullReferenceException(); } // Token: 0x0600B724 RID: 46884 RVA: 0x00286958 File Offset: 0x00284B58 [Token(Token = "0x600B724")] [Address(RVA = "0x1A6F2F0", Offset = "0x1A6E0F0", VA = "0x181A6F2F0")] private int processBlock192or256(byte[] input, int inOff, byte[] output, int outOff) { int num = 0; uint[] array = this.state; num++; byte b; num += (int)b; array[0] = (uint)num; uint[] array2 = this.state; uint[] array3 = this.kw; num++; uint[] array4 = this.subkey; int num2 = 0; uint[] array5 = this.state; this.camelliaF2(array5, array4, num2); uint[] array6 = this.subkey; uint[] array7 = this.state; uint num3; this.camelliaF2(array7, array6, (int)num3); uint[] array8 = this.subkey; uint[] array9 = this.state; uint num4; this.camelliaF2(array9, array8, (int)num4); uint[] array10 = this.ke; int num5 = 0; uint[] array11 = this.state; this.camelliaFLs(array11, array10, num5); uint[] array12 = this.subkey; uint[] array13 = this.state; uint num6; this.camelliaF2(array13, array12, (int)num6); uint[] array14 = this.subkey; uint[] array15 = this.state; uint num7; this.camelliaF2(array15, array14, (int)num7); uint[] array16 = this.subkey; uint[] array17 = this.state; uint num8; this.camelliaF2(array17, array16, (int)num8); uint[] array18 = this.ke; uint[] array19 = this.state; uint num9; this.camelliaFLs(array19, array18, (int)num9); uint[] array20 = this.subkey; uint[] array21 = this.state; uint num10; this.camelliaF2(array21, array20, (int)num10); uint[] array22 = this.subkey; uint[] array23 = this.state; uint num11; this.camelliaF2(array23, array22, (int)num11); uint[] array24 = this.subkey; uint[] array25 = this.state; uint num12; this.camelliaF2(array25, array24, (int)num12); uint[] array26 = this.ke; uint[] array27 = this.state; uint num13; this.camelliaFLs(array27, array26, (int)num13); uint[] array28 = this.subkey; uint[] array29 = this.state; uint num14; this.camelliaF2(array29, array28, (int)num14); uint[] array30 = this.subkey; uint[] array31 = this.state; uint num15; this.camelliaF2(array31, array30, (int)num15); uint[] array32 = this.subkey; uint[] array33 = this.state; uint num16; this.camelliaF2(array33, array32, (int)num16); uint[] array34 = this.state; uint[] array35 = this.kw; uint[] array36 = this.state; uint[] array37 = this.kw; uint[] array38 = this.state; uint[] array39 = this.kw; uint[] array40 = this.state; uint[] array41 = this.kw; uint[] array42 = this.state; num++; uint num17 = this.state[1]; output[0] = (byte)num17; num++; uint num18 = this.state[0]; output[0] = (byte)num18; num++; uint num19 = this.state[0]; output[0] = (byte)num19; num++; throw new NullReferenceException(); } // Token: 0x0600B725 RID: 46885 RVA: 0x00286BE0 File Offset: 0x00284DE0 [Token(Token = "0x600B725")] [Address(RVA = "0x1A6E5D0", Offset = "0x1A6D3D0", VA = "0x181A6E5D0")] public CamelliaLightEngine() { uint[] array = new uint[96]; this.subkey = array; uint[] array2 = new uint[8]; this.kw = array2; uint[] array3 = new uint[12]; this.ke = array3; uint[] array4 = new uint[4]; this.state = array4; this.Reset(); this.initialised = false; } // Token: 0x17001CBE RID: 7358 // (get) Token: 0x0600B726 RID: 46886 RVA: 0x00286C34 File Offset: 0x00284E34 [Token(Token = "0x17001CBE")] public virtual string AlgorithmName { [Token(Token = "0x600B726")] [Address(RVA = "0x1A6ECF0", Offset = "0x1A6DAF0", VA = "0x181A6ECF0", Slot = "10")] get { return "Camellia"; } } // Token: 0x17001CBF RID: 7359 // (get) Token: 0x0600B727 RID: 46887 RVA: 0x00286C48 File Offset: 0x00284E48 [Token(Token = "0x17001CBF")] public virtual bool IsPartialBlockOkay { [Token(Token = "0x600B727")] [Address(RVA = "0x403930", Offset = "0x402730", VA = "0x180403930", Slot = "11")] get { } } // Token: 0x0600B728 RID: 46888 RVA: 0x00286C58 File Offset: 0x00284E58 [Token(Token = "0x600B728")] [Address(RVA = "0x4B6B10", Offset = "0x4B5910", VA = "0x1804B6B10", Slot = "12")] public virtual int GetBlockSize() { return 16; } // Token: 0x0600B729 RID: 46889 RVA: 0x00286C68 File Offset: 0x00284E68 [Token(Token = "0x600B729")] [Address(RVA = "0x1A6E2D0", Offset = "0x1A6D0D0", VA = "0x181A6E2D0", Slot = "13")] public virtual void Init(bool forEncryption, ICipherParameters parameters) { /* An exception occurred when decompiling this method (0600B729) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.CamelliaLightEngine::Init(System.Boolean,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.ICipherParameters) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_26: stloc:ArgumentException(var_4_30, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("only simple KeyParameter expected."))) } at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88 --- End of inner exception stack trace --- at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663 */; } // Token: 0x0600B72A RID: 46890 RVA: 0x00286CA8 File Offset: 0x00284EA8 [Token(Token = "0x600B72A")] [Address(RVA = "0x1A6E430", Offset = "0x1A6D230", VA = "0x181A6E430", Slot = "14")] public virtual int ProcessBlock(byte[] input, int inOff, byte[] output, int outOff) { /* An exception occurred when decompiling this method (0600B72A) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.CamelliaLightEngine::ProcessBlock(System.Byte[],System.Int32,System.Byte[],System.Int32) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_24: stloc:InvalidOperationException(var_3_2E, newobj:InvalidOperationException(InvalidOperationException::.ctor, ldstr:string("Camellia engine not initialised"))) } at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88 --- End of inner exception stack trace --- at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663 */; } // Token: 0x0600B72B RID: 46891 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600B72B")] [Address(RVA = "0x402080", Offset = "0x400E80", VA = "0x180402080", Slot = "15")] public virtual void Reset() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600B72C RID: 46892 RVA: 0x00286CE4 File Offset: 0x00284EE4 // Note: this type is marked as 'beforefieldinit'. [Token(Token = "0x600B72C")] [Address(RVA = "0x1A6E530", Offset = "0x1A6D330", VA = "0x181A6E530")] static CamelliaLightEngine() { uint[] array = new uint[12]; RuntimeHelpers.InitializeArray(array, fieldof(.AE843E1C1136C908565A6D4E04E8564B69465B3B).FieldHandle); CamelliaLightEngine.SIGMA = array; byte[] array2 = new byte[256]; RuntimeHelpers.InitializeArray(array2, fieldof(.81FDCC6319440C75C8E422A1FE4E3F1A80B89F5F).FieldHandle); CamelliaLightEngine.SBOX1 = array2; } // Token: 0x0400741F RID: 29727 [Token(Token = "0x400741F")] private const int BLOCK_SIZE = 16; // Token: 0x04007420 RID: 29728 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4007420")] private bool initialised; // Token: 0x04007421 RID: 29729 [FieldOffset(Offset = "0x11")] [Token(Token = "0x4007421")] private bool _keyis128; // Token: 0x04007422 RID: 29730 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4007422")] private uint[] subkey; // Token: 0x04007423 RID: 29731 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4007423")] private uint[] kw; // Token: 0x04007424 RID: 29732 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4007424")] private uint[] ke; // Token: 0x04007425 RID: 29733 [FieldOffset(Offset = "0x30")] [Token(Token = "0x4007425")] private uint[] state; // Token: 0x04007426 RID: 29734 [Token(Token = "0x4007426")] private static readonly uint[] SIGMA; // Token: 0x04007427 RID: 29735 [Token(Token = "0x4007427")] private static readonly byte[] SBOX1; } }