1 5 6 package com.caucho.quercus.lib.string; 7 8 11 public class Crypt { 12 public static String crypt(String keyString, String salt) 13 { 14 int len = keyString.length(); 15 16 if (8 < len) 17 len = 8; 18 19 int swap0 = toSalt(salt.charAt(0)) << 2; 20 int swap1 = toSalt(salt.charAt(1)) << 6; 21 22 char result[] = new char[12]; 23 byte key[] = new byte[8]; 24 25 int i; 26 for (i = 0; i < len; i++) { 27 char ch = keyString.charAt(i); 28 29 key[i] = (byte) (ch << 1); 30 } 31 32 for (; i < 8; i++) { 33 key[i] = 0; 34 } 35 36 int []keySchedule = new int[32]; 37 38 setKeySchedule(key, keySchedule); 39 40 long value = encrypt(keySchedule, swap0, swap1); 41 42 return resultToString(salt, value); 43 } 44 45 private static int toSalt(char ch) 46 { 47 if (ch < 0x3a) 48 return ch - 0x2e; 49 else if (ch < 0x5b) 50 return ch - 0x3a + 0x05; 51 else 52 return ch - 0x5b + 0x20; 53 } 54 55 private static void setKeySchedule(byte []key, int []schedule) 56 { 57 int c = ((key[0] & 0xff) | 58 ((key[1] & 0xff) << 8) | 59 ((key[2] & 0xff) << 16) | 60 ((key[3] & 0xff) << 24)); 61 62 int d = ((key[4] & 0xff) | 63 ((key[5] & 0xff) << 8) | 64 ((key[6] & 0xff) << 16) | 65 ((key[7] & 0xff) << 24)); 66 67 68 int temp = ((d >>> 4) ^ c) & 0x0f0f0f0f; 70 c ^= temp; 71 d ^= temp << 4; 72 73 temp = ((c << 18) ^ c) & 0xcccc0000; 75 c ^= temp ^ (temp >>> 18); 76 77 temp = ((d << 18) ^ d) & 0xcccc0000; 79 d ^= temp ^ (temp >>> 18); 80 81 temp = ((d >>> 1) ^ c) & 0x55555555; 83 c ^= temp; 84 d ^= temp << 1; 85 86 temp = ((c >>> 8) ^ d) & 0x00ff00ff; 88 d ^= temp; 89 c ^= temp << 8; 90 91 temp = ((d >>> 1) ^ c) & 0x55555555; 93 c ^= temp; 94 d ^= temp << 1; 95 96 d = (((d & 0x000000ff) << 16) | 97 (d & 0x0000ff00) | 98 ((d & 0x00ff0000) >>> 16) | 99 ((c & 0xf0000000) >>> 4)); 100 101 c &= 0x0fffffffL; 102 103 int k = 0; 104 for (int i = 0; i < 16; i++) { 105 if (KEY_SHIFTS[i]) { 106 c = (c >> 2) | (c << 26); 107 d = (d >> 2) | (d << 26); 108 } 109 else { 110 c = (c >> 1) | (c << 27); 111 d = (d >> 1) | (d << 27); 112 } 113 114 c &= 0x0fffffff; 115 d &= 0x0fffffff; 116 117 int s = (skb_0[ (c ) & 0x3f] | 118 skb_1[((c >> 6) & 0x03) | 119 ((c >> 7) & 0x3c)] | 120 skb_2[((c >> 13) & 0x0f) | 121 ((c >> 14) & 0x30)] | 122 skb_3[((c >> 20) & 0x01) | 123 ((c >> 21) & 0x06) | 124 ((c >> 22) & 0x38)]); 125 126 int t = (skb_4[ (d ) & 0x3f] | 127 skb_5[((d >> 7) & 0x03) | 128 ((d >> 8) & 0x3c)] | 129 skb_6[ (d >> 15) & 0x3f] | 130 skb_7[((d >> 21) & 0x0f) | 131 ((d >> 22) & 0x30)]); 132 133 int t2 = (t << 16) | (s & 0x0000ffff); 134 135 schedule[k++] = rotate(t2, 30); 136 137 t2 = (s >>> 16) | (t & 0xffff0000); 138 139 schedule[k++] = rotate(t2, 26); 140 } 141 } 142 143 private static long encrypt(int []key, int swap0, int swap1) 144 { 145 int l = 0; 146 int r = 0; 147 int temp; 148 149 for (int j = 0; j < 25; j++) { 150 for (int i = 0; i < 32; i += 8) { 151 l = encrypt(l, r, key[i + 0], key[i + 1], swap0, swap1); 152 r = encrypt(r, l, key[i + 2], key[i + 3], swap0, swap1); 153 l = encrypt(l, r, key[i + 4], key[i + 5], swap0, swap1); 154 r = encrypt(r, l, key[i + 6], key[i + 7], swap0, swap1); 155 } 156 157 temp = l; 158 l = r; 159 r = temp; 160 } 161 162 l = rotate(l, 3); 164 r = rotate(r, 3); 166 167 temp = ((l >>> 1) ^ r) & 0x55555555; 169 r ^= temp; 170 l ^= temp << 1; 171 172 temp = ((r >>> 8) ^ l) & 0x00ff00ff; 174 l ^= temp; 175 r ^= temp << 8; 176 177 temp = ((l >>> 2) ^ r) & 0x33333333; 179 r ^= temp; 180 l ^= temp << 2; 181 182 temp = ((r >>> 16) ^ l) & 0x0000ffff; 184 l ^= temp; 185 r ^= temp << 16; 186 187 temp = ((l >>> 4) ^ r) & 0x0f0f0f0f; 189 r ^= temp; 190 l ^= temp << 4; 191 192 return ((long) l << 32L) + ((long) r & 0xffffffffL); 193 } 194 195 private static int encrypt(int l, int r, 196 int key0, int key1, 197 int swap0, int swap1) 198 { 199 int t = r ^ (r >>> 16); 200 int x = t & swap0; 201 int y = t & swap1; 202 203 x ^= r ^ key0 ^ (x << 16); 204 y ^= r ^ key1 ^ (y << 16); 205 206 y = rotate(y, 4); 207 208 l ^= (des_0[(x >> 2) & 0x3f] ^ 209 des_2[(x >> 10) & 0x3f] ^ 210 des_4[(x >> 18) & 0x3f] ^ 211 des_6[(x >> 26) & 0x3f] ^ 212 des_1[(y >> 2) & 0x3f] ^ 213 des_3[(y >> 10) & 0x3f] ^ 214 des_5[(y >> 18) & 0x3f] ^ 215 des_7[(y >> 26) & 0x3f]); 216 217 return l; 218 } 219 220 private static int rotate(int v, int n) 221 { 222 return (v >>> n) + (v << (32 - n)); 223 } 224 225 private static String resultToString(String salt, long v) 226 { 227 StringBuilder sb = new StringBuilder (); 228 229 if (salt.length() > 2) 230 sb.append(salt.substring(0, 2)); 231 else 232 sb.append(salt); 233 234 v = (((v & 0x00000000000000ffL) << 56) | 235 ((v & 0x000000000000ff00L) << 40) | 236 ((v & 0x0000000000ff0000L) << 24) | 237 ((v & 0x00000000ff000000L) << 8) | 238 ((v & 0x000000ff00000000L) >>> 8) | 239 ((v & 0x0000ff0000000000L) >>> 24) | 240 ((v & 0x00ff000000000000L) >>> 40) | 241 ((v & 0xff00000000000000L) >>> 56)); 242 243 sb.append(resultToChar(v >> 58)); 244 sb.append(resultToChar(v >> 52)); 245 sb.append(resultToChar(v >> 46)); 246 sb.append(resultToChar(v >> 40)); 247 sb.append(resultToChar(v >> 34)); 248 sb.append(resultToChar(v >> 28)); 249 sb.append(resultToChar(v >> 22)); 250 sb.append(resultToChar(v >> 16)); 251 sb.append(resultToChar(v >> 10)); 252 sb.append(resultToChar(v >> 4)); 253 sb.append(resultToChar(v << 2)); 254 255 return sb.toString(); 256 } 257 258 static char resultToChar(long result) 259 { 260 int v = (int) (result & 0x3f); 261 262 if (v < 0x0c) 263 return (char) (v + 0x2e); 264 else if (v < 0x26) 265 return (char) (v + 0x41 - 0x0c); 266 else 267 return (char) (v + 0x61 - 0x26); 268 } 269 270 private final static boolean []KEY_SHIFTS = new boolean[] { 271 false, false, true, true, true, true, true, true, 272 false, true, true, true, true, true, true, false 273 }; 274 275 private final static int []REVERSE_BITS = new int[] { 276 0x00, 0x20, 0x10, 0x30, 0x08, 0x28, 0x18, 0x38, 277 0x04, 0x24, 0x14, 0x34, 0x0c, 0x2c, 0x1c, 0x3c, 278 0x02, 0x22, 0x12, 0x32, 0x0a, 0x2a, 0x1a, 0x3a, 279 0x06, 0x26, 0x16, 0x36, 0x0e, 0x2e, 0x1e, 0x3e, 280 281 0x01, 0x21, 0x11, 0x31, 0x09, 0x29, 0x19, 0x39, 282 0x05, 0x25, 0x15, 0x35, 0x0d, 0x2d, 0x1d, 0x3d, 283 0x03, 0x23, 0x13, 0x33, 0x0b, 0x2b, 0x1b, 0x3b, 284 0x07, 0x27, 0x17, 0x37, 0x0f, 0x2f, 0x1f, 0x3f, 285 }; 286 287 private static final int []des_0 = new int[] { 288 0x02080800, 0x00080000, 0x02000002, 0x02080802, 289 0x02000000, 0x00080802, 0x00080002, 0x02000002, 290 0x00080802, 0x02080800, 0x02080000, 0x00000802, 291 0x02000802, 0x02000000, 0x00000000, 0x00080002, 292 0x00080000, 0x00000002, 0x02000800, 0x00080800, 293 0x02080802, 0x02080000, 0x00000802, 0x02000800, 294 0x00000002, 0x00000800, 0x00080800, 0x02080002, 295 0x00000800, 0x02000802, 0x02080002, 0x00000000, 296 0x00000000, 0x02080802, 0x02000800, 0x00080002, 297 0x02080800, 0x00080000, 0x00000802, 0x02000800, 298 0x02080002, 0x00000800, 0x00080800, 0x02000002, 299 0x00080802, 0x00000002, 0x02000002, 0x02080000, 300 0x02080802, 0x00080800, 0x02080000, 0x02000802, 301 0x02000000, 0x00000802, 0x00080002, 0x00000000, 302 0x00080000, 0x02000000, 0x02000802, 0x02080800, 303 0x00000002, 0x02080002, 0x00000800, 0x00080802 304 }; 305 306 private static final int []des_1 = new int[] { 307 0x40108010, 0x00000000, 0x00108000, 0x40100000, 308 0x40000010, 0x00008010, 0x40008000, 0x00108000, 309 0x00008000, 0x40100010, 0x00000010, 0x40008000, 310 0x00100010, 0x40108000, 0x40100000, 0x00000010, 311 0x00100000, 0x40008010, 0x40100010, 0x00008000, 312 0x00108010, 0x40000000, 0x00000000, 0x00100010, 313 0x40008010, 0x00108010, 0x40108000, 0x40000010, 314 0x40000000, 0x00100000, 0x00008010, 0x40108010, 315 0x00100010, 0x40108000, 0x40008000, 0x00108010, 316 0x40108010, 0x00100010, 0x40000010, 0x00000000, 317 0x40000000, 0x00008010, 0x00100000, 0x40100010, 318 0x00008000, 0x40000000, 0x00108010, 0x40008010, 319 0x40108000, 0x00008000, 0x00000000, 0x40000010, 320 0x00000010, 0x40108010, 0x00108000, 0x40100000, 321 0x40100010, 0x00100000, 0x00008010, 0x40008000, 322 0x40008010, 0x00000010, 0x40100000, 0x00108000, 323 }; 324 325 private static final int []des_2 = new int[] { 326 0x04000001, 0x04040100, 0x00000100, 0x04000101, 327 0x00040001, 0x04000000, 0x04000101, 0x00040100, 328 0x04000100, 0x00040000, 0x04040000, 0x00000001, 329 0x04040101, 0x00000101, 0x00000001, 0x04040001, 330 0x00000000, 0x00040001, 0x04040100, 0x00000100, 331 0x00000101, 0x04040101, 0x00040000, 0x04000001, 332 0x04040001, 0x04000100, 0x00040101, 0x04040000, 333 0x00040100, 0x00000000, 0x04000000, 0x00040101, 334 0x04040100, 0x00000100, 0x00000001, 0x00040000, 335 0x00000101, 0x00040001, 0x04040000, 0x04000101, 336 0x00000000, 0x04040100, 0x00040100, 0x04040001, 337 0x00040001, 0x04000000, 0x04040101, 0x00000001, 338 0x00040101, 0x04000001, 0x04000000, 0x04040101, 339 0x00040000, 0x04000100, 0x04000101, 0x00040100, 340 0x04000100, 0x00000000, 0x04040001, 0x00000101, 341 0x04000001, 0x00040101, 0x00000100, 0x04040000, 342 }; 343 344 private static final int []des_3 = new int[] { 345 0x00401008, 0x10001000, 0x00000008, 0x10401008, 346 0x00000000, 0x10400000, 0x10001008, 0x00400008, 347 0x10401000, 0x10000008, 0x10000000, 0x00001008, 348 0x10000008, 0x00401008, 0x00400000, 0x10000000, 349 0x10400008, 0x00401000, 0x00001000, 0x00000008, 350 0x00401000, 0x10001008, 0x10400000, 0x00001000, 351 0x00001008, 0x00000000, 0x00400008, 0x10401000, 352 0x10001000, 0x10400008, 0x10401008, 0x00400000, 353 0x10400008, 0x00001008, 0x00400000, 0x10000008, 354 0x00401000, 0x10001000, 0x00000008, 0x10400000, 355 0x10001008, 0x00000000, 0x00001000, 0x00400008, 356 0x00000000, 0x10400008, 0x10401000, 0x00001000, 357 0x10000000, 0x10401008, 0x00401008, 0x00400000, 358 0x10401008, 0x00000008, 0x10001000, 0x00401008, 359 0x00400008, 0x00401000, 0x10400000, 0x10001008, 360 0x00001008, 0x10000000, 0x10000008, 0x10401000, 361 }; 362 363 private static final int []des_4 = new int[] { 364 0x08000000, 0x00010000, 0x00000400, 0x08010420, 365 0x08010020, 0x08000400, 0x00010420, 0x08010000, 366 0x00010000, 0x00000020, 0x08000020, 0x00010400, 367 0x08000420, 0x08010020, 0x08010400, 0x00000000, 368 0x00010400, 0x08000000, 0x00010020, 0x00000420, 369 0x08000400, 0x00010420, 0x00000000, 0x08000020, 370 0x00000020, 0x08000420, 0x08010420, 0x00010020, 371 0x08010000, 0x00000400, 0x00000420, 0x08010400, 372 0x08010400, 0x08000420, 0x00010020, 0x08010000, 373 0x00010000, 0x00000020, 0x08000020, 0x08000400, 374 0x08000000, 0x00010400, 0x08010420, 0x00000000, 375 0x00010420, 0x08000000, 0x00000400, 0x00010020, 376 0x08000420, 0x00000400, 0x00000000, 0x08010420, 377 0x08010020, 0x08010400, 0x00000420, 0x00010000, 378 0x00010400, 0x08010020, 0x08000400, 0x00000420, 379 0x00000020, 0x00010420, 0x08010000, 0x08000020, 380 }; 381 382 private static final int []des_5 = new int[] { 383 0x80000040, 0x00200040, 0x00000000, 0x80202000, 384 0x00200040, 0x00002000, 0x80002040, 0x00200000, 385 0x00002040, 0x80202040, 0x00202000, 0x80000000, 386 0x80002000, 0x80000040, 0x80200000, 0x00202040, 387 0x00200000, 0x80002040, 0x80200040, 0x00000000, 388 0x00002000, 0x00000040, 0x80202000, 0x80200040, 389 0x80202040, 0x80200000, 0x80000000, 0x00002040, 390 0x00000040, 0x00202000, 0x00202040, 0x80002000, 391 0x00002040, 0x80000000, 0x80002000, 0x00202040, 392 0x80202000, 0x00200040, 0x00000000, 0x80002000, 393 0x80000000, 0x00002000, 0x80200040, 0x00200000, 394 0x00200040, 0x80202040, 0x00202000, 0x00000040, 395 0x80202040, 0x00202000, 0x00200000, 0x80002040, 396 0x80000040, 0x80200000, 0x00202040, 0x00000000, 397 0x00002000, 0x80000040, 0x80002040, 0x80202000, 398 0x80200000, 0x00002040, 0x00000040, 0x80200040, 399 }; 400 401 private static final int []des_6 = new int[] { 402 0x00004000, 0x00000200, 0x01000200, 0x01000004, 403 0x01004204, 0x00004004, 0x00004200, 0x00000000, 404 0x01000000, 0x01000204, 0x00000204, 0x01004000, 405 0x00000004, 0x01004200, 0x01004000, 0x00000204, 406 0x01000204, 0x00004000, 0x00004004, 0x01004204, 407 0x00000000, 0x01000200, 0x01000004, 0x00004200, 408 0x01004004, 0x00004204, 0x01004200, 0x00000004, 409 0x00004204, 0x01004004, 0x00000200, 0x01000000, 410 0x00004204, 0x01004000, 0x01004004, 0x00000204, 411 0x00004000, 0x00000200, 0x01000000, 0x01004004, 412 0x01000204, 0x00004204, 0x00004200, 0x00000000, 413 0x00000200, 0x01000004, 0x00000004, 0x01000200, 414 0x00000000, 0x01000204, 0x01000200, 0x00004200, 415 0x00000204, 0x00004000, 0x01004204, 0x01000000, 416 0x01004200, 0x00000004, 0x00004004, 0x01004204, 417 0x01000004, 0x01004200, 0x01004000, 0x00004004, 418 }; 419 420 private static final int []des_7 = new int[] { 421 0x20800080, 0x20820000, 0x00020080, 0x00000000, 422 0x20020000, 0x00800080, 0x20800000, 0x20820080, 423 0x00000080, 0x20000000, 0x00820000, 0x00020080, 424 0x00820080, 0x20020080, 0x20000080, 0x20800000, 425 0x00020000, 0x00820080, 0x00800080, 0x20020000, 426 0x20820080, 0x20000080, 0x00000000, 0x00820000, 427 0x20000000, 0x00800000, 0x20020080, 0x20800080, 428 0x00800000, 0x00020000, 0x20820000, 0x00000080, 429 0x00800000, 0x00020000, 0x20000080, 0x20820080, 430 0x00020080, 0x20000000, 0x00000000, 0x00820000, 431 0x20800080, 0x20020080, 0x20020000, 0x00800080, 432 0x20820000, 0x00000080, 0x00800080, 0x20020000, 433 0x20820080, 0x00800000, 0x20800000, 0x20000080, 434 0x00820000, 0x00020080, 0x20020080, 0x20800000, 435 0x00000080, 0x20820000, 0x00820080, 0x00000000, 436 0x20000000, 0x20800080, 0x00020000, 0x00820080, 437 }; 438 439 private static final int []skb_0 = new int[] { 440 0x00000000,0x00000010,0x20000000,0x20000010, 441 0x00010000,0x00010010,0x20010000,0x20010010, 442 0x00000800,0x00000810,0x20000800,0x20000810, 443 0x00010800,0x00010810,0x20010800,0x20010810, 444 0x00000020,0x00000030,0x20000020,0x20000030, 445 0x00010020,0x00010030,0x20010020,0x20010030, 446 0x00000820,0x00000830,0x20000820,0x20000830, 447 0x00010820,0x00010830,0x20010820,0x20010830, 448 0x00080000,0x00080010,0x20080000,0x20080010, 449 0x00090000,0x00090010,0x20090000,0x20090010, 450 0x00080800,0x00080810,0x20080800,0x20080810, 451 0x00090800,0x00090810,0x20090800,0x20090810, 452 0x00080020,0x00080030,0x20080020,0x20080030, 453 0x00090020,0x00090030,0x20090020,0x20090030, 454 0x00080820,0x00080830,0x20080820,0x20080830, 455 0x00090820,0x00090830,0x20090820,0x20090830, 456 }; 457 458 private static final int []skb_1 = new int[] { 459 0x00000000,0x02000000,0x00002000,0x02002000, 460 0x00200000,0x02200000,0x00202000,0x02202000, 461 0x00000004,0x02000004,0x00002004,0x02002004, 462 0x00200004,0x02200004,0x00202004,0x02202004, 463 0x00000400,0x02000400,0x00002400,0x02002400, 464 0x00200400,0x02200400,0x00202400,0x02202400, 465 0x00000404,0x02000404,0x00002404,0x02002404, 466 0x00200404,0x02200404,0x00202404,0x02202404, 467 0x10000000,0x12000000,0x10002000,0x12002000, 468 0x10200000,0x12200000,0x10202000,0x12202000, 469 0x10000004,0x12000004,0x10002004,0x12002004, 470 0x10200004,0x12200004,0x10202004,0x12202004, 471 0x10000400,0x12000400,0x10002400,0x12002400, 472 0x10200400,0x12200400,0x10202400,0x12202400, 473 0x10000404,0x12000404,0x10002404,0x12002404, 474 0x10200404,0x12200404,0x10202404,0x12202404, 475 }; 476 477 private static final int []skb_2 = new int[] { 478 0x00000000,0x00000001,0x00040000,0x00040001, 479 0x01000000,0x01000001,0x01040000,0x01040001, 480 0x00000002,0x00000003,0x00040002,0x00040003, 481 0x01000002,0x01000003,0x01040002,0x01040003, 482 0x00000200,0x00000201,0x00040200,0x00040201, 483 0x01000200,0x01000201,0x01040200,0x01040201, 484 0x00000202,0x00000203,0x00040202,0x00040203, 485 0x01000202,0x01000203,0x01040202,0x01040203, 486 0x08000000,0x08000001,0x08040000,0x08040001, 487 0x09000000,0x09000001,0x09040000,0x09040001, 488 0x08000002,0x08000003,0x08040002,0x08040003, 489 0x09000002,0x09000003,0x09040002,0x09040003, 490 0x08000200,0x08000201,0x08040200,0x08040201, 491 0x09000200,0x09000201,0x09040200,0x09040201, 492 0x08000202,0x08000203,0x08040202,0x08040203, 493 0x09000202,0x09000203,0x09040202,0x09040203, 494 }; 495 496 private static final int []skb_3 = new int[] { 497 0x00000000,0x00100000,0x00000100,0x00100100, 498 0x00000008,0x00100008,0x00000108,0x00100108, 499 0x00001000,0x00101000,0x00001100,0x00101100, 500 0x00001008,0x00101008,0x00001108,0x00101108, 501 0x04000000,0x04100000,0x04000100,0x04100100, 502 0x04000008,0x04100008,0x04000108,0x04100108, 503 0x04001000,0x04101000,0x04001100,0x04101100, 504 0x04001008,0x04101008,0x04001108,0x04101108, 505 0x00020000,0x00120000,0x00020100,0x00120100, 506 0x00020008,0x00120008,0x00020108,0x00120108, 507 0x00021000,0x00121000,0x00021100,0x00121100, 508 0x00021008,0x00121008,0x00021108,0x00121108, 509 0x04020000,0x04120000,0x04020100,0x04120100, 510 0x04020008,0x04120008,0x04020108,0x04120108, 511 0x04021000,0x04121000,0x04021100,0x04121100, 512 0x04021008,0x04121008,0x04021108,0x04121108, 513 }; 514 515 private static final int []skb_4 = new int[] { 516 0x00000000,0x10000000,0x00010000,0x10010000, 517 0x00000004,0x10000004,0x00010004,0x10010004, 518 0x20000000,0x30000000,0x20010000,0x30010000, 519 0x20000004,0x30000004,0x20010004,0x30010004, 520 0x00100000,0x10100000,0x00110000,0x10110000, 521 0x00100004,0x10100004,0x00110004,0x10110004, 522 0x20100000,0x30100000,0x20110000,0x30110000, 523 0x20100004,0x30100004,0x20110004,0x30110004, 524 0x00001000,0x10001000,0x00011000,0x10011000, 525 0x00001004,0x10001004,0x00011004,0x10011004, 526 0x20001000,0x30001000,0x20011000,0x30011000, 527 0x20001004,0x30001004,0x20011004,0x30011004, 528 0x00101000,0x10101000,0x00111000,0x10111000, 529 0x00101004,0x10101004,0x00111004,0x10111004, 530 0x20101000,0x30101000,0x20111000,0x30111000, 531 0x20101004,0x30101004,0x20111004,0x30111004, 532 }; 533 534 private static final int []skb_5 = new int[] { 535 0x00000000,0x08000000,0x00000008,0x08000008, 536 0x00000400,0x08000400,0x00000408,0x08000408, 537 0x00020000,0x08020000,0x00020008,0x08020008, 538 0x00020400,0x08020400,0x00020408,0x08020408, 539 0x00000001,0x08000001,0x00000009,0x08000009, 540 0x00000401,0x08000401,0x00000409,0x08000409, 541 0x00020001,0x08020001,0x00020009,0x08020009, 542 0x00020401,0x08020401,0x00020409,0x08020409, 543 0x02000000,0x0A000000,0x02000008,0x0A000008, 544 0x02000400,0x0A000400,0x02000408,0x0A000408, 545 0x02020000,0x0A020000,0x02020008,0x0A020008, 546 0x02020400,0x0A020400,0x02020408,0x0A020408, 547 0x02000001,0x0A000001,0x02000009,0x0A000009, 548 0x02000401,0x0A000401,0x02000409,0x0A000409, 549 0x02020001,0x0A020001,0x02020009,0x0A020009, 550 0x02020401,0x0A020401,0x02020409,0x0A020409, 551 }; 552 553 private static final int []skb_6 = new int[] { 554 0x00000000,0x00000100,0x00080000,0x00080100, 555 0x01000000,0x01000100,0x01080000,0x01080100, 556 0x00000010,0x00000110,0x00080010,0x00080110, 557 0x01000010,0x01000110,0x01080010,0x01080110, 558 0x00200000,0x00200100,0x00280000,0x00280100, 559 0x01200000,0x01200100,0x01280000,0x01280100, 560 0x00200010,0x00200110,0x00280010,0x00280110, 561 0x01200010,0x01200110,0x01280010,0x01280110, 562 0x00000200,0x00000300,0x00080200,0x00080300, 563 0x01000200,0x01000300,0x01080200,0x01080300, 564 0x00000210,0x00000310,0x00080210,0x00080310, 565 0x01000210,0x01000310,0x01080210,0x01080310, 566 0x00200200,0x00200300,0x00280200,0x00280300, 567 0x01200200,0x01200300,0x01280200,0x01280300, 568 0x00200210,0x00200310,0x00280210,0x00280310, 569 0x01200210,0x01200310,0x01280210,0x01280310, 570 }; 571 572 private static final int []skb_7 = new int[] { 573 0x00000000,0x04000000,0x00040000,0x04040000, 574 0x00000002,0x04000002,0x00040002,0x04040002, 575 0x00002000,0x04002000,0x00042000,0x04042000, 576 0x00002002,0x04002002,0x00042002,0x04042002, 577 0x00000020,0x04000020,0x00040020,0x04040020, 578 0x00000022,0x04000022,0x00040022,0x04040022, 579 0x00002020,0x04002020,0x00042020,0x04042020, 580 0x00002022,0x04002022,0x00042022,0x04042022, 581 0x00000800,0x04000800,0x00040800,0x04040800, 582 0x00000802,0x04000802,0x00040802,0x04040802, 583 0x00002800,0x04002800,0x00042800,0x04042800, 584 0x00002802,0x04002802,0x00042802,0x04042802, 585 0x00000820,0x04000820,0x00040820,0x04040820, 586 0x00000822,0x04000822,0x00040822,0x04040822, 587 0x00002820,0x04002820,0x00042820,0x04042820, 588 0x00002822,0x04002822,0x00042822,0x04042822, 589 }; 590 } 591 592 | Popular Tags |