public final class com.google.common.net.InetAddresses extends java.lang.Object
{
private static final int IPV4_PART_COUNT;
private static final int IPV6_PART_COUNT;
private static final char IPV4_DELIMITER;
private static final char IPV6_DELIMITER;
private static final com.google.common.base.CharMatcher IPV4_DELIMITER_MATCHER;
private static final com.google.common.base.CharMatcher IPV6_DELIMITER_MATCHER;
private static final java.net.Inet4Address LOOPBACK4;
private static final java.net.Inet4Address ANY4;
private void <init>()
{
com.google.common.net.InetAddresses v;
v := @this: com.google.common.net.InetAddresses;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
private static java.net.Inet4Address getInet4Address(byte[])
{
java.net.InetAddress v;
byte[] v;
int v, v;
boolean v;
v := @parameter: byte[];
v = lengthof v;
if v != 4 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = lengthof v;
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,int)>(v, "Byte array has invalid length for an IPv address: %s != 4.", v);
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress bytesToInetAddress(byte[])>(v);
return v;
}
public static java.net.InetAddress forString(java.lang.String)
{
java.net.InetAddress v;
byte[] v;
java.lang.Object[] v;
java.lang.String v;
java.lang.IllegalArgumentException v;
v := @parameter: java.lang.String;
v = staticinvoke <com.google.common.net.InetAddresses: byte[] ipStringToBytes(java.lang.String)>(v);
if v != null goto label;
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.IllegalArgumentException formatIllegalArgumentException(java.lang.String,java.lang.Object[])>("\'%s\' is not an IP string literal.", v);
throw v;
label:
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress bytesToInetAddress(byte[])>(v);
return v;
}
public static boolean isInetAddress(java.lang.String)
{
byte[] v;
java.lang.String v;
boolean v;
v := @parameter: java.lang.String;
v = staticinvoke <com.google.common.net.InetAddresses: byte[] ipStringToBytes(java.lang.String)>(v);
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static byte[] ipStringToBytes(java.lang.String)
{
byte[] v, v;
char v;
int v, v, v, v, v, v, v, v;
java.lang.String v, v;
boolean v, v;
v := @parameter: java.lang.String;
v = v;
v = 0;
v = 0;
v = (int) -1;
v = 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);
if v != 46 goto label;
v = 1;
goto label;
label:
if v != 58 goto label;
if v == 0 goto label;
return null;
label:
v = 1;
goto label;
label:
if v != 37 goto label;
v = v;
goto label;
label:
v = staticinvoke <java.lang.Character: int digit(char,int)>(v, 16);
v = (int) -1;
if v != v goto label;
return null;
label:
v = v + 1;
goto label;
label:
if v == 0 goto label;
if v == 0 goto label;
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String convertDottedQuadToHex(java.lang.String)>(v);
if v != null goto label;
return null;
label:
v = (int) -1;
if v == v goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
label:
v = staticinvoke <com.google.common.net.InetAddresses: byte[] textToNumericFormatV6(java.lang.String)>(v);
return v;
label:
if v == 0 goto label;
v = (int) -1;
if v == v goto label;
return null;
label:
v = staticinvoke <com.google.common.net.InetAddresses: byte[] textToNumericFormatV4(java.lang.String)>(v);
return v;
label:
return null;
}
private static byte[] textToNumericFormatV4(java.lang.String)
{
byte[] v;
com.google.common.base.CharMatcher v;
java.lang.NumberFormatException v;
byte v;
int v, v, v, v, v, v;
java.lang.String v;
v := @parameter: java.lang.String;
v = <com.google.common.net.InetAddresses: com.google.common.base.CharMatcher IPV4_DELIMITER_MATCHER>;
v = virtualinvoke v.<com.google.common.base.CharMatcher: int countIn(java.lang.CharSequence)>(v);
v = v + 1;
if v == 4 goto label;
return null;
label:
v = newarray (byte)[4];
v = 0;
v = 0;
label:
if v >= 4 goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(int,int)>(46, v);
v = (int) -1;
if v != v goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
label:
v = staticinvoke <com.google.common.net.InetAddresses: byte parseOctet(java.lang.String,int,int)>(v, v, v);
v[v] = v;
label:
goto label;
label:
v := @caughtexception;
return null;
label:
v = v + 1;
v = v + 1;
goto label;
label:
return v;
catch java.lang.NumberFormatException from label to label with label;
}
private static byte[] textToNumericFormatV6(java.lang.String)
{
byte[] v;
java.nio.ByteBuffer v;
boolean v;
short v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v;
com.google.common.base.CharMatcher v;
char v, v, v, v, v, v, v, v;
java.lang.NumberFormatException v;
v := @parameter: java.lang.String;
v = <com.google.common.net.InetAddresses: com.google.common.base.CharMatcher IPV6_DELIMITER_MATCHER>;
v = virtualinvoke v.<com.google.common.base.CharMatcher: int countIn(java.lang.CharSequence)>(v);
if v < 2 goto label;
if v <= 8 goto label;
label:
return null;
label:
v = v + 1;
v = 8 - v;
v = 0;
v = 0;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
if v >= v goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v != 58 goto label;
v = v + 1;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v != 58 goto label;
if v == 0 goto label;
return null;
label:
v = 1;
v = v + 1;
if v != 0 goto label;
v = v + 1;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 2;
if v != v goto label;
v = v + 1;
label:
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
if v != 58 goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(1);
if v == 58 goto label;
return null;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v != 58 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 2;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v == 58 goto label;
return null;
label:
if v == 0 goto label;
if v > 0 goto label;
return null;
label:
if v != 0 goto label;
v = v + 1;
if v == 8 goto label;
return null;
label:
v = staticinvoke <java.nio.ByteBuffer: java.nio.ByteBuffer allocate(int)>(16);
label:
v = 0;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
if v != 58 goto label;
v = 1;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v >= v goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(int,int)>(58, v);
v = (int) -1;
if v != v goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
label:
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v != 58 goto label;
v = 0;
label:
if v >= v goto label;
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer putShort(short)>(0);
v = v + 1;
goto label;
label:
v = staticinvoke <com.google.common.net.InetAddresses: short parseHextet(java.lang.String,int,int)>(v, v, v);
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer putShort(short)>(v);
label:
v = v + 1;
goto label;
label:
v := @caughtexception;
return null;
label:
v = virtualinvoke v.<java.nio.ByteBuffer: byte[] array()>();
return v;
catch java.lang.NumberFormatException from label to label with label;
}
private static java.lang.String convertDottedQuadToHex(java.lang.String)
{
byte[] v;
byte v, v, v, v;
java.lang.StringBuilder v;
short v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: int lastIndexOf(int)>(58);
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v = staticinvoke <com.google.common.net.InetAddresses: byte[] textToNumericFormatV4(java.lang.String)>(v);
if v != null goto label;
return null;
label:
v = v[0];
v = v & 255;
v = v << 8;
v = v[1];
v = v & 255;
v = v | v;
v = staticinvoke <java.lang.Integer: java.lang.String toHexString(int)>(v);
v = v[2];
v = v & 255;
v = v << 8;
v = v[3];
v = v & 255;
v = v | v;
v = staticinvoke <java.lang.Integer: java.lang.String toHexString(int)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 1 + v;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + v;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>(v, v, 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[])>("\u0001\u0001:\u0001");
return v;
}
private static byte parseOctet(java.lang.String, int, int)
{
char v, v;
java.lang.NumberFormatException v, v, v, v;
int v, v, v, v, v, v, v;
java.lang.String v;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: int;
v = v - v;
if v <= 0 goto label;
if v <= 3 goto label;
label:
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>()>();
throw v;
label:
if v <= 1 goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v != 48 goto label;
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>()>();
throw v;
label:
v = 0;
v = v;
label:
if v >= v goto label;
v = v * 10;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = staticinvoke <java.lang.Character: int digit(char,int)>(v, 10);
if v >= 0 goto label;
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>()>();
throw v;
label:
v = v + v;
v = v + 1;
goto label;
label:
if v <= 255 goto label;
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>()>();
throw v;
label:
return v;
}
private static short parseHextet(java.lang.String, int, int)
{
char v;
java.lang.NumberFormatException v;
int v, v, v, v, v, v, v;
java.lang.String v;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: int;
v = v - v;
if v <= 0 goto label;
if v <= 4 goto label;
label:
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>()>();
throw v;
label:
v = 0;
v = v;
label:
if v >= v goto label;
v = v << 4;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = staticinvoke <java.lang.Character: int digit(char,int)>(v, 16);
v = v | v;
v = v + 1;
goto label;
label:
return v;
}
private static java.net.InetAddress bytesToInetAddress(byte[])
{
java.net.InetAddress v;
byte[] v;
java.lang.AssertionError v;
java.net.UnknownHostException v;
v := @parameter: byte[];
label:
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByAddress(byte[])>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>(java.lang.Object)>(v);
throw v;
catch java.net.UnknownHostException from label to label with label;
}
public static java.lang.String toAddrString(java.net.InetAddress)
{
byte[] v;
java.net.InetAddress v;
byte v, v;
int[] v;
int v, v, v, v, v, v;
java.lang.String v, v;
boolean v, v;
v := @parameter: java.net.InetAddress;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = v instanceof java.net.Inet4Address;
if v == 0 goto label;
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
return v;
label:
v = v instanceof java.net.Inet6Address;
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = virtualinvoke v.<java.net.InetAddress: byte[] getAddress()>();
v = newarray (int)[8];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = 2 * v;
v = v[v];
v = 2 * v;
v = v + 1;
v = v[v];
v = staticinvoke <com.google.common.primitives.Ints: int fromBytes(byte,byte,byte,byte)>(0, 0, v, v);
v[v] = v;
v = v + 1;
goto label;
label:
staticinvoke <com.google.common.net.InetAddresses: void compressLongestRunOfZeroes(int[])>(v);
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String hextetsToIPv6String(int[])>(v);
return v;
}
private static void compressLongestRunOfZeroes(int[])
{
int[] v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @parameter: int[];
v = (int) -1;
v = v;
v = (int) -1;
v = v;
v = (int) -1;
v = v;
v = 0;
label:
v = lengthof v;
v = v + 1;
if v >= v goto label;
v = lengthof v;
if v >= v goto label;
v = v[v];
if v != 0 goto label;
if v >= 0 goto label;
v = v;
goto label;
label:
if v < 0 goto label;
v = v - v;
if v <= v goto label;
v = v;
v = v;
label:
v = (int) -1;
v = v;
label:
v = v + 1;
goto label;
label:
if v < 2 goto label;
v = v + v;
v = (int) -1;
staticinvoke <java.util.Arrays: void fill(int[],int,int,int)>(v, v, v, v);
label:
return;
}
private static java.lang.String hextetsToIPv6String(int[])
{
int[] v;
int v, v, v, v;
java.lang.StringBuilder v;
java.lang.String v, v;
boolean v, v, v;
v := @parameter: int[];
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(39);
v = 0;
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v == 0 goto label;
if v == 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(58);
label:
v = v[v];
v = staticinvoke <java.lang.Integer: java.lang.String toHexString(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
if v == 0 goto label;
if v == 0 goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("::");
label:
v = v;
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
public static java.lang.String toUriString(java.net.InetAddress)
{
java.net.InetAddress v;
int v, v;
java.lang.StringBuilder v;
java.lang.String v, v, v, v;
boolean v;
v := @parameter: java.net.InetAddress;
v = v instanceof java.net.Inet6Address;
if v == 0 goto label;
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String toAddrString(java.net.InetAddress)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 2 + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("[\u]");
return v;
label:
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String toAddrString(java.net.InetAddress)>(v);
return v;
}
public static java.net.InetAddress forUriString(java.lang.String)
{
java.net.InetAddress v;
java.lang.Object[] v;
java.lang.String v;
java.lang.IllegalArgumentException v;
v := @parameter: java.lang.String;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress forUriStringNoThrow(java.lang.String)>(v);
if v != null goto label;
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.IllegalArgumentException formatIllegalArgumentException(java.lang.String,java.lang.Object[])>("Not a valid URI IP literal: \'%s\'", v);
throw v;
label:
return v;
}
private static java.net.InetAddress forUriStringNoThrow(java.lang.String)
{
byte[] v;
java.net.InetAddress v;
byte v;
int v, v, v;
java.lang.String v, v;
boolean v, v;
v := @parameter: java.lang.String;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("[");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>("]");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(1, v);
v = 16;
goto label;
label:
v = v;
v = 4;
label:
v = staticinvoke <com.google.common.net.InetAddresses: byte[] ipStringToBytes(java.lang.String)>(v);
if v == null goto label;
v = lengthof v;
if v == v goto label;
label:
return null;
label:
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress bytesToInetAddress(byte[])>(v);
return v;
}
public static boolean isUriInetAddress(java.lang.String)
{
java.net.InetAddress v;
java.lang.String v;
boolean v;
v := @parameter: java.lang.String;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress forUriStringNoThrow(java.lang.String)>(v);
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static boolean isCompatIPv4Address(java.net.Inet6Address)
{
byte[] v;
java.net.Inet6Address v;
byte v, v, v, v, v;
boolean v;
v := @parameter: java.net.Inet6Address;
v = virtualinvoke v.<java.net.Inet6Address: boolean isIPv4CompatibleAddress()>();
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = v[12];
if v != 0 goto label;
v = v[13];
if v != 0 goto label;
v = v[14];
if v != 0 goto label;
v = v[15];
if v == 0 goto label;
v = v[15];
if v != 1 goto label;
label:
return 0;
label:
return 1;
}
public static java.net.Inet4Address getCompatIPv4Address(java.net.Inet6Address)
{
byte[] v, v;
java.net.Inet6Address v;
java.lang.String v;
java.net.Inet4Address v;
boolean v;
v := @parameter: java.net.Inet6Address;
v = staticinvoke <com.google.common.net.InetAddresses: boolean isCompatIPv4Address(java.net.Inet6Address)>(v);
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String toAddrString(java.net.InetAddress)>(v);
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "Address \'%s\' is not IPv4-compatible.", v);
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = staticinvoke <java.util.Arrays: byte[] copyOfRange(byte[],int,int)>(v, 12, 16);
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getInet4Address(byte[])>(v);
return v;
}
public static boolean is6to4Address(java.net.Inet6Address)
{
byte[] v;
java.net.Inet6Address v;
byte v, v;
boolean v;
v := @parameter: java.net.Inet6Address;
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = v[0];
if v != 32 goto label;
v = v[1];
if v != 2 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static java.net.Inet4Address get6to4IPv4Address(java.net.Inet6Address)
{
byte[] v, v;
java.net.Inet6Address v;
java.lang.String v;
java.net.Inet4Address v;
boolean v;
v := @parameter: java.net.Inet6Address;
v = staticinvoke <com.google.common.net.InetAddresses: boolean is6to4Address(java.net.Inet6Address)>(v);
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String toAddrString(java.net.InetAddress)>(v);
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "Address \'%s\' is not a 6to address.", v);
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = staticinvoke <java.util.Arrays: byte[] copyOfRange(byte[],int,int)>(v, 2, 6);
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getInet4Address(byte[])>(v);
return v;
}
public static boolean isTeredoAddress(java.net.Inet6Address)
{
byte[] v;
java.net.Inet6Address v;
byte v, v, v, v;
boolean v;
v := @parameter: java.net.Inet6Address;
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = v[0];
if v != 32 goto label;
v = v[1];
if v != 1 goto label;
v = v[2];
if v != 0 goto label;
v = v[3];
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static com.google.common.net.InetAddresses$TeredoInfo getTeredoInfo(java.net.Inet6Address)
{
byte[] v, v, v;
com.google.common.net.InetAddresses$TeredoInfo v;
short v, v, v, v;
byte v, v;
com.google.common.io.ByteArrayDataInput v, v;
int v, v, v, v, v, v;
java.lang.String v;
boolean v;
java.net.Inet4Address v, v;
java.net.Inet6Address v;
v := @parameter: java.net.Inet6Address;
v = staticinvoke <com.google.common.net.InetAddresses: boolean isTeredoAddress(java.net.Inet6Address)>(v);
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String toAddrString(java.net.InetAddress)>(v);
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "Address \'%s\' is not a Teredo address.", v);
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = staticinvoke <java.util.Arrays: byte[] copyOfRange(byte[],int,int)>(v, 4, 8);
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getInet4Address(byte[])>(v);
v = staticinvoke <com.google.common.io.ByteStreams: com.google.common.io.ByteArrayDataInput newDataInput(byte[],int)>(v, 8);
v = interfaceinvoke v.<com.google.common.io.ByteArrayDataInput: short readShort()>();
v = (int) 65535;
v = v & v;
v = staticinvoke <com.google.common.io.ByteStreams: com.google.common.io.ByteArrayDataInput newDataInput(byte[],int)>(v, 10);
v = interfaceinvoke v.<com.google.common.io.ByteArrayDataInput: short readShort()>();
v = (short) -1;
v = v ^ v;
v = (int) 65535;
v = v & v;
v = staticinvoke <java.util.Arrays: byte[] copyOfRange(byte[],int,int)>(v, 12, 16);
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = v ^ -1;
v[v] = v;
v = v + 1;
goto label;
label:
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getInet4Address(byte[])>(v);
v = new com.google.common.net.InetAddresses$TeredoInfo;
specialinvoke v.<com.google.common.net.InetAddresses$TeredoInfo: void <init>(java.net.Inet4Address,java.net.Inet4Address,int,int)>(v, v, v, v);
return v;
}
public static boolean isIsatapAddress(java.net.Inet6Address)
{
byte[] v;
java.net.Inet6Address v;
byte v, v, v, v, v;
int v;
boolean v, v;
v := @parameter: java.net.Inet6Address;
v = staticinvoke <com.google.common.net.InetAddresses: boolean isTeredoAddress(java.net.Inet6Address)>(v);
if v == 0 goto label;
return 0;
label:
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = v[8];
v = v | 3;
if v == 3 goto label;
return 0;
label:
v = v[9];
if v != 0 goto label;
v = v[10];
if v != 94 goto label;
v = v[11];
v = (int) -2;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static java.net.Inet4Address getIsatapIPv4Address(java.net.Inet6Address)
{
byte[] v, v;
java.net.Inet6Address v;
java.lang.String v;
java.net.Inet4Address v;
boolean v;
v := @parameter: java.net.Inet6Address;
v = staticinvoke <com.google.common.net.InetAddresses: boolean isIsatapAddress(java.net.Inet6Address)>(v);
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String toAddrString(java.net.InetAddress)>(v);
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "Address \'%s\' is not an ISATAP address.", v);
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = staticinvoke <java.util.Arrays: byte[] copyOfRange(byte[],int,int)>(v, 12, 16);
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getInet4Address(byte[])>(v);
return v;
}
public static boolean hasEmbeddedIPv4ClientAddress(java.net.Inet6Address)
{
java.net.Inet6Address v;
boolean v, v, v, v;
v := @parameter: java.net.Inet6Address;
v = staticinvoke <com.google.common.net.InetAddresses: boolean isCompatIPv4Address(java.net.Inet6Address)>(v);
if v != 0 goto label;
v = staticinvoke <com.google.common.net.InetAddresses: boolean is6to4Address(java.net.Inet6Address)>(v);
if v != 0 goto label;
v = staticinvoke <com.google.common.net.InetAddresses: boolean isTeredoAddress(java.net.Inet6Address)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static java.net.Inet4Address getEmbeddedIPv4ClientAddress(java.net.Inet6Address)
{
java.lang.Object[] v;
com.google.common.net.InetAddresses$TeredoInfo v;
java.lang.IllegalArgumentException v;
java.net.Inet4Address v, v, v;
java.net.Inet6Address v;
java.lang.String v;
boolean v, v, v;
v := @parameter: java.net.Inet6Address;
v = staticinvoke <com.google.common.net.InetAddresses: boolean isCompatIPv4Address(java.net.Inet6Address)>(v);
if v == 0 goto label;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getCompatIPv4Address(java.net.Inet6Address)>(v);
return v;
label:
v = staticinvoke <com.google.common.net.InetAddresses: boolean is6to4Address(java.net.Inet6Address)>(v);
if v == 0 goto label;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address get6to4IPv4Address(java.net.Inet6Address)>(v);
return v;
label:
v = staticinvoke <com.google.common.net.InetAddresses: boolean isTeredoAddress(java.net.Inet6Address)>(v);
if v == 0 goto label;
v = staticinvoke <com.google.common.net.InetAddresses: com.google.common.net.InetAddresses$TeredoInfo getTeredoInfo(java.net.Inet6Address)>(v);
v = virtualinvoke v.<com.google.common.net.InetAddresses$TeredoInfo: java.net.Inet4Address getClient()>();
return v;
label:
v = newarray (java.lang.Object)[1];
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.String toAddrString(java.net.InetAddress)>(v);
v[0] = v;
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.IllegalArgumentException formatIllegalArgumentException(java.lang.String,java.lang.Object[])>("\'%s\' has no embedded IPv address.", v);
throw v;
}
public static boolean isMappedIPv4Address(java.lang.String)
{
byte[] v;
byte v, v;
int v, v, v, v;
java.lang.String v;
v := @parameter: java.lang.String;
v = staticinvoke <com.google.common.net.InetAddresses: byte[] ipStringToBytes(java.lang.String)>(v);
if v == null goto label;
v = lengthof v;
if v != 16 goto label;
v = 0;
label:
if v >= 10 goto label;
v = v[v];
if v == 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
v = 10;
label:
if v >= 12 goto label;
v = v[v];
v = (int) -1;
if v == v goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
label:
return 0;
}
public static java.net.Inet4Address getCoercedIPv4Address(java.net.InetAddress)
{
byte[] v, v, v;
java.nio.ByteBuffer v;
java.net.InetAddress v;
byte v, v, v;
int v, v, v, v, v, v;
boolean v, v, v;
com.google.common.hash.HashCode v;
java.net.Inet4Address v, v, v, v;
com.google.common.hash.HashFunction v;
v := @parameter: java.net.InetAddress;
v = v instanceof java.net.Inet4Address;
if v == 0 goto label;
return v;
label:
v = virtualinvoke v.<java.net.InetAddress: byte[] getAddress()>();
v = 1;
v = 0;
label:
if v >= 15 goto label;
v = v[v];
if v == 0 goto label;
v = 0;
goto label;
label:
v = v + 1;
goto label;
label:
if v == 0 goto label;
v = v[15];
if v != 1 goto label;
v = <com.google.common.net.InetAddresses: java.net.Inet4Address LOOPBACK4>;
return v;
label:
if v == 0 goto label;
v = v[15];
if v != 0 goto label;
v = <com.google.common.net.InetAddresses: java.net.Inet4Address ANY4>;
return v;
label:
v = staticinvoke <com.google.common.net.InetAddresses: boolean hasEmbeddedIPv4ClientAddress(java.net.Inet6Address)>(v);
if v == 0 goto label;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getEmbeddedIPv4ClientAddress(java.net.Inet6Address)>(v);
v = virtualinvoke v.<java.net.Inet4Address: int hashCode()>();
goto label;
label:
v = virtualinvoke v.<java.net.Inet6Address: byte[] getAddress()>();
v = staticinvoke <java.nio.ByteBuffer: java.nio.ByteBuffer wrap(byte[],int,int)>(v, 0, 8);
v = virtualinvoke v.<java.nio.ByteBuffer: long getLong()>();
label:
v = staticinvoke <com.google.common.hash.Hashing: com.google.common.hash.HashFunction murmur3_32_fixed()>();
v = interfaceinvoke v.<com.google.common.hash.HashFunction: com.google.common.hash.HashCode hashLong(long)>(v);
v = virtualinvoke v.<com.google.common.hash.HashCode: int asInt()>();
v = v | -536870912;
v = (int) -1;
if v != v goto label;
v = (int) -2;
v = v;
label:
v = staticinvoke <com.google.common.primitives.Ints: byte[] toByteArray(int)>(v);
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getInet4Address(byte[])>(v);
return v;
}
public static int coerceToInteger(java.net.InetAddress)
{
java.net.InetAddress v;
byte[] v;
com.google.common.io.ByteArrayDataInput v;
int v;
java.net.Inet4Address v;
v := @parameter: java.net.InetAddress;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getCoercedIPv4Address(java.net.InetAddress)>(v);
v = virtualinvoke v.<java.net.Inet4Address: byte[] getAddress()>();
v = staticinvoke <com.google.common.io.ByteStreams: com.google.common.io.ByteArrayDataInput newDataInput(byte[])>(v);
v = interfaceinvoke v.<com.google.common.io.ByteArrayDataInput: int readInt()>();
return v;
}
public static java.math.BigInteger toBigInteger(java.net.InetAddress)
{
java.net.InetAddress v;
byte[] v;
java.math.BigInteger v;
v := @parameter: java.net.InetAddress;
v = new java.math.BigInteger;
v = virtualinvoke v.<java.net.InetAddress: byte[] getAddress()>();
specialinvoke v.<java.math.BigInteger: void <init>(int,byte[])>(1, v);
return v;
}
public static java.net.Inet4Address fromInteger(int)
{
int v;
byte[] v;
java.net.Inet4Address v;
v := @parameter: int;
v = staticinvoke <com.google.common.primitives.Ints: byte[] toByteArray(int)>(v);
v = staticinvoke <com.google.common.net.InetAddresses: java.net.Inet4Address getInet4Address(byte[])>(v);
return v;
}
public static java.net.Inet4Address fromIPv4BigInteger(java.math.BigInteger)
{
java.net.InetAddress v;
java.math.BigInteger v;
v := @parameter: java.math.BigInteger;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress fromBigInteger(java.math.BigInteger,boolean)>(v, 0);
return v;
}
public static java.net.Inet6Address fromIPv6BigInteger(java.math.BigInteger)
{
java.net.InetAddress v;
java.math.BigInteger v;
v := @parameter: java.math.BigInteger;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress fromBigInteger(java.math.BigInteger,boolean)>(v, 1);
return v;
}
private static java.net.InetAddress fromBigInteger(java.math.BigInteger, boolean)
{
byte[] v, v;
java.lang.Object[] v;
java.lang.AssertionError v;
java.lang.Integer v;
java.net.InetAddress v;
byte v, v, v;
int v, v, v, v, v, v, v, v;
java.math.BigInteger v;
boolean v, v;
java.lang.IllegalArgumentException v;
java.net.UnknownHostException v;
v := @parameter: java.math.BigInteger;
v := @parameter: boolean;
v = virtualinvoke v.<java.math.BigInteger: int signum()>();
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.Object)>(v, "BigInteger must be greater than or equal to 0");
if v == 0 goto label;
v = 16;
goto label;
label:
v = 4;
label:
v = v;
v = virtualinvoke v.<java.math.BigInteger: byte[] toByteArray()>();
v = newarray (byte)[v];
v = lengthof v;
v = v - v;
v = staticinvoke <java.lang.Math: int max(int,int)>(0, v);
v = lengthof v;
v = v - v;
v = v - v;
v = 0;
label:
if v >= v goto label;
v = v[v];
if v == 0 goto label;
v = newarray (java.lang.Object)[2];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v[1] = v;
v = staticinvoke <com.google.common.net.InetAddresses: java.lang.IllegalArgumentException formatIllegalArgumentException(java.lang.String,java.lang.Object[])>("BigInteger cannot be converted to InetAddress because it has more than %d bytes: %s", v);
throw v;
label:
v = v + 1;
goto label;
label:
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
label:
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByAddress(byte[])>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>(java.lang.Object)>(v);
throw v;
catch java.net.UnknownHostException from label to label with label;
}
public static java.net.InetAddress fromLittleEndianByteArray(byte[]) throws java.net.UnknownHostException
{
byte[] v, v;
java.net.InetAddress v;
byte v;
int v, v, v, v, v, v;
v := @parameter: byte[];
v = lengthof v;
v = newarray (byte)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = lengthof v;
v = v - v;
v = v - 1;
v = v[v];
v[v] = v;
v = v + 1;
goto label;
label:
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByAddress(byte[])>(v);
return v;
}
public static java.net.InetAddress decrement(java.net.InetAddress)
{
byte[] v;
java.net.InetAddress v, v;
byte v, v;
int v, v, v;
boolean v;
v := @parameter: java.net.InetAddress;
v = virtualinvoke v.<java.net.InetAddress: byte[] getAddress()>();
v = lengthof v;
v = v - 1;
label:
if v < 0 goto label;
v = v[v];
if v != 0 goto label;
v[v] = -1;
v = v - 1;
goto label;
label:
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "Decrementing %s would wrap.", v);
v = v[v];
v = v - 1;
v[v] = v;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress bytesToInetAddress(byte[])>(v);
return v;
}
public static java.net.InetAddress increment(java.net.InetAddress)
{
byte[] v;
java.net.InetAddress v, v;
byte v, v;
int v, v, v, v;
boolean v;
v := @parameter: java.net.InetAddress;
v = virtualinvoke v.<java.net.InetAddress: byte[] getAddress()>();
v = lengthof v;
v = v - 1;
label:
if v < 0 goto label;
v = v[v];
v = (int) -1;
if v != v goto label;
v[v] = 0;
v = v - 1;
goto label;
label:
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "Incrementing %s would wrap.", v);
v = v[v];
v = v + 1;
v[v] = v;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress bytesToInetAddress(byte[])>(v);
return v;
}
public static boolean isMaximum(java.net.InetAddress)
{
java.net.InetAddress v;
byte[] v;
byte v;
int v, v, v;
v := @parameter: java.net.InetAddress;
v = virtualinvoke v.<java.net.InetAddress: byte[] getAddress()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = (int) -1;
if v == v goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
}
private static transient java.lang.IllegalArgumentException formatIllegalArgumentException(java.lang.String, java.lang.Object[])
{
java.lang.Object[] v;
java.util.Locale v;
java.lang.String v, v;
java.lang.IllegalArgumentException v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Object[];
v = new java.lang.IllegalArgumentException;
v = <java.util.Locale: java.util.Locale ROOT>;
v = staticinvoke <java.lang.String: java.lang.String format(java.util.Locale,java.lang.String,java.lang.Object[])>(v, v, v);
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
return v;
}
static void <clinit>()
{
java.net.InetAddress v, v;
com.google.common.base.CharMatcher v, v;
v = staticinvoke <com.google.common.base.CharMatcher: com.google.common.base.CharMatcher is(char)>(46);
<com.google.common.net.InetAddresses: com.google.common.base.CharMatcher IPV4_DELIMITER_MATCHER> = v;
v = staticinvoke <com.google.common.base.CharMatcher: com.google.common.base.CharMatcher is(char)>(58);
<com.google.common.net.InetAddresses: com.google.common.base.CharMatcher IPV6_DELIMITER_MATCHER> = v;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress forString(java.lang.String)>("127.0.0.1");
<com.google.common.net.InetAddresses: java.net.Inet4Address LOOPBACK4> = v;
v = staticinvoke <com.google.common.net.InetAddresses: java.net.InetAddress forString(java.lang.String)>("0.0.0.0");
<com.google.common.net.InetAddresses: java.net.Inet4Address ANY4> = v;
return;
}
}