public abstract class oadd.com.google.common.hash.HashCode extends java.lang.Object
{
private static final char[] hexDigits;
void <init>()
{
oadd.com.google.common.hash.HashCode v;
v := @this: oadd.com.google.common.hash.HashCode;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public abstract int bits();
public abstract int asInt();
public abstract long asLong();
public abstract long padToLong();
public abstract byte[] asBytes();
public int writeBytesTo(byte[], int, int)
{
byte[] v;
oadd.com.google.common.hash.HashCode v;
int[] v;
int v, v, v, v, v, v, v;
v := @this: oadd.com.google.common.hash.HashCode;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
v = newarray (int)[2];
v[0] = v;
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: int bits()>();
v = v / 8;
v[1] = v;
v = staticinvoke <oadd.com.google.common.primitives.Ints: int min(int[])>(v);
v = v + v;
v = lengthof v;
staticinvoke <oadd.com.google.common.base.Preconditions: void checkPositionIndexes(int,int,int)>(v, v, v);
virtualinvoke v.<oadd.com.google.common.hash.HashCode: void writeBytesToImpl(byte[],int,int)>(v, v, v);
return v;
}
abstract void writeBytesToImpl(byte[], int, int);
byte[] getBytesInternal()
{
byte[] v;
oadd.com.google.common.hash.HashCode v;
v := @this: oadd.com.google.common.hash.HashCode;
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: byte[] asBytes()>();
return v;
}
abstract boolean equalsSameBits(oadd.com.google.common.hash.HashCode);
public static oadd.com.google.common.hash.HashCode fromInt(int)
{
int v;
oadd.com.google.common.hash.HashCode$IntHashCode v;
v := @parameter: int;
v = new oadd.com.google.common.hash.HashCode$IntHashCode;
specialinvoke v.<oadd.com.google.common.hash.HashCode$IntHashCode: void <init>(int)>(v);
return v;
}
public static oadd.com.google.common.hash.HashCode fromLong(long)
{
long v;
oadd.com.google.common.hash.HashCode$LongHashCode v;
v := @parameter: long;
v = new oadd.com.google.common.hash.HashCode$LongHashCode;
specialinvoke v.<oadd.com.google.common.hash.HashCode$LongHashCode: void <init>(long)>(v);
return v;
}
public static oadd.com.google.common.hash.HashCode fromBytes(byte[])
{
byte[] v;
int v;
java.lang.Object v;
oadd.com.google.common.hash.HashCode v;
boolean v;
v := @parameter: byte[];
v = lengthof v;
if v < 1 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <oadd.com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.Object)>(v, "A HashCode must contain at least 1 byte.");
v = virtualinvoke v.<java.lang.Object: java.lang.Object clone()>();
v = staticinvoke <oadd.com.google.common.hash.HashCode: oadd.com.google.common.hash.HashCode fromBytesNoCopy(byte[])>(v);
return v;
}
static oadd.com.google.common.hash.HashCode fromBytesNoCopy(byte[])
{
byte[] v;
oadd.com.google.common.hash.HashCode$BytesHashCode v;
v := @parameter: byte[];
v = new oadd.com.google.common.hash.HashCode$BytesHashCode;
specialinvoke v.<oadd.com.google.common.hash.HashCode$BytesHashCode: void <init>(byte[])>(v);
return v;
}
public static oadd.com.google.common.hash.HashCode fromString(java.lang.String)
{
byte[] v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v;
boolean v, v;
char v, v;
oadd.com.google.common.hash.HashCode v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: int length()>();
if v < 2 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <oadd.com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "input string (%s) must have at least 2 characters", v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = v % 2;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <oadd.com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "input string (%s) must have an even number of characters", v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = v / 2;
v = newarray (byte)[v];
v = 0;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v >= v goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = staticinvoke <oadd.com.google.common.hash.HashCode: int decode(char)>(v);
v = v << 4;
v = v + 1;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = staticinvoke <oadd.com.google.common.hash.HashCode: int decode(char)>(v);
v = v / 2;
v = v + v;
v[v] = v;
v = v + 2;
goto label;
label:
v = staticinvoke <oadd.com.google.common.hash.HashCode: oadd.com.google.common.hash.HashCode fromBytesNoCopy(byte[])>(v);
return v;
}
private static int decode(char)
{
int v, v, v;
char v;
java.lang.StringBuilder v;
java.lang.String v;
java.lang.IllegalArgumentException v;
v := @parameter: char;
if v < 48 goto label;
if v > 57 goto label;
v = v - 48;
return v;
label:
if v < 97 goto label;
if v > 102 goto label;
v = v - 97;
v = v + 10;
return v;
label:
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(32);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (char)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Illegal hexadecimal character: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
}
public final boolean equals(java.lang.Object)
{
int v, v;
java.lang.Object v;
oadd.com.google.common.hash.HashCode v;
boolean v, v, v;
v := @this: oadd.com.google.common.hash.HashCode;
v := @parameter: java.lang.Object;
v = v instanceof oadd.com.google.common.hash.HashCode;
if v == 0 goto label;
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: int bits()>();
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: int bits()>();
if v != v goto label;
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: boolean equalsSameBits(oadd.com.google.common.hash.HashCode)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 0;
}
public final int hashCode()
{
byte[] v;
oadd.com.google.common.hash.HashCode v;
short v;
byte v, v;
int v, v, v, v, v, v, v;
v := @this: oadd.com.google.common.hash.HashCode;
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: int bits()>();
if v < 32 goto label;
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: int asInt()>();
return v;
label:
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: byte[] getBytesInternal()>();
v = v[0];
v = v & 255;
v = 1;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = v & 255;
v = v * 8;
v = v << v;
v = v | v;
v = v + 1;
goto label;
label:
return v;
}
public final java.lang.String toString()
{
byte[] v;
byte v, v;
int v, v, v, v, v, v;
java.lang.String v;
char v, v;
oadd.com.google.common.hash.HashCode v;
char[] v, v;
java.lang.StringBuilder v, v;
v := @this: oadd.com.google.common.hash.HashCode;
v = virtualinvoke v.<oadd.com.google.common.hash.HashCode: byte[] getBytesInternal()>();
v = new java.lang.StringBuilder;
v = lengthof v;
v = 2 * v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = <oadd.com.google.common.hash.HashCode: char[] hexDigits>;
v = v >> 4;
v = v & 15;
v = v[v];
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(v);
v = <oadd.com.google.common.hash.HashCode: char[] hexDigits>;
v = v & 15;
v = v[v];
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(v);
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
static void <clinit>()
{
char[] v;
java.lang.String v;
v = "0123456789abcdef";
v = virtualinvoke v.<java.lang.String: char[] toCharArray()>();
<oadd.com.google.common.hash.HashCode: char[] hexDigits> = v;
return;
}
}