throw new IOException("Readers not supported in JDK 1.0");
}
if (!((InputStream)var1).markSupported()) {
var1 = new BufferedInputStream((InputStream)var1);
this.field_0 = (InputStream)var1;
}
((InputStream)var1).mark(4096);
this.insr = new InputStreamReader((InputStream)var1, "UTF8");
this.readState = 4;
this.encoding = "UTF-8";
return;
} catch (IOException var8) {
this.readState = 6;
this.encoding = "ASCII";
}
}
}
public void setEncoding(String var1) throws IOException {
this.insr = null;
if (!var1.equalsIgnoreCase("ISO-10646-UCS-2") && !var1.equalsIgnoreCase("UCS-2")) {
String var2;
if (var1.equalsIgnoreCase("Shift_JIS")) {
var2 = "SJIS";
} else if (var1.equalsIgnoreCase("ISO-8859-1")) {
var2 = "8859_1";
} else {
if (var1.equalsIgnoreCase("ISO-10646-UCS-4")) {
throw new IOException("UCS-4 not yet supported");
}
if (var1.equalsIgnoreCase("UTF-8")) {
var2 = "UTF8";
} else {
var2 = var1;
}
}
if (!this.encoding.equalsIgnoreCase("ASCII") && !this.encoding.equalsIgnoreCase("UTF-8")) {
throw new IOException("Illegal Change of Encoding");
} else {
try {
if (this.jdk11) {
if (this.pos != -1) {
this.field_0.reset();
this.field_0.skip((long)(this.pos + 1));
}
this.insr = new InputStreamReader(this.field_0, var2);
this.readState = 1;
this.encoding = var1;
} else {
throw new IOException(var2 + " is not supported by your Java Virtual Machine." + " Try installing the latest VM from http://www.microsoft.com/java/download.htm");
}
} catch (Exception var3) {
throw new IOException("Unrecognized encoding: " + var1);
}
}
} else if (!this.encoding.equalsIgnoreCase("UCS-2")) {
throw new IOException("Illegal Change of Encoding");
} else {
this.readState = 2;
this.encoding = "UCS-2";
}
}
public int read() throws IOException {
switch (this.readState) {
case 1:
++this.pos;
return this.insr.read();
case 2:
int var3 = this.field_0.read();
if (var3 == -1) {
return -1;
}
int var4 = this.field_0.read();
return var3 << 8 | var4;
case 3:
return this.field_0.read();
case 4:
if (this.index >= 0) {
int[] var6 = this.next;
int var9 = this.index;
this.index = var9 + -1;
return var6[var9];
}
this.readState = 1;
return this.read();
case 5:
int var1;
if (this.index >= 0) {
int[] var10000 = this.next;
int var10003 = this.index;
this.index = var10003 + -1;
var1 = var10000[var10003];
} else {
this.readState = 2;
var1 = this.field_0.read();
}
if (var1 == -1) {
return -1;
}
int var2;
if (this.index >= 0) {
int[] var5 = this.next;
int var8 = this.index;
this.index = var8 + -1;
var2 = var5[var8];
} else {
this.readState = 2;
var2 = this.field_0.read();
}
return var1 << 8 | var2;
case 6:
default:
if (this.index >= 0) {
int[] var7 = this.next;
int var10 = this.index;
this.index = var10 + -1;
return var7[var10];
} else {
this.readState = 3;
return this.field_0.read();
}
}
}
private void push(char var1) {
if (this.index == 3) {
System.exit(0);
}
this.next[++this.index] = var1;
}
public XMLOutputStream createOutputStream(OutputStream var1) {