public class Base64Coder
{
  private static final String Mp;
  private static char[] Mq;
  private static byte[] Mr;

  static
  {
    char[] arrayOfChar1 = 64;
    char[] arrayOfChar2 = 0;
    Mp = System.getProperty("line.separator");
    Mq = new char[arrayOfChar1];
    int i = 65;
    int k;
    for (int j = arrayOfChar2; i <= 90; j = k)
    {
      char[] arrayOfChar4 = Mq;
      k = j + 1;
      arrayOfChar4[j] = i;
      i++;
      i = (char)i;
    }
    i = 97;
    while (i <= 122)
    {
      char[] arrayOfChar5 = Mq;
      int m = j + 1;
      arrayOfChar5[j] = i;
      i++;
      i = (char)i;
      j = m;
    }
    i = 48;
    while (i <= 57)
    {
      char[] arrayOfChar6 = Mq;
      int n = j + 1;
      arrayOfChar6[j] = i;
      i++;
      i = (char)i;
      j = n;
    }
    char[] arrayOfChar3 = Mq;
    int i1 = j + 1;
    arrayOfChar3[j] = '+';
    arrayOfChar3 = Mq;
    int i2 = i1 + 1;
    arrayOfChar3[i1] = '/';
    Mr = new byte['€'];
    for (arrayOfChar3 = arrayOfChar2; ; arrayOfChar3++)
    {
      char[] arrayOfChar7 = Mr.length;
      if (arrayOfChar3 >= arrayOfChar7)
        break;
      Mr[arrayOfChar3] = -1;
    }
    for (arrayOfChar3 = arrayOfChar2; arrayOfChar3 < arrayOfChar1; arrayOfChar3++)
    {
      byte[] arrayOfByte = Mr;
      int i3 = Mq[arrayOfChar3];
      int i4 = (byte)arrayOfChar3;
      arrayOfByte[i3] = i4;
    }
  }

  public static byte[] aT(String paramString)
  {
    return d(paramString.toCharArray());
  }

  public static byte[] c(char[] paramArrayOfChar, int paramInt1, int paramInt2)
  {
    int i = 65;
    int j = 127;
    String str = "Illegal character in Base64 encoded data.";
    int k = paramInt2 % 4;
    if (k != 0)
      throw new IllegalArgumentException("Length of Base64 encoded input string is not a multiple of 4.");
    while (true)
    {
      if (k > 0)
      {
        m = paramInt1 + k - 1;
        m = paramArrayOfChar[m];
        int n = 61;
        if (m == n)
        {
          k--;
          continue;
        }
      }
      int m = k * 3 / 4;
      byte[] arrayOfByte = new byte[m];
      k += paramInt1;
      int i1 = 0;
      int i2 = paramInt1;
      int i3;
      int i4;
      int i5;
      int i6;
      if (i2 < k)
      {
        i3 = i2 + 1;
        i2 = paramArrayOfChar[i2];
        i4 = i3 + 1;
        i3 = paramArrayOfChar[i3];
        if (i4 < k)
        {
          i5 = i4 + 1;
          i4 = paramArrayOfChar[i4];
          if (i5 >= k)
            break label210;
          i6 = i5 + 1;
        }
        for (i5 = paramArrayOfChar[i5]; ; i5 = i)
        {
          if ((i2 <= j) && (i3 <= j) && (i4 <= j) && (i5 <= j))
            break label220;
          throw new IllegalArgumentException(str);
          i5 = i4;
          i4 = i;
          break;
          label210: i6 = i5;
        }
        label220: i2 = Mr[i2];
        i3 = Mr[i3];
        i4 = Mr[i4];
        i5 = Mr[i5];
        if ((i2 < 0) || (i3 < 0) || (i4 < 0) || (i5 < 0))
          throw new IllegalArgumentException(str);
        i2 <<= 2;
        int i7 = i3 >>> 4;
        i2 |= i7;
        i3 = (i3 & 0xF) << 4;
        int i8 = i4 >>> 2;
        i3 |= i8;
        i4 = (i4 & 0x3) << 6 | i5;
        i5 = i1 + 1;
        i2 = (byte)i2;
        arrayOfByte[i1] = i2;
        if (i5 >= m)
          break label417;
        i1 = i5 + 1;
        i2 = (byte)i3;
        arrayOfByte[i5] = i2;
      }
      while (true)
      {
        if (i1 < m)
        {
          i2 = i1 + 1;
          i3 = (byte)i4;