package com.google.common.primitives;

import com.google.common.base.Preconditions;
import java.math.BigInteger;

public final class UnsignedLongs
{
  private static final int[] maxSafeDigits;
  private static final long[] maxValueDivs = new long[37];
  private static final int[] maxValueMods = new int[37];

  static
  {
    maxSafeDigits = new int[37];
    BigInteger localBigInteger = new BigInteger("10000000000000000", 16);
    for (int i = 2; i <= 36; i++)
    {
      maxValueDivs[i] = divide(-1L, i);
      maxValueMods[i] = ((int)remainder(-1L, i));
      maxSafeDigits[i] = (-1 + localBigInteger.toString(i).length());
    }
  }

  public static int compare(long paramLong1, long paramLong2)
  {
    return Longs.compare(flip(paramLong1), flip(paramLong2));
  }

  public static long divide(long paramLong1, long paramLong2)
  {
    int i = 1;
    if (paramLong2 < 0L)
    {
      if (compare(paramLong1, paramLong2) < 0)
        return 0L;
      return 1L;
    }
    if (paramLong1 >= 0L)
      return paramLong1 / paramLong2;
    long l = (paramLong1 >>> i) / paramLong2 << i;
    if (compare(paramLong1 - l * paramLong2, paramLong2) >= 0);
    while (true)
    {
      return l + i;
      i = 0;
    }
  }

  private static long flip(long paramLong)
  {
    return 0x0 ^ paramLong;
  }

  private static boolean overflowInParse(long paramLong, int paramInt1, int paramInt2)
  {
    boolean bool = true;
    if (paramLong >= 0L)
    {
      if (paramLong >= maxValueDivs[paramInt2])
        break label25;
      bool = false;
    }
    label25: 
    while ((paramLong > maxValueDivs[paramInt2]) || (paramInt1 > maxValueMods[paramInt2]))
      return bool;
    return false;
  }

  public static long parseUnsignedLong(String paramString)
  {
    return parseUnsignedLong(paramString, 10);
  }

  public static long parseUnsignedLong(String paramString, int paramInt)
  {
    Preconditions.checkNotNull(paramString);
    if (paramString.length() == 0)
      throw new NumberFormatException("empty string");
    if ((paramInt < 2) || (paramInt > 36))
      throw new NumberFormatException("illegal radix: " + paramInt);
    int i = -1 + maxSafeDigits[paramInt];
    long l = 0L;
    for (int j = 0; j < paramString.length(); j++)
    {
      int k = Character.digit(paramString.charAt(j), paramInt);
      if (k == -1)
        throw new NumberFormatException(paramString);
      if ((j > i) && (overflowInParse(l, k, paramInt)))
        throw new NumberFormatException("Too large for unsigned long: " + paramString);
      l = l * paramInt + k;
    }
    return l;
  }

  public static long remainder(long paramLong1, long paramLong2)
  {
    if (paramLong2 < 0L)
    {
      if (compare(paramLong1, paramLong2) < 0)
        return paramLong1;
      return paramLong1 - paramLong2;
    }
    if (paramLong1 >= 0L)
      return paramLong1 % paramLong2;
    long l = paramLong1 - paramLong2 * ((paramLong1 >>> 1) / paramLong2 << 1);
    if (compare(l, paramLong2) >= 0);
    while (true)
    {
      return l - paramLong2;
      paramLong2 = 0L;
    }
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.google.common.primitives.UnsignedLongs
 * JD-Core Version:    0.6.2
 */