public static int[,] Decrypt(int[,,] array) { int[,] numArray = new int[array.Length / 6, 3]; for (int index1 = 0; index1 < array.Length / 6; ++index1) { int num1 = 0; int num2 = 0; int num3 = 0; int num4 = 0; int num5 = 0; int num6 = 0; for (int index2 = 0; index2 < 2; ++index2) { bool flag = false; for (int index3 = 0; index3 < 3; ++index3) { if (index2 == 0) { switch (index3) { case 0: num1 = array[index1, index2, index3]; continue; case 1: num2 = array[index1, index2, index3]; continue; case 2: num3 = array[index1, index2, index3]; continue; default: continue; } } else { switch (index3) { case 0: num4 = array[index1, index2, index3]; break; case 1: num5 = array[index1, index2, index3]; break; case 2: num6 = array[index1, index2, index3]; break; } flag = true; } } if (flag) { if (num1 - num4 < 0 || num2 - num5 < 0 || num3 - num6 < 0) { numArray[index1, 0] = num4 - num1; numArray[index1, 1] = num5 - num2; numArray[index1, 2] = num6 - num3; } else { numArray[index1, 0] = num1 - num4; numArray[index1, 1] = num2 - num5; numArray[index1, 2] = num3 - num6; } if ((index1 + 1) % 7 != 0 && Charset.GetChar(numArray[index1, 0], numArray[index1, 1], numArray[index1, 2]) != num6 - num5) { integrityViolated = true; } num4 = 0; num5 = 0; num6 = 0; num1 = 0; num2 = 0; num3 = 0; } } } return(numArray); }