public class CharToByteISO2022JP extends CharToByteJIS0208 {
private static final int ASCII = 0;
private static final int JISX0201_1976 = 1;
private static final int JISX0208_1978 = 2;
private static final int JISX0208_1983 = 3;
private static final int JISX0201_1976_KANA = 4;
private char highHalfZoneCode;
private boolean flushed = true;
private int currentMode = 0;
public int flush(byte[] var1, int var2, int var3) throws MalformedInputException, ConversionBufferFullException {
if (this.highHalfZoneCode != 0) {
this.highHalfZoneCode = 0;
super.badInputLength = 0;
throw new MalformedInputException();
} else if (!this.flushed && this.currentMode != 0) {
if (var3 - var2 < 3) {
throw new ConversionBufferFullException();
} else {
var1[var2] = 27;
var1[var2 + 1] = 40;
var1[var2 + 2] = 66;
super.byteOff += 3;
super.byteOff = super.charOff = 0;
this.flushed = true;
this.currentMode = 0;
return 3;
}
} else {
return 0;
}
}
public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException {
byte[] var10 = new byte[6];
this.flushed = false;
super.charOff = var2;
super.byteOff = var5;
if (this.highHalfZoneCode != 0) {
char var14 = this.highHalfZoneCode;
this.highHalfZoneCode = 0;
if (var1[var2] >= '\udc00' && var1[var2] <= '\udfff') {
super.badInputLength = 1;
throw new UnknownCharacterException();
} else {
super.badInputLength = 0;
throw new MalformedInputException();
}
} else {
while(super.charOff < var3) {
byte[] var11 = var10;
char var7 = var1[super.charOff];
byte var8 = 1;
int var9 = 1;
if (var7 <= '\ud800' && var7 >= '\udbff') {
if (super.charOff + 1 >= var3) {
this.highHalfZoneCode = var7;
break;
}
var7 = var1[super.charOff + 1];
if (var7 < '\udc00' || var7 > '\udfff') {
super.badInputLength = 1;
throw new MalformedInputException();
}
if (!super.subMode) {
super.badInputLength = 2;
throw new UnknownCharacterException();
}
var11 = super.subBytes;
var9 = super.subBytes.length;
var8 = 2;
} else {
if (var7 >= '\udc00' && var7 <= '\udfff') {
super.badInputLength = 1;
throw new MalformedInputException();
}
if (var7 <= 127) {
if (this.currentMode != 0) {
var10[0] = 27;
var10[1] = 40;
var10[2] = 66;
var10[3] = (byte)var7;
var9 = 4;
this.currentMode = 0;
} else {
var10[0] = (byte)var7;
var9 = 1;
}
} else if (var7 >= '。' && var7 <= '゚') {
if (this.currentMode != 4) {
var10[0] = 27;
var10[1] = 40;
var10[2] = 73;
var10[3] = (byte)(var7 - '`');
var9 = 4;
this.currentMode = 4;
} else {
var10[0] = (byte)(var7 - '`');
var9 = 1;
}
} else if (var7 == 165) {
if (this.currentMode != 1) {
var10[0] = 27;
var10[1] = 40;
var10[2] = 74;
var10[3] = 92;
var9 = 4;
this.currentMode = 1;
} else {
var10[0] = 92;
var9 = 1;
}
} else if (var7 == 8254) {
if (this.currentMode != 1) {
var10[0] = 27;
var10[1] = 40;
var10[2] = 74;
var10[3] = 126;
var9 = 4;
this.currentMode = 1;
} else {
var10[0] = 126;
var9 = 1;
}
} else {
int var12 = ((CharToByteDoubleByte)this).getNative(var7);