final class org.jvnet.mimepull.UUDecoderStream extends java.io.FilterInputStream
{
private java.lang.String name;
private int mode;
private byte[] buffer;
private int bufsize;
private int index;
private boolean gotPrefix;
private boolean gotEnd;
private org.jvnet.mimepull.LineInputStream lin;
private boolean ignoreErrors;
private boolean ignoreMissingBeginEnd;
private java.lang.String readAhead;
public void <init>(java.io.InputStream)
{
byte[] v;
org.jvnet.mimepull.LineInputStream v;
org.jvnet.mimepull.UUDecoderStream v;
boolean v, v;
java.io.InputStream v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
v := @parameter: java.io.InputStream;
specialinvoke v.<java.io.FilterInputStream: void <init>(java.io.InputStream)>(v);
v = newarray (byte)[45];
v.<org.jvnet.mimepull.UUDecoderStream: byte[] buffer> = v;
v.<org.jvnet.mimepull.UUDecoderStream: int bufsize> = 0;
v.<org.jvnet.mimepull.UUDecoderStream: int index> = 0;
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotPrefix> = 0;
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotEnd> = 0;
v = new org.jvnet.mimepull.LineInputStream;
specialinvoke v.<org.jvnet.mimepull.LineInputStream: void <init>(java.io.InputStream)>(v);
v.<org.jvnet.mimepull.UUDecoderStream: org.jvnet.mimepull.LineInputStream lin> = v;
v = staticinvoke <org.jvnet.mimepull.PropUtil: boolean getBooleanSystemProperty(java.lang.String,boolean)>("mail.mime.uudecode.ignoreerrors", 0);
v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreErrors> = v;
v = staticinvoke <org.jvnet.mimepull.PropUtil: boolean getBooleanSystemProperty(java.lang.String,boolean)>("mail.mime.uudecode.ignoremissingbeginend", 0);
v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreMissingBeginEnd> = v;
return;
}
public void <init>(java.io.InputStream, boolean, boolean)
{
byte[] v;
org.jvnet.mimepull.LineInputStream v;
org.jvnet.mimepull.UUDecoderStream v;
boolean v, v;
java.io.InputStream v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
v := @parameter: java.io.InputStream;
v := @parameter: boolean;
v := @parameter: boolean;
specialinvoke v.<java.io.FilterInputStream: void <init>(java.io.InputStream)>(v);
v = newarray (byte)[45];
v.<org.jvnet.mimepull.UUDecoderStream: byte[] buffer> = v;
v.<org.jvnet.mimepull.UUDecoderStream: int bufsize> = 0;
v.<org.jvnet.mimepull.UUDecoderStream: int index> = 0;
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotPrefix> = 0;
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotEnd> = 0;
v = new org.jvnet.mimepull.LineInputStream;
specialinvoke v.<org.jvnet.mimepull.LineInputStream: void <init>(java.io.InputStream)>(v);
v.<org.jvnet.mimepull.UUDecoderStream: org.jvnet.mimepull.LineInputStream lin> = v;
v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreErrors> = v;
v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreMissingBeginEnd> = v;
return;
}
public int read() throws java.io.IOException
{
byte[] v;
org.jvnet.mimepull.UUDecoderStream v;
short v;
byte v;
int v, v, v, v, v;
boolean v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
v = v.<org.jvnet.mimepull.UUDecoderStream: int index>;
v = v.<org.jvnet.mimepull.UUDecoderStream: int bufsize>;
if v < v goto label;
specialinvoke v.<org.jvnet.mimepull.UUDecoderStream: void readPrefix()>();
v = specialinvoke v.<org.jvnet.mimepull.UUDecoderStream: boolean decode()>();
if v != 0 goto label;
v = (int) -1;
return v;
label:
v.<org.jvnet.mimepull.UUDecoderStream: int index> = 0;
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: byte[] buffer>;
v = v.<org.jvnet.mimepull.UUDecoderStream: int index>;
v = v + 1;
v.<org.jvnet.mimepull.UUDecoderStream: int index> = v;
v = v[v];
v = v & 255;
return v;
}
public int read(byte[], int, int) throws java.io.IOException
{
byte[] v;
org.jvnet.mimepull.UUDecoderStream v;
int v, v, v, v, v, v, v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
v = 0;
label:
if v >= v goto label;
v = virtualinvoke v.<org.jvnet.mimepull.UUDecoderStream: int read()>();
v = (int) -1;
if v != v goto label;
if v != 0 goto label;
v = (int) -1;
v = v;
goto label;
label:
v = v + v;
v[v] = v;
v = v + 1;
goto label;
label:
return v;
}
public boolean markSupported()
{
org.jvnet.mimepull.UUDecoderStream v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
return 0;
}
public int available() throws java.io.IOException
{
org.jvnet.mimepull.UUDecoderStream v;
int v, v, v, v, v, v, v;
java.io.InputStream v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
v = v.<org.jvnet.mimepull.UUDecoderStream: java.io.InputStream in>;
v = virtualinvoke v.<java.io.InputStream: int available()>();
v = v * 3;
v = v / 4;
v = v.<org.jvnet.mimepull.UUDecoderStream: int bufsize>;
v = v.<org.jvnet.mimepull.UUDecoderStream: int index>;
v = v - v;
v = v + v;
return v;
}
public java.lang.String getName() throws java.io.IOException
{
org.jvnet.mimepull.UUDecoderStream v;
java.lang.String v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
specialinvoke v.<org.jvnet.mimepull.UUDecoderStream: void readPrefix()>();
v = v.<org.jvnet.mimepull.UUDecoderStream: java.lang.String name>;
return v;
}
public int getMode() throws java.io.IOException
{
int v;
org.jvnet.mimepull.UUDecoderStream v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
specialinvoke v.<org.jvnet.mimepull.UUDecoderStream: void readPrefix()>();
v = v.<org.jvnet.mimepull.UUDecoderStream: int mode>;
return v;
}
private void readPrefix() throws java.io.IOException
{
org.jvnet.mimepull.UUDecoderStream v;
int v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v;
boolean v, v, v, v, v, v;
org.jvnet.mimepull.LineInputStream v;
char v;
java.lang.NumberFormatException v;
org.jvnet.mimepull.DecodingException v, v, v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean gotPrefix>;
if v == 0 goto label;
return;
label:
v.<org.jvnet.mimepull.UUDecoderStream: int mode> = 438;
v.<org.jvnet.mimepull.UUDecoderStream: java.lang.String name> = "encoder.buf";
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: org.jvnet.mimepull.LineInputStream lin>;
v = virtualinvoke v.<org.jvnet.mimepull.LineInputStream: java.lang.String readLine()>();
if v != null goto label;
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreMissingBeginEnd>;
if v != 0 goto label;
v = new org.jvnet.mimepull.DecodingException;
specialinvoke v.<org.jvnet.mimepull.DecodingException: void <init>(java.lang.String)>("UUDecoder: Missing begin");
throw v;
label:
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotPrefix> = 1;
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotEnd> = 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean regionMatches(boolean,int,java.lang.String,int,int)>(0, 0, "begin", 0, 5);
if v == 0 goto label;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(6, 9);
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v.<org.jvnet.mimepull.UUDecoderStream: int mode> = v;
label:
goto label;
label:
v := @caughtexception;
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreErrors>;
if v != 0 goto label;
v = new org.jvnet.mimepull.DecodingException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.NumberFormatException)>(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[])>("UUDecoder: Error in mode: \u0001");
specialinvoke v.<org.jvnet.mimepull.DecodingException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 10 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(10);
v.<org.jvnet.mimepull.UUDecoderStream: java.lang.String name> = v;
goto label;
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreErrors>;
if v != 0 goto label;
v = new org.jvnet.mimepull.DecodingException;
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[])>("UUDecoder: Missing name: \u0001");
specialinvoke v.<org.jvnet.mimepull.DecodingException: void <init>(java.lang.String)>(v);
throw v;
label:
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotPrefix> = 1;
goto label;
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreMissingBeginEnd>;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
v = v - 32;
v = v & 63;
v = v * 8;
v = v + 5;
v = v / 6;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + 1;
if v < v goto label;
label:
v.<org.jvnet.mimepull.UUDecoderStream: java.lang.String readAhead> = v;
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotPrefix> = 1;
label:
return;
catch java.lang.NumberFormatException from label to label with label;
}
private boolean decode() throws java.io.IOException
{
byte[] v, v, v;
byte v, v, v;
java.lang.String v, v, v;
org.jvnet.mimepull.DecodingException v, v, v, v;
boolean v, v, v, v, v, v, v;
org.jvnet.mimepull.UUDecoderStream v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.jvnet.mimepull.LineInputStream v, v;
char v, v, v;
v := @this: org.jvnet.mimepull.UUDecoderStream;
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean gotEnd>;
if v == 0 goto label;
return 0;
label:
v.<org.jvnet.mimepull.UUDecoderStream: int bufsize> = 0;
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: java.lang.String readAhead>;
if v == null goto label;
v = v.<org.jvnet.mimepull.UUDecoderStream: java.lang.String readAhead>;
v.<org.jvnet.mimepull.UUDecoderStream: java.lang.String readAhead> = null;
goto label;
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: org.jvnet.mimepull.LineInputStream lin>;
v = virtualinvoke v.<org.jvnet.mimepull.LineInputStream: java.lang.String readLine()>();
label:
if v != null goto label;
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreMissingBeginEnd>;
if v != 0 goto label;
v = new org.jvnet.mimepull.DecodingException;
specialinvoke v.<org.jvnet.mimepull.DecodingException: void <init>(java.lang.String)>("UUDecoder: Missing end at EOF");
throw v;
label:
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotEnd> = 1;
return 0;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("end");
if v == 0 goto label;
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotEnd> = 1;
return 0;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
if v >= 32 goto label;
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreErrors>;
if v != 0 goto label;
v = new org.jvnet.mimepull.DecodingException;
specialinvoke v.<org.jvnet.mimepull.DecodingException: void <init>(java.lang.String)>("UUDecoder: Buffer format error");
throw v;
label:
v = v - 32;
v = v & 63;
if v != 0 goto label;
v = v.<org.jvnet.mimepull.UUDecoderStream: org.jvnet.mimepull.LineInputStream lin>;
v = virtualinvoke v.<org.jvnet.mimepull.LineInputStream: java.lang.String readLine()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("end");
if v != 0 goto label;
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreMissingBeginEnd>;
if v != 0 goto label;
v = new org.jvnet.mimepull.DecodingException;
specialinvoke v.<org.jvnet.mimepull.DecodingException: void <init>(java.lang.String)>("UUDecoder: Missing End after count 0 line");
throw v;
label:
v.<org.jvnet.mimepull.UUDecoderStream: boolean gotEnd> = 1;
return 0;
label:
v = v * 8;
v = v + 5;
v = v / 6;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + 1;
if v >= v goto label;
v = v.<org.jvnet.mimepull.UUDecoderStream: boolean ignoreErrors>;
if v != 0 goto label;
v = new org.jvnet.mimepull.DecodingException;
specialinvoke v.<org.jvnet.mimepull.DecodingException: void <init>(java.lang.String)>("UUDecoder: Short buffer error");
throw v;
label:
v = 1;
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: int bufsize>;
if v >= v goto label;
v = v + 1;
virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = v + 1;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = v - 32;
v = v & 63;
v = v.<org.jvnet.mimepull.UUDecoderStream: byte[] buffer>;
v = v.<org.jvnet.mimepull.UUDecoderStream: int bufsize>;
v = v + 1;
v.<org.jvnet.mimepull.UUDecoderStream: int bufsize> = v;
v = v << 2;
v = v & 252;
v = v >>> 4;
v = v & 3;
v = v | v;
v[v] = v;
v = v.<org.jvnet.mimepull.UUDecoderStream: int bufsize>;
if v >= v goto label;
v = v;
v = v + 1;
virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = v.<org.jvnet.mimepull.UUDecoderStream: byte[] buffer>;
v = v.<org.jvnet.mimepull.UUDecoderStream: int bufsize>;
v = v + 1;
v.<org.jvnet.mimepull.UUDecoderStream: int bufsize> = v;
v = v << 4;
v = v & 240;
v = v >>> 2;
v = v & 15;
v = v | v;
v[v] = v;
label:
v = v.<org.jvnet.mimepull.UUDecoderStream: int bufsize>;
if v >= v goto label;
v = v;
v = v + 1;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = v - 32;
v = v & 63;
v = v.<org.jvnet.mimepull.UUDecoderStream: byte[] buffer>;
v = v.<org.jvnet.mimepull.UUDecoderStream: int bufsize>;
v = v + 1;
v.<org.jvnet.mimepull.UUDecoderStream: int bufsize> = v;
v = v << 6;
v = v & 192;
v = v & 63;
v = v | v;
v[v] = v;
goto label;
label:
return 1;
}
}