public abstract class org.apache.axiom.util.base.AbstractBase64DecodingWriter extends java.io.Writer
{
private final char[] in;
private final byte[] out;
private int rest;
public void <init>()
{
byte[] v;
char[] v;
org.apache.axiom.util.base.AbstractBase64DecodingWriter v;
v := @this: org.apache.axiom.util.base.AbstractBase64DecodingWriter;
specialinvoke v.<java.io.Writer: void <init>()>();
v = newarray (char)[4];
v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: char[] in> = v;
v = newarray (byte)[3];
v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: byte[] out> = v;
return;
}
private static boolean isWhitespace(int)
{
int v;
boolean v;
v := @parameter: int;
if v > 32 goto label;
if v == 32 goto label;
if v == 10 goto label;
if v == 13 goto label;
if v != 9 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public final void write(char[], int, int) throws java.io.IOException
{
int v, v;
char[] v;
char v;
org.apache.axiom.util.base.AbstractBase64DecodingWriter v;
v := @this: org.apache.axiom.util.base.AbstractBase64DecodingWriter;
v := @parameter: char[];
v := @parameter: int;
v := @parameter: int;
label:
if v <= 0 goto label;
v = v[v];
virtualinvoke v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: void write(int)>(v);
v = v + 1;
v = v - 1;
goto label;
label:
return;
}
public final void write(java.lang.String, int, int) throws java.io.IOException
{
int v, v;
char v;
java.lang.String v;
org.apache.axiom.util.base.AbstractBase64DecodingWriter v;
v := @this: org.apache.axiom.util.base.AbstractBase64DecodingWriter;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: int;
label:
if v <= 0 goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
virtualinvoke v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: void write(int)>(v);
v = v + 1;
v = v - 1;
goto label;
label:
return;
}
public final void write(int) throws java.io.IOException
{
org.apache.axiom.util.base.AbstractBase64DecodingWriter v;
int v, v, v, v;
char[] v, v;
boolean v;
v := @this: org.apache.axiom.util.base.AbstractBase64DecodingWriter;
v := @parameter: int;
v = staticinvoke <org.apache.axiom.util.base.AbstractBase64DecodingWriter: boolean isWhitespace(int)>(v);
if v != 0 goto label;
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: char[] in>;
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: int rest>;
v = v + 1;
v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: int rest> = v;
v[v] = v;
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: int rest>;
if v != 4 goto label;
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: char[] in>;
specialinvoke v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: void decode(char[],int)>(v, 0);
v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: int rest> = 0;
label:
return;
}
private int decode(char) throws java.io.IOException
{
byte[] v, v;
char v;
java.io.IOException v;
org.apache.axiom.util.base.AbstractBase64DecodingWriter v;
byte v;
int v, v;
java.lang.String v;
v := @this: org.apache.axiom.util.base.AbstractBase64DecodingWriter;
v := @parameter: char;
if v != 61 goto label;
v = (int) -1;
return v;
label:
v = <org.apache.axiom.util.base.Base64Constants: byte[] S_DECODETABLE>;
v = lengthof v;
if v >= v goto label;
v = <org.apache.axiom.util.base.Base64Constants: byte[] S_DECODETABLE>;
v = v[v];
if v < 0 goto label;
return v;
label:
v = new java.io.IOException;
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[])>("Invalid base char \'\u0001\'");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
}
private void decode(char[], int) throws java.io.IOException
{
byte[] v, v, v, v, v, v, v;
org.apache.axiom.util.base.AbstractBase64DecodingWriter v;
byte 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, v;
char v, v, v, v, v, v;
char[] v;
v := @this: org.apache.axiom.util.base.AbstractBase64DecodingWriter;
v := @parameter: char[];
v := @parameter: int;
v = 3;
v = v + 3;
v = v[v];
if v != 61 goto label;
v = 2;
label:
v = v + 2;
v = v[v];
if v != 61 goto label;
v = 1;
label:
v = v[v];
v = specialinvoke v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: int decode(char)>(v);
v = v + 1;
v = v[v];
v = specialinvoke v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: int decode(char)>(v);
v = v + 2;
v = v[v];
v = specialinvoke v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: int decode(char)>(v);
v = v + 3;
v = v[v];
v = specialinvoke v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: int decode(char)>(v);
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: byte[] out>;
v = v << 2;
v = v & 252;
v = v >> 4;
v = v & 3;
v = v | v;
v[0] = v;
goto label;
label:
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: byte[] out>;
v = v << 2;
v = v & 252;
v = v >> 4;
v = v & 3;
v = v | v;
v[0] = v;
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: byte[] out>;
v = v << 4;
v = v & 240;
v = v >> 2;
v = v & 15;
v = v | v;
v[1] = v;
goto label;
label:
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: byte[] out>;
v = v << 2;
v = v & 252;
v = v >> 4;
v = v & 3;
v = v | v;
v[0] = v;
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: byte[] out>;
v = v << 4;
v = v & 240;
v = v >> 2;
v = v & 15;
v = v | v;
v[1] = v;
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: byte[] out>;
v = v << 6;
v = v & 192;
v = v & 63;
v = v | v;
v[2] = v;
label:
v = v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: byte[] out>;
virtualinvoke v.<org.apache.axiom.util.base.AbstractBase64DecodingWriter: void doWrite(byte[],int)>(v, v);
return;
}
protected abstract void doWrite(byte[], int) throws java.io.IOException;
}