[Samsung Galaxy Note 8 Questions and Answers] physk:
So i have been playing around trying to decypt the CSC/OMC files for the note 8

i have de-compiled:

CSC.apk

OMCAgent.apk

i have found something that may be of interest in CSC.apk it looks like it's not encrypted as such, they are using byte shifting.

OMCTextDecoder.class

package com.sec.omc.decoder;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class OmcTextDecoder
{
private final int SALT_LENGTH = 256;
private final String XML_HEADER = "<?xml";
private final byte[] salts;
private final byte[] shifts;

public OmcTextDecoder()
{
byte[] arrayOfByte = new byte['?'];
arrayOfByte[0] = 65;
arrayOfByte[n] = -59;
arrayOfByte[m] = 33;
arrayOfByte[i] = -34;
arrayOfByte[4] = 107;
arrayOfByte[j] = 28;
arrayOfByte[k] = -107;
arrayOfByte[7] = 55;
arrayOfByte[8] = 78;
arrayOfByte[9] = 17;
arrayOfByte[10] = -81;
arrayOfByte[11] = k;
arrayOfByte[12] = -80;
arrayOfByte[13] = -121;
arrayOfByte[14] = -35;
arrayOfByte[15] = -23;
arrayOfByte[16] = 72;
arrayOfByte[17] = 122;
arrayOfByte[18] = -63;
arrayOfByte[19] = -43;
arrayOfByte[20] = 68;
arrayOfByte[21] = 119;
arrayOfByte[22] = -78;
arrayOfByte[23] = -111;
arrayOfByte[24] = -60;
arrayOfByte[25] = 31;
arrayOfByte[26] = 60;
arrayOfByte[27] = 57;
arrayOfByte[28] = 92;
arrayOfByte[29] = -88;
arrayOfByte[30] = -100;
arrayOfByte[31] = -69;
arrayOfByte[32] = -106;
arrayOfByte[33] = 91;
arrayOfByte[34] = 69;
arrayOfByte[35] = 93;
arrayOfByte[36] = 110;
arrayOfByte[37] = 23;
arrayOfByte[38] = 93;
arrayOfByte[39] = 53;
arrayOfByte[40] = -44;
arrayOfByte[41] = -51;
arrayOfByte[42] = 64;
arrayOfByte[43] = -80;
arrayOfByte[44] = 46;
arrayOfByte[45] = m;
arrayOfByte[46] = -4;
arrayOfByte[47] = 12;
arrayOfByte[48] = -45;
arrayOfByte[49] = 80;
arrayOfByte[50] = -44;
arrayOfByte[51] = -35;
arrayOfByte[52] = -111;
arrayOfByte[53] = -28;
arrayOfByte[54] = -66;
arrayOfByte[55] = -116;
arrayOfByte[56] = 39;
arrayOfByte[57] = m;
arrayOfByte[58] = -27;
arrayOfByte[59] = -45;
arrayOfByte[60] = -52;
arrayOfByte[61] = 125;
arrayOfByte[62] = 39;
arrayOfByte[63] = 66;
arrayOfByte[64] = -90;
arrayOfByte[65] = 63;
arrayOfByte[66] = -105;
arrayOfByte[67] = -67;
arrayOfByte[68] = 84;
arrayOfByte[69] = -57;
arrayOfByte[70] = -4;
arrayOfByte[71] = -4;
arrayOfByte[72] = 101;
arrayOfByte[73] = -90;
arrayOfByte[74] = 81;
arrayOfByte[75] = 10;
arrayOfByte[76] = -33;
arrayOfByte[77] = n;
arrayOfByte[78] = 67;
arrayOfByte[79] = -57;
arrayOfByte[80] = -71;
arrayOfByte[81] = 18;
arrayOfByte[82] = -74;
arrayOfByte[83] = 102;
arrayOfByte[84] = 96;
arrayOfByte[85] = -89;
arrayOfByte[86] = 64;
arrayOfByte[87] = -17;
arrayOfByte[88] = 54;
arrayOfByte[89] = -94;
arrayOfByte[90] = -84;
arrayOfByte[91] = -66;
arrayOfByte[92] = 14;
arrayOfByte[93] = 119;
arrayOfByte[94] = 121;
arrayOfByte[95] = m;
arrayOfByte[96] = -78;
arrayOfByte[97] = -79;
arrayOfByte[98] = 89;
arrayOfByte[99] = 63;
arrayOfByte[100] = 93;
arrayOfByte[101] = 109;
arrayOfByte[102] = -78;
arrayOfByte[103] = -51;
arrayOfByte[104] = 66;
arrayOfByte[105] = -36;
arrayOfByte[106] = 32;
arrayOfByte[107] = 86;
arrayOfByte[108] = i;
arrayOfByte[109] = -58;
arrayOfByte[110] = -15;
arrayOfByte[111] = 92;
arrayOfByte[112] = 58;
arrayOfByte[113] = m;
arrayOfByte[114] = -89;
arrayOfByte[115] = -80;
arrayOfByte[116] = -13;
arrayOfByte[117] = -1;
arrayOfByte[118] = 122;
arrayOfByte[119] = -4;
arrayOfByte[120] = 48;
arrayOfByte[121] = 63;
arrayOfByte[122] = -44;
arrayOfByte[123] = 59;
arrayOfByte[124] = 100;
arrayOfByte[125] = -42;
arrayOfByte[126] = -45;
arrayOfByte[127] = 59;
arrayOfByte['?'] = -7;
arrayOfByte['?'] = -17;
arrayOfByte['?'] = -54;
arrayOfByte['?'] = 34;
arrayOfByte['?'] = -54;
arrayOfByte['?'] = 71;
arrayOfByte['?'] = -64;
arrayOfByte['?'] = -26;
arrayOfByte['?'] = -87;
arrayOfByte['?'] = -80;
arrayOfByte['?'] = -17;
arrayOfByte['?'] = -44;
arrayOfByte['?'] = -38;
arrayOfByte['?'] = -112;
arrayOfByte['?'] = 70;
arrayOfByte['?'] = 10;
arrayOfByte['?'] = -106;
arrayOfByte['?'] = 95;
arrayOfByte['?'] = -24;
arrayOfByte['?'] = -4;
arrayOfByte['?'] = -118;
arrayOfByte['?'] = 45;
arrayOfByte['?'] = -85;
arrayOfByte['?'] = -13;
arrayOfByte['?'] = 85;
arrayOfByte['?'] = 25;
arrayOfByte['?'] = -102;
arrayOfByte['?'] = -119;
arrayOfByte['?'] = 13;
arrayOfByte['?'] = -37;
arrayOfByte['?'] = 116;
arrayOfByte['?'] = 46;
arrayOfByte['*'] = -69;
arrayOfByte['¡'] = 59;
arrayOfByte['¢'] = 42;
arrayOfByte['£'] = -90;
arrayOfByte['¤'] = -38;
arrayOfByte['¥'] = -105;
arrayOfByte['¦'] = 101;
arrayOfByte['§'] = -119;
arrayOfByte['¨'] = -36;
arrayOfByte['©'] = 97;
arrayOfByte['ª'] = -3;
arrayOfByte['«'] = -62;
arrayOfByte['¬'] = -91;
arrayOfByte['*'] = -97;
arrayOfByte['®'] = -125;
arrayOfByte['¯'] = 17;
arrayOfByte['°'] = 14;
arrayOfByte['±'] = 106;
arrayOfByte['²'] = -72;
arrayOfByte['³'] = -119;
arrayOfByte['´'] = 99;
arrayOfByte['µ'] = 111;
arrayOfByte['¶'] = 20;
arrayOfByte['·'] = 18;
arrayOfByte['¸'] = -27;
arrayOfByte['¹'] = 113;
arrayOfByte['º'] = 64;
arrayOfByte['»'] = -24;
arrayOfByte['¼'] = 74;
arrayOfByte['½'] = -60;
arrayOfByte['¾'] = -100;
arrayOfByte['¿'] = 26;
arrayOfByte['À'] = 56;
arrayOfByte['Á'] = -44;
arrayOfByte['Â'] = -70;
arrayOfByte['Ã'] = 12;
arrayOfByte['Ä'] = -51;
arrayOfByte['Å'] = -100;
arrayOfByte['Æ'] = -32;
arrayOfByte['Ç'] = -11;
arrayOfByte['È'] = 26;
arrayOfByte['É'] = 48;
arrayOfByte['Ê'] = -117;
arrayOfByte['Ë'] = 98;
arrayOfByte['Ì'] = -93;
arrayOfByte['Í'] = 51;
arrayOfByte['Î'] = -25;
arrayOfByte['Ï'] = -79;
arrayOfByte['Ð'] = -31;
arrayOfByte['Ñ'] = 97;
arrayOfByte['Ò'] = 87;
arrayOfByte['Ó'] = -105;
arrayOfByte['Ô'] = -64;
arrayOfByte['Õ'] = 7;
arrayOfByte['Ö'] = -13;
arrayOfByte['×'] = -101;
arrayOfByte['Ø'] = 33;
arrayOfByte['Ù'] = -122;
arrayOfByte['Ú'] = j;
arrayOfByte['Û'] = -104;
arrayOfByte['Ü'] = 89;
arrayOfByte['Ý'] = -44;
arrayOfByte['Þ'] = -117;
arrayOfByte['ß'] = 63;
arrayOfByte['à'] = -80;
arrayOfByte['á'] = -6;
arrayOfByte['â'] = -71;
arrayOfByte['ã'] = -110;
arrayOfByte['ä'] = -29;
arrayOfByte['å'] = -105;
arrayOfByte['æ'] = 116;
arrayOfByte['ç'] = 107;
arrayOfByte['è'] = -93;
arrayOfByte['é'] = 91;
arrayOfByte['ê'] = -41;
arrayOfByte['ë'] = -13;
arrayOfByte['ì'] = 20;
arrayOfByte['í'] = -115;
arrayOfByte['î'] = -78;
arrayOfByte['ï'] = 43;
arrayOfByte['ð'] = 79;
arrayOfByte['ñ'] = -122;
arrayOfByte['ò'] = k;
arrayOfByte['ó'] = 102;
arrayOfByte['ô'] = -32;
arrayOfByte['õ'] = 52;
arrayOfByte['ö'] = -118;
arrayOfByte['÷'] = -51;
arrayOfByte['ø'] = 72;
arrayOfByte['ù'] = -104;
arrayOfByte['ú'] = 41;
arrayOfByte['û'] = -38;
arrayOfByte['ü'] = 124;
arrayOfByte['ý'] = 72;
arrayOfByte['þ'] = -126;
arrayOfByte['ÿ'] = -35;
this.salts = arrayOfByte;
arrayOfByte = new byte['?'];
arrayOfByte[0] = n;
arrayOfByte[n] = n;
arrayOfByte[i] = m;
arrayOfByte[4] = m;
arrayOfByte[j] = 4;
arrayOfByte[k] = j;
arrayOfByte[8] = 4;
arrayOfByte[9] = 7;
arrayOfByte[10] = n;
arrayOfByte[11] = k;
arrayOfByte[12] = j;
arrayOfByte[13] = i;
arrayOfByte[14] = i;
arrayOfByte[15] = n;
arrayOfByte[16] = m;
arrayOfByte[17] = j;
arrayOfByte[19] = k;
arrayOfByte[20] = m;
arrayOfByte[21] = m;
arrayOfByte[22] = 4;
arrayOfByte[23] = m;
arrayOfByte[24] = m;
arrayOfByte[25] = i;
arrayOfByte[27] = m;
arrayOfByte[28] = n;
arrayOfByte[29] = m;
arrayOfByte[30] = 4;
arrayOfByte[31] = i;
arrayOfByte[32] = 4;
arrayOfByte[36] = i;
arrayOfByte[37] = j;
arrayOfByte[38] = i;
arrayOfByte[39] = n;
arrayOfByte[40] = k;
arrayOfByte[41] = j;
arrayOfByte[42] = k;
arrayOfByte[43] = n;
arrayOfByte[44] = n;
arrayOfByte[45] = n;
arrayOfByte[48] = i;
arrayOfByte[49] = m;
arrayOfByte[50] = 7;
arrayOfByte[51] = 7;
arrayOfByte[52] = j;
arrayOfByte[53] = k;
arrayOfByte[54] = 7;
arrayOfByte[55] = i;
arrayOfByte[56] = j;
arrayOfByte[57] = n;
arrayOfByte[59] = 7;
arrayOfByte[60] = k;
arrayOfByte[61] = i;
arrayOfByte[62] = k;
arrayOfByte[63] = j;
arrayOfByte[64] = 4;
arrayOfByte[65] = j;
arrayOfByte[66] = i;
arrayOfByte[67] = j;
arrayOfByte[68] = n;
arrayOfByte[69] = i;
arrayOfByte[70] = i;
arrayOfByte[71] = n;
arrayOfByte[72] = j;
arrayOfByte[73] = 4;
arrayOfByte[74] = n;
arrayOfByte[77] = m;
arrayOfByte[78] = k;
arrayOfByte[79] = k;
arrayOfByte[80] = k;
arrayOfByte[81] = k;
arrayOfByte[82] = 4;
arrayOfByte[84] = n;
arrayOfByte[85] = n;
arrayOfByte[87] = j;
arrayOfByte[88] = j;
arrayOfByte[89] = 4;
arrayOfByte[90] = m;
arrayOfByte[91] = 4;
arrayOfByte[92] = k;
arrayOfByte[93] = n;
arrayOfByte[94] = 7;
arrayOfByte[95] = n;
arrayOfByte[96] = m;
arrayOfByte[97] = n;
arrayOfByte[98] = n;
arrayOfByte[99] = k;
arrayOfByte[100] = j;
arrayOfByte[101] = 4;
arrayOfByte[102] = 7;
arrayOfByte[103] = k;
arrayOfByte[104] = j;
arrayOfByte[105] = n;
arrayOfByte[106] = k;
arrayOfByte[107] = 7;
arrayOfByte[109] = m;
arrayOfByte[110] = k;
arrayOfByte[111] = i;
arrayOfByte[112] = n;
arrayOfByte[113] = 7;
arrayOfByte[114] = n;
arrayOfByte[115] = n;
arrayOfByte[116] = 7;
arrayOfByte[117] = 4;
arrayOfByte[119] = 4;
arrayOfByte[120] = m;
arrayOfByte[121] = j;
arrayOfByte[122] = i;
arrayOfByte[123] = n;
arrayOfByte[124] = n;
arrayOfByte[125] = j;
arrayOfByte[126] = k;
arrayOfByte['?'] = i;
arrayOfByte['?'] = j;
arrayOfByte['?'] = i;
arrayOfByte['?'] = k;
arrayOfByte['?'] = j;
arrayOfByte['?'] = 7;
arrayOfByte['?'] = m;
arrayOfByte['?'] = j;
arrayOfByte['?'] = k;
arrayOfByte['?'] = k;
arrayOfByte['?'] = m;
arrayOfByte['?'] = m;
arrayOfByte['?'] = i;
arrayOfByte['?'] = k;
arrayOfByte['?'] = 4;
arrayOfByte['?'] = i;
arrayOfByte['?'] = m;
arrayOfByte['?'] = m;
arrayOfByte['?'] = m;
arrayOfByte['?'] = i;
arrayOfByte['?'] = j;
arrayOfByte['?'] = i;
arrayOfByte['?'] = i;
arrayOfByte['?'] = m;
arrayOfByte['?'] = j;
arrayOfByte['?'] = j;
arrayOfByte['?'] = j;
arrayOfByte['?'] = n;
arrayOfByte['?'] = i;
arrayOfByte['?'] = n;
arrayOfByte['*'] = n;
arrayOfByte['¡'] = n;
arrayOfByte['¢'] = 4;
arrayOfByte['£'] = j;
arrayOfByte['¤'] = n;
arrayOfByte['¥'] = k;
arrayOfByte['¦'] = m;
arrayOfByte['§'] = 4;
arrayOfByte['¨'] = 7;
arrayOfByte['©'] = n;
arrayOfByte['ª'] = 4;
arrayOfByte['«'] = k;
arrayOfByte['*'] = k;
arrayOfByte['®'] = 4;
arrayOfByte['¯'] = i;
arrayOfByte['°'] = m;
arrayOfByte['±'] = k;
arrayOfByte['²'] = n;
arrayOfByte['³'] = k;
arrayOfByte['´'] = i;
arrayOfByte['µ'] = m;
arrayOfByte['¶'] = n;
arrayOfByte['·'] = k;
arrayOfByte['¸'] = 7;
arrayOfByte['¹'] = i;
arrayOfByte['º'] = m;
arrayOfByte['»'] = n;
arrayOfByte['¼'] = n;
arrayOfByte['½'] = j;
arrayOfByte['¾'] = k;
arrayOfByte['¿'] = 7;
arrayOfByte['À'] = m;
arrayOfByte['Á'] = m;
arrayOfByte['Â'] = m;
arrayOfByte['Ã'] = 7;
arrayOfByte['Ä'] = 4;
arrayOfByte['Å'] = k;
arrayOfByte['Æ'] = 7;
arrayOfByte['Ç'] = j;
arrayOfByte['È'] = i;
arrayOfByte['É'] = n;
arrayOfByte['Ê'] = 4;
arrayOfByte['Ë'] = m;
arrayOfByte['Ì'] = 7;
arrayOfByte['Í'] = n;
arrayOfByte['Î'] = k;
arrayOfByte['Ï'] = m;
arrayOfByte['Ð'] = 4;
arrayOfByte['Ñ'] = n;
arrayOfByte['Ò'] = j;
arrayOfByte['Ó'] = k;
arrayOfByte['Ô'] = j;
arrayOfByte['Õ'] = 4;
arrayOfByte['Ö'] = j;
arrayOfByte['Ø'] = n;
arrayOfByte['Ù'] = n;
arrayOfByte['Ú'] = k;
arrayOfByte['Û'] = i;
arrayOfByte['Ü'] = 7;
arrayOfByte['Ý'] = m;
arrayOfByte['ß'] = m;
arrayOfByte['à'] = j;
arrayOfByte['â'] = n;
arrayOfByte['ã'] = i;
arrayOfByte['ä'] = i;
arrayOfByte['å'] = m;
arrayOfByte['æ'] = k;
arrayOfByte['ç'] = 7;
arrayOfByte['è'] = 7;
arrayOfByte['é'] = m;
arrayOfByte['ê'] = j;
arrayOfByte['ë'] = k;
arrayOfByte['í'] = 4;
arrayOfByte['î'] = n;
arrayOfByte['ï'] = m;
arrayOfByte['ð'] = j;
arrayOfByte['ñ'] = i;
arrayOfByte['ò'] = 7;
arrayOfByte['ó'] = k;
arrayOfByte['ô'] = j;
arrayOfByte['õ'] = m;
arrayOfByte['ö'] = j;
arrayOfByte['÷'] = m;
arrayOfByte['ù'] = n;
arrayOfByte['ú'] = i;
arrayOfByte['û'] = n;
arrayOfByte['ü'] = 4;
arrayOfByte['ý'] = i;
arrayOfByte['þ'] = 4;
arrayOfByte['ÿ'] = m;
this.shifts = arrayOfByte;
}

private byte[] _decode(byte[] paramArrayOfByte)
{
int i = paramArrayOfByte.length;
byte[] arrayOfByte1 = new byte[i];
int j = 0;
for (;;)
{
i = paramArrayOfByte.length;
if (j >= i) {
break;
}
i = paramArrayOfByte[j] & 0xFF;
byte[] arrayOfByte2 = this.shifts;
int k = j % 256;
int m = arrayOfByte2[k];
i <<= m;
m = paramArrayOfByte[j] & 0xFF;
byte[] arrayOfByte3 = this.shifts;
int n = j % 256;
k = arrayOfByte3[n];
k = 8 - k;
m >>>= k;
i = (byte)(byte)(i | m);
arrayOfByte1[j] = i;
i = arrayOfByte1[j];
arrayOfByte2 = this.salts;
k = j % 256;
m = arrayOfByte2[k];
i = (byte)(byte)(i ^ m);
arrayOfByte1[j] = i;
j += 1;
}
return arrayOfByte1;
}

/* Error */
private byte[] _decompressGzip(byte[] paramArrayOfByte)
{
// Byte code:
// 0: aconst_null
// 1: astore_2
// 2: aconst_null
// 3: astore_3
// 4: aconst_null
// 5: astore 4
// 7: aconst_null
// 8: astore 5
// 10: sipush 1024
// 13: istore 6
// 15: iload 6
// 17: newarray <illegal type>
// 19: astore 7
// 21: new 34	java/io/BufferedInputStream
// 24: astore 8
// 26: new 36	java/io/ByteArrayInputStream
// 29: astore 9
// 31: aload 9
// 33: aload_1
// 34: invokespecial 39	java/io/ByteArrayInputStream:<init>	([B)V
// 37: aload 8
// 39: aload 9
// 41: invokespecial 42	java/io/BufferedInputStream:<init>	(Ljava/io/InputStream;)V
// 44: new 44	java/util/zip/GZIPInputStream
// 47: astore 10
// 49: aload 10
// 51: aload 8
// 53: invokespecial 45	java/util/zip/GZIPInputStream:<init>	(Ljava/io/InputStream;)V
// 56: new 47	java/io/ByteArrayOutputStream
// 59: astore 11
// 61: aload 11
// 63: invokespecial 48	java/io/ByteArrayOutputStream:<init>	()V
// 66: aload 10
// 68: invokevirtual 52	java/util/zip/GZIPInputStream:available	()I
// 71: istore 6
// 73: iload 6
// 75: ifle +123 -> 198
// 78: new 54	java/io/BufferedOutputStream
// 81: astore 12
// 83: aload 12
// 85: aload 11
// 87: invokespecial 57	java/io/BufferedOutputStream:<init>	(Ljava/io/OutputStream;)V
// 90: iconst_0
// 91: istore 13
// 93: aload 10
// 95: aload 7
// 97: invokevirtual 61	java/util/zip/GZIPInputStream:read	([B)I
// 100: istore 13
// 102: iconst_m1
// 103: istore 6
// 105: iload 13
// 107: iload 6
// 109: if_icmpeq +51 -> 160
// 112: iconst_0
// 113: istore 6
// 115: aconst_null
// 116: astore 9
// 118: aload 12
// 120: aload 7
// 122: iconst_0
// 123: iload 13
// 125: invokevirtual 65	java/io/BufferedOutputStream:write	([BII)V
// 128: goto -35 -> 93
// 131: astore 9
// 133: aload 11
// 135: astore 5
// 137: aload 10
// 139: astore 4
// 141: aload 8
// 143: astore_3
// 144: aload 5
// 146: invokevirtual 68	java/io/ByteArrayOutputStream:close	()V
// 149: aload 4
// 151: invokevirtual 69	java/util/zip/GZIPInputStream:close	()V
// 154: aload_3
// 155: invokevirtual 70	java/io/BufferedInputStream:close	()V
// 158: aload_2
// 159: areturn
// 160: aload 12
// 162: invokevirtual 71	java/io/BufferedOutputStream:close	()V
// 165: goto -99 -> 66
// 168: astore 9
// 170: aload 11
// 172: astore 5
// 174: aload 10
// 176: astore 4
// 178: aload 8
// 180: astore_3
// 181: aload 5
// 183: invokevirtual 68	java/io/ByteArrayOutputStream:close	()V
// 186: aload 4
// 188: invokevirtual 69	java/util/zip/GZIPInputStream:close	()V
// 191: aload_3
// 192: invokevirtual 70	java/io/BufferedInputStream:close	()V
// 195: aload 9
// 197: athrow
// 198: aload 11
// 200: invokevirtual 75	java/io/ByteArrayOutputStream:toByteArray	()[B
// 203: astore_2
// 204: aload 11
// 206: invokevirtual 68	java/io/ByteArrayOutputStream:close	()V
// 209: aload 10
// 211: invokevirtual 69	java/util/zip/GZIPInputStream:close	()V
// 214: aload 8
// 216: invokevirtual 70	java/io/BufferedInputStream:close	()V
// 219: aload 11
// 221: astore 5
// 223: aload 10
// 225: astore 4
// 227: aload 8
// 229: astore_3
// 230: goto -72 -> 158
// 233: astore 9
// 235: goto -16 -> 219
// 238: pop
// 239: goto -44 -> 195
// 242: astore 9
// 244: goto -63 -> 181
// 247: astore 9
// 249: aload 8
// 251: astore_3
// 252: goto -71 -> 181
// 255: astore 9
// 257: aload 8
// 259: astore_3
// 260: goto -79 -> 181
// 263: astore 9
// 265: aload 10
// 267: astore 4
// 269: aload 8
// 271: astore_3
// 272: goto -91 -> 181
// 275: astore 9
// 277: aload 11
// 279: astore 5
// 281: aload 10
// 283: astore 4
// 285: aload 8
// 287: astore_3
// 288: goto -107 -> 181
// 291: astore 9
// 293: goto -135 -> 158
// 296: astore 9
// 298: goto -154 -> 144
// 301: astore 9
// 303: aload 8
// 305: astore_3
// 306: goto -162 -> 144
// 309: astore 9
// 311: aload 8
// 313: astore_3
// 314: goto -170 -> 144
// 317: astore 9
// 319: aload 10
// 321: astore 4
// 323: aload 8
// 325: astore_3
// 326: goto -182 -> 144
// 329: astore 9
// 331: aload 11
// 333: astore 5
// 335: aload 10
// 337: astore 4
// 339: aload 8
// 341: astore_3
// 342: goto -198 -> 144
// Local variable table:
// start	length	slot	name	signature
// 0	345	0	this	OmcTextDecoder
// 0	345	1	paramArrayOfByte	byte[]
// 1	203	2	arrayOfByte1	byte[]
// 3	339	3	localObject1	Object
// 5	333	4	localObject2	Object
// 8	326	5	localObject3	Object
// 13	101	6	i	int
// 19	102	7	arrayOfByte2	byte[]
// 24	316	8	localBufferedInputStream	java.io.BufferedInputStream
// 29	88	9	localByteArrayInputStream	java.io.ByteArrayInputStream
// 131	1	9	localIOException1	IOException
// 168	28	9	localObject4	Object
// 233	1	9	localException1	Exception
// 242	1	9	localObject5	Object
// 247	1	9	localObject6	Object
// 255	1	9	localObject7	Object
// 263	1	9	localObject8	Object
// 275	1	9	localObject9	Object
// 291	1	9	localException2	Exception
// 296	1	9	localIOException2	IOException
// 301	1	9	localIOException3	IOException
// 309	1	9	localIOException4	IOException
// 317	1	9	localIOException5	IOException
// 329	1	9	localIOException6	IOException
// 47	289	10	localGZIPInputStream	java.util.zip.GZIPInputStream
// 59	273	11	localByteArrayOutputStream	java.io.ByteArrayOutputStream
// 81	80	12	localBufferedOutputStream	java.io.BufferedOutputStream
// 91	33	13	j	int
// 238	1	28	localException3	Exception
// Exception table:
// from	to	target	type
// 85	90	131	java/io/IOException
// 95	100	131	java/io/IOException
// 123	128	131	java/io/IOException
// 160	165	131	java/io/IOException
// 85	90	168	finally
// 95	100	168	finally
// 123	128	168	finally
// 160	165	168	finally
// 204	209	233	java/lang/Exception
// 209	214	233	java/lang/Exception
// 214	219	233	java/lang/Exception
// 181	186	238	java/lang/Exception
// 186	191	238	java/lang/Exception
// 191	195	238	java/lang/Exception
// 15	19	242	finally
// 21	24	242	finally
// 26	29	242	finally
// 33	37	242	finally
// 39	44	242	finally
// 44	47	247	finally
// 51	56	255	finally
// 56	59	263	finally
// 61	66	263	finally
// 66	71	275	finally
// 78	81	275	finally
// 198	203	275	finally
// 144	149	291	java/lang/Exception
// 149	154	291	java/lang/Exception
// 154	158	291	java/lang/Exception
// 15	19	296	java/io/IOException
// 21	24	296	java/io/IOException
// 26	29	296	java/io/IOException
// 33	37	296	java/io/IOException
// 39	44	296	java/io/IOException
// 44	47	301	java/io/IOException
// 51	56	309	java/io/IOException
// 56	59	317	java/io/IOException
// 61	66	317	java/io/IOException
// 66	71	329	java/io/IOException
// 78	81	329	java/io/IOException
// 198	203	329	java/io/IOException
}

private byte[] fileToByteArray(File paramFile)
{
try
{
FileInputStream localFileInputStream = new java/io/FileInputStream;
localFileInputStream.<init>(paramFile);
int i = localFileInputStream.available();
byte[] arrayOfByte = new byte[i];
localFileInputStream.read(arrayOfByte);
localFileInputStream.close();
return arrayOfByte;
}
catch (FileNotFoundException localFileNotFoundException)
{
localFileNotFoundException.printStackTrace();
return null;
}
catch (IOException localIOException)
{
for (;;)
{
localIOException.printStackTrace();
}
}
}

public byte[] decode(File paramFile)
{
byte[] arrayOfByte1 = fileToByteArray(paramFile);
byte[] arrayOfByte2 = _decode(arrayOfByte1);
return _decompressGzip(arrayOfByte2);
}

public boolean isXmlEncoded(File paramFile)
{
try
{
BufferedReader localBufferedReader = new java/io/BufferedReader;
Object localObject = new java/io/FileReader;
((FileReader)localObject).<init>(paramFile);
localBufferedReader.<init>((Reader)localObject);
String str = localBufferedReader.readLine();
if (localBufferedReader == null) {}
for (;;)
{
localObject = "<?xml";
boolean bool = str.contains((CharSequence)localObject);
if (bool) {
break;
}
return true;
localBufferedReader.close();
}
return false;
}
catch (Exception localException)
{
return false;
}
}
}

I don't know enough about Java to do anything with this though :( so i thought i would post it here where some other people that have a bit more knowledge than me might be able to make some use of it. and i can't find where it's being called from so i think there is still a piece of the puzzle missing, i am going to keep working on it though ;)

as a little side note, when i de-complied OMCAgent.apk i found a list of all CSC Feature Codes.

http://paste.physk.co.uk/view/36613aee

I hope this can help some people, there is no mention of what the values should be though