home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- final class Bidi {
- private boolean ltr;
- private byte[] dirs;
- private byte[] levels;
- private int[] l2vMap;
- private int[] v2lMap;
- // $FF: renamed from: L byte
- static final byte field_0 = 0;
- // $FF: renamed from: R byte
- static final byte field_1 = 1;
- // $FF: renamed from: EN byte
- static final byte field_2 = 2;
- // $FF: renamed from: ES byte
- static final byte field_3 = 3;
- // $FF: renamed from: ET byte
- static final byte field_4 = 4;
- // $FF: renamed from: AN byte
- static final byte field_5 = 5;
- // $FF: renamed from: CS byte
- static final byte field_6 = 6;
- // $FF: renamed from: B byte
- static final byte field_7 = 7;
- // $FF: renamed from: S byte
- static final byte field_8 = 8;
- // $FF: renamed from: WS byte
- static final byte field_9 = 9;
- // $FF: renamed from: ON byte
- static final byte field_10 = 10;
- // $FF: renamed from: AR byte
- static final byte field_11 = 11;
- static final char LRM = '\u200e';
- static final char RLM = '\u200f';
- static final char LRE = '\u202a';
- static final char RLE = '\u202b';
- static final char PDF = '\u202c';
- static final char LRO = '\u202d';
- static final char RLO = '\u202e';
- static final char NUMLEVELS = '\u0010';
- static final boolean[] neutral = new boolean[]{false, false, false, false, false, false, false, true, true, true, true, false};
- static final boolean[] strongDirection = new boolean[]{true, true, false, false, false, false, false, false, false, false, false, true};
- static final boolean[] strongDirectionOrB = new boolean[]{true, true, false, false, false, false, false, true, false, false, false, true};
- private static byte[] dirIndices = new byte[]{14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -124, 14, 18, 15, 16, 17, 18, 19, 20, 21, 22, 23, 14, 24, 25, 26, 27, 14, 28, 29, 30, -104, 14, 11, 2, 31, 32, 33, 34, 35, 36, 37, 38, 14, 39, -103, 14, 8, 40, 41, 42, 43, 44, 45, 46, 47, -76, 14, -2, 2, -91, 2, 1, 48, -104, 14, -41, 2, 1, 49, -60, 2, 12, 50, 14, 51, 52, 53, 53, 54, 55, 56, 57, 58, 59};
- private static byte[] dirValues = new byte[]{-119, 10, 1, 8, -106, 10, 3, 9, 10, 10, -125, 4, -123, 10, 5, 4, 6, 4, 6, 3, -118, 2, 1, 6, -122, 10, -102, 0, -122, 10, -102, 0, -91, 10, 2, 9, 10, -124, 4, -118, 10, 4, 4, 4, 2, 2, -123, 10, 1, 2, -122, 10, -105, 0, 1, 10, -97, 0, 1, 10, -2, 0, -2, 0, 2, 0, 0, -124, 10, -98, 0, -72, 10, -39, 0, -121, 10, -81, 0, 1, 10, -118, 0, -106, 10, -58, 0, -102, 10, 2, 0, 0, -110, 10, 2, 0, 0, -124, 10, 1, 0, -125, 10, 1, 0, -123, 10, -121, 0, 3, 10, 0, 10, -108, 0, 1, 10, -84, 0, 1, 10, -121, 0, -125, 10, 8, 0, 10, 0, 10, 0, 10, 0, 10, -110, 0, -115, 10, -116, 0, 1, 10, -62, 0, 1, 10, -116, 0, 1, 10, -87, 0, -119, 10, -75, 0, 8, 10, 10, 0, 0, 10, 10, 0, 0, -125, 10, -100, 0, 2, 10, 10, -120, 0, 4, 10, 10, 0, 0, -73, 10, -90, 0, 2, 10, 10, -121, 0, 1, 10, -89, 0, 2, 10, 0, -121, 10, -111, 1, 1, 10, -105, 1, 1, 10, -118, 1, -117, 10, -101, 1, -123, 10, -123, 1, -105, 10, 1, 11, -114, 10, 1, 11, -125, 10, 2, 11, 10, -102, 11, -123, 10, -109, 11, -115, 10, -118, 5, 6, 4, 5, 5, 11, 10, 10, -56, 11, 2, 10, 10, -123, 11, 1, 10, -113, 11, 1, 10, -98, 11, 2, 10, 10, -118, 2, -2, 10, -119, 10, -125, 0, 1, 10, -75, 0, 2, 10, 10, -110, 0, 2, 10, 10, -123, 0, -125, 10, -103, 0, -112, 10, -125, 0, 1, 10, -120, 0, 6, 10, 10, 0, 0, 10, 10, -106, 0, 1, 10, -121, 0, 2, 10, 0, -125, 10, -124, 0, 4, 10, 10, 0, 10, -121, 0, 6, 10, 10, 0, 0, 10, 10, -125, 0, -119, 10, 1, 0, -124, 10, 3, 0, 0, 10, -123, 0, 2, 10, 10, -107, 0, -121, 10, 3, 0, 10, 10, -122, 0, -124, 10, 4, 0, 0, 10, 10, -106, 0, 1, 10, -121, 0, 13, 10, 0, 0, 10, 0, 0, 10, 0, 0, 10, 10, 0, 10, -123, 0, -124, 10, 4, 0, 0, 10, 10, -125, 0, -117, 10, -124, 0, 2, 10, 0, -121, 10, -113, 0, -116, 10, -125, 0, 1, 10, -121, 0, 3, 10, 0, 10, -125, 0, 1, 10, -106, 0, 1, 10, -121, 0, 4, 10, 0, 0, 10, -123, 0, 2, 10, 10, -118, 0, 1, 10, -125, 0, 1, 10, -125, 0, 3, 10, 10, 0, -113, 10, 1, 0, -123, 10, -118, 0, -111, 10, -125, 0, 1, 10, -120, 0, 6, 10, 10, 0, 0, 10, 10, -106, 0, 1, 10, -121, 0, 5, 10, 0, 0, 10, 10, -124, 0, 2, 10, 10, -120, 0, -125, 10, 4, 0, 0, 10, 10, -125, 0, -120, 10, 2, 0, 0, -124, 10, 3, 0, 0, 10, -125, 0, -124, 10, -117, 0, -111, 10, 3, 0, 0, 10, -122, 0, -125, 10, -125, 0, 1, 10, -124, 0, -125, 10, 7, 0, 0, 10, 0, 10, 0, 0, -125, 10, 2, 0, 0, -125, 10, -125, 0, -125, 10, -120, 0, 1, 10, -125, 0, -124, 10, -123, 0, -125, 10, -125, 0, 1, 10, -124, 0, -119, 10, 1, 0, -113, 10, -116, 0, -114, 10, -125, 0, 1, 10, -120, 0, 1, 10, -125, 0, 1, 10, -105, 0, 1, 10, -118, 0, 1, 10, -123, 0, -124, 10, -121, 0, 1, 10, -125, 0, 1, 10, -124, 0, -121, 10, 2, 0, 0, -119, 10, 2, 0, 0, -124, 10, -118, 0, -110, 10, 3, 0, 0, 10, -120, 0, 1, 10, -125, 0, 1, 10, -105, 0, 1, 10, -118, 0, 1, 10, -123, 0, -124, 10, -121, 0, 1, 10, -125, 0, 1, 10, -124, 0, -121, 10, 2, 0, 0, -121, 10, 4, 0, 10, 0, 0, -124, 10, -118, 0, -110, 10, 3, 0, 0, 10, -120, 0, 1, 10, -125, 0, 1, 10, -105, 0, 1, 10, -112, 0, -124, 10, -122, 0, 2, 10, 10, -125, 0, 1, 10, -124, 0, -119, 10, 1, 0, -120, 10, 2, 0, 0, -124, 10, -118, 0, -111, 10, -70, 0, -124, 10, -99, 0, -91, 10, 13, 0, 0, 10, 0, 10, 10, 0, 0, 10, 0, 10, 10, 0, -122, 10, -124, 0, 1, 10, -121, 0, 1, 10, -125, 0, 9, 10, 0, 10, 0, 10, 10, 0, 0, 10, -115, 0, 1, 10, -125, 0, 2, 10, 10, -123, 0, 3, 10, 0, 10, -122, 0, 2, 10, 10, -118, 0, 4, 10, 10, 0, 0, -94, 10, -56, 0, 1, 10, -95, 0, -121, 10, -101, 0, -124, 10, -122, 0, 3, 10, 0, 10, -107, 0, -125, 10, -121, 0, 2, 10, 0, -26, 10, -90, 0, -118, 10, -89, 0, -124, 10, 1, 0, -124, 10, -38, 0, -123, 10, -60, 0, -123, 10, -46, 0, -122, 10, -100, 0, -124, 10, -38, 0, -122, 10, -106, 0, 2, 10, 10, -122, 0, 2, 10, 10, -90, 0, 2, 10, 10, -122, 0, 2, 10, 10, -120, 0, 7, 10, 0, 10, 0, 10, 0, 10, -97, 0, 2, 10, 10, -75, 0, 1, 10, -113, 0, 1, 10, -114, 0, 2, 10, 10, -122, 0, 1, 10, -109, 0, 2, 10, 10, -125, 0, 1, 10, -119, 0, 1, 10, -121, 9, 1, 6, -124, 9, 4, 10, 10, 0, 1, -104, 10, 2, 7, 7, -122, 10, -123, 4, -69, 10, 1, 2, -125, 10, -122, 2, 2, 4, 4, -124, 10, -118, 2, 2, 4, 4, -108, 10, -115, 4, -93, 10, -110, 0, -2, 10, -93, 0, -2, 10, -111, 10, 2, 4, 4, -2, 10, -92, 10, -59, 0, -123, 10, 1, 9, -96, 10, -113, 0, -111, 10, -44, 0, -124, 10, -122, 0, 2, 10, 10, -34, 0, -122, 10, -88, 0, -124, 10, -34, 0, 1, 10, -112, 0, -32, 10, -99, 0, -125, 10, -92, 0, -100, 10, -100, 0, -125, 10, -78, 0, -113, 10, -116, 0, -124, 10, -81, 0, 1, 10, -9, 0, -124, 10, -29, 0, 2, 10, 10, -97, 0, 1, 10, -90, 0, -38, 10, -92, 0, -36, 10, -82, 0, -46, 10, -121, 0, -116, 10, -123, 0, -122, 10, -103, 1, 1, 10, -123, 1, 9, 10, 1, 10, 1, 1, 10, 1, 1, 10, -20, 1, -95, 10, -2, 1, -19, 1, -110, 10, -64, 1, 2, 10, 10, -74, 1, -88, 10, -116, 1, -12, 10, -125, 1, 3, 10, 1, 10, -2, 1, -119, 1, -109, 10, -118, 2, -121, 10, -102, 0, -122, 10, -102, 0, -118, 10, -38, 0, -125, 10, -122, 0, 2, 10, 10, -122, 0, 2, 10, 10, -122, 0, 2, 10, 10, -125, 0, -93, 10};
-
- static {
- dirIndices = RLEUtilities.readRLE(dirIndices);
- dirValues = RLEUtilities.readRLE(dirValues);
- }
-
- Bidi(Bidi var1, int var2, int var3) {
- byte[] var4 = var1.dirs;
- byte[] var5 = createLineLevels(var4, var1.levels, var1.ltr, var2, var3);
- this.ltr = var1.ltr;
- this.dirs = null;
- this.levels = var5;
- }
-
- protected Bidi(byte[] var1, boolean var2) {
- this.ltr = var2;
- this.dirs = null;
- this.levels = var1;
- }
-
- Bidi(byte[] var1, byte[] var2, boolean var3) {
- applyBidiRules((byte[])var1.clone(), var2, var3);
- this.ltr = var3;
- this.dirs = var1;
- this.levels = var2;
- }
-
- Bidi(char[] var1) {
- this(var1, defaultIsLTR(var1, 0, var1.length));
- }
-
- Bidi(char[] var1, boolean var2) {
- this(var1, getEmbeddingArray(var1, var2), var2);
- }
-
- Bidi(char[] var1, byte[] var2, boolean var3) {
- byte[] var4 = getDirectionCodeArray(var1);
-
- for(int var5 = 0; var5 < var2.length; ++var5) {
- if ((var2[var5] & 16) != 0) {
- var2[var5] = (byte)(var2[var5] & 15);
- var4[var5] = (byte)(var2[var5] & 1);
- }
- }
-
- applyBidiRules((byte[])var4.clone(), var2, var3);
- this.ltr = var3;
- this.dirs = var4;
- this.levels = var2;
- }
-
- static void applyBidiRules(byte[] var0, byte[] var1, boolean var2) {
- resolveWeakTypes(var0, var1, var2);
- resolveNeutralTypes(var0, var1, var2);
- resolveImplicitLevels(var0, var1, var2);
- }
-
- private static int[] computeContiguousOrder(int[] var0, int var1, int var2) {
- int[] var3 = new int[var2 - var1];
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- var3[var4] = var4 + var1;
- }
-
- for(int var5 = 0; var5 < var3.length - 1; ++var5) {
- int var6 = var5;
- int var7 = var0[var3[var5]];
-
- for(int var8 = var5; var8 < var3.length; ++var8) {
- if (var0[var3[var8]] < var7) {
- var6 = var8;
- var7 = var0[var3[var8]];
- }
- }
-
- int var9 = var3[var5];
- var3[var5] = var3[var6];
- var3[var6] = var9;
- }
-
- if (var1 != 0) {
- for(int var10 = 0; var10 < var3.length; ++var10) {
- var3[var10] -= var1;
- }
- }
-
- int var11;
- for(var11 = 0; var11 < var3.length && var3[var11] == var11; ++var11) {
- }
-
- if (var11 == var3.length) {
- return null;
- } else {
- return getInverseOrder(var3);
- }
- }
-
- static Bidi createBidi(char[] var0) {
- return new Bidi(var0);
- }
-
- Bidi createLineBidi(int var1, int var2) {
- byte[] var3 = new byte[var2 - var1];
- System.arraycopy(this.levels, var1, var3, 0, var3.length);
- if (this.dirs != null) {
- byte var4 = (byte)(this.ltr ? 0 : 1);
- int var5 = var3.length;
-
- while(true) {
- --var5;
- if (var5 < 0 || var3[var5] == var4 || this.dirs[var1 + var5] != 9) {
- break;
- }
-
- var3[var5] = var4;
- }
- }
-
- return new Bidi(var3, this.ltr);
- }
-
- static byte[] createLineLevels(byte[] var0, byte[] var1, boolean var2, int var3, int var4) {
- byte[] var5 = new byte[var4 - var3];
- System.arraycopy(var1, var3, var5, 0, var5.length);
- byte var6 = (byte)(var2 ? 0 : 1);
-
- for(int var7 = var4 - var3 - 1; var7 >= 0 && var5[var7] != var6 && var0[var3 + var7] == 9; --var7) {
- var5[var7] = var6;
- }
-
- return var5;
- }
-
- static int[] createVisualToLogicalMap(byte[] var0) {
- int var1 = var0.length;
- int[] var2 = new int[var1];
- byte var3 = 17;
- byte var4 = 0;
-
- for(int var5 = 0; var5 < var1; ++var5) {
- var2[var5] = var5;
- byte var6 = var0[var5];
- if (var6 > var4) {
- var4 = var6;
- }
-
- if ((var6 & 1) != 0 && var6 < var3) {
- var3 = var6;
- }
- }
-
- label59:
- for(; var4 >= var3; --var4) {
- int var10 = 0;
-
- while(true) {
- while(var10 >= var1 || var0[var10] >= var4) {
- int var7 = var10++;
- if (var7 == var0.length) {
- continue label59;
- }
-
- while(var10 < var1 && var0[var10] >= var4) {
- ++var10;
- }
-
- for(int var8 = var10 - 1; var7 < var8; --var8) {
- int var9 = var2[var7];
- var2[var7] = var2[var8];
- var2[var8] = var9;
- ++var7;
- }
- }
-
- ++var10;
- }
- }
-
- return var2;
- }
-
- static boolean defaultIsLTR(char[] var0, int var1, int var2) {
- while(var1 < var2) {
- byte var3 = getDirectionCode(var0[var1++]);
- if (strongDirection[var3]) {
- return var3 == 0;
- }
- }
-
- return true;
- }
-
- static int[] getContiguousOrder(int[] var0) {
- return var0 != null ? computeContiguousOrder(var0, 0, var0.length) : null;
- }
-
- static byte getDirectionCode(char var0) {
- return dirValues[(dirIndices[var0 >> 7] << 7) + (var0 & 127)];
- }
-
- static byte[] getDirectionCodeArray(char[] var0) {
- byte var1 = 10;
- byte[] var2 = new byte[var0.length];
-
- for(int var3 = 0; var3 < var0.length; ++var3) {
- char var4 = var0[var3];
- byte var5 = getDirectionCode(var4);
- if (strongDirectionOrB[var5]) {
- var1 = var5;
- } else if (var5 == 10 && isCombiningMark(var4)) {
- var5 = var1;
- }
-
- var2[var3] = var5;
- }
-
- return var2;
- }
-
- static byte[] getEmbeddingArray(char[] var0, boolean var1) {
- byte[] var2 = new byte[var0.length];
- byte var3 = (byte)(var1 ? 0 : 1);
- byte var4 = var3;
- int var5 = 0;
- int var6 = 0;
- byte[] var7 = new byte[16];
-
- for(int var8 = 0; var8 < var0.length; ++var8) {
- char var9 = var0[var8];
- switch (var9) {
- case '\u202a':
- case '\u202d':
- if (var6 > 0) {
- ++var6;
- } else {
- byte var11 = (byte)((var4 & 14) + 2);
- if (var11 < 16) {
- var7[var5++] = var4;
- var2[var8] = var4;
- if (var9 == 8237) {
- var4 = (byte)(var11 + 16);
- } else {
- var4 = var11;
- }
- continue;
- }
-
- ++var6;
- }
- break;
- case '\u202b':
- case '\u202e':
- if (var6 > 0) {
- ++var6;
- } else {
- byte var10 = (byte)((var4 & 15) + 1 | 1);
- if (var10 < 16) {
- var7[var5++] = var4;
- var2[var8] = var4;
- if (var9 == 8238) {
- var4 = (byte)(var10 + 16);
- } else {
- var4 = var10;
- }
- continue;
- }
-
- ++var6;
- }
- break;
- case '\u202c':
- if (var6 > 0) {
- --var6;
- } else if (var5 > 0) {
- --var5;
- var4 = var7[var5];
- }
- }
-
- var2[var8] = var4;
- }
-
- return var2;
- }
-
- static int[] getInverseOrder(int[] var0) {
- if (var0 == null) {
- return null;
- } else {
- int[] var1 = new int[var0.length];
-
- for(int var2 = 0; var2 < var0.length; var1[var0[var2]] = var2++) {
- }
-
- return var1;
- }
- }
-
- int getLength() {
- return this.levels.length;
- }
-
- int getLevelAt(int var1) {
- return this.levels[var1];
- }
-
- int getLevelLimit(int var1) {
- byte var2 = this.levels[var1];
-
- do {
- ++var1;
- } while(var1 < this.levels.length && this.levels[var1] == var2);
-
- return var1;
- }
-
- byte[] getLevels() {
- return this.levels;
- }
-
- int[] getLogicalToVisualMap() {
- if (this.l2vMap == null) {
- this.l2vMap = getInverseOrder(this.getVisualToLogicalMap());
- }
-
- return this.l2vMap;
- }
-
- static int[] getNormalizedOrder(int[] var0, byte[] var1, int var2, int var3) {
- if (var0 != null) {
- if (var2 == 0 && var3 == var0.length) {
- return var0;
- } else {
- boolean var4;
- boolean var5;
- byte var6;
- if (var1 == null) {
- var6 = 0;
- var4 = true;
- var5 = true;
- } else if (var1[var2] == var1[var3 - 1]) {
- var6 = var1[var2];
- var5 = (var6 & 1) == 0;
-
- int var7;
- for(var7 = var2; var7 < var3 && var1[var7] >= var6; ++var7) {
- if (var5) {
- var5 = var1[var7] == var6;
- }
- }
-
- var4 = var7 == var3;
- } else {
- var4 = false;
- var6 = 0;
- var5 = false;
- }
-
- if (!var4) {
- return computeContiguousOrder(var0, var2, var3);
- } else if (var5) {
- return null;
- } else {
- int[] var10 = new int[var3 - var2];
- int var8;
- if ((var6 & 1) != 0) {
- var8 = var0[var3 - 1];
- } else {
- var8 = var0[var2];
- }
-
- if (var8 == 0) {
- System.arraycopy(var0, var2, var10, 0, var3 - var2);
- } else {
- for(int var9 = 0; var9 < var10.length; ++var9) {
- var10[var9] = var0[var9 + var2] - var8;
- }
- }
-
- return var10;
- }
- }
- } else {
- return null;
- }
- }
-
- int[] getVisualToLogicalMap() {
- if (this.v2lMap == null) {
- this.v2lMap = createVisualToLogicalMap(this.levels);
- }
-
- return this.v2lMap;
- }
-
- private static boolean isCombiningMark(char var0) {
- return (448 >> Character.getType(var0) & 1) != 0;
- }
-
- boolean isDirectionLTR() {
- return this.ltr;
- }
-
- static void reorderVisually(byte[] var0, Object[] var1) {
- int var2 = var0.length;
- byte var3 = 17;
- byte var4 = 0;
-
- for(int var5 = 0; var5 < var2; ++var5) {
- byte var6 = var0[var5];
- if (var6 > var4) {
- var4 = var6;
- }
-
- if ((var6 & 1) != 0 && var6 < var3) {
- var3 = var6;
- }
- }
-
- label59:
- for(; var4 >= var3; --var4) {
- int var10 = 0;
-
- while(true) {
- while(var10 >= var2 || var0[var10] >= var4) {
- int var7 = var10++;
- if (var7 == var0.length) {
- continue label59;
- }
-
- while(var10 < var2 && var0[var10] >= var4) {
- ++var10;
- }
-
- for(int var8 = var10 - 1; var7 < var8; --var8) {
- Object var9 = var1[var7];
- var1[var7] = var1[var8];
- var1[var8] = var9;
- ++var7;
- }
- }
-
- ++var10;
- }
- }
-
- }
-
- static boolean requiresBidi(char var0) {
- if (var0 < 1425) {
- return false;
- } else if (var0 > 8238) {
- return false;
- } else if (var0 > 8217) {
- return true;
- } else {
- byte var1 = getDirectionCode(var0);
- return var1 == 1 || var1 == 11;
- }
- }
-
- private static void resolveImplicitLevels(byte[] var0, byte[] var1, boolean var2) {
- byte var3 = (byte)(var2 ? 0 : 1);
- int var4 = var0.length;
-
- for(int var5 = 0; var5 < var4; ++var5) {
- byte var6 = var1[var5];
- byte var7 = var6;
- switch (var0[var5]) {
- case 0:
- var7 = (byte)(var6 + 1 & 14);
- break;
- case 1:
- case 11:
- var7 = (byte)(var6 | 1);
- break;
- case 2:
- if ((var6 & 1) != 0) {
- var7 = (byte)(var6 + 1);
- } else if (var5 != 0 && var1[var5 - 1] == var6) {
- byte var10 = var0[var5 - 1];
- if (var10 == 2) {
- var7 = var1[var5 - 1];
- } else if (var10 != 0) {
- var7 = (byte)(var6 + 2);
- }
- } else {
- var7 = (byte)(var6 + 2);
- }
- case 3:
- case 4:
- case 6:
- case 9:
- case 10:
- default:
- break;
- case 5:
- var7 = (byte)(var6 + 2 & 14);
- break;
- case 7:
- case 8:
- var7 = var3;
-
- for(int var8 = var5 - 1; var8 >= 0 && var0[var8] == 9; --var8) {
- var1[var8] = var3;
- }
- }
-
- if (var7 < 16 && var7 != var6) {
- var1[var5] = var7;
- }
- }
-
- for(int var9 = var4 - 1; var9 >= 0 && var0[var9] == 9; --var9) {
- var1[var9] = var3;
- }
-
- }
-
- private static void resolveNeutralTypes(byte[] var0, byte[] var1, boolean var2) {
- int var3 = 0;
- int var4 = var0.length;
-
- while(var3 < var4) {
- byte var5 = var1[var3];
- int var6 = (var5 & 1) == 0 ? 0 : 1;
-
- int var7;
- for(var7 = var3 + 1; var7 < var4 && var1[var7] == var5; ++var7) {
- }
-
- int var8 = var6;
- int var9 = var6;
-
- for(int var10 = var3 - 1; var3 < var7; ++var3) {
- byte var11 = var0[var3];
- switch (var11) {
- case 0:
- var8 = 0;
- continue;
- case 1:
- case 11:
- var8 = 1;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- default:
- continue;
- case 7:
- case 8:
- case 9:
- case 10:
- }
-
- if (var3 > var10) {
- var9 = var6;
- var10 = var3 + 1;
-
- label63:
- while(var10 < var7) {
- byte var12 = var0[var10];
- switch (var12) {
- case 0:
- var9 = var8 == 0 ? 0 : var6;
- break label63;
- case 1:
- case 11:
- var9 = var8 == 0 ? var6 : 1;
- break label63;
- default:
- ++var10;
- }
- }
- }
-
- var0[var3] = (byte)var9;
- }
- }
-
- }
-
- private static void resolveWeakTypes(byte[] var0, byte[] var1, boolean var2) {
- int var3 = 0;
- int var4 = var0.length;
- byte var5 = -1;
- byte var6 = var0[var3];
-
- byte var9;
- for(boolean var7 = var6 == 11; var3 < var4; var6 = var9) {
- int var8 = var3 + 1;
- var9 = var8 == var4 ? -1 : var0[var8];
- if (var9 == 2 && var7) {
- var9 = 5;
- }
-
- byte var10;
- var10 = var6;
- label67:
- switch (var6) {
- case 0:
- case 1:
- var7 = false;
- case 2:
- case 5:
- case 7:
- case 8:
- case 9:
- case 10:
- default:
- break;
- case 3:
- if (var5 == 2 && var9 == 2) {
- var10 = 2;
- break;
- }
-
- var10 = 10;
- break;
- case 4:
- if (var5 != 2 && var9 != 2) {
- if (var9 == 4 && !var7) {
- for(int var11 = var8 + 1; var11 < var0.length; ++var11) {
- byte var12 = var0[var11];
- if (var12 != 4) {
- if (var12 != 2) {
- break label67;
- }
-
- while(var8 < var11) {
- var0[var8++] = 2;
- }
-
- var10 = 2;
- var9 = var12;
- break label67;
- }
- }
- } else {
- var10 = 10;
- }
- } else {
- var10 = 2;
- }
- break;
- case 6:
- if (var5 == 2 && var9 == 2) {
- var10 = 2;
- } else {
- if (var5 == 5 && var9 == 5) {
- var10 = 5;
- break;
- }
-
- var10 = 10;
- }
- break;
- case 11:
- var7 = true;
- }
-
- var0[var3] = var10;
- var3 = var8;
- var5 = var10;
- }
-
- }
- }
-