public class com.aayushatharva.brotli4j.Brotli4jLoader extends java.lang.Object
{
private static final java.lang.Throwable UNAVAILABILITY_CAUSE;
public void <init>()
{
com.aayushatharva.brotli4j.Brotli4jLoader v;
v := @this: com.aayushatharva.brotli4j.Brotli4jLoader;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static boolean isAvailable()
{
java.lang.Throwable v;
boolean v;
v = <com.aayushatharva.brotli4j.Brotli4jLoader: java.lang.Throwable UNAVAILABILITY_CAUSE>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static void ensureAvailability()
{
java.lang.Throwable v, v;
java.lang.UnsatisfiedLinkError v;
v = <com.aayushatharva.brotli4j.Brotli4jLoader: java.lang.Throwable UNAVAILABILITY_CAUSE>;
if v == null goto label;
v = new java.lang.UnsatisfiedLinkError;
specialinvoke v.<java.lang.UnsatisfiedLinkError: void <init>(java.lang.String)>("Failed to load Brotli native library");
v = <com.aayushatharva.brotli4j.Brotli4jLoader: java.lang.Throwable UNAVAILABILITY_CAUSE>;
virtualinvoke v.<java.lang.UnsatisfiedLinkError: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
label:
return;
}
public static java.lang.Throwable getUnavailabilityCause()
{
java.lang.Throwable v;
v = <com.aayushatharva.brotli4j.Brotli4jLoader: java.lang.Throwable UNAVAILABILITY_CAUSE>;
return v;
}
private static java.lang.String getPlatform()
{
java.lang.UnsupportedOperationException v;
java.lang.String v, v, v;
boolean v, v, v, v, v, v, v, v, v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("os.name");
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("os.arch");
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("Linux");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("amd64");
if v == 0 goto label;
return "linux-x86_64";
label:
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("aarch64");
if v == 0 goto label;
return "linux-aarch64";
label:
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("arm");
if v == 0 goto label;
return "linux-armv7";
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("Windows");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("amd64");
if v == 0 goto label;
return "windows-x86_64";
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("Mac");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("x86_64");
if v == 0 goto label;
return "osx-x86_64";
label:
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("aarch64");
if v == 0 goto label;
return "osx-aarch64";
label:
v = new java.lang.UnsupportedOperationException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("Unsupported OS and Architecture: \u, \u0001");
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>(v);
throw v;
}
static void <clinit>()
{
java.lang.Throwable v, v, v, v, v, v;
java.nio.file.CopyOption[] v;
long v;
java.nio.file.StandardCopyOption v;
java.lang.String v, v, v, v, v, v, v, v, v;
java.nio.file.Path v;
boolean v, v;
java.util.Iterator v;
java.util.ServiceLoader v;
java.io.File v, v;
java.lang.Class v, v;
java.lang.Object v;
java.lang.ClassLoader v;
java.lang.UnsatisfiedLinkError v;
java.io.InputStream v;
v = null;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("brotli4j.library.path");
if v == null goto label;
label:
staticinvoke <java.lang.System: void load(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = v;
goto label;
label:
staticinvoke <java.lang.System: void loadLibrary(java.lang.String)>("brotli");
label:
goto label;
label:
v := @caughtexception;
label:
v = staticinvoke <java.lang.System: java.lang.String mapLibraryName(java.lang.String)>("brotli");
v = staticinvoke <com.aayushatharva.brotli4j.Brotli4jLoader: java.lang.String getPlatform()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("/lib/\u0001/\u0001");
v = new java.io.File;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("java.io.tmpdir");
v = staticinvoke <java.lang.System: long nanoTime()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long)>(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[])>("com_aayushatharva_brotli4j_\u0001");
specialinvoke v.<java.io.File: void <init>(java.lang.String,java.lang.String)>(v, v);
virtualinvoke v.<java.io.File: boolean mkdir()>();
virtualinvoke v.<java.io.File: void deleteOnExit()>();
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = class "Lcom/aayushatharva/brotli4j/Brotli4jLoader;";
v = class "Lcom/aayushatharva/brotli4j/Brotli4jLoader;";
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
v = staticinvoke <java.util.ServiceLoader: java.util.ServiceLoader load(java.lang.Class,java.lang.ClassLoader)>(class "Lcom/aayushatharva/brotli4j/service/BrotliNativeProvider;", v);
v = virtualinvoke v.<java.util.ServiceLoader: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<com.aayushatharva.brotli4j.service.BrotliNativeProvider: java.lang.String platformName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
label:
v = virtualinvoke v.<java.lang.Class: java.io.InputStream getResourceAsStream(java.lang.String)>(v);
label:
if v != null goto label;
v = new java.lang.UnsatisfiedLinkError;
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[])>("Failed to find Brotli native library in classpath: \u0001");
specialinvoke v.<java.lang.UnsatisfiedLinkError: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.io.File: java.nio.file.Path toPath()>();
v = newarray (java.nio.file.CopyOption)[1];
v = <java.nio.file.StandardCopyOption: java.nio.file.StandardCopyOption REPLACE_EXISTING>;
v[0] = v;
staticinvoke <java.nio.file.Files: long copy(java.io.InputStream,java.nio.file.Path,java.nio.file.CopyOption[])>(v, v, v);
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
staticinvoke <java.lang.System: void load(java.lang.String)>(v);
label:
virtualinvoke v.<java.io.InputStream: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
virtualinvoke v.<java.io.File: void deleteOnExit()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = v;
label:
<com.aayushatharva.brotli4j.Brotli4jLoader: java.lang.Throwable UNAVAILABILITY_CAUSE> = v;
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
}