final class com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher extends com.google.common.hash.AbstractHasher
{
private int h;
private long buffer;
private int shift;
private int length;
private boolean isDone;
void <init>(int)
{
int v;
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: int;
specialinvoke v.<com.google.common.hash.AbstractHasher: void <init>()>();
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int h1> = v;
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int length> = 0;
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: boolean isDone> = 0;
return;
}
private void update(int, long)
{
long v, v, v, v, v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: int;
v := @parameter: long;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: long buffer>;
v = v & 4294967295L;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int shift>;
v = v << v;
v = v | v;
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: long buffer> = v;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int shift>;
v = v * 8;
v = v + v;
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int shift> = v;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int length>;
v = v + v;
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int length> = v;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int shift>;
if v < 32 goto label;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int h1>;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: long buffer>;
v = staticinvoke <com.google.common.hash.Murmur3_32HashFunction: int mixK1(int)>(v);
v = staticinvoke <com.google.common.hash.Murmur3_32HashFunction: int mixH1(int,int)>(v, v);
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int h1> = v;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: long buffer>;
v = v >>> 32;
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: long buffer> = v;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int shift>;
v = v - 32;
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int shift> = v;
label:
return;
}
public com.google.common.hash.Hasher putByte(byte)
{
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
short v;
byte v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: byte;
v = v & 255;
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(1, v);
return v;
}
public com.google.common.hash.Hasher putBytes(byte[], int, int)
{
byte[] v;
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
byte v;
int v, v, v, v, v, v, v, v, v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
v = v + v;
v = lengthof v;
staticinvoke <com.google.common.base.Preconditions: void checkPositionIndexes(int,int,int)>(v, v, v);
v = 0;
label:
v = v + 4;
if v > v goto label;
v = v + v;
v = staticinvoke <com.google.common.hash.Murmur3_32HashFunction: int getIntLittleEndian(byte[],int)>(v, v);
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(4, v);
v = v + 4;
goto label;
label:
if v >= v goto label;
v = v + v;
v = v[v];
virtualinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: com.google.common.hash.Hasher putByte(byte)>(v);
v = v + 1;
goto label;
label:
return v;
}
public com.google.common.hash.Hasher putBytes(java.nio.ByteBuffer)
{
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
java.nio.ByteBuffer v;
java.nio.ByteOrder v, v;
byte v;
int v, v;
boolean v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: java.nio.ByteBuffer;
v = virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteOrder order()>();
v = <java.nio.ByteOrder: java.nio.ByteOrder LITTLE_ENDIAN>;
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer order(java.nio.ByteOrder)>(v);
label:
v = virtualinvoke v.<java.nio.ByteBuffer: int remaining()>();
if v < 4 goto label;
v = virtualinvoke v.<java.nio.ByteBuffer: int getInt()>();
virtualinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: com.google.common.hash.Hasher putInt(int)>(v);
goto label;
label:
v = virtualinvoke v.<java.nio.ByteBuffer: boolean hasRemaining()>();
if v == 0 goto label;
v = virtualinvoke v.<java.nio.ByteBuffer: byte get()>();
virtualinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: com.google.common.hash.Hasher putByte(byte)>(v);
goto label;
label:
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer order(java.nio.ByteOrder)>(v);
return v;
}
public com.google.common.hash.Hasher putInt(int)
{
int v;
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: int;
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(4, v);
return v;
}
public com.google.common.hash.Hasher putLong(long)
{
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
int v;
long v, v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: long;
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(4, v);
v = v >>> 32;
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(4, v);
return v;
}
public com.google.common.hash.Hasher putChar(char)
{
char v;
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: char;
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(2, v);
return v;
}
public com.google.common.hash.Hasher putString(java.lang.CharSequence, java.nio.charset.Charset)
{
byte[] v;
boolean v;
java.lang.CharSequence v, v;
long v, v, v;
java.nio.charset.Charset v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v;
com.google.common.hash.Hasher v;
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
char v, v, v, v, v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v := @parameter: java.lang.CharSequence;
v := @parameter: java.nio.charset.Charset;
v = <com.google.common.base.Charsets: java.nio.charset.Charset UTF_8>;
v = virtualinvoke v.<java.nio.charset.Charset: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.lang.CharSequence: int length()>();
v = 0;
label:
v = v + 4;
if v > v goto label;
v = interfaceinvoke v.<java.lang.CharSequence: char charAt(int)>(v);
v = v + 1;
v = interfaceinvoke v.<java.lang.CharSequence: char charAt(int)>(v);
v = v + 2;
v = interfaceinvoke v.<java.lang.CharSequence: char charAt(int)>(v);
v = v + 3;
v = interfaceinvoke v.<java.lang.CharSequence: char charAt(int)>(v);
if v >= 128 goto label;
if v >= 128 goto label;
if v >= 128 goto label;
if v >= 128 goto label;
v = v << 8;
v = v | v;
v = v << 16;
v = v | v;
v = v << 24;
v = v | v;
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(4, v);
v = v + 4;
goto label;
label:
if v >= v goto label;
v = interfaceinvoke v.<java.lang.CharSequence: char charAt(int)>(v);
if v >= 128 goto label;
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(1, v);
goto label;
label:
if v >= 2048 goto label;
v = staticinvoke <com.google.common.hash.Murmur3_32HashFunction: long charToTwoUtf8Bytes(char)>(v);
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(2, v);
goto label;
label:
v = (int) 55296;
if v < v goto label;
v = (int) 57343;
if v <= v goto label;
label:
v = staticinvoke <com.google.common.hash.Murmur3_32HashFunction: long charToThreeUtf8Bytes(char)>(v);
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(3, v);
goto label;
label:
v = staticinvoke <java.lang.Character: int codePointAt(java.lang.CharSequence,int)>(v, v);
if v != v goto label;
v = interfaceinvoke v.<java.lang.CharSequence: java.lang.CharSequence subSequence(int,int)>(v, v);
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
virtualinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: com.google.common.hash.Hasher putBytes(byte[])>(v);
return v;
label:
v = v + 1;
v = staticinvoke <com.google.common.hash.Murmur3_32HashFunction: long codePointToFourUtf8Bytes(int)>(v);
specialinvoke v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: void update(int,long)>(4, v);
label:
v = v + 1;
goto label;
label:
return v;
label:
v = specialinvoke v.<com.google.common.hash.AbstractHasher: com.google.common.hash.Hasher putString(java.lang.CharSequence,java.nio.charset.Charset)>(v, v);
return v;
}
public com.google.common.hash.HashCode hash()
{
com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher v;
com.google.common.hash.HashCode v;
long v;
int v, v, v, v, v;
boolean v, v;
v := @this: com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: boolean isDone>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: boolean isDone> = 1;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int h1>;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: long buffer>;
v = staticinvoke <com.google.common.hash.Murmur3_32HashFunction: int mixK1(int)>(v);
v = v ^ v;
v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int h1> = v;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int h1>;
v = v.<com.google.common.hash.Murmur3_32HashFunction$Murmur3_32Hasher: int length>;
v = staticinvoke <com.google.common.hash.Murmur3_32HashFunction: com.google.common.hash.HashCode fmix(int,int)>(v, v);
return v;
}
}