├── Code12.txt ├── Data12.txt ├── HuffDec11.py ├── HuffDec12.py ├── LICENSE ├── README.md ├── huff11.bin └── unME12.py /Code12.txt: -------------------------------------------------------------------------------- 1 | 1111111 000000 2 | 1111110 000000000000000000000000000000 3 | 1111101 04 4 | 11111001 3500 5 | 11111000 010000 6 | 11110111 08 7 | 11110110 FFFF 8 | 11110101 01 9 | 11110100 10 10 | 11110011 FFFFFF 11 | 11110010 05 12 | 11110001 50 13 | 11110000 20 14 | 11101111 31C0 15 | 11101110 02 16 | 11101101 3600 17 | 11101100 03 18 | 11101011 88 19 | 11101010 FEFFFF 20 | 11101001 09 21 | 11101000 0C 22 | 11100111 FDFF 23 | 11100110 0A 24 | 11100101 56 25 | 11100100 14 26 | 11100011 8D 27 | 11100010 FF 28 | 11100001 53 29 | 11100000 00000000 30 | 11011111 66 31 | 11011110 80 32 | 11011101 52 33 | 11011100 63 34 | 11011011 1C 35 | 11011010 5653 36 | 11011001 EB 37 | 11011000 3C 38 | 11010111 18 39 | 11010110 74 40 | 11010101 40 41 | 11010100 73 42 | 11010011 68 43 | 11010010 07 44 | 11010001 2E 45 | 11010000 020000 46 | 11001111 06 47 | 11001110 8A 48 | 11001101 E9 49 | 11001100 5B5E 50 | 11001011 B8 51 | 11001010 30 52 | 11001001 69 53 | 11001000 0000 54 | 11000111 58 55 | 11000110 81 56 | 11000101 2F 57 | 11000100 0FB6 58 | 11000011 C1 59 | 11000010 28 60 | 11000001 8B45 61 | 11000000 39 62 | 10111111 64 63 | 10111110 70 64 | 10111101 8B55 65 | 10111100 E8 66 | 10111011 24 67 | 10111010 6C 68 | 10111001 50E8 69 | 10111000 77 70 | 10110111 1F 71 | 10110110 0F84 72 | 10110101 C6 73 | 10110100 31 74 | 10110011 85C074 75 | 10110010 F7 76 | 10110001 57 77 | 10110000 D0 78 | 10101111 00 79 | 10101110 F6 80 | 10101101 00000000000000 81 | 101011001 6A00 82 | 101011000 C0 83 | 101010111 0D 84 | 101010110 61 85 | 101010101 15 86 | 101010100 8D45 87 | 101010011 E0 88 | 101010010 6A 89 | 101010001 C9 90 | 101010000 FF75 91 | 101001111 8B 92 | 101001110 43 93 | 101001101 83C40C 94 | 101001100 89 95 | 101001011 0C100000 96 | 101001010 7F7F 97 | 101001001 7405 98 | 101001000 C7 99 | 101000111 75 100 | 101000110 0E0E 101 | 101000101 3D 102 | 101000100 E4 103 | 101000011 83 104 | 101000010 5F5D 105 | 101000001 2C 106 | 101000000 F8 107 | 100111111 44 108 | 100111110 EC 109 | 100111101 65 110 | 100111100 0F 111 | 100111011 22 112 | 100111010 C745 113 | 100111001 48 114 | 100111000 85C075 115 | 100110111 6F 116 | 100110110 F4 117 | 100110101 0F85 118 | 100110100 8B4D 119 | 100110011 F0 120 | 100110010 8B5D 121 | 100110001 41 122 | 100110000 5F 123 | 100101111 46 124 | 100101110 38 125 | 100101101 59 126 | 100101100 78 127 | 100101011 D8 128 | 100101010 83EC 129 | 100101001 FF8D 130 | 100101000 5A 131 | 100100111 FB 132 | 100100110 72 133 | 100100101 C35589E557 134 | 100100100 65F4 135 | 100100011 45 136 | 100100010 FF83C4 137 | 100100001 85 138 | 100100000 6B 139 | 100011111 0808 140 | 100011110 85C00F 141 | 100011101 54 142 | 100011100 C8 143 | 100011011 8945 144 | 100011010 FA 145 | 100011001 6A01 146 | 100011000 34 147 | 100010111 5C5C 148 | 100010110 3B 149 | 100010101 4D 150 | 100010100 01000000 151 | 100010011 0B 152 | 100010010 0FB7 153 | 100010001 5D 154 | 100010000 42 155 | 100001111 67 156 | 100001110 62 157 | 100001101 FCFF 158 | 100001100 76 159 | 100001011 DC 160 | 100001010 84 161 | 100001001 53E8 162 | 100001000 0C10000089 163 | 100000111 837D 164 | 100000110 FC 165 | 100000101 0E 166 | 100000100 51 167 | 100000011 B0 168 | 100000010 030000 169 | 100000001 25 170 | 100000000 29 171 | 011111111 1C00 172 | 011111110 BA 173 | 011111101 45F0 174 | 011111100 F9 175 | 011111011 4C 176 | 011111010 16 177 | 011111001 85C0 178 | 011111000 33 179 | 011110111 C2 180 | 011110110 6E 181 | 011110101 82 182 | 011110100 6D 183 | 011110011 C3 184 | 011110010 83C410 185 | 011110001 0400 186 | 011110000 0800 187 | 011101111 60 188 | 011101110 4E 189 | 011101101 79 190 | 011101100 3E 191 | 011101011 F033 192 | 011101010 A1 193 | 011101001 6F6E 194 | 011101000 1E 195 | 011100111 EF 196 | 011100110 A8 197 | 011100101 C4 198 | 011100100 6572 199 | 011100011 F2 200 | 011100010 55 201 | 011100001 83F8 202 | 011100000 7F 203 | 011011111 C35589E5 204 | 011011110 CC 205 | 011011101 BC 206 | 011011100 EE 207 | 011011011 BE 208 | 011011010 B4 209 | 011011001 90 210 | 011011000 0068 211 | 011010111 47 212 | 011010110 2D 213 | 011010101 12 214 | 011010100 3A 215 | 011010011 A0 216 | 011010010 49 217 | 011010001 13 218 | 011010000 0074 219 | 011001111 11 220 | 011001110 FE 221 | 011001101 F3 222 | 011001100 7469 223 | 011001011 86 224 | 011001010 FF8B 225 | 011001001 D4 226 | 011001000 7D 227 | 011000111 4F 228 | 011000110 32 229 | 011000101 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 230 | 011000100 BB 231 | 0110000111 3500E8 232 | 0110000110 0700 233 | 0110000101 5DC35589E557 234 | 0110000100 0100 235 | 0110000011 85DB 236 | 0110000010 E2 237 | 0110000001 F5 238 | 0110000000 2100 239 | 0101111111 FF83C40C 240 | 0101111110 21 241 | 0101111101 89C3 242 | 0101111100 E6 243 | 0101111011 BF 244 | 0101111010 8B4508 245 | 0101111001 A10C 246 | 0101111000 1B 247 | 0101110111 98 248 | 0101110110 EA 249 | 0101110101 94 250 | 0101110100 35 251 | 0101110011 5589E5 252 | 0101110010 7C 253 | 0101110001 B3 254 | 0101110000 36 255 | 0101101111 8955 256 | 0101101110 F1 257 | 0101101101 7E 258 | 0101101100 A4 259 | 0101101011 5B 260 | 0101101010 95 261 | 0101101001 0300 262 | 0101101000 37 263 | 0101100111 31D2 264 | 0101100110 8C 265 | 0101100101 ?????????? 266 | 0101100100 E7 267 | 0101100011 8B7D 268 | 0101100010 AC 269 | 0101100001 10000089 270 | 0101100000 1A 271 | 0101011111 1D 272 | 0101011110 89D8 273 | 0101011101 D2 274 | 0101011100 508D 275 | 0101011011 4A 276 | 0101011010 83C414 277 | 0101011001 DE 278 | 0101011000 8B75 279 | 0101010111 5E 280 | 0101010110 FEFF 281 | 0101010101 17 282 | 0101010100 26 283 | 0101010011 8B43 284 | 0101010010 4B 285 | 0101010001 ED 286 | 0101010000 CA 287 | 0101001111 0083C4 288 | 0101001110 9E 289 | 0101001101 9C 290 | 0101001100 A3 291 | 0101001011 2B 292 | 0101001010 FFB5 293 | 0101001001 5C 294 | 0101001000 19 295 | 0101000111 85F6 296 | 0101000110 D3 297 | 0101000101 0001 298 | 0101000100 56E8 299 | 0101000011 FF35 300 | 0101000010 C705 301 | 0101000001 87 302 | 0101000000 6A006A 303 | 0100111111 6689 304 | 0100111110 83E0 305 | 0100111101 B5 306 | 0100111100 D1 307 | 0100111011 6F72 308 | 0100111010 0000008B 309 | 0100111001 BD 310 | 0100111000 7B 311 | 0100110111 DA 312 | 0100110110 0053 313 | 0100110101 D6 314 | 0100110100 E5 315 | 0100110011 656D 316 | 0100110010 B9 317 | 0100110001 71 318 | 0100110000 FF5A 319 | 0100101111 7474 320 | 0100101110 6A02 321 | 0100101101 CF 322 | 0100101100 3F 323 | 0100101011 100000 324 | 0100101010 DB 325 | 0100101001 85D2 326 | 0100101000 66C7 327 | 0100100111 23 328 | 0100100110 E1 329 | 0100100101 5DC3 330 | 0100100100 CE 331 | 0100100011 96 332 | 0100100010 00000021 333 | 0100100001 088B 334 | 0100100000 350000 335 | 0100011111 9D 336 | 0100011110 0075 337 | 0100011101 DF 338 | 0100011100 6C65 339 | 0100011011 D7 340 | 0100011010 E3 341 | 0100011001 0020 342 | 0100011000 3C2F 343 | 0100010111 0003 344 | 0100010110 7465 345 | 0100010101 31C08B 346 | 0100010100 7A 347 | 0100010011 0050 348 | 0100010010 83C0 349 | 0100010001 CB 350 | 0100010000 506A 351 | 0100001111 D9 352 | 0100001110 6564 353 | 0100001101 8F 354 | 0100001100 894D 355 | 0100001011 0200 356 | 0100001010 FF89 357 | 0100001001 6E74 358 | 0100001000 2A 359 | 0100000111 31DB 360 | 0100000110 B7 361 | 0100000101 000000C7 362 | 0100000100 000000EB 363 | 0100000011 89C6 364 | 0100000010 57E8 365 | 0100000001 696E 366 | 0100000000 2000 367 | 0011111111 B2 368 | 0011111110 FFFFFFFF 369 | 0011111101 0600 370 | 0011111100 006A 371 | 0011111011 00FF 372 | 0011111010 93 373 | 0011111001 6173 374 | 00111110001 000000000000000000 375 | 00111110000 8B450C 376 | 00111101111 FF7508 377 | 00111101110 8D85 378 | 00111101101 FF58 379 | 00111101100 0F94 380 | 00111101011 89C2 381 | 00111101010 807D 382 | 00111101001 AF 383 | 00111101000 2066 384 | 00111100111 C743 385 | 00111100110 3600E8 386 | 00111100101 1818 387 | 00111100100 7265 388 | 00111100011 8E 389 | 00111100010 7374 390 | 00111100001 FFFF5A 391 | 00111100000 DD 392 | 00111011111 89F0 393 | 00111011110 FD 394 | 00111011101 0C8B 395 | 00111011100 6A0068 396 | 00111011011 A6 397 | 00111011010 656E 398 | 00111011001 89E5 399 | 00111011000 B6 400 | 00111010111 00E8 401 | 00111010110 FF750C 402 | 00111010101 6A04 403 | 00111010100 27 404 | 00111010011 000F 405 | 00111010010 83C4 406 | 00111010001 83FA 407 | 00111010000 A2 408 | 00111001111 0000008D 409 | 00111001110 616D 410 | 00111001101 7373 411 | 00111001100 6A10 412 | 00111001011 C605 413 | 00111001010 00008B 414 | 00111001001 696C 415 | 00111001000 89C7 416 | 00111000111 7363 417 | 00111000110 45EC 418 | 00111000101 C645 419 | 00111000100 006A00 420 | 00111000011 08A1 421 | 00111000010 6E67 422 | 00111000001 008B 423 | 00111000000 6573 424 | 00110111111 91 425 | 00110111110 833D 426 | 00110111101 0041 427 | 00110111100 00EB 428 | 00110111011 6574 429 | 00110111010 A9 430 | 00110111001 6520 431 | 00110111000 3315 432 | 00110110111 85FF 433 | 00110110110 97 434 | 00110110101 350001 435 | 00110110100 FF73 436 | 00110110011 585A 437 | 00110110010 31F6 438 | 00110110001 0900 439 | 00110110000 83BD 440 | 00110101111 8D65 441 | 00110101110 FFFF8B 442 | 00110101101 FF59 443 | 00110101100 02000000 444 | 00110101011 AE 445 | 00110101010 5DFC 446 | 00110101001 8B95 447 | 00110101000 D5 448 | 00110100111 AA 449 | 00110100110 50FF 450 | 00110100101 9F 451 | 00110100100 0500 452 | 00110100011 84C0 453 | 00110100010 AB 454 | 00110100001 2022 455 | 00110100000 803D 456 | 00110011111 000000E9 457 | 00110011110 45E4 458 | 00110011101 83E2 459 | 00110011100 FF6A 460 | 00110011011 92 461 | 00110011010 FFFF83 462 | 00110011001 7372 463 | 00110011000 6163 464 | 00110010111 8B46 465 | 00110010110 7508 466 | 00110010101 C5 467 | 00110010100 0C00 468 | 00110010011 000083 469 | 00110010010 2063 470 | 00110010001 6D61 471 | 00110010000 7510 472 | 00110001111 99 473 | 00110001110 1089 474 | 00110001101 00000089 475 | 00110001100 5068 476 | 00110001011 0F87 477 | 00110001010 AD 478 | 00110001001 5053 479 | 00110001000 0C89 480 | 00110000111 108B 481 | 00110000110 B1 482 | 00110000101 6174 483 | 00110000100 9A 484 | 00110000011 00C7 485 | 00110000010 65F8 486 | 00110000001 89D0 487 | 00110000000 5554 488 | 00101111111 0089 489 | 00101111110 CD 490 | 00101111101 45E8 491 | 00101111100 7276 492 | 00101111011 C059 493 | 00101111010 5756 494 | 00101111001 9B 495 | 00101111000 0889 496 | 00101110111 6170 497 | 00101110110 6F6D 498 | 00101110101 83C8 499 | 00101110100 643E 500 | 00101110011 0100008B 501 | 00101110010 837B 502 | 00101110001 EB05 503 | 00101110000 85C9 504 | 00101101111 6963 505 | 00101101110 000000E8 506 | 00101101101 45F8 507 | 00101101100 8D5D 508 | 00101101011 750C 509 | 00101101010 45E0 510 | 00101101001 0049 511 | 00101101000 5A85 512 | 00101100111 A5 513 | 00101100110 5D08 514 | 00101100101 55F0 515 | 00101100100 726F 516 | 00101100011 8B40 517 | 00101100010 FF50 518 | 00101100001 F8FF 519 | 00101100000 A7 520 | 00101011111 83FB 521 | 00101011110 4304 522 | 00101011101 0F95 523 | 00101011100 656C 524 | 00101011011 723E 525 | 00101011010 C785 526 | 00101011001 4349 527 | 00101011000 7507 528 | 00101010111 4D54 529 | 00101010110 FF70 530 | 00101010101 8B85 531 | 00101010100 0057 532 | 00101010011 8D55 533 | 00101010010 00000020 534 | 00101010001 4D5F 535 | 00101010000 6800 536 | 00101001111 89F8 537 | 00101001110 FFFFFF8B 538 | 00101001101 7407 539 | 00101001100 6C69 540 | 00101001011 0007 541 | 00101001010 80FA 542 | 00101001001 F0FF 543 | 00101001000 C740 544 | 00101000111 8995 545 | 00101000110 0A00 546 | 00101000101 6865 547 | 00101000100 45DC 548 | 00101000011 ?????????????????????????? 549 | 00101000010 0000000000 550 | 00101000001 FDFF83C40C 551 | 00101000000 5B5E5F5DC3 552 | 00100111111 ?????????? 553 | 00100111110 ?????????????????????????????? 554 | 00100111101 ?????????????????????????????? 555 | 001001111001 00006A 556 | 001001111000 00008D 557 | 001001110111 350050 558 | 001001110110 FFFF58 559 | 001001110101 000000000000 560 | 001001110100 FFFF89 561 | 001001110011 FFFF8D 562 | 001001110010 0FB705 563 | 001001110001 8B03 564 | 001001110000 45F4 565 | 001001101111 4508 566 | 001001101110 8D7D 567 | 001001101101 7420 568 | 001001101100 8985 569 | 001001101011 148B 570 | 001001101010 0708 571 | 001001101001 005A 572 | 001001101000 6A1F 573 | 001001100111 6E61 574 | 001001100110 8D4D 575 | 001001100101 0000C7 576 | 001001100100 0000006A 577 | 001001100011 8B45F0 578 | 001001100010 8B47 579 | 001001100001 6A06 580 | 001001100000 FFFFFF00 581 | 001001011111 0175 582 | 001001011110 0489 583 | 001001011101 C355 584 | 001001011100 C418 585 | 001001011011 0002 586 | 001001011010 0056 587 | 001001011001 ?????? 588 | 001001011000 0083 589 | 001001010111 00000001 590 | 001001010110 668B 591 | 001001010101 5056 592 | 001001010100 000089 593 | 001001010011 45D8 594 | 001001010010 000050 595 | 001001010001 8378 596 | 001001010000 ECFF 597 | 001001001111 83C3 598 | 001001001110 000059 599 | 001001001101 8B53 600 | 001001001100 F6FF 601 | 001001001011 83FE 602 | 001001001010 4308 603 | 001001001001 0100008D 604 | 001001001000 83E1 605 | 001001000111 733D 606 | 001001000110 5350 607 | 001001000101 0052 608 | 001001000100 FF68 609 | 001001000011 616E 610 | 001001000010 0030 611 | 001001000001 C420 612 | 001001000000 8943 613 | 001000111111 008D 614 | 001000111110 8D43 615 | 001000111101 FF30 616 | 001000111100 FEFFFF8B 617 | 001000111011 8D83 618 | 001000111010 1800 619 | 001000111001 1000 620 | 001000111000 FFFFFFFFFF 621 | 001000110111 C783 622 | 001000110110 1489 623 | 001000110101 6365 624 | 001000110100 FEFFFF00 625 | 001000110011 FFB3 626 | 001000110010 7570 627 | 001000110001 E8FF 628 | 001000110000 7413 629 | 001000101111 FFFFFF50 630 | 001000101110 7269 631 | 001000101101 8845 632 | 001000101100 7468 633 | 001000101011 EB07 634 | 001000101010 0010 635 | 001000101001 746F 636 | 001000101000 1400 637 | 001000100111 7461 638 | 001000100110 FEFFFF50 639 | 001000100101 8B83 640 | 001000100100 8B15 641 | 001000100011 00000000C7 642 | 001000100010 2041 643 | 001000100001 0CA1 644 | 001000100000 0119 645 | 001000011111 048B 646 | 001000011110 206C 647 | 001000011101 703A 648 | 001000011100 8942 649 | 001000011011 83F9 650 | 001000011010 7400 651 | 001000011001 00000083 652 | 001000011000 3D22 653 | 001000010111 7073 654 | 001000010110 FF00 655 | 001000010101 0080 656 | 001000010100 83BB 657 | 001000010011 6683 658 | 001000010010 7514 659 | 001000010001 7365 660 | 001000010000 745F 661 | 001000001111 FF0F 662 | 001000001110 3032 663 | 001000001101 00000080 664 | 001000001100 FFC7 665 | 001000001011 1889 666 | 001000001010 00000068 667 | 001000001001 5365 668 | 001000001000 8D95 669 | 001000000111 ?????? 670 | 001000000110 45D4 671 | 001000000101 EBFF 672 | 001000000100 FBFF 673 | 001000000011 89F2 674 | 001000000010 FF33 675 | 001000000001 508B 676 | 001000000000 E88B 677 | 000111111111 7061 678 | 000111111110 FFFF59 679 | 000111111101 0174 680 | 000111111100 00C6 681 | 000111111011 5650 682 | 000111111010 C9C3 683 | 000111111001 0401 684 | 000111111000 45FC 685 | 000111110111 7065 686 | 000111110110 430C 687 | 000111110101 5057 688 | 000111110100 6D65 689 | 000111110011 0101 690 | 000111110010 80BD 691 | 000111110001 7464 692 | 000111110000 5E5F 693 | 000111101111 89DA 694 | 000111101110 00000050 695 | 000111101101 45CC 696 | 000111101100 750A 697 | 000111101011 740A 698 | 000111101010 0189 699 | 000111101001 EB02 700 | 000111101000 807B 701 | 000111100111 837E 702 | 000111100110 0275 703 | 000111100101 8B45EC 704 | 000111100100 895D 705 | 000111100011 B885 706 | 000111100010 45D0 707 | 000111100001 7472 708 | 000111100000 6A08 709 | 000111011111 740B 710 | 000111011110 55E4 711 | 000111011101 7573 712 | 000111011100 FF74 713 | 000111011011 B89E 714 | 000111011010 0177 715 | 000111011001 6E65 716 | 000111011000 6669 717 | 000111010111 00E9 718 | 000111010110 C700 719 | 000111010101 7C07 720 | 000111010100 45C8 721 | 000111010011 740E 722 | 000111010010 52E8 723 | 000111010001 55EC 724 | 000111010000 0043 725 | 000111001111 7509 726 | 000111001110 6465 727 | 000111001101 7409 728 | 000111001100 0801 729 | 000111001011 FFFFFF8D 730 | 000111001010 8B8D 731 | 000111001001 5374 732 | 000111001000 6824 733 | 000111000111 536A 734 | 000111000110 740D 735 | 000111000101 7369 736 | 000111000100 8D46 737 | 000111000011 4510 738 | 000111000010 7574 739 | 000111000001 6500 740 | 000111000000 538B 741 | 000110111111 2030 742 | 000110111110 7406 743 | 000110111101 00000066 744 | 000110111100 83C2 745 | 000110111011 80F9 746 | 000110111010 0450 747 | 000110111001 6974 748 | 000110111000 EB06 749 | 000110110111 088D 750 | 000110110110 75EC 751 | 000110110101 EC50 752 | 000110110100 750B 753 | 000110110011 7D0C 754 | 000110110010 000000FF 755 | 000110110001 8B0D 756 | 000110110000 8338 757 | 000110101111 7479 758 | 000110101110 7D08 759 | 000110101101 5589E557 760 | 000110101100 0047 761 | 000110101011 0008 762 | 000110101010 4004 763 | 000110101001 FFFFEB 764 | 000110101000 8945F0 765 | 000110100111 E850 766 | 000110100110 FF76 767 | 000110100101 8D44 768 | 000110100100 4D61 769 | 000110100011 E803 770 | 000110100010 8B86 771 | 000110100001 000000B8 772 | 000110100000 5368 773 | 000110011111 01000089 774 | 000110011110 740C 775 | 000110011101 84D2 776 | 000110011100 45C4 777 | 000110011011 FFEB 778 | 000110011010 8D04 779 | 000110011001 FF53 780 | 000110011000 05B8 781 | 000110010111 8B4B 782 | 000110010110 0066 783 | 000110010101 00000004 784 | 000110010100 89C1 785 | 000110010011 0044 786 | 000110010010 10C7 787 | 000110010001 0004 788 | 000110010000 00000001000000 789 | 000110001111 08C7 790 | 000110001110 0274 791 | 000110001101 ?????????????????? 792 | 000110001100 2053 793 | 000110001011 00000074 794 | 000110001010 FFC9 795 | 0001100010011 666666666666 796 | 0001100010010 8945F4 797 | 0001100010001 FFFF6A 798 | 0001100010000 000074 799 | 0001100001111 FDFFFF 800 | 0001100001110 89E557 801 | 0001100001101 00005A 802 | 0001100001100 FFFFE9 803 | 0001100001011 350068 804 | 0001100001010 0000E8 805 | 0001100001001 000058 806 | 0001100001000 FFFF68 807 | 0001100000111 ?????? 808 | 0001100000110 0000FF 809 | 0001100000101 070000 810 | 0001100000100 000068 811 | 0001100000011 000031 812 | 0001100000010 0000EB 813 | 0001100000001 008945 814 | 0001100000000 FBFFFF 815 | 0001011111111 000066 816 | 0001011111110 000004 817 | 0001011111101 000053 818 | 0001011111100 040000 819 | 0001011111011 000001 820 | 0001011111010 ?????????? 821 | 0001011111001 0000E9 822 | 0001011111000 07006A 823 | 0001011110111 000056 824 | 0001011110110 7506 825 | 0001011110101 506F 826 | 0001011110100 0045 827 | 0001011110011 53FF 828 | 0001011110010 750D 829 | 0001011110001 837A 830 | 0001011110000 7070 831 | 0001011101111 C050 832 | 0001011101110 E889 833 | 0001011101101 68A4 834 | 0001011101100 FCFFFF 835 | 0001011101011 2050 836 | 0001011101010 8B50 837 | 0001011101001 636F 838 | 0001011101000 75E4 839 | 0001011100111 45EE 840 | 0001011100110 6846 841 | 0001011100101 008B45 842 | 0001011100100 84DB 843 | 0001011100011 7411 844 | 0001011100010 8B06 845 | 0001011100001 EB0E 846 | 0001011100000 01D0 847 | 0001011011111 6832 848 | 0001011011110 450C 849 | 0001011011101 7518 850 | 0001011011100 FF5B 851 | 0001011011011 6A14 852 | 0001011011010 EC00 853 | 0001011011001 00000000000000000000 854 | 0001011011000 01C6 855 | 0001011010111 8B42 856 | 0001011010110 0CC7 857 | 0001011010101 0015 858 | 0001011010100 FF57 859 | 0001011010011 0001000000 860 | 0001011010010 750E 861 | 0001011010001 D88B 862 | 0001011010000 C0E8 863 | 0001011001111 FF77 864 | 0001011001110 0804 865 | 0001011001101 8855 866 | 0001011001100 8D50 867 | 0001011001011 E800 868 | 0001011001010 6802 869 | 0001011001001 4354 870 | 0001011001000 45B0 871 | 0001011000111 6420 872 | 0001011000110 0000000000000000000000 873 | 0001011000101 5508 874 | 0001011000100 E001 875 | 0001011000011 0091 876 | 0001011000010 80BB 877 | 0001011000001 0403 878 | 0001011000000 897D 879 | 0001010111111 837F 880 | 0001010111110 0301 881 | 0001010111101 8D9D 882 | 0001010111100 6861 883 | 0001010111011 8947 884 | 0001010111010 45BC 885 | 0001010111001 83E3 886 | 0001010111000 55F4 887 | 0001010110111 C078 888 | 0001010110110 3000 889 | 0001010110101 00000000000000000000000000 890 | 0001010110100 016A 891 | 0001010110011 8946 892 | 0001010110010 750F 893 | 0001010110001 FF66 894 | 0001010110000 89C8 895 | 0001010101111 05BA 896 | 0001010101110 ???????????????????????? 897 | 0001010101101 742D 898 | 0001010101100 203D 899 | 0001010101011 8B80 900 | 0001010101010 688C 901 | 0001010101001 7512 902 | 0001010101000 75F0 903 | 0001010100111 55B8 904 | 0001010100110 456E 905 | 0001010100101 3D00 906 | 0001010100100 F45B 907 | 0001010100011 740F 908 | 0001010100010 8DB5 909 | 0001010100001 0021 910 | 0001010100000 0000008A 911 | 0001010011111 8D47 912 | 0001010011110 ?????????????????????? 913 | 0001010011101 FFFFFF89 914 | 0001010011100 E8A1 915 | 0001010011011 5383 916 | 0001010011010 2020 917 | 0001010011001 6AFF 918 | 0001010011000 0475 919 | 0001010010111 7562 920 | 0001010010110 C074 921 | 0001010010101 7402 922 | 0001010010100 EB0A 923 | 0001010010011 7412 924 | 0001010010010 7320 925 | 0001010010001 0100000002 926 | 0001010010000 7466 927 | 0001010001111 45EF 928 | 0001010001110 0474 929 | 0001010001101 08E8 930 | 0001010001100 550C 931 | 0001010001011 010000E8 932 | 0001010001010 7565 933 | 0001010001001 8B1D 934 | 0001010001000 5985 935 | 0001010000111 00DD 936 | 0001010000110 2073 937 | 0001010000101 4314 938 | 0001010000100 002F 939 | 0001010000011 6898 940 | 0001010000010 6880 941 | 0001010000001 7261 942 | 0001010000000 0289 943 | 0001001111111 00A1 944 | 0001001111110 45B4 945 | 0001001111101 55DC 946 | 0001001111100 833B 947 | 0001001111011 FF5E 948 | 0001001111010 ?????????????? 949 | 0001001111001 8B07 950 | 0001001111000 741B 951 | 0001001110111 89FA 952 | 0001001110110 5089 953 | 0001001110101 454E 954 | 0001001110100 0535 955 | 0001001110011 0850 956 | 0001001110010 8D75 957 | 0001001110001 F031 958 | 0001001110000 E8FD 959 | 0001001101111 7404 960 | 0001001101110 8B00 961 | 0001001101101 EB0C 962 | 0001001101100 FF34 963 | 0001001101011 4310 964 | 0001001101010 EB13 965 | 0001001101001 45C0 966 | 0001001101000 007F 967 | 0001001100111 857C 968 | 0001001100110 7274 969 | 0001001100101 8DBD 970 | 0001001100100 8B87 971 | 0001001100011 000000A1 972 | 0001001100010 75E0 973 | 0001001100001 89F1 974 | 0001001100000 EB0B 975 | 0001001011111 EB03 976 | 0001001011110 75DC 977 | 0001001011101 E802 978 | 0001001011100 4DF0 979 | 0001001011011 E8FE 980 | 0001001011010 5356 981 | 0001001011001 000000F6 982 | 0001001011000 EB16 983 | 0001001010111 0F00 984 | 0001001010110 8983 985 | 0001001010101 4DE4 986 | 0001001010100 006F 987 | 0001001010011 8B9D 988 | 0001001010010 0055 989 | 0001001010001 8B93 990 | 0001001010000 751C 991 | 0001001001111 EB12 992 | 0001001001110 0188 993 | 0001001001101 7D10 994 | 0001001001100 05BB 995 | 0001001001011 E8D5 996 | 0001001001010 89D7 997 | 0001001001001 89D1 998 | 0001001001000 E88F 999 | 0001001000111 80FB 1000 | 0001001000110 8843 1001 | 0001001000101 FF5F 1002 | 0001001000100 FF56 1003 | 0001001000011 8078 1004 | 0001001000010 C08B 1005 | 0001001000001 68C4 1006 | 0001001000000 898D 1007 | 0001000111111 8B48 1008 | 0001000111110 2025 1009 | 0001000111101 83E6 1010 | 0001000111100 01C1 1011 | 0001000111011 FFA1 1012 | 0001000111010 756E 1013 | 0001000111001 003C 1014 | 0001000111000 0150 1015 | 0001000110111 E8AD 1016 | 0001000110110 E8CD 1017 | 0001000110101 5DE9 1018 | 0001000110100 686F 1019 | 0001000110011 436F 1020 | 0001000110010 83C6 1021 | 0001000110001 8560 1022 | 0001000110000 7419 1023 | 0001000101111 1050 1024 | 0001000101110 0C01 1025 | 0001000101101 E897 1026 | 0001000101100 7516 1027 | 0001000101011 E883 1028 | 0001000101010 C008 1029 | 0001000101001 FFE8 1030 | 0001000101000 2061 1031 | 0001000100111 EB09 1032 | 0001000100110 83C40C85 1033 | 0001000100101 56FF 1034 | 0001000100100 75E8 1035 | 0001000100011 000000C6 1036 | 0001000100010 EB04 1037 | 0001000100001 89D6 1038 | 0001000100000 E8A2 1039 | 0001000011111 7511 1040 | 0001000011110 E87E 1041 | 0001000011101 E8ED 1042 | 0001000011100 4DEC 1043 | 0001000011011 7572 1044 | 0001000011010 E8A7 1045 | 0001000011001 0C8D 1046 | 0001000011000 55D4 1047 | 0001000010111 2049 1048 | 0001000010110 7416 1049 | 0001000010101 E817 1050 | 0001000010100 68A0 1051 | 0001000010011 8803 1052 | 0001000010010 E8B2 1053 | 0001000010001 EB0D 1054 | 0001000010000 FF83 1055 | 0001000001111 E8AA 1056 | 0001000001110 55E8 1057 | 0001000001101 00000056 1058 | 0001000001100 00000053 1059 | 0001000001011 010F 1060 | 0001000001010 E8C5 1061 | 0001000001001 7415 1062 | 0001000001000 E857 1063 | 0001000000111 E89A 1064 | 0001000000110 E88C 1065 | 0001000000101 7417 1066 | 0001000000100 55E0 1067 | 0001000000011 0019 1068 | 0001000000010 0176 1069 | 0001000000001 FF8A 1070 | 0001000000000 E84A 1071 | 0000111111111 0048 1072 | 0000111111110 E8DE 1073 | 0000111111101 741A 1074 | 0000111111100 2074 1075 | 0000111111011 04FF 1076 | 0000111111010 7414 1077 | 0000111111001 E871 1078 | 0000111111000 EB11 1079 | 0000111110111 030F 1080 | 0000111110110 7422 1081 | 0000111110101 0C02 1082 | 0000111110100 E89F 1083 | 0000111110011 4361 1084 | 0000111110010 85FC 1085 | 0000111110001 E8E1 1086 | 0000111110000 4318 1087 | 0000111101111 0C6A 1088 | 0000111101110 6810 1089 | 0000111101101 E890 1090 | 0000111101100 682C 1091 | 0000111101011 E8B1 1092 | 0000111101010 E8A6 1093 | 0000111101001 004E 1094 | 0000111101000 8950 1095 | 0000111100111 E891 1096 | 0000111100110 7410 1097 | 0000111100101 0018 1098 | 0000111100100 E8CB 1099 | 0000111100011 E8BF 1100 | 0000111100010 E87C 1101 | 0000111100001 7453 1102 | 0000111100000 E893 1103 | 0000111011111 E8AE 1104 | 0000111011110 C089 1105 | 0000111011101 431C 1106 | 0000111011100 B801 1107 | 0000111011011 E823 1108 | 0000111011010 E81F 1109 | 0000111011001 E84B 1110 | 0000111011000 E86A 1111 | 0000111010111 FFB0 1112 | 0000111010110 C0EB 1113 | 0000111010101 741D 1114 | 0000111010100 E805 1115 | 0000111010011 E81A 1116 | 0000111010010 5DC35589 1117 | 0000111010001 8A07 1118 | 0000111010000 EB10 1119 | 0000111001111 4514 1120 | 0000111001110 7517 1121 | 0000111001101 E8DF 1122 | 0000111001100 E8E3 1123 | 0000111001011 E88D 1124 | 0000111001010 E89B 1125 | 0000111001001 E82B 1126 | 0000111001000 6835 1127 | 0000111000111 E801 1128 | 0000111000110 E89C 1129 | 0000111000101 E8B9 1130 | 0000111000100 68B0 1131 | 0000111000011 E89D 1132 | 0000111000010 E8CF 1133 | 0000111000001 E852 1134 | 0000111000000 8000 1135 | 0000110111111 45B8 1136 | 0000110111110 2089 1137 | 0000110111101 048D 1138 | 0000110111100 45EA 1139 | 0000110111011 84C9 1140 | 0000110111010 E8A5 1141 | 0000110111001 00C9 1142 | 0000110111000 E892 1143 | 0000110110111 7513 1144 | 0000110110110 741E 1145 | 0000110110101 45A4 1146 | 0000110110100 742E 1147 | 0000110110011 E827 1148 | 0000110110010 756C 1149 | 0000110110001 6820 1150 | 0000110110000 E8FC 1151 | 0000110101111 E899 1152 | 0000110101110 E8D7 1153 | 0000110101101 E839 1154 | 0000110101100 83FF 1155 | 0000110101011 E810 1156 | 0000110101010 6894 1157 | 0000110101001 00000003 1158 | 0000110101000 02E8 1159 | 0000110100111 001E 1160 | 0000110100110 E8A8 1161 | 0000110100101 EB08 1162 | 0000110100100 E882 1163 | 0000110100011 1066 1164 | 0000110100010 E83B 1165 | 0000110100001 2076 1166 | 0000110100000 E84F 1167 | 0000110011111 086A 1168 | 0000110011110 89F9 1169 | 0000110011101 8534 1170 | 0000110011100 1001 1171 | 0000110011011 E821 1172 | 0000110011010 E8A4 1173 | 0000110011001 7418 1174 | 0000110011000 7DEC 1175 | 0000110010111 E8CA 1176 | 0000110010110 75C8 1177 | 0000110010101 0C50 1178 | 0000110010100 E87F 1179 | 0000110010011 E8D1 1180 | 0000110010010 E812 1181 | 0000110010001 0866 1182 | 0000110010000 050C 1183 | 0000110001111 746D 1184 | 0000110001110 E88A 1185 | 0000110001101 E8D3 1186 | 0000110001100 68B4 1187 | 0000110001011 FFE9 1188 | 0000110001010 89D3 1189 | 0000110001001 E8F1 1190 | 0000110001000 01C3 1191 | 0000110000111 E819 1192 | 0000110000110 E80A 1193 | 0000110000101 7505 1194 | 0000110000100 E896 1195 | 0000110000011 05E8 1196 | 0000110000010 E836 1197 | 0000110000001 7504 1198 | 0000110000000 7408 1199 | 0000101111111 854C 1200 | 0000101111110 0888 1201 | 0000101111101 00000075 1202 | 0000101111100 0389 1203 | 0000101111011 E81D 1204 | 0000101111010 75D4 1205 | 0000101111001 E8F3 1206 | 0000101111000 45AC 1207 | 0000101110111 E8BD 1208 | 0000101110110 01C7 1209 | 0000101110101 0025 1210 | 0000101110100 8903 1211 | 0000101110011 E8B3 1212 | 0000101110010 E8D4 1213 | 0000101110001 756D 1214 | 0000101110000 FF31 1215 | 0000101101111 0483 1216 | 0000101101110 E82A 1217 | 0000101101101 E08B 1218 | 0000101101100 E811 1219 | 0000101101011 E8AC 1220 | 0000101101010 018B 1221 | 0000101101001 E8BB 1222 | 0000101101000 E8AF 1223 | 0000101100111 0081 1224 | 0000101100110 7435 1225 | 0000101100101 0005 1226 | 0000101100100 EC89 1227 | 0000101100011 E83F 1228 | 0000101100010 E804 1229 | 0000101100001 E8F4 1230 | 0000101100000 83BE 1231 | 0000101011111 8D53 1232 | 0000101011110 EB1E 1233 | 0000101011101 E8E7 1234 | 0000101011100 046A 1235 | 0000101011011 E8BA 1236 | 0000101011010 EC8B 1237 | 0000101011001 E829 1238 | 0000101011000 E876 1239 | 0000101010111 E825 1240 | 0000101010110 E842 1241 | 0000101010101 E898 1242 | 0000101010100 E82D 1243 | 0000101010011 E000 1244 | 0000101010010 E8D9 1245 | 0000101010001 8B56 1246 | 0000101010000 E856 1247 | 0000101001111 00E2 1248 | 0000101001110 45A8 1249 | 0000101001101 75D8 1250 | 0000101001100 7425 1251 | 0000101001011 FF01 1252 | 0000101001010 E866 1253 | 0000101001001 741C 1254 | 0000101001000 0031 1255 | 0000101000111 4594 1256 | 0000101000110 55F8 1257 | 0000101000101 8570 1258 | 0000101000100 E831 1259 | 0000101000011 E886 1260 | 0000101000010 EB0F 1261 | 0000101000001 04E8 1262 | 0000101000000 696F 1263 | 0000100111111 E895 1264 | 0000100111110 E88E 1265 | 0000100111101 EB17 1266 | 0000100111100 83E8 1267 | 0000100111011 2028 1268 | 0000100111010 8B13 1269 | 0000100111001 8902 1270 | 0000100111000 EB1A 1271 | 0000100110111 004F 1272 | 0000100110110 E86B 1273 | 0000100110101 00BE 1274 | 0000100110100 E8E8 1275 | 0000100110011 C075 1276 | 0000100110010 0063 1277 | 0000100110001 E808 1278 | 0000100110000 E84E 1279 | 0000100101111 E8FB 1280 | 0000100101110 106A 1281 | 0000100101101 8906 1282 | 0000100101100 83C7 1283 | 0000100101011 83EA 1284 | 0000100101010 E8D6 1285 | 0000100101001 05BE 1286 | 0000100101000 7431 1287 | 0000100100111 E879 1288 | 0000100100110 E8F5 1289 | 0000100100101 0040 1290 | 0000100100100 85B4 1291 | 0000100100011 208B 1292 | 0000100100010 E806 1293 | 0000100100001 E85B 1294 | 0000100100000 E853 1295 | 0000100011111 E8F9 1296 | 0000100011110 85A8 1297 | 0000100011101 E87A 1298 | 0000100011100 E80C 1299 | 0000100011011 7424 1300 | 0000100011010 E80E 1301 | 0000100011001 45A0 1302 | 0000100011000 83B8 1303 | 0000100010111 8B7B 1304 | 0000100010110 0108 1305 | 0000100010101 E9FF 1306 | 0000100010100 E838 1307 | 0000100010011 EB15 1308 | 0000100010010 45F3 1309 | 0000100010001 75C4 1310 | 0000100010000 0076 1311 | 0000100001111 038B 1312 | 0000100001110 0508 1313 | 0000100001101 FFC6 1314 | 0000100001100 2070 1315 | 0000100001011 751B 1316 | 0000100001010 E82C 1317 | 0000100001001 0375 1318 | 0000100001000 0065 1319 | 0000100000111 85D4 1320 | 0000100000110 E8C1 1321 | 0000100000101 85DC 1322 | 0000100000100 F801 1323 | 0000100000011 E894 1324 | 0000100000010 0059 1325 | 0000100000001 ???????????????? 1326 | 00001000000001 0CE8 1327 | 00001000000000 1485 1328 | 00000111111111 070068 1329 | 00000111111110 0700E8 1330 | 00000111111101 FFFFC7 1331 | 00000111111100 ?????? 1332 | 00000111111011 ?????? 1333 | 00000111111010 FFFF66 1334 | 00000111111001 000080 1335 | 00000111111000 FCFF8D 1336 | 00000111110111 7569 1337 | 00000111110110 85B8 1338 | 00000111110101 5DC355 1339 | 00000111110100 FFFF31 1340 | 00000111110011 0000C6 1341 | 00000111110010 FFFF00 1342 | 00000111110001 00008A 1343 | 00000111110000 FCFF83 1344 | 00000111101111 00000085 1345 | 00000111101110 00008945 1346 | 00000111101101 00000F 1347 | 00000111101100 0000F6 1348 | 00000111101011 C685 1349 | 00000111101010 55B9 1350 | 00000111101001 0000A1 1351 | 00000111101000 FF88 1352 | 00000111100111 FFFFFF83 1353 | 00000111100110 75A4 1354 | 00000111100101 4D0C 1355 | 00000111100100 E847 1356 | 00000111100011 E86F 1357 | 00000111100010 E84C 1358 | 00000111100001 E8B4 1359 | 00000111100000 0088 1360 | 00000111011111 EB19 1361 | 00000111011110 000002 1362 | 00000111011101 6881 1363 | 00000111011100 EB14 1364 | 00000111011011 0058 1365 | 00000111011010 7470 1366 | 00000111011001 00000031 1367 | 00000111011000 E83A 1368 | 00000111010111 004D 1369 | 00000111010110 E8BE 1370 | 00000111010101 E809 1371 | 00000111010100 E8B0 1372 | 00000111010011 4DE0 1373 | 00000111010010 83C1 1374 | 00000111010001 8548 1375 | 00000111010000 E8C7 1376 | 00000111001111 E848 1377 | 00000111001110 0054 1378 | 00000111001101 6368 1379 | 00000111001100 6848 1380 | 00000111001011 E85E 1381 | 00000111001010 E8C2 1382 | 00000111001001 E8C9 1383 | 00000111001000 8564 1384 | 00000111000111 FDFF83 1385 | 00000111000110 01EB 1386 | 00000111000101 E8CC 1387 | 00000111000100 EB1B 1388 | 00000111000011 751A 1389 | 00000111000010 6804 1390 | 00000111000001 7432 1391 | 00000111000000 7520 1392 | 00000110111111 E8F2 1393 | 00000110111110 75CC 1394 | 00000110111101 14FF 1395 | 00000110111100 684C 1396 | 00000110111011 08FF 1397 | 00000110111010 E8E2 1398 | 00000110111001 E846 1399 | 00000110111000 E8FA 1400 | 00000110110111 E851 1401 | 00000110110110 E859 1402 | 00000110110101 0875 1403 | 00000110110100 004B 1404 | 00000110110011 85CC 1405 | 00000110110010 E832 1406 | 00000110110001 E807 1407 | 00000110110000 7519 1408 | 00000110101111 003B 1409 | 00000110101110 E85F 1410 | 00000110101101 E878 1411 | 00000110101100 E81E 1412 | 00000110101011 FEFFFF83 1413 | 00000110101010 FFFFE8 1414 | 00000110101001 6868 1415 | 00000110101000 B816 1416 | 00000110100111 E8DC 1417 | 00000110100110 7515 1418 | 00000110100101 020F 1419 | 00000110100100 0C85 1420 | 00000110100011 855C 1421 | 00000110100010 459C 1422 | 00000110100001 E80F 1423 | 00000110100000 6874 1424 | 00000110011111 E862 1425 | 00000110011110 E849 1426 | 00000110011101 E8F7 1427 | 00000110011100 2069 1428 | 00000110011011 0383 1429 | 00000110011010 E818 1430 | 00000110011001 85A4 1431 | 00000110011000 68DF 1432 | 00000110010111 C643 1433 | 00000110010110 6A20 1434 | 00000110010101 E830 1435 | 00000110010100 0079 1436 | 00000110010011 C05A 1437 | 00000110010010 7429 1438 | 00000110010001 8910 1439 | 00000110010000 752B 1440 | 00000110001111 0550 1441 | 00000110001110 E8C3 1442 | 00000110001101 741F 1443 | 00000110001100 C079 1444 | 00000110001011 7423 1445 | 00000110001010 4598 1446 | 00000110001001 55D8 1447 | 00000110001000 8574 1448 | 00000110000111 E8EB 1449 | 00000110000110 C05B 1450 | 00000110000101 681C 1451 | 00000110000100 68FF 1452 | 00000110000011 751E 1453 | 00000110000010 053C 1454 | 00000110000001 7403 1455 | 00000110000000 108D 1456 | 00000101111111 68C8 1457 | 00000101111110 6E20 1458 | 00000101111101 856C 1459 | 00000101111100 6858 1460 | 00000101111011 E80D 1461 | 00000101111010 E85C 1462 | 00000101111001 E854 1463 | 00000101111000 E8C6 1464 | 00000101110111 8538 1465 | 00000101110110 E8D2 1466 | 00000101110101 E833 1467 | 00000101110100 7426 1468 | 00000101110011 68FC 1469 | 00000101110010 E83E 1470 | 00000101110001 E85A 1471 | 00000101110000 E81C 1472 | 00000101101111 E814 1473 | 00000101101110 0C66 1474 | 00000101101101 6860 1475 | 00000101101100 E8B5 1476 | 00000101101011 7535 1477 | 00000101101010 E828 1478 | 00000101101001 05FE 1479 | 00000101101000 0098 1480 | 00000101100111 8590 1481 | 00000101100110 E869 1482 | 00000101100101 742A 1483 | 00000101100100 8975 1484 | 00000101100011 E881 1485 | 00000101100010 85F4 1486 | 00000101100001 00C8 1487 | 00000101100000 0103 1488 | 00000101011111 8578 1489 | 00000101011110 040F 1490 | 00000101011101 C000 1491 | 00000101011100 005B 1492 | 00000101011011 4000 1493 | 00000101011010 FF03 1494 | 00000101011001 E8F6 1495 | 00000101011000 8B04 1496 | 00000101010111 5389 1497 | 00000101010110 EB1D 1498 | 00000101010101 85BC 1499 | 00000101010100 E8D8 1500 | 00000101010011 75D0 1501 | 00000101010010 7444 1502 | 00000101010001 4DE8 1503 | 00000101010000 8953 1504 | 00000101001111 10FF 1505 | 00000101001110 200C 1506 | 00000101001101 0000000F 1507 | 00000101001100 E880 1508 | 00000101001011 E8A0 1509 | 00000101001010 458C 1510 | 00000101001001 68C0 1511 | 00000101001000 F07C 1512 | 00000101000111 5885 1513 | 00000101000110 E870 1514 | 00000101000101 E815 1515 | 00000101000100 E888 1516 | 00000101000011 5510 1517 | 00000101000010 742C 1518 | 00000101000001 8405 1519 | 00000101000000 E82E 1520 | 00000100111111 EB2F 1521 | 00000100111110 2004 1522 | 00000100111101 6838 1523 | 00000100111100 85EC 1524 | 00000100111011 D0D0 1525 | 00000100111010 6870 1526 | 00000100111001 85F0 1527 | 00000100111000 8907 1528 | 00000100110111 10E8 1529 | 00000100110110 0046 1530 | 00000100110101 EB18 1531 | 00000100110100 E841 1532 | 00000100110011 85C4 1533 | 00000100110010 FF81 1534 | 00000100110001 0468 1535 | 00000100110000 E8D0 1536 | 00000100101111 75BC 1537 | 00000100101110 0022 1538 | 00000100101101 E83D 1539 | 00000100101100 742F 1540 | 00000100101011 75B4 1541 | 00000100101010 01000083 1542 | 00000100101001 E80B 1543 | 00000100101000 85B0 1544 | 00000100100111 C08D 1545 | 00000100100110 7421 1546 | 00000100100101 6869 1547 | 00000100100100 E8F0 1548 | 00000100100011 7443 1549 | 00000100100010 E858 1550 | 00000100100001 E8C0 1551 | 00000100100000 E8DB 1552 | 00000100011111 7473 1553 | 00000100011110 05EC 1554 | 00000100011101 E861 1555 | 00000100011100 8B35 1556 | 00000100011011 E872 1557 | 00000100011010 000C 1558 | 00000100011001 8550 1559 | 00000100011000 0060 1560 | 00000100010111 E8B6 1561 | 00000100010110 FFD0 1562 | 00000100010101 8B73 1563 | 00000100010100 7300 1564 | 00000100010011 7524 1565 | 00000100010010 680F 1566 | 00000100010001 6808 1567 | 00000100010000 E921 1568 | 00000100001111 004C 1569 | 00000100001110 EB1C 1570 | 00000100001101 6801 1571 | 00000100001100 E877 1572 | 00000100001011 006B 1573 | 00000100001010 7430 1574 | 00000100001001 E865 1575 | 00000100001000 85AC 1576 | 00000100000111 85A0 1577 | 00000100000110 6888 1578 | 00000100000101 0051 1579 | 00000100000100 E840 1580 | 00000100000011 E824 1581 | 00000100000010 7436 1582 | 00000100000001 685C 1583 | 00000100000000 68DC 1584 | 00000011111111 859C 1585 | 00000011111110 0016 1586 | 00000011111101 0883 1587 | 00000011111100 0183 1588 | 00000011111011 85E8 1589 | 00000011111010 31C08D 1590 | 00000011111001 FFFF75 1591 | 00000011111000 85C8 1592 | 00000011110111 751D 1593 | 00000011110110 E8B8 1594 | 00000011110101 0061 1595 | 00000011110100 0039 1596 | 00000011110011 0009 1597 | 00000011110010 68D4 1598 | 00000011110001 0CFF 1599 | 00000011110000 E873 1600 | 00000011101111 E8C8 1601 | 00000011101110 6834 1602 | 00000011101101 0029 1603 | 00000011101100 85D0 1604 | 00000011101011 7522 1605 | 00000011101010 7427 1606 | 00000011101001 7566 1607 | 00000011101000 752D 1608 | 00000011100111 E8E9 1609 | 00000011100110 EB27 1610 | 00000011100101 018D 1611 | 00000011100100 8530 1612 | 00000011100011 E820 1613 | 00000011100010 8558 1614 | 00000011100001 8B02 1615 | 00000011100000 E863 1616 | 00000011011111 00BA 1617 | 00000011011110 EB23 1618 | 00000011011101 85E0 1619 | 00000011011100 800D 1620 | 00000011011011 8568 1621 | 00000011011010 E8E4 1622 | 00000011011001 E86C 1623 | 00000011011000 8598 1624 | 00000011010111 002E 1625 | 00000011010110 7525 1626 | 00000011010101 01E8 1627 | 00000011010100 0431 1628 | 00000011010011 0501 1629 | 00000011010010 6840 1630 | 00000011010001 00000002 1631 | 00000011010000 0013 1632 | 00000011001111 C1E8 1633 | 00000011001110 20FF 1634 | 00000011001101 E87D 1635 | 00000011001100 68BC 1636 | 00000011001011 0874 1637 | 00000011001010 8B10 1638 | 00000011001001 0014 1639 | 00000011001000 7521 1640 | 00000011000111 E8E0 1641 | 00000011000110 7441 1642 | 00000011000101 68A8 1643 | 00000011000100 7526 1644 | 00000011000011 751F 1645 | 00000011000010 E8EC 1646 | 00000011000001 6828 1647 | 00000011000000 8554 1648 | 00000010111111 4588 1649 | 00000010111110 6890 1650 | 00000010111101 853C 1651 | 00000010111100 68D0 1652 | 00000010111011 1083 1653 | 00000010111010 EB22 1654 | 00000010111001 6864 1655 | 00000010111000 4520 1656 | 00000010110111 FF05 1657 | 00000010110110 00DF 1658 | 00000010110101 EB20 1659 | 00000010110100 FF80 1660 | 00000010110011 2043 1661 | 00000010110010 8594 1662 | 00000010110001 4518 1663 | 00000010110000 E885 1664 | 00000010101111 007E 1665 | 00000010101110 7433 1666 | 00000010101101 EB36 1667 | 00000010101100 0032 1668 | 00000010101011 6830 1669 | 00000010101010 7523 1670 | 00000010101001 2075 1671 | 00000010101000 0588 1672 | 00000010100111 0042 1673 | 00000010100110 0062 1674 | 00000010100101 EB21 1675 | 00000010100100 0168 1676 | 00000010100011 006D 1677 | 00000010100010 4590 1678 | 00000010100001 C1E0 1679 | 00000010100000 45EB 1680 | 00000010011111 7528 1681 | 00000010011110 0077 1682 | 00000010011101 00D5 1683 | 00000010011100 206A 1684 | 00000010011011 E864 1685 | 00000010011010 EB26 1686 | 00000010011001 2008 1687 | 00000010011000 6831 1688 | 00000010010111 E884 1689 | 00000010010110 080F 1690 | 00000010010101 85E4 1691 | 00000010010100 0166 1692 | 00000010010011 00A3 1693 | 00000010010010 0078 1694 | 00000010010001 E8E5 1695 | 00000010010000 68F4 1696 | 00000010001111 E874 1697 | 00000010001110 EB2A 1698 | 00000010001101 EC08 1699 | 00000010001100 75B0 1700 | 00000010001011 003A 1701 | 00000010001010 E875 1702 | 00000010001001 00BF 1703 | 00000010001000 6854 1704 | 00000010000111 68CC 1705 | 00000010000110 EB1F 1706 | 00000010000101 6878 1707 | 00000010000100 858C 1708 | 00000010000011 8B52 1709 | 00000010000010 6818 1710 | 00000010000001 680C 1711 | 00000010000000 00CF 1712 | 00000001111111 ECE8 1713 | 00000001111110 6821 1714 | 00000001111101 E845 1715 | 00000001111100 0C83 1716 | 00000001111011 8544 1717 | 00000001111010 8048 1718 | 00000001111001 001D 1719 | 00000001111000 689C 1720 | 00000001110111 687C 1721 | 00000001110110 7529 1722 | 00000001110101 0028 1723 | 00000001110100 68E0 1724 | 00000001110011 6850 1725 | 00000001110010 C424 1726 | 00000001110001 008A 1727 | 00000001110000 002C 1728 | 00000001101111 7537 1729 | 00000001101110 0006 1730 | 00000001101101 451C 1731 | 00000001101100 7DE8 1732 | 00000001101011 68AC 1733 | 00000001101010 206E 1734 | 00000001101001 85D8 1735 | 00000001101000 456C 1736 | 00000001100111 1877 1737 | 00000001100110 7DF0 1738 | 00000001100101 00F6 1739 | 00000001100100 8528 1740 | 00000001100011 100F 1741 | 00000001100010 7279 1742 | 00000001100001 01FF 1743 | 00000001100000 6814 1744 | 00000001011111 00DB 1745 | 00000001011110 8401 1746 | 00000001011101 EB25 1747 | 00000001011100 00BD 1748 | 00000001011011 0305 1749 | 00000001011010 FF85 1750 | 00000001011001 752C 1751 | 00000001011000 003D 1752 | 00000001010111 EB29 1753 | 00000001010110 6884 1754 | 00000001010101 0012 1755 | 00000001010100 8588 1756 | 00000001010011 68E4 1757 | 00000001010010 4584 1758 | 00000001010001 0026 1759 | 00000001010000 4580 1760 | 00000001001111 8500 1761 | 00000001001110 005D 1762 | 00000001001101 005E 1763 | 00000001001100 6844 1764 | 00000001001011 852C 1765 | 00000001001010 E868 1766 | 00000001001001 68D8 1767 | 00000001001000 8901 1768 | 00000001000111 0CEB 1769 | 00000001000110 FF52 1770 | 00000001000101 2068 1771 | 00000001000100 EC14 1772 | 00000001000011 7564 1773 | 00000001000010 6879 1774 | 00000001000001 EB2C 1775 | 00000001000000 7536 1776 | 000000001111111 894508 1777 | 000000001111110 6A0050 1778 | 000000001111101 FFFF50 1779 | 000000001111100 FFFF85 1780 | 000000001111011 070001 1781 | 000000001111010 FDFF8B 1782 | 000000001111001 070050 1783 | 000000001111000 07008B 1784 | 000000001110111 0700C7 1785 | 000000001110110 0050E8 1786 | 000000001110101 000040 1787 | 000000001110100 FFFFA1 1788 | 000000001110011 50E80B 1789 | 000000001110010 50E87A 1790 | 000000001110001 C35589E553 1791 | 000000001110000 50E881 1792 | 000000001101111 50E8D7 1793 | 000000001101110 070083 1794 | 000000001101101 7D7D 1795 | 000000001101100 000B 1796 | 000000001101011 8580 1797 | 000000001101010 851C 1798 | 000000001101001 8518 1799 | 000000001101000 FFFFFF03 1800 | 000000001100111 680A 1801 | 000000001100110 FFFFFF31 1802 | 000000001100101 68EC 1803 | 000000001100100 EB24 1804 | 000000001100011 EB2B 1805 | 000000001100010 5589E553 1806 | 000000001100001 7527 1807 | 000000001100000 00E8AC 1808 | 000000001011111 FFFF01 1809 | 000000001011110 070089 1810 | 000000001011101 6806 1811 | 000000001011100 752E 1812 | 000000001011011 0485 1813 | 000000001011010 007405 1814 | 000000001011001 008B55 1815 | 000000001011000 FFB8 1816 | 000000001010111 000075 1817 | 000000001010110 7450 1818 | 000000001010101 E9A1 1819 | 000000001010100 FFFFFFC1 1820 | 000000001010011 7463 1821 | 000000001010010 FFC1 1822 | 000000001010001 7598 1823 | 000000001010000 EB28 1824 | 000000001001111 8540 1825 | 000000001001110 ???? 1826 | 000000001001101 686C 1827 | 000000001001100 058B 1828 | 000000001001011 6819 1829 | 000000001001010 0033 1830 | 000000001001001 7532 1831 | 000000001001000 8520 1832 | 000000001000111 851F 1833 | 000000001000110 8514 1834 | 000000001000101 0C0F 1835 | 000000001000100 684E 1836 | 000000001000011 6853 1837 | 000000001000010 0580 1838 | 000000001000001 0303 1839 | 000000001000000 75A0 1840 | 000000000111111 75C0 1841 | 000000000111110 6805 1842 | 000000000111101 0266 1843 | 000000000111100 8508 1844 | 000000000111011 8524 1845 | 000000000111010 C00F 1846 | 000000000111001 E98D 1847 | 000000000111000 68B8 1848 | 000000000110111 683C 1849 | 000000000110110 00B9 1850 | 000000000110101 EC0C 1851 | 000000000110100 7594 1852 | 000000000110011 743D 1853 | 000000000110010 2010 1854 | 000000000110001 ???? 1855 | 000000000110000 E901 1856 | 000000000101111 0153 1857 | 000000000101110 6809 1858 | 000000000101101 7263 1859 | 000000000101100 00D3 1860 | 000000000101011 FF3B 1861 | 000000000101010 EC10 1862 | 000000000101001 453D 1863 | 000000000101000 759C 1864 | 000000000100111 0589 1865 | 000000000100110 ???? 1866 | 000000000100101 001C 1867 | 000000000100100 000A 1868 | 000000000100011 75AC 1869 | 000000000100010 C06A 1870 | 000000000100001 1085 1871 | 000000000100000 2F74 1872 | 000000000011111 8584 1873 | 000000000011110 C1E2 1874 | 000000000011101 0073 1875 | 000000000011100 30E8 1876 | 000000000011011 00A4 1877 | 000000000011010 0102 1878 | 000000000011001 00C1 1879 | 000000000011000 E910 1880 | 000000000010111 0085 1881 | 000000000010110 85F8 1882 | 000000000010101 5072 1883 | 0000000000101001 00E82A 1884 | 0000000000101000 070080 1885 | 0000000000100111 00E826 1886 | 0000000000100110 0068AC 1887 | 0000000000100101 006A01 1888 | 0000000000100100 07008A 1889 | 0000000000100011 00E8A0 1890 | 0000000000100010 FFFF0F 1891 | 0000000000100001 00E803 1892 | 0000000000100000 00E8A2 1893 | 0000000000011111 00E848 1894 | 0000000000011110 00E8C2 1895 | 0000000000011101 00E83E 1896 | 0000000000011100 00E8D4 1897 | 0000000000011011 00E83A 1898 | 0000000000011010 6A00E8 1899 | 0000000000011001 00E80E 1900 | 0000000000011000 89E55D 1901 | 0000000000010111 00E832 1902 | 0000000000010110 00E87C 1903 | 0000000000010101 070053 1904 | 0000000000010100 FEFFFF89 1905 | 0000000000010011 00E82B 1906 | 0000000000010010 00E81D 1907 | 0000000000010001 00E859 1908 | 0000000000010000 00E899 1909 | 0000000000001111 ???????? 1910 | 0000000000001110 FFFFFF23 1911 | 0000000000001101 ???????? 1912 | 0000000000001100 00E8D1 1913 | 0000000000001011 00E8C8 1914 | 0000000000001010 00E83D 1915 | 0000000000001001 00E8E0 1916 | 0000000000001000 89E553 1917 | 0000000000000111 0700F6 1918 | 0000000000000110 00E83C 1919 | 0000000000000101 000081 1920 | 0000000000000100 070003 1921 | 0000000000000011 00E83F 1922 | 0000000000000010 00E8FA 1923 | 0000000000000001 00E81E 1924 | 00000000000000001 00E8D7 1925 | 00000000000000000 0000000000000000 1926 | -------------------------------------------------------------------------------- /Data12.txt: -------------------------------------------------------------------------------- 1 | 1111111 000000 2 | 1111110 000000000000000000000000000000 3 | 1111101 04 4 | 11111001 0000 5 | 11111000 FFFFFF 6 | 11110111 03 7 | 11110110 FDFF 8 | 11110101 08 9 | 11110100 02 10 | 11110011 010000 11 | 11110010 01 12 | 11110001 20 13 | 11110000 0C 14 | 11101111 FFFF 15 | 11101110 8D 16 | 11101101 FEFF 17 | 11101100 10 18 | 11101011 50 19 | 11101010 83C40C 20 | 11101001 53 21 | 11101000 68 22 | 11100111 31C0 23 | 11100110 05 24 | 11100101 40 25 | 11100100 88 26 | 11100011 06 27 | 11100010 14 28 | 11100001 24 29 | 11100000 00000000 30 | 11011111 66 31 | 11011110 18 32 | 11011101 56 33 | 11011100 A1 34 | 11011011 1C 35 | 11011010 0FB6 36 | 11011001 EB 37 | 11011000 80 38 | 11010111 73 39 | 11010110 28 40 | 11010101 52 41 | 11010100 09 42 | 11010011 B8 43 | 11010010 30 44 | 11010001 58 45 | 11010000 FEFFFF 46 | 11001111 63 47 | 11001110 8A 48 | 11001101 07 49 | 11001100 8B5D 50 | 11001011 74 51 | 11001010 0F 52 | 11001001 39 53 | 11001000 6A00 54 | 11000111 57 55 | 11000110 EC 56 | 11000101 31 57 | 11000100 8B45 58 | 11000011 5A 59 | 11000010 E9 60 | 11000001 8B55 61 | 11000000 89 62 | 10111111 44 63 | 10111110 C0 64 | 10111101 FCFF 65 | 10111100 81 66 | 10111011 6E 67 | 10111010 59 68 | 10111001 0FB7 69 | 10111000 6C 70 | 10110111 C7 71 | 10110110 5C5C 72 | 10110101 D0 73 | 10110100 70 74 | 10110011 85C075 75 | 10110010 46 76 | 10110001 8B 77 | 10110000 F0 78 | 10101111 6A 79 | 10101110 6D 80 | 10101101 00000000000000 81 | 101011001 5653 82 | 101011000 29 83 | 101010111 64 84 | 101010110 69 85 | 101010101 C1 86 | 101010100 FF75 87 | 101010011 83 88 | 101010010 F7 89 | 101010001 38 90 | 101010000 8945 91 | 101001111 C6 92 | 101001110 F8 93 | 101001101 83C410 94 | 101001100 21 95 | 101001011 01000000 96 | 101001010 0500 97 | 101001001 50E8 98 | 101001000 43 99 | 101000111 5F 100 | 101000110 FBFF 101 | 101000101 61 102 | 101000100 FF 103 | 101000011 72 104 | 101000010 0200 105 | 101000001 77 106 | 101000000 48 107 | 100111111 0D 108 | 100111110 75 109 | 100111101 D8 110 | 100111100 45 111 | 100111011 E0 112 | 100111010 85C0 113 | 100111001 34 114 | 100111000 85C074 115 | 100110111 78 116 | 100110110 E8 117 | 100110101 53E8 118 | 100110100 0A00 119 | 100110011 65 120 | 100110010 8B4D 121 | 100110001 3C 122 | 100110000 90 123 | 100101111 76 124 | 100101110 C2 125 | 100101101 54 126 | 100101100 6B 127 | 100101011 1B 128 | 100101010 5B5E 129 | 100101001 6A01 130 | 100101000 3D 131 | 100100111 84 132 | 100100110 E4 133 | 100100101 FFFFFFFFFF 134 | 100100100 C745 135 | 100100011 0A 136 | 100100010 8D65F4 137 | 100100001 6F 138 | 100100000 F4 139 | 100011111 0300 140 | 100011110 8B5D08 141 | 100011101 16 142 | 100011100 C3 143 | 100011011 0B00 144 | 100011010 0B 145 | 100011001 6572 146 | 100011000 55 147 | 100010111 0F85 148 | 100010110 33 149 | 100010101 15 150 | 100010100 0C100000 151 | 100010011 B0 152 | 100010010 0F84 153 | 100010001 42 154 | 100010000 C8 155 | 100001111 51 156 | 100001110 2C 157 | 100001101 8B7D 158 | 100001100 0E 159 | 100001011 F6 160 | 100001010 4C 161 | 100001001 45F0 162 | 100001000 5DC35589E5 163 | 100000111 83F8 164 | 100000110 41 165 | 100000101 4D 166 | 100000100 7C 167 | 100000011 3B 168 | 100000010 0B00E8 169 | 100000001 FC 170 | 100000000 A4 171 | 011111111 7405 172 | 011111110 DC 173 | 011111101 0400 174 | 011111100 22 175 | 011111011 5C 176 | 011111010 AC 177 | 011111001 837D 178 | 011111000 CC 179 | 011110111 5B 180 | 011110110 BA 181 | 011110101 5D 182 | 011110100 C9 183 | 011110011 4E 184 | 011110010 8B4508 185 | 011110001 FF35 186 | 011110000 8B75 187 | 011101111 FA 188 | 011101110 2E 189 | 011101101 8C 190 | 011101100 47 191 | 011101011 6689 192 | 011101010 FB 193 | 011101001 0900 194 | 011101000 A0 195 | 011100111 D3 196 | 011100110 25 197 | 011100101 9C 198 | 011100100 83C4 199 | 011100011 C4 200 | 011100010 00 201 | 011100001 89C3 202 | 011100000 98 203 | 011011111 C35589E5 204 | 011011110 85 205 | 011011101 60 206 | 011011100 FE 207 | 011011011 A8 208 | 011011010 49 209 | 011011001 67 210 | 011011000 8D45 211 | 011010111 D1 212 | 011010110 F9 213 | 011010101 79 214 | 011010100 11 215 | 011010011 EA 216 | 011010010 95 217 | 011010001 F2 218 | 011010000 FCC9 219 | 011001111 EE 220 | 011001110 BC 221 | 011001101 CA 222 | 011001100 C705 223 | 011001011 B4 224 | 011001010 83EC 225 | 011001001 BB 226 | 011001000 19 227 | 011000111 35 228 | 011000110 D2 229 | 011000101 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 230 | 011000100 23 231 | 0110000111 5B5E5F 232 | 0110000110 2C20 233 | 0110000101 5DC35589E557 234 | 0110000100 83E0 235 | 0110000011 89C6 236 | 0110000010 E5 237 | 0110000001 A3 238 | 0110000000 2022 239 | 0101111111 FFFFFFC1 240 | 0101111110 3A 241 | 0101111101 4C00 242 | 0101111100 17 243 | 0101111011 13 244 | 0101111010 020000 245 | 0101111001 088B 246 | 0101111000 D4 247 | 0101110111 EF 248 | 0101110110 2D 249 | 0101110101 32 250 | 0101110100 F1 251 | 0101110011 565383 252 | 0101110010 DA 253 | 0101110001 BE 254 | 0101110000 3F 255 | 0101101111 6C61 256 | 0101101110 4B 257 | 0101101101 D6 258 | 0101101100 7D 259 | 0101101011 12 260 | 0101101010 F3 261 | 0101101001 89E5 262 | 0101101000 4F 263 | 0101100111 F033 264 | 0101100110 DB 265 | 0101100101 0C10000089 266 | 0101100100 94 267 | 0101100011 8955 268 | 0101100010 4A 269 | 0101100001 FFFFFF8B 270 | 0101100000 9D 271 | 0101011111 5E 272 | 0101011110 31D2 273 | 0101011101 1E 274 | 0101011100 5DE9 275 | 0101011011 36 276 | 0101011010 FDFFFF 277 | 0101011001 E2 278 | 0101011000 85DB 279 | 0101010111 82 280 | 0101010110 65F8 281 | 0101010101 37 282 | 0101010100 F5 283 | 0101010011 6F6E 284 | 0101010010 87 285 | 0101010001 BF 286 | 0101010000 1A 287 | 0101001111 6A006A 288 | 0101001110 DF 289 | 0101001101 7E 290 | 0101001100 1F 291 | 0101001011 E6 292 | 0101001010 7469 293 | 0101001001 CB 294 | 0101001000 CF 295 | 0101000111 0074 296 | 0101000110 2F 297 | 0101000101 89D8 298 | 0101000100 0100 299 | 0101000011 6A02 300 | 0101000010 0C8B 301 | 0101000001 3E 302 | 0101000000 83C414 303 | 0100111111 8B95 304 | 0100111110 85D2 305 | 0100111101 BD 306 | 0100111100 D9 307 | 0100111011 56E8 308 | 0100111010 C9C35589 309 | 0100111001 8E 310 | 0100111000 1D 311 | 0100110111 99 312 | 0100110110 414E 313 | 0100110101 7F 314 | 0100110100 CE 315 | 0100110011 574C 316 | 0100110010 AA 317 | 0100110001 2A 318 | 0100110000 696C 319 | 0100101111 833D 320 | 0100101110 83FA 321 | 0100101101 FD 322 | 0100101100 91 323 | 0100101011 FF7508 324 | 0100101010 E3 325 | 0100101001 0600 326 | 0100101000 508D 327 | 0100100111 2B 328 | 0100100110 DE 329 | 0100100101 8B03 330 | 0100100100 26 331 | 0100100011 96 332 | 0100100010 0000008B 333 | 0100100001 668B 334 | 0100100000 5589E5 335 | 0100011111 D7 336 | 0100011110 00E8 337 | 0100011101 86 338 | 0100011100 585A 339 | 0100011011 B5 340 | 0100011010 DD 341 | 0100011001 6800 342 | 0100011000 2E2E 343 | 0100010111 7508 344 | 0100010110 6976 345 | 0100010101 000080 346 | 0100010100 62 347 | 0100010011 05E8 348 | 0100010010 7574 349 | 0100010001 E1 350 | 0100010000 8D65 351 | 0100001111 AD 352 | 0100001110 6564 353 | 0100001101 B9 354 | 0100001100 006A 355 | 0100001011 89D0 356 | 0100001010 506A 357 | 0100001001 4304 358 | 0100001000 E7 359 | 0100000111 C9C3 360 | 0100000110 8F 361 | 0100000101 5589E557 362 | 0100000100 000000EB 363 | 0100000011 C1E0 364 | 0100000010 83E2 365 | 0100000001 0F94 366 | 0100000000 8985 367 | 0011111111 7B 368 | 0011111110 10000089 369 | 0011111101 89F0 370 | 0011111100 83C0 371 | 0011111011 85F6 372 | 0011111010 A2 373 | 0011111001 89C7 374 | 00111110001 000000000000000000 375 | 00111110000 5DC355 376 | 00111101111 000089 377 | 00111101110 C743 378 | 00111101101 45EC 379 | 00111101100 6A10 380 | 00111101011 0001 381 | 00111101010 A10C 382 | 00111101001 27 383 | 00111101000 0C89 384 | 00111100111 E00A 385 | 00111100110 8B450C 386 | 00111100101 F7FF 387 | 00111100100 7276 388 | 00111100011 B6 389 | 00111100010 5F5D 390 | 00111100001 020080 391 | 00111100000 A5 392 | 00111011111 750C 393 | 00111011110 71 394 | 00111011101 7265 395 | 00111011100 ?????? 396 | 00111011011 AF 397 | 00111011010 3030 398 | 00111011001 6669 399 | 00111011000 7A 400 | 00111010111 7465 401 | 00111010110 620500 402 | 00111010101 0068 403 | 00111010100 C5 404 | 00111010011 6578 405 | 00111010010 0008 406 | 00111010001 0800 407 | 00111010000 9B 408 | 00111001111 0000008D 409 | 00111001110 6A04 410 | 00111001101 C740 411 | 00111001100 6A06 412 | 00111001011 C418 413 | 00111001010 040000 414 | 00111001001 6C65 415 | 00111001000 00FF 416 | 00111000111 45F4 417 | 00111000110 66C7 418 | 00111000101 89C2 419 | 00111000100 6A0068 420 | 00111000011 84C0 421 | 00111000010 894D 422 | 00111000001 000F 423 | 00111000000 31DB 424 | 00110111111 93 425 | 00110111110 83E1 426 | 00110111101 5DFC 427 | 00110111100 EB05 428 | 00110111011 8D5D 429 | 00110111010 B1 430 | 00110111001 45F8 431 | 00110111000 5F5F 432 | 00110110111 C645 433 | 00110110110 B3 434 | 00110110101 FFFF5A 435 | 00110110100 7373 436 | 00110110011 0FBF 437 | 00110110010 83C8 438 | 00110110001 0700 439 | 00110110000 0080 440 | 00110101111 0020 441 | 00110101110 410900 442 | 00110101101 C783 443 | 00110101100 FFFFFF31 444 | 00110101011 92 445 | 00110101010 10F5 446 | 00110101001 8B9D 447 | 00110101000 ED 448 | 00110100111 B7 449 | 00110100110 01D0 450 | 00110100101 D5 451 | 00110100100 8B15 452 | 00110100011 85FF 453 | 00110100010 B2 454 | 00110100001 C420 455 | 00110100000 5D08 456 | 00110011111 00000001 457 | 00110011110 8B43 458 | 00110011101 0889 459 | 00110011100 6C69 460 | 00110011011 97 461 | 00110011010 6A016A 462 | 00110011001 807D 463 | 00110011000 FF0F 464 | 00110010111 FF6A 465 | 00110010110 0053 466 | 00110010101 A9 467 | 00110010100 008B 468 | 00110010011 000074 469 | 00110010010 0075 470 | 00110010001 0050 471 | 00110010000 50FF 472 | 00110001111 9F 473 | 00110001110 65F4 474 | 00110001101 00000068 475 | 00110001100 6F73 476 | 00110001011 31F6 477 | 00110001010 CD 478 | 00110001001 837B 479 | 00110001000 14E0 480 | 00110000111 89F8 481 | 00110000110 9A 482 | 00110000101 5F64 483 | 00110000100 A6 484 | 00110000011 83FB 485 | 00110000010 FF50 486 | 00110000001 08A1 487 | 00110000000 55F0 488 | 00101111111 C1C1 489 | 00101111110 9E 490 | 00101111101 6472 491 | 00101111100 1089 492 | 00101111011 8D43 493 | 00101111010 45E4 494 | 00101111001 AE 495 | 00101111000 6683 496 | 00101110111 5756 497 | 00101110110 803D 498 | 00101110101 7372 499 | 00101110100 57E8 500 | 00101110011 FFFF83C4 501 | 00101110010 C643 502 | 00101110001 1849 503 | 00101110000 6322 504 | 00101101111 2000 505 | 00101101110 02000000 506 | 00101101101 C1E2 507 | 00101101100 108B 508 | 00101101011 0820 509 | 00101101010 554C 510 | 00101101001 3315 511 | 00101101000 6F63 512 | 00101100111 A7 513 | 00101100110 45DC 514 | 00101100101 BBBB 515 | 00101100100 7407 516 | 00101100011 7420 517 | 00101100010 83BB 518 | 00101100001 E803 519 | 00101100000 AB 520 | 00101011111 4605 521 | 00101011110 5053 522 | 00101011101 538B 523 | 00101011100 FF73 524 | 00101011011 7365 525 | 00101011010 85C9 526 | 00101011001 4D4F 527 | 00101011000 0C00 528 | 00101010111 5F74 529 | 00101010110 00F0 530 | 00101010101 B8A5 531 | 00101010100 8B8D 532 | 00101010011 2066 533 | 00101010010 0000006A 534 | 00101010001 89DA 535 | 00101010000 4508 536 | 00101001111 6606 537 | 00101001110 00000089 538 | 00101001101 895D 539 | 00101001100 203D 540 | 00101001011 450C 541 | 00101001010 0175 542 | 00101001001 C405 543 | 00101001000 83F9 544 | 00101000111 0004 545 | 00101000110 0056 546 | 00101000101 C1C3 547 | 00101000100 6A0C 548 | 00101000011 66666666666666666666666666 549 | 00101000010 0000000000 550 | 00101000001 FDFF83C40C 551 | 00101000000 5B5E5F5DC3 552 | 00100111111 C35589E553 553 | 00100111110 669066906690669066906690669066 554 | 00100111101 906690669066906690669066906690 555 | 001001111001 000083 556 | 001001111000 000050 557 | 001001110111 0050E8 558 | 001001110110 7F7F7F 559 | 001001110101 000000000000 560 | 001001110100 8B4510 561 | 001001110011 31C08B 562 | 001001110010 FFFF58 563 | 001001110001 6A20 564 | 001001110000 740B 565 | 001001101111 5068 566 | 001001101110 5A85 567 | 001001101101 C059 568 | 001001101100 00C7 569 | 001001101011 5056 570 | 001001101010 6520 571 | 001001101001 08C9 572 | 001001101000 0C10 573 | 001001100111 5E5F 574 | 001001100110 89CA 575 | 001001100101 111111 576 | 001001100100 FF83C40C 577 | 001001100011 6A02E8 578 | 001001100010 6A2C 579 | 001001100001 8D04 580 | 001001100000 000000C7 581 | 001001011111 6666 582 | 001001011110 C1C8 583 | 001001011101 7510 584 | 001001011100 45E8 585 | 001001011011 45E0 586 | 001001011010 4DF0 587 | 001001011001 0FB6C0 588 | 001001011000 BB66 589 | 001001010111 FFFFFF03 590 | 001001010110 6861 591 | 001001010101 5057 592 | 001001010100 00008B 593 | 001001010011 83C2 594 | 001001010010 FDFF8D 595 | 001001010001 89F2 596 | 001001010000 8B85 597 | 001001001111 740A 598 | 001001001110 006A00 599 | 001001001101 B816 600 | 001001001100 FFB5 601 | 001001001011 284C 602 | 001001001010 0780 603 | 001001001001 FFFFFFFF 604 | 001001001000 FF33 605 | 001001000111 31C9 606 | 001001000110 0880 607 | 001001000101 EC08 608 | 001001000100 6A08 609 | 001001000011 2070 610 | 001001000010 0489 611 | 001001000001 8D86 612 | 001001000000 5DC3 613 | 001000111111 0002 614 | 001000111110 436F 615 | 001000111101 7D0C 616 | 001000111100 5DC35589 617 | 001000111011 2870 618 | 001000111010 75EC 619 | 001000111001 0E00 620 | 001000111000 C35589E557 621 | 001000110111 01C8 622 | 001000110110 0089 623 | 001000110101 83FE 624 | 001000110100 000000E9 625 | 001000110011 3022 626 | 001000110010 83B8 627 | 001000110001 01FB 628 | 001000110000 2028 629 | 001000101111 FDFF83C4 630 | 001000101110 7461 631 | 001000101101 550C 632 | 001000101100 A1F4 633 | 001000101011 40F5 634 | 001000101010 746F 635 | 001000101001 8B1D 636 | 001000101000 55EC 637 | 001000100111 01F9 638 | 001000100110 00000083 639 | 001000100101 3333 640 | 001000100100 FF89 641 | 001000100011 00000000C7 642 | 001000100010 8D7D 643 | 001000100001 696E 644 | 001000100000 0378 645 | 001000011111 45D4 646 | 001000011110 0840 647 | 001000011101 008D 648 | 001000011100 01FE 649 | 001000011011 C104 650 | 001000011010 00EB 651 | 001000011001 00000002 652 | 001000011000 8D83 653 | 001000010111 83E3 654 | 001000010110 4646 655 | 001000010101 4900 656 | 001000010100 740E 657 | 001000010011 E553 658 | 001000010010 C355 659 | 001000010001 5F6D 660 | 001000010000 8BBD 661 | 001000001111 8D34 662 | 001000001110 7411 663 | 001000001101 FFFFFF89 664 | 001000001100 536A 665 | 001000001011 31FF 666 | 001000001010 5589E553 667 | 001000001001 0119 668 | 001000001000 7412 669 | 001000000111 FFFF83 670 | 001000000110 FF90 671 | 001000000101 0F95 672 | 001000000100 6E63 673 | 001000000011 5508 674 | 001000000010 6109 675 | 001000000001 0174 676 | 001000000000 7509 677 | 000111111111 740C 678 | 000111111110 00005A 679 | 000111111101 0010 680 | 000111111100 750A 681 | 000111111011 6E65 682 | 000111111010 7409 683 | 000111111001 8D3C 684 | 000111111000 7468 685 | 000111110111 0CA1 686 | 000111110110 0FAF 687 | 000111110101 E557 688 | 000111110100 8B46 689 | 000111110011 148B 690 | 000111110010 726F 691 | 000111110001 0350 692 | 000111110000 0040 693 | 000111101111 8B40 694 | 000111101110 00000040 695 | 000111101101 1C4C 696 | 000111101100 8D44 697 | 000111101011 8D47 698 | 000111101010 C1EA 699 | 000111101001 7507 700 | 000111101000 0066 701 | 000111100111 002F 702 | 000111100110 8D75 703 | 000111100101 8945F0 704 | 000111100100 8B06 705 | 000111100011 4308 706 | 000111100010 01DE 707 | 000111100001 330D 708 | 000111100000 807B 709 | 000111011111 68E4 710 | 000111011110 5510 711 | 000111011101 89BD 712 | 000111011100 75E4 713 | 000111011011 7463 714 | 000111011010 6E44 715 | 000111011001 7505 716 | 000111011000 616E 717 | 000111010111 8BB5 718 | 000111010110 0602 719 | 000111010101 6A03 720 | 000111010100 4510 721 | 000111010011 8D55 722 | 000111010010 8943 723 | 000111010001 0817 724 | 000111010000 0421 725 | 000111001111 8B80 726 | 000111001110 F833 727 | 000111001101 FF5A 728 | 000111001100 1489 729 | 000111001011 FFFFFF23 730 | 000111001010 05B8 731 | 000111001001 6661 732 | 000111001000 8B0D 733 | 000111000111 2220 734 | 000111000110 FF15 735 | 000111000101 C1E8 736 | 000111000100 F8FF 737 | 000111000011 5356 738 | 000111000010 F45B 739 | 000111000001 5368 740 | 000111000000 0C8D 741 | 000110111111 7406 742 | 000110111110 8B50 743 | 000110111101 00000080 744 | 000110111100 588B 745 | 000110111011 EC10 746 | 000110111010 EB02 747 | 000110111001 89C1 748 | 000110111000 53FF 749 | 000110110111 0375 750 | 000110110110 E889 751 | 000110110101 45F3 752 | 000110110100 0450 753 | 000110110011 7D08 754 | 000110110010 00000066 755 | 000110110001 7514 756 | 000110110000 897D 757 | 000110101111 89F7 758 | 000110101110 6AFF 759 | 000110101101 00000050 760 | 000110101100 2030 761 | 000110101011 188B 762 | 000110101010 EB06 763 | 000110101001 C30500 764 | 000110101000 FFFF8B 765 | 000110100111 8B4B 766 | 000110100110 EB07 767 | 000110100101 C605 768 | 000110100100 01C6 769 | 000110100011 2222 770 | 000110100010 75F0 771 | 000110100001 FEFFFF8B 772 | 000110100000 7403 773 | 000110011111 00000004 774 | 000110011110 FF58 775 | 000110011101 8845 776 | 000110011100 349C 777 | 000110011011 00EF 778 | 000110011010 740D 779 | 000110011001 220B 780 | 000110011000 8843 781 | 000110010111 4008 782 | 000110010110 05A4 783 | 000110010101 FF83C410 784 | 000110010100 6A05 785 | 000110010011 89E0 786 | 000110010010 81E2 787 | 000110010001 0274 788 | 000110010000 00000001000000 789 | 000110001111 0057 790 | 000110001110 7413 791 | 000110001101 666666666666666666 792 | 000110001100 45D8 793 | 000110001011 00000053 794 | 000110001010 0949 795 | 0001100010011 666666666666 796 | 0001100010010 ?????? 797 | 0001100010001 000059 798 | 0001100010000 030000 799 | 0001100001111 100000 800 | 0001100001110 000800 801 | 0001100001101 ?????? 802 | 0001100001100 85C00F 803 | 0001100001011 66B66B 804 | 0001100001010 000058 805 | 0001100001001 894508 806 | 0001100001000 FF83C4 807 | 0001100000111 FFFF89 808 | 0001100000110 6A0053 809 | 0001100000101 31C08D 810 | 0001100000100 090089 811 | 0001100000011 FDFF58 812 | 0001100000010 000053 813 | 0001100000001 0F0008 814 | 0001100000000 FEFF83 815 | 0001011111111 0000C7 816 | 0001011111110 BB6666 817 | 0001011111101 000052 818 | 0001011111100 B66B66 819 | 0001011111011 00008D 820 | 0001011111010 6666666666 821 | 0001011111001 090000 822 | 0001011111000 66BB66 823 | 0001011110111 0083C4 824 | 0001011110110 85A8 825 | 0001011110101 8903 826 | 0001011110100 7570 827 | 0001011110011 00C0 828 | 0001011110010 0401 829 | 0001011110001 89FA 830 | 0001011110000 45CC 831 | 0001011101111 F40F 832 | 0001011101110 048B 833 | 0001011101101 7511 834 | 0001011101100 000100 835 | 0001011101011 0402 836 | 0001011101010 8D46 837 | 0001011101001 C640 838 | 0001011101000 038B 839 | 0001011100111 EB0A 840 | 0001011100110 7408 841 | 0001011100101 00006A 842 | 0001011100100 0052 843 | 0001011100011 1000 844 | 0001011100010 6B66 845 | 0001011100001 6894 846 | 0001011100000 6838 847 | 0001011011111 89D1 848 | 0001011011110 EB0E 849 | 0001011011101 F801 850 | 0001011011100 8481 851 | 0001011011011 8B00 852 | 0001011011010 EC0C 853 | 0001011011001 00000000000000000000 854 | 0001011011000 0502 855 | 0001011010111 1050 856 | 0001011010110 01C7 857 | 0001011010101 0F87 858 | 0001011010100 7518 859 | 0001011010011 0001000000 860 | 0001011010010 508B 861 | 0001011010001 80FB 862 | 0001011010000 4405 863 | 0001011001111 088D 864 | 0001011001110 C074 865 | 0001011001101 8008 866 | 0001011001100 8B53 867 | 0001011001011 0702 868 | 0001011001010 7513 869 | 0001011001001 8000 870 | 0001011001000 8378 871 | 0001011000111 0019 872 | 0001011000110 0000000000000000000000 873 | 0001011000101 10FF 874 | 0001011000100 8D85 875 | 0001011000011 89F1 876 | 0001011000010 0275 877 | 0001011000001 3029 878 | 0001011000000 1889 879 | 0001010111111 750E 880 | 0001010111110 8D50 881 | 0001010111101 45FC 882 | 0001010111100 83CA 883 | 0001010111011 7512 884 | 0001010111010 EB0C 885 | 0001010111001 83E6 886 | 0001010111000 404C 887 | 0001010110111 0C6A 888 | 0001010110110 45D0 889 | 0001010110101 00000000000000000000000000 890 | 0001010110100 6681 891 | 0001010110011 B6BB 892 | 0001010110010 1121 893 | 0001010110001 750D 894 | 0001010110000 31CA 895 | 0001010101111 0CC7 896 | 0001010101110 666666666666666666666666 897 | 0001010101101 4D61 898 | 0001010101100 2031 899 | 0001010101011 044C 900 | 0001010101010 0C66 901 | 0001010101001 0474 902 | 0001010101000 0189 903 | 0001010100111 0483 904 | 0001010100110 7416 905 | 0001010100101 8B47 906 | 0001010100100 45C8 907 | 0001010100011 0F80 908 | 0001010100010 7517 909 | 0001010100001 75DC 910 | 0001010100000 22222222 911 | 0001010011111 7565 912 | 0001010011110 6666666666666666666666 913 | 0001010011101 000000E8 914 | 0001010011100 EB0B 915 | 0001010011011 F08B 916 | 0001010011010 2207 917 | 0001010011001 5383 918 | 0001010011000 E8CD 919 | 0001010010111 106A 920 | 0001010010110 C700 921 | 0001010010101 6844 922 | 0001010010100 FF74 923 | 0001010010011 EB0D 924 | 0001010010010 7516 925 | 0001010010001 0100000002 926 | 0001010010000 EC00 927 | 0001010001111 0866 928 | 0001010001110 8B42 929 | 0001010001101 45C4 930 | 0001010001100 E800 931 | 0001010001011 5B5E5F5D 932 | 0001010001010 0801 933 | 0001010001001 756E 934 | 0001010001000 01FA 935 | 0001010000111 0030 936 | 0001010000110 8D4D 937 | 0001010000101 E893 938 | 0001010000100 80FA 939 | 0001010000011 89F9 940 | 0001010000010 D1F8 941 | 0001010000001 038D 942 | 0001010000000 89DF 943 | 0001001111111 01D1 944 | 0001001111110 7418 945 | 0001001111101 07B8 946 | 0001001111100 741D 947 | 0001001111011 7506 948 | 0001001111010 66666666666666 949 | 0001001111001 6E6E 950 | 0001001111000 C1C9 951 | 0001001110111 7414 952 | 0001001110110 0385 953 | 0001001110101 430C 954 | 0001001110100 8B04 955 | 0001001110011 8975 956 | 0001001110010 E8D5 957 | 0001001110001 6804 958 | 0001001110000 0005 959 | 0001001101111 7429 960 | 0001001101110 83E7 961 | 0001001101101 EB03 962 | 0001001101100 B8EA 963 | 0001001101011 C1E1 964 | 0001001101010 0041 965 | 0001001101001 0177 966 | 0001001101000 0006 967 | 0001001100111 E806 968 | 0001001100110 E8FF 969 | 0001001100101 FF8B 970 | 0001001100100 E89B 971 | 0001001100011 000000C1 972 | 0001001100010 E021 973 | 0001001100001 0F00 974 | 0001001100000 B66B 975 | 0001001011111 1001 976 | 0001001011110 C1CB 977 | 0001001011101 E8AE 978 | 0001001011100 C00F 979 | 0001001011011 086A 980 | 0001001011010 7424 981 | 0001001011001 ???????? 982 | 0001001011000 6863 983 | 0001001010111 0003 984 | 0001001010110 0CC0 985 | 0001001010101 8942 986 | 0001001010100 1400 987 | 0001001010011 00C6 988 | 0001001010010 E892 989 | 0001001010001 FFB3 990 | 0001001010000 83C3 991 | 0001001001111 0475 992 | 0001001001110 0289 993 | 0001001001101 8D0C 994 | 0001001001100 6561 995 | 0001001001011 2050 996 | 0001001001010 0176 997 | 0001001001001 735C 998 | 0001001001000 0039 999 | 0001001000111 7404 1000 | 0001001000110 55E4 1001 | 0001001000101 8B4A 1002 | 0001001000100 4D08 1003 | 0001001000011 8947 1004 | 0001001000010 31D7 1005 | 0001001000001 E802 1006 | 0001001000000 6576 1007 | 0001000111111 686C 1008 | 0001000111110 C1E3 1009 | 0001000111101 E86A 1010 | 0001000111100 010F 1011 | 0001000111011 E826 1012 | 0001000111010 0883 1013 | 0001000111001 C414 1014 | 0001000111000 E81A 1015 | 0001000110111 45B4 1016 | 0001000110110 BBB6 1017 | 0001000110101 751B 1018 | 0001000110100 E8F1 1019 | 0001000110011 0083 1020 | 0001000110010 2008 1021 | 0001000110001 FF59 1022 | 0001000110000 83A4 1023 | 0001000101111 E850 1024 | 0001000101110 8886 1025 | 0001000101101 80F9 1026 | 0001000101100 741A 1027 | 0001000101011 EB13 1028 | 0001000101010 7415 1029 | 0001000101001 FF03 1030 | 0001000101000 E87A 1031 | 0001000100111 4505 1032 | 0001000100110 FFFFFF01 1033 | 0001000100101 85A4 1034 | 0001000100100 0809 1035 | 0001000100011 00000075 1036 | 0001000100010 31DF 1037 | 0001000100001 E85C 1038 | 0001000100000 751C 1039 | 0001000011111 204D 1040 | 0001000011110 4DEC 1041 | 0001000011101 5350 1042 | 0001000011100 8538 1043 | 0001000011011 203A 1044 | 0001000011010 89D9 1045 | 0001000011001 750F 1046 | 0001000011000 01CB 1047 | 0001000010111 31F7 1048 | 0001000010110 FFE0 1049 | 0001000010101 C20F 1050 | 0001000010100 0CE8 1051 | 0001000010011 83FF 1052 | 0001000010010 203F 1053 | 0001000010001 562D 1054 | 0001000010000 750B 1055 | 0001000001111 E8D3 1056 | 0001000001110 50A1 1057 | 0001000001101 0000000F 1058 | 0001000001100 0000008A 1059 | 0001000001011 89D7 1060 | 0001000001010 4314 1061 | 0001000001001 1C24 1062 | 0001000001000 08E8 1063 | 0001000000111 0501 1064 | 0001000000110 E816 1065 | 0001000000101 84D2 1066 | 0001000000100 6625 1067 | 0001000000011 751A 1068 | 0001000000010 C00C 1069 | 0001000000001 E8A5 1070 | 0001000000000 0C50 1071 | 0000111111111 E00F 1072 | 0000111111110 6860 1073 | 0000111111101 FF00 1074 | 0000111111100 E84E 1075 | 0000111111011 E890 1076 | 0000111111010 81FA 1077 | 0000111111001 89FB 1078 | 0000111111000 E810 1079 | 0000111110111 8B07 1080 | 0000111110110 89C8 1081 | 0000111110101 8B86 1082 | 0000111110100 E88B 1083 | 0000111110011 05F4 1084 | 0000111110010 5D0C 1085 | 0000111110001 E8D6 1086 | 0000111110000 E8BB 1087 | 0000111101111 6563 1088 | 0000111101110 6802 1089 | 0000111101101 09D0 1090 | 0000111101100 C0C9 1091 | 0000111101011 04F6 1092 | 0000111101010 EC0A 1093 | 0000111101001 89F3 1094 | 0000111101000 654D 1095 | 0000111100111 55E8 1096 | 0000111100110 E882 1097 | 0000111100101 E883 1098 | 0000111100100 BB6B 1099 | 0000111100011 000C 1100 | 0000111100010 E89E 1101 | 0000111100001 E827 1102 | 0000111100000 5353 1103 | 0000111011111 01CA 1104 | 0000111011110 2057 1105 | 0000111011101 05B4 1106 | 0000111011100 7D8C 1107 | 0000111011011 68D8 1108 | 0000111011010 E8CF 1109 | 0000111011001 45EF 1110 | 0000111011000 45A8 1111 | 0000111010111 4514 1112 | 0000111010110 E88D 1113 | 0000111010101 0C01 1114 | 0000111010100 C0EB 1115 | 0000111010011 68C8 1116 | 0000111010010 FFFFFF83 1117 | 0000111010001 E8B8 1118 | 0000111010000 01D3 1119 | 0000111001111 08C0 1120 | 0000111001110 E83D 1121 | 0000111001101 E8AA 1122 | 0000111001100 8B48 1123 | 0000111001011 741E 1124 | 0000111001010 E8BC 1125 | 0000111001001 8B56 1126 | 0000111001000 31CF 1127 | 0000111000111 E867 1128 | 0000111000110 E8CB 1129 | 0000111000101 E8ED 1130 | 0000111000100 740F 1131 | 0000111000011 E8C7 1132 | 0000111000010 7419 1133 | 0000111000001 E829 1134 | 0000111000000 148D 1135 | 0000110111111 004D 1136 | 0000110111110 E812 1137 | 0000110111101 E80C 1138 | 0000110111100 837E 1139 | 0000110111011 83C6 1140 | 0000110111010 8915 1141 | 0000110111001 C1C6 1142 | 0000110111000 8B93 1143 | 0000110110111 F000 1144 | 0000110110110 6801 1145 | 0000110110101 E804 1146 | 0000110110100 C008 1147 | 0000110110011 4372 1148 | 0000110110010 1111 1149 | 0000110110001 4D03 1150 | 0000110110000 E8A7 1151 | 0000110101111 6853 1152 | 0000110101110 7274 1153 | 0000110101101 680C 1154 | 0000110101100 0C03 1155 | 0000110101011 208B 1156 | 0000110101010 0874 1157 | 0000110101001 000000FF 1158 | 0000110101000 7504 1159 | 0000110100111 EB09 1160 | 0000110100110 7410 1161 | 0000110100101 83E8 1162 | 0000110100100 0009 1163 | 0000110100011 0485 1164 | 0000110100010 0043 1165 | 0000110100001 E8BE 1166 | 0000110100000 741B 1167 | 0000110011111 7417 1168 | 0000110011110 85AC 1169 | 0000110011101 E8B3 1170 | 0000110011100 0850 1171 | 0000110011011 E807 1172 | 0000110011010 E81E 1173 | 0000110011001 E89A 1174 | 0000110011000 8A45 1175 | 0000110010111 E819 1176 | 0000110010110 E8B5 1177 | 0000110010101 8530 1178 | 0000110010100 5089 1179 | 0000110010011 E8FA 1180 | 0000110010010 6A40 1181 | 0000110010001 E811 1182 | 0000110010000 E8E7 1183 | 0000110001111 89CF 1184 | 0000110001110 E8C1 1185 | 0000110001101 01F3 1186 | 0000110001100 E8C8 1187 | 0000110001011 E896 1188 | 0000110001010 8B7B 1189 | 0000110001001 EB04 1190 | 0000110001000 6854 1191 | 0000110000111 08C7 1192 | 0000110000110 E84D 1193 | 0000110000101 6806 1194 | 0000110000100 66BB 1195 | 0000110000011 8B13 1196 | 0000110000010 C075 1197 | 0000110000001 0363 1198 | 0000110000000 6BB6 1199 | 0000101111111 566A 1200 | 0000101111110 E8F7 1201 | 0000101111101 FFFFFF8D 1202 | 0000101111100 8B41 1203 | 0000101111011 741C 1204 | 0000101111010 04DD 1205 | 0000101111001 7DF0 1206 | 0000101111000 0A31 1207 | 0000101110111 7454 1208 | 0000101110110 0408 1209 | 0000101110101 0183 1210 | 0000101110100 741F 1211 | 0000101110011 682C 1212 | 0000101110010 01D6 1213 | 0000101110001 0480 1214 | 0000101110000 0180 1215 | 0000101101111 E8FE 1216 | 0000101101110 C050 1217 | 0000101101101 E8A1 1218 | 0000101101100 0018 1219 | 0000101101011 31D9 1220 | 0000101101010 046A 1221 | 0000101101001 EB1E 1222 | 0000101101000 E8AF 1223 | 0000101100111 5351 1224 | 0000101100110 8D93 1225 | 0000101100101 742E 1226 | 0000101100100 0347 1227 | 0000101100011 E8DB 1228 | 0000101100010 8808 1229 | 0000101100001 8B52 1230 | 0000101100000 E89D 1231 | 0000101011111 E85F 1232 | 0000101011110 6869 1233 | 0000101011101 E864 1234 | 0000101011100 E81B 1235 | 0000101011011 FFEB 1236 | 0000101011010 E871 1237 | 0000101011001 05F8 1238 | 0000101011000 0731 1239 | 0000101010111 E839 1240 | 0000101010110 C1CE 1241 | 0000101010101 E873 1242 | 0000101010100 EB19 1243 | 0000101010011 E858 1244 | 0000101010010 2074 1245 | 0000101010001 0C4C 1246 | 0000101010000 0D31 1247 | 0000101001111 C201 1248 | 0000101001110 C1EB 1249 | 0000101001101 E847 1250 | 0000101001100 E81D 1251 | 0000101001011 049D 1252 | 0000101001010 E8AB 1253 | 0000101001001 31D1 1254 | 0000101001000 45BC 1255 | 0000101000111 E88E 1256 | 0000101000110 E8F6 1257 | 0000101000101 E80F 1258 | 0000101000100 55D4 1259 | 0000101000011 8A4D 1260 | 0000101000010 75D0 1261 | 0000101000001 E86E 1262 | 0000101000000 E866 1263 | 0000100111111 EB1C 1264 | 0000100111110 E85B 1265 | 0000100111101 C8FF 1266 | 0000100111100 0980 1267 | 0000100111011 E8E6 1268 | 0000100111010 0CF0 1269 | 0000100111001 68A8 1270 | 0000100111000 C1CA 1271 | 0000100110111 E8A6 1272 | 0000100110110 8B35 1273 | 0000100110101 89FE 1274 | 0000100110100 E86D 1275 | 0000100110011 6603 1276 | 0000100110010 E841 1277 | 0000100110001 0383 1278 | 0000100110000 E801 1279 | 0000100101111 C089 1280 | 0000100101110 E87B 1281 | 0000100101101 E8E1 1282 | 0000100101100 839C 1283 | 0000100101011 E879 1284 | 0000100101010 01F0 1285 | 0000100101001 6A18 1286 | 0000100101000 751D 1287 | 0000100100111 00E9 1288 | 0000100100110 8B83 1289 | 0000100100101 68FF 1290 | 0000100100100 EB10 1291 | 0000100100011 E81F 1292 | 0000100100010 0101 1293 | 0000100100001 683C 1294 | 0000100100000 E84F 1295 | 0000100011111 C1CF 1296 | 0000100011110 E863 1297 | 0000100011101 5250 1298 | 0000100011100 E8FD 1299 | 0000100011011 E8EE 1300 | 0000100011010 E817 1301 | 0000100011001 E8F2 1302 | 0000100011000 8B98 1303 | 0000100010111 1068 1304 | 0000100010110 E833 1305 | 0000100010101 7D10 1306 | 0000100010100 39C2 1307 | 0000100010011 C083 1308 | 0000100010010 E8B0 1309 | 0000100010001 8002 1310 | 0000100010000 0C0F 1311 | 0000100001111 4318 1312 | 0000100001110 E857 1313 | 0000100001101 8081 1314 | 0000100001100 E8FB 1315 | 0000100001011 E89F 1316 | 0000100001010 52E8 1317 | 0000100001001 5072 1318 | 0000100001000 7453 1319 | 0000100000111 7433 1320 | 0000100000110 E897 1321 | 0000100000101 E8B4 1322 | 0000100000100 20C3 1323 | 0000100000011 7428 1324 | 0000100000010 E856 1325 | 0000100000001 6666666666666666 1326 | 00001000000001 C0E8 1327 | 00001000000000 E814 1328 | 00000111111111 080008 1329 | 00000111111110 0FB7C0 1330 | 00000111111101 09008B 1331 | 00000111111100 FDFF83 1332 | 00000111111011 020082 1333 | 00000111111010 0900E8 1334 | 00000111111001 8B45F0 1335 | 00000111111000 666666 1336 | 00000111110111 0405 1337 | 00000111110110 744D 1338 | 00000111110101 FDFF8B 1339 | 00000111110100 89E557 1340 | 00000111110011 FFFF8D 1341 | 00000111110010 000001 1342 | 00000111110001 006A02 1343 | 00000111110000 83EC10 1344 | 00000111101111 5589E556 1345 | 00000111101110 ???????? 1346 | 00000111101101 C9C355 1347 | 00000111101100 FF35C4 1348 | 00000111101011 6898 1349 | 00000111101010 B645 1350 | 00000111101001 89E553 1351 | 00000111101000 8B02 1352 | 00000111100111 00000008 1353 | 00000111100110 04C5 1354 | 00000111100101 E8A9 1355 | 00000111100100 14C5 1356 | 00000111100011 6810 1357 | 00000111100010 5365 1358 | 00000111100001 8B44 1359 | 00000111100000 0150 1360 | 00000111011111 E808 1361 | 00000111011110 090001 1362 | 00000111011101 E874 1363 | 00000111011100 01F2 1364 | 00000111011011 E8DF 1365 | 00000111011010 7529 1366 | 00000111011001 23070000 1367 | 00000111011000 4D0C 1368 | 00000111010111 108D 1369 | 00000111010110 E884 1370 | 00000111010101 6808 1371 | 00000111010100 0583 1372 | 00000111010011 B60B 1373 | 00000111010010 E834 1374 | 00000111010001 1800 1375 | 00000111010000 03B8 1376 | 00000111001111 C001 1377 | 00000111001110 8950 1378 | 00000111001101 01CE 1379 | 00000111001100 1020 1380 | 00000111001011 55A1 1381 | 00000111001010 FF01 1382 | 00000111001001 891D 1383 | 00000111001000 FF81 1384 | 00000111000111 008945 1385 | 00000111000110 0305 1386 | 00000111000101 E8C2 1387 | 00000111000100 E887 1388 | 00000111000011 E861 1389 | 00000111000010 884D 1390 | 00000111000001 E860 1391 | 00000111000000 E805 1392 | 00000110111111 E8E3 1393 | 00000110111110 7523 1394 | 00000110111101 4310 1395 | 00000110111100 0208 1396 | 00000110111011 C000 1397 | 00000110111010 686F 1398 | 00000110111001 89D6 1399 | 00000110111000 00FE 1400 | 00000110110111 681C 1401 | 00000110110110 0070 1402 | 00000110110101 5885 1403 | 00000110110100 EB12 1404 | 00000110110011 10E8 1405 | 00000110110010 C0E9 1406 | 00000110110001 0424 1407 | 00000110110000 8B90 1408 | 00000110101111 751F 1409 | 00000110101110 D08B 1410 | 00000110101101 E87F 1411 | 00000110101100 80BB 1412 | 00000110101011 00000074 1413 | 00000110101010 6B66BB 1414 | 00000110101001 C05D 1415 | 00000110101000 E8DC 1416 | 00000110100111 E82D 1417 | 00000110100110 0C40 1418 | 00000110100101 C08B 1419 | 00000110100100 45B0 1420 | 00000110100011 E818 1421 | 00000110100010 752A 1422 | 00000110100001 E8B6 1423 | 00000110100000 8983 1424 | 00000110011111 01E8 1425 | 00000110011110 00F1 1426 | 00000110011101 7573 1427 | 00000110011100 E848 1428 | 00000110011011 6BC0 1429 | 00000110011010 7472 1430 | 00000110011001 1485 1431 | 00000110011000 752D 1432 | 00000110010111 8A5D 1433 | 00000110010110 6858 1434 | 00000110010101 F031 1435 | 00000110010100 0495 1436 | 00000110010011 C6CC 1437 | 00000110010010 E822 1438 | 00000110010001 C41C 1439 | 00000110010000 7448 1440 | 00000110001111 00E0 1441 | 00000110001110 FF8D 1442 | 00000110001101 45A4 1443 | 00000110001100 01D8 1444 | 00000110001011 6574 1445 | 00000110001010 E9D3 1446 | 00000110001001 8B58 1447 | 00000110001000 01DA 1448 | 00000110000111 018D 1449 | 00000110000110 E8AD 1450 | 00000110000101 E8B2 1451 | 00000110000100 663D 1452 | 00000110000011 EB16 1453 | 00000110000010 E82A 1454 | 00000110000001 0FC0 1455 | 00000110000000 8953 1456 | 00000101111111 0F83 1457 | 00000101111110 0CFF 1458 | 00000101111101 EB11 1459 | 00000101111100 8946 1460 | 00000101111011 E8C0 1461 | 00000101111010 83A0 1462 | 00000101111001 FF76 1463 | 00000101111000 4004 1464 | 00000101110111 68C0 1465 | 00000101110110 E8F0 1466 | 00000101110101 E8EA 1467 | 00000101110100 2089 1468 | 00000101110011 6E64 1469 | 00000101110010 008A 1470 | 00000101110001 894B 1471 | 00000101110000 0F86 1472 | 00000101101111 C1EE 1473 | 00000101101110 6815 1474 | 00000101101101 E88C 1475 | 00000101101100 E89C 1476 | 00000101101011 0CC1 1477 | 00000101101010 E8A8 1478 | 00000101101001 6825 1479 | 00000101101000 D88B 1480 | 00000101100111 0077 1481 | 00000101100110 000A 1482 | 00000101100101 7515 1483 | 00000101100100 0420 1484 | 00000101100011 5389 1485 | 00000101100010 00F8 1486 | 00000101100001 EB18 1487 | 00000101100000 83C1 1488 | 00000101011111 6639 1489 | 00000101011110 8007 1490 | 00000101011101 7524 1491 | 00000101011100 7422 1492 | 00000101011011 01CF 1493 | 00000101011010 E85A 1494 | 00000101011001 8BB3 1495 | 00000101011000 E8C5 1496 | 00000101010111 E823 1497 | 00000101010110 75C8 1498 | 00000101010101 75CC 1499 | 00000101010100 00C3 1500 | 00000101010011 31DA 1501 | 00000101010010 2007 1502 | 00000101010001 7423 1503 | 00000101010000 E82C 1504 | 00000101001111 400C 1505 | 00000101001110 E824 1506 | 00000101001101 00000085 1507 | 00000101001100 E830 1508 | 00000101001011 04F5 1509 | 00000101001010 75E8 1510 | 00000101001001 0355 1511 | 00000101001000 E831 1512 | 00000101000111 5004 1513 | 00000101000110 8D30 1514 | 00000101000101 E8D0 1515 | 00000101000100 2075 1516 | 00000101000011 6566 1517 | 00000101000010 55B8 1518 | 00000101000001 4000 1519 | 00000101000000 8398 1520 | 00000100111111 0220 1521 | 00000100111110 6888 1522 | 00000100111101 6805 1523 | 00000100111100 E846 1524 | 00000100111011 81FB 1525 | 00000100111010 45AC 1526 | 00000100111001 E880 1527 | 00000100111000 E84B 1528 | 00000100110111 E813 1529 | 00000100110110 83BD 1530 | 00000100110101 E854 1531 | 00000100110100 684C 1532 | 00000100110011 00F6 1533 | 00000100110010 2063 1534 | 00000100110001 E855 1535 | 00000100110000 E876 1536 | 00000100101111 6824 1537 | 00000100101110 E895 1538 | 00000100101101 4518 1539 | 00000100101100 0C83 1540 | 00000100101011 680D 1541 | 00000100101010 01000083 1542 | 00000100101001 E8CE 1543 | 00000100101000 E001 1544 | 00000100100111 0088 1545 | 00000100100110 80E2 1546 | 00000100100101 E88A 1547 | 00000100100100 E8F5 1548 | 00000100100011 10C7 1549 | 00000100100010 4075 1550 | 00000100100001 0C80 1551 | 00000100100000 4305 1552 | 00000100011111 E8A4 1553 | 00000100011110 68FC 1554 | 00000100011101 01F8 1555 | 00000100011100 E8D4 1556 | 00000100011011 0868 1557 | 00000100011010 F7D8 1558 | 00000100011001 005A 1559 | 00000100011000 6814 1560 | 00000100010111 F6C1 1561 | 00000100010110 0860 1562 | 00000100010101 6807 1563 | 00000100010100 89D3 1564 | 00000100010011 E8D7 1565 | 00000100010010 742F 1566 | 00000100010001 020F 1567 | 00000100010000 E83F 1568 | 00000100001111 4361 1569 | 00000100001110 4444 1570 | 00000100001101 6834 1571 | 00000100001100 8B73 1572 | 00000100001011 5750 1573 | 00000100001010 E852 1574 | 00000100001001 6830 1575 | 00000100001000 6820 1576 | 00000100000111 500F 1577 | 00000100000110 6818 1578 | 00000100000101 E886 1579 | 00000100000100 E877 1580 | 00000100000011 742A 1581 | 00000100000010 040F 1582 | 00000100000001 45A0 1583 | 00000100000000 0345 1584 | 00000011111111 E80B 1585 | 00000011111110 751E 1586 | 00000011111101 75D8 1587 | 00000011111100 E8EC 1588 | 00000011111011 0051 1589 | 00000011111010 0A00E8 1590 | 00000011111001 45088B 1591 | 00000011111000 E83C 1592 | 00000011110111 68F4 1593 | 00000011110110 01D7 1594 | 00000011110101 6893 1595 | 00000011110100 E888 1596 | 00000011110011 E86C 1597 | 00000011110010 000E 1598 | 00000011110001 00A3 1599 | 00000011110000 085D 1600 | 00000011101111 68E8 1601 | 00000011101110 1083 1602 | 00000011101101 680A 1603 | 00000011101100 03B0 1604 | 00000011101011 E83A 1605 | 00000011101010 6803 1606 | 00000011101001 680B 1607 | 00000011101000 E842 1608 | 00000011100111 6809 1609 | 00000011100110 45C0 1610 | 00000011100101 83BA 1611 | 00000011100100 E8C4 1612 | 00000011100011 C018 1613 | 00000011100010 E8B9 1614 | 00000011100001 4588 1615 | 00000011100000 01FF 1616 | 00000011011111 4302 1617 | 00000011011110 0431 1618 | 00000011011101 837F 1619 | 00000011011100 E83E 1620 | 00000011011011 4324 1621 | 00000011011010 E820 1622 | 00000011011001 6848 1623 | 00000011011000 75C4 1624 | 00000011010111 E8AC 1625 | 00000011010110 837A 1626 | 00000011010101 E881 1627 | 00000011010100 0081 1628 | 00000011010011 E870 1629 | 00000011010010 E80D 1630 | 00000011010001 FFFFFF0F 1631 | 00000011010000 E58B 1632 | 00000011001111 E859 1633 | 00000011001110 E8E4 1634 | 00000011001101 E891 1635 | 00000011001100 4DE8 1636 | 00000011001011 E8DA 1637 | 00000011001010 7519 1638 | 00000011001001 EB21 1639 | 00000011001000 E885 1640 | 00000011000111 10C4 1641 | 00000011000110 7527 1642 | 00000011000101 45D7 1643 | 00000011000100 0F0B 1644 | 00000011000011 0388 1645 | 00000011000010 E840 1646 | 00000011000001 855C 1647 | 00000011000000 E8D2 1648 | 00000010111111 7DEC 1649 | 00000010111110 E8EB 1650 | 00000010111101 6817 1651 | 00000010111100 E8B1 1652 | 00000010111011 68CC 1653 | 00000010111010 E875 1654 | 00000010111001 080F 1655 | 00000010111000 01C3 1656 | 00000010110111 C204 1657 | 00000010110110 8394 1658 | 00000010110101 0044 1659 | 00000010110100 E828 1660 | 00000010110011 83BE 1661 | 00000010110010 744B 1662 | 00000010110001 E815 1663 | 00000010110000 0440 1664 | 00000010101111 E8F9 1665 | 00000010101110 856C 1666 | 00000010101101 E8E0 1667 | 00000010101100 66D1 1668 | 00000010101011 E8CA 1669 | 00000010101010 899D 1670 | 00000010101001 08C1 1671 | 00000010101000 7478 1672 | 00000010100111 3C3F 1673 | 00000010100110 E8BD 1674 | 00000010100101 8A43 1675 | 00000010100100 752B 1676 | 00000010100011 E88F 1677 | 00000010100010 0049 1678 | 00000010100001 EB1F 1679 | 00000010100000 E862 1680 | 00000010011111 E82E 1681 | 00000010011110 E8C9 1682 | 00000010011101 E844 1683 | 00000010011100 04FF 1684 | 00000010011011 8570 1685 | 00000010011010 EB15 1686 | 00000010011001 0007 1687 | 00000010011000 8906 1688 | 00000010010111 75F4 1689 | 00000010010110 8548 1690 | 00000010010101 89B5 1691 | 00000010010100 833B 1692 | 00000010010011 E8D1 1693 | 00000010010010 E87E 1694 | 00000010010001 EB22 1695 | 00000010010000 0024 1696 | 00000010001111 C08D 1697 | 00000010001110 FFF2 1698 | 00000010001101 5AEB 1699 | 00000010001100 01D9 1700 | 00000010001011 0130 1701 | 00000010001010 45EE 1702 | 00000010001001 55BA 1703 | 00000010001000 09D9 1704 | 00000010000111 0380 1705 | 00000010000110 E80A 1706 | 00000010000101 08FF 1707 | 00000010000100 E8F3 1708 | 00000010000011 04C0 1709 | 00000010000010 00C9 1710 | 00000010000001 890D 1711 | 00000010000000 C358 1712 | 00000001111111 04CD 1713 | 00000001111110 0168 1714 | 00000001111101 E8D8 1715 | 00000001111100 07C0 1716 | 00000001111011 6816 1717 | 00000001111010 E80E 1718 | 00000001111001 EB14 1719 | 00000001111000 5886 1720 | 00000001110111 02F5 1721 | 00000001110110 7503 1722 | 00000001110101 E8E8 1723 | 00000001110100 8902 1724 | 00000001110011 F03B 1725 | 00000001110010 050F 1726 | 00000001110001 885D 1727 | 00000001110000 75B4 1728 | 00000001101111 1066 1729 | 00000001101110 E87D 1730 | 00000001101101 4598 1731 | 00000001101100 FF57 1732 | 00000001101011 39F3 1733 | 00000001101010 6880 1734 | 00000001101001 8958 1735 | 00000001101000 0280 1736 | 00000001100111 055C 1737 | 00000001100110 C078 1738 | 00000001100101 C1F8 1739 | 00000001100100 01EB 1740 | 00000001100011 0078 1741 | 00000001100010 E82B 1742 | 00000001100001 C1C2 1743 | 00000001100000 5C62 1744 | 00000001011111 0031 1745 | 00000001011110 FF5F 1746 | 00000001011101 E8EF 1747 | 00000001011100 0CC4 1748 | 00000001011011 84DB 1749 | 00000001011010 7578 1750 | 00000001011001 00BB 1751 | 00000001011000 E894 1752 | 00000001010111 EC8B 1753 | 00000001010110 0377 1754 | 00000001010101 0F41 1755 | 00000001010100 2053 1756 | 00000001010011 EB08 1757 | 00000001010010 001C 1758 | 00000001010001 E8E9 1759 | 00000001010000 E821 1760 | 00000001001111 81C2 1761 | 00000001001110 7665 1762 | 00000001001101 2073 1763 | 00000001001100 0468 1764 | 00000001001011 744C 1765 | 00000001001010 5831 1766 | 00000001001001 3305 1767 | 00000001001000 8D42 1768 | 00000001000111 6828 1769 | 00000001000110 68B0 1770 | 00000001000101 7400 1771 | 00000001000100 8423 1772 | 00000001000011 0048 1773 | 00000001000010 5656 1774 | 00000001000001 742D 1775 | 00000001000000 68A0 1776 | 000000001111111 0000E8 1777 | 000000001111110 006A01 1778 | 000000001111101 0000EB 1779 | 000000001111100 FFFFC7 1780 | 000000001111011 0000C9 1781 | 000000001111010 FCFF50 1782 | 000000001111001 6666BB 1783 | 000000001111000 8945E8 1784 | 000000001110111 8945E4 1785 | 000000001110110 000075 1786 | 000000001110101 000889 1787 | 000000001110100 8B45EC 1788 | 000000001110011 000040 1789 | 000000001110010 0FB640 1790 | 000000001110001 2222222222 1791 | 000000001110000 000068 1792 | 000000001101111 0A0000 1793 | 000000001101110 09006B 1794 | 000000001101101 EB1B 1795 | 000000001101100 E439 1796 | 000000001101011 800F 1797 | 000000001101010 E843 1798 | 000000001101001 6832 1799 | 000000001101000 FFFFFFEB 1800 | 000000001100111 E851 1801 | 000000001100110 FFFFFF00 1802 | 000000001100101 01C1 1803 | 000000001100100 C05B 1804 | 000000001100011 E836 1805 | 000000001100010 66666666 1806 | 000000001100001 8B0C 1807 | 000000001100000 222222 1808 | 000000001011111 050000 1809 | 000000001011110 0000FF 1810 | 000000001011101 8390 1811 | 000000001011100 E837 1812 | 000000001011011 833C 1813 | 000000001011010 FFFF59 1814 | 000000001011001 000200 1815 | 000000001011000 0059 1816 | 000000001010111 000066 1817 | 000000001010110 04EB 1818 | 000000001010101 048D 1819 | 000000001010100 85C07407 1820 | 000000001010011 5600 1821 | 000000001010010 E9B3 1822 | 000000001010001 E8A3 1823 | 000000001010000 8D48 1824 | 000000001001111 ???? 1825 | 000000001001110 6E74 1826 | 000000001001101 F7D1 1827 | 000000001001100 0520 1828 | 000000001001011 5052 1829 | 000000001001010 00C1 1830 | 000000001001001 FF83 1831 | 000000001001000 45F2 1832 | 000000001000111 20FF 1833 | 000000001000110 8B14 1834 | 000000001000101 894C 1835 | 000000001000100 0058 1836 | 000000001000011 0076 1837 | 000000001000010 E81C 1838 | 000000001000001 7432 1839 | 000000001000000 0201 1840 | 000000000111111 2122 1841 | 000000000111110 E868 1842 | 000000000111101 00B2 1843 | 000000000111100 09C1 1844 | 000000000111011 BF05 1845 | 000000000111010 00AD 1846 | 000000000111001 1011 1847 | 000000000111000 FFE9 1848 | 000000000110111 C603 1849 | 000000000110110 D089 1850 | 000000000110101 016A 1851 | 000000000110100 85A0 1852 | 000000000110011 05A0 1853 | 000000000110010 8078 1854 | 000000000110001 4584 1855 | 000000000110000 E8C3 1856 | 000000000101111 7269 1857 | 000000000101110 24E8 1858 | 000000000101101 E060 1859 | 000000000101100 0343 1860 | 000000000101011 B81A 1861 | 000000000101010 00A0 1862 | 000000000101001 003C 1863 | 000000000101000 E8D9 1864 | 000000000100111 00B0 1865 | 000000000100110 682F 1866 | 000000000100101 E835 1867 | 000000000100100 5974 1868 | 000000000100011 6676 1869 | 000000000100010 E8FC 1870 | 000000000100001 5AC9 1871 | 000000000100000 0038 1872 | 000000000011111 2400 1873 | 000000000011110 8810 1874 | 000000000011101 4009 1875 | 000000000011100 FF56 1876 | 000000000011011 08C4 1877 | 000000000011010 B820 1878 | 000000000011001 F89B 1879 | 000000000011000 00F4 1880 | 000000000010111 8560 1881 | 000000000010110 C404 1882 | 000000000010101 E8DD 1883 | 0000000000101001 ?????? 1884 | 0000000000101000 ?????? 1885 | 0000000000100111 ?????? 1886 | 0000000000100110 89E58B 1887 | 0000000000100101 000874 1888 | 0000000000100100 0000A1 1889 | 0000000000100011 FFFF68 1890 | 0000000000100010 0FB745 1891 | 0000000000100001 0A006A 1892 | 0000000000100000 000F85 1893 | 0000000000011111 66BBBB 1894 | 0000000000011110 0FB643 1895 | 0000000000011101 8B4514 1896 | 0000000000011100 8945EC 1897 | 0000000000011011 FFFF6A 1898 | 0000000000011010 0FB75D 1899 | 0000000000011001 00000F 1900 | 0000000000011000 0089E5 1901 | 0000000000010111 6A0050 1902 | 0000000000010110 000056 1903 | 0000000000010101 0000C1 1904 | 0000000000010100 ???????? 1905 | 0000000000010011 8D45B0 1906 | 0000000000010010 0FB684 1907 | 0000000000010001 66660D 1908 | 0000000000010000 66660A 1909 | 0000000000001111 00000030 1910 | 0000000000001110 ???????? 1911 | 0000000000001101 0000001A 1912 | 0000000000001100 FFFF53 1913 | 0000000000001011 ?????? 1914 | 0000000000001010 FBFF83 1915 | 0000000000001001 ?????? 1916 | 0000000000001000 ?????? 1917 | 0000000000000111 FFFF31 1918 | 0000000000000110 070002 1919 | 0000000000000101 ?????? 1920 | 0000000000000100 FF750C 1921 | 0000000000000011 090066 1922 | 0000000000000010 000062 1923 | 0000000000000001 ?????? 1924 | 00000000000000001 008B5D 1925 | 00000000000000000 0000000100000002 1926 | -------------------------------------------------------------------------------- /HuffDec11.py: -------------------------------------------------------------------------------- 1 | import os, sys, struct, zlib 2 | 3 | class Error(Exception): pass 4 | 5 | def cwDec(w): # Convert 16-bit value to string codeword 6 | return bin(0x10000 | w).rstrip('0')[3:-1] 7 | 8 | def cwEnc(cw): # Convert string codeword to 16-bit value 9 | return int((cw+'1').ljust(16, '0'), 2) 10 | 11 | #*************************************************************************** 12 | #*************************************************************************** 13 | #*************************************************************************** 14 | 15 | def HuffTabReader_bin(ab): 16 | fmtRec = struct.Struct(" nBits # Length must increase 105 | s = int(aCW[o-1], 2) # Start value for current length 106 | for i in xrange(s, e+1): 107 | cw = bin(i)[2:].zfill(nBits) 108 | self.propagateMap(HuffNode(cw, self)) 109 | e = int(aCW[o], 2)|1 # End value for next length 110 | for i in xrange(e/2 + 1, s): # Handle values with unknown codeword length 111 | cw = bin(i)[2:].zfill(nBits) 112 | self.propagateMap(HuffNode(cw, None)) 113 | nBits = nextBits 114 | for v in self.aMap: assert v is not None 115 | 116 | def enumCW(self, ab): 117 | v = int(bin(int("01"+ab.encode("hex"), 16))[3:][::-1], 2) # Reversed bits 118 | cb = 0 119 | while cb < self.BLOCK_SIZE: # Block length 120 | node = self.aMap[v & 0x7FFF] 121 | if node.nBits is None: raise Error("Unknown codeword %s* length" % node.cw) 122 | yield node 123 | v >>= node.nBits 124 | if node.cb is not None: cb += node.cb 125 | 126 | def decompressChunk(self, ab, iTab): 127 | r = [] 128 | cb = 0 129 | for node in self.enumCW(ab): 130 | v = node.av[iTab] 131 | if v is None: raise Error("Unknown sequence for codeword %s in table #%d" % (node.cw, iTab)) 132 | r.append(v) 133 | cb += len(v) 134 | if cb >= self.BLOCK_SIZE: break 135 | return "".join(r) 136 | 137 | def decompress(self, ab, length): 138 | nChunks, left = divmod(length, self.BLOCK_SIZE) 139 | assert 0 == left 140 | aOfs = list(struct.unpack_from("<%dL" % nChunks, ab)) 141 | aOpt = [0]*nChunks 142 | for i in xrange(nChunks): 143 | aOpt[i], aOfs[i] = divmod(aOfs[i], 0x40000000) 144 | 145 | base = nChunks*4 146 | aOfs.append(len(ab) - base) 147 | r = [] 148 | for i, opt in enumerate(aOpt): 149 | iTab, bCompr = divmod(opt, 2) 150 | assert 1 == bCompr 151 | unpacked = self.decompressChunk(ab[base + aOfs[i]: base + aOfs[i+1]], iTab) 152 | assert len(unpacked) == self.BLOCK_SIZE 153 | r.append(unpacked) 154 | return "".join(r) 155 | 156 | -------------------------------------------------------------------------------- /HuffDec12.py: -------------------------------------------------------------------------------- 1 | import os, sys, struct, zlib 2 | 3 | class Error(Exception): pass 4 | 5 | def cwDec(w): # Convert 16-bit value to string codeword 6 | return bin(0x10000 | w).rstrip('0')[3:-1] 7 | 8 | def cwEnc(cw): # Convert string codeword to 16-bit value 9 | return int((cw+'1').ljust(16, '0'), 2) 10 | 11 | #*************************************************************************** 12 | #*************************************************************************** 13 | #*************************************************************************** 14 | 15 | def HuffTabReader_bin(ab): 16 | fmtRec = struct.Struct(" 1 else None # Huffman sequence value 44 | if v is None: # Not defined 45 | cb = None 46 | elif v.startswith("??"): # Sequence length is known 47 | cb = len(v)/2 48 | v = None 49 | else: # Value is known 50 | v = v.decode("hex") 51 | cb = len(v) 52 | yield(cw, cb, v) 53 | 54 | def HuffTabPack_text(dLen, d, mode=None): 55 | if mode is None: mode = HuffDecoder.DUMP_ALL 56 | r = [] 57 | for cw in sorted(dLen.keys())[::-1]: 58 | cb = dLen[cw] 59 | if cb is None and mode in (HuffDecoder.DUMP_KNOWN, HuffDecoder.DUMP_LEN): continue # Ignore if sequence length is not known 60 | v = d.get(cw, None) 61 | if v is None: 62 | if HuffDecoder.DUMP_KNOWN == mode: continue # Ignore if sequence is not known 63 | v = "" if cb is None else "??"*cb 64 | else: v = v.encode("hex").upper() 65 | pad = '\t'*(2 - len(cw)/8) 66 | r.append("%s%s%s" % (cw, pad, v)) 67 | return "\n".join(r) 68 | 69 | #*************************************************************************** 70 | #*************************************************************************** 71 | #*************************************************************************** 72 | 73 | def HuffTab_extendLen(dLen, extShape=False): 74 | shape = [] 75 | aCW = sorted(dLen.keys())[::-1] 76 | minBits, maxBits = len(aCW[0]), len(aCW[-1]) 77 | aCW.append('0'*(maxBits+1)) # Longer than max 78 | 79 | nBits = minBits # Current length 80 | e = int(aCW[0], 2)|1 # End value for current length 81 | for o in xrange(1, len(aCW)): 82 | nextBits = len(aCW[o]) 83 | if nextBits == nBits: continue # Run until length change 84 | assert nextBits > nBits # Length must increase 85 | s = int(aCW[o-1], 2) # Start value for current length 86 | for i in xrange(s, e+1): 87 | cw = bin(i)[2:].zfill(nBits) 88 | if cw not in dLen: dLen[cw] = None 89 | e = int(aCW[o], 2)|1 # End value for next length 90 | shape.append([(x << (16-nBits)) for x in xrange(s, e/2, -1)]) 91 | if extShape: 92 | for i in xrange(s-1, e/2, -1): 93 | cw = bin(i)[2:].zfill(nBits) 94 | if cw not in dLen: dLen[cw] = None 95 | nBits = nextBits 96 | return shape 97 | 98 | #*************************************************************************** 99 | #*************************************************************************** 100 | #*************************************************************************** 101 | 102 | class HuffNode(object): 103 | def __init__(self, cw, hd): 104 | self.cw = cw # String codeword value 105 | # self.w = cwEnc(cw) # Encoded codeword value 106 | if hd: 107 | self.nBits = len(cw) # Length of codeword in bits 108 | self.cb = hd.dLen.get(cw, None) 109 | self.av = [d.get(cw, None) for d in hd.adTab] 110 | else: 111 | self.nBits = None # Actual length of codeword is unknown 112 | 113 | #*************************************************************************** 114 | #*************************************************************************** 115 | #*************************************************************************** 116 | 117 | class HuffDecoder(object): 118 | NAMES = ("Code", "Data") 119 | DUMP_KNOWN = 0 120 | DUMP_LEN = 1 121 | DUMP_ALL = 2 122 | dPrefix = {DUMP_KNOWN:"kno", DUMP_LEN:"len", DUMP_ALL:"all"} 123 | fmtInt = struct.Struct(">fo, HuffTabPack_text(dLen, d, mode) 189 | 190 | def propagateMap(self, node): 191 | cw = node.cw 192 | for idx in xrange(int(cw[::-1], 2), len(self.aMap), 1< nBits # Length must increase 208 | s = int(aCW[o-1], 2) # Start value for current length 209 | for i in xrange(s, e+1): 210 | cw = bin(i)[2:].zfill(nBits) 211 | self.propagateMap(HuffNode(cw, self)) 212 | e = int(aCW[o], 2)|1 # End value for next length 213 | for i in xrange(e/2 + 1, s): # Handle values with unknown codeword length 214 | cw = bin(i)[2:].zfill(nBits) 215 | self.propagateMap(HuffNode(cw, None)) 216 | nBits = nextBits 217 | for v in self.aMap: assert v is not None 218 | 219 | def enumCW(self, ab): 220 | v = int(bin(int("01"+ab.encode("hex"), 16))[3:][::-1], 2) # Reversed bits 221 | cb = 0 222 | while cb < self.BLOCK_SIZE: # Block length 223 | node = self.aMap[v & self.mask] 224 | if node.nBits is None: raise Error("Unknown codeword %s* length" % node.cw) 225 | yield node 226 | v >>= node.nBits 227 | if node.cb is not None: cb += node.cb 228 | 229 | def decompressChunk(self, ab, iTab): 230 | r = [] 231 | cb = 0 232 | for node in self.enumCW(ab): 233 | v = node.av[iTab] 234 | if v is None: raise Error("Unknown sequence for codeword %s in table #%d" % (node.cw, iTab)) 235 | r.append(v) 236 | cb += len(v) 237 | if cb >= self.BLOCK_SIZE: break 238 | return "".join(r) 239 | 240 | def decompress(self, ab, length): 241 | nChunks, left = divmod(length, self.BLOCK_SIZE) 242 | assert 0 == left 243 | aOfs = list(struct.unpack_from("<%dL" % nChunks, ab)) 244 | aOpt = [0]*nChunks 245 | for i in xrange(nChunks): 246 | aOpt[i], aOfs[i] = divmod(aOfs[i], 0x40000000) 247 | 248 | base = nChunks*4 249 | aOfs.append(len(ab) - base) 250 | r = [] 251 | for i, opt in enumerate(aOpt): 252 | iTab, bCompr = divmod(opt, 2) 253 | assert 1 == bCompr 254 | unpacked = self.decompressChunk(ab[base + aOfs[i]: base + aOfs[i+1]], iTab) 255 | assert len(unpacked) == self.BLOCK_SIZE 256 | r.append(unpacked) 257 | return "".join(r) 258 | 259 | #*************************************************************************** 260 | #*************************************************************************** 261 | #*************************************************************************** 262 | 263 | def main(argv): 264 | hd = HuffDecoder() 265 | # with open("huff11.bin", "wb") as fo: fo.write(zlib.compress(hd.packTables(), 9)[2:-4]) 266 | # with open("all.bin", "wb") as fo: fo.write(hd.packTables()) 267 | # for mode in (HuffDecoder.DUMP_KNOWN, HuffDecoder.DUMP_LEN, HuffDecoder.DUMP_ALL): hd.saveTables(mode) 268 | 269 | hd.prepareMap() 270 | for fn in argv[1:]: 271 | with open(fn, "rb") as fi: ab = fi.read() 272 | nChunks, = struct.unpack_from(" 8 | 9 | Report would be written to ME_Image_File_Name.txt 10 | 11 | Extracted data (partitions, modules, metadata) would be written to ME_Image_File_Name folder 12 | 13 | Compiled lzma binary is required on PATH for LMZA decompression (see [http://www.7-zip.org/download.html][1]) 14 | 15 | ## Limitations 16 | 17 | No progress output. Don't worry - just wait 18 | 19 | ## Related URLs: 20 | 21 | [Intel ME: The Way of the Static Analysis][2] 22 | 23 | [Intel DCI Secrets][3] 24 | 25 | ## Author 26 | 27 | Dmitry Sklyarov ([@_Dmit][6]) 28 | 29 | ## Research Team 30 | 31 | Mark Ermolov ([@\_markel___][4]) 32 | 33 | Maxim Goryachy ([@h0t_max][5]) 34 | 35 | Dmitry Sklyarov ([@_Dmit][6]) 36 | 37 | ## License 38 | This software is provided under a custom License. See the accompanying LICENSE file for more information. 39 | 40 | [1]: http://www.7-zip.org/download.html 41 | [2]: https://www.troopers.de/troopers17/talks/772-intel-me-the-way-of-the-static-analysis/ 42 | [3]: http://conference.hitb.org/hitbsecconf2017ams/sessions/commsec-intel-dci-secrets/ 43 | [4]: https://twitter.com/_markel___ 44 | [5]: https://twitter.com/h0t_max 45 | [6]: https://twitter.com/_Dmit 46 | -------------------------------------------------------------------------------- /huff11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ptresearch/unME12/4e5926a6fa328fddef40a1a6b1076a1c8f2803f0/huff11.bin -------------------------------------------------------------------------------- /unME12.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os, sys, struct, hashlib, platform 3 | import subprocess 4 | 5 | try: 6 | import HuffDec11 7 | HuffDecoder11 = HuffDec11.HuffDecoder() 8 | except: 9 | HuffDecoder11 = None 10 | 11 | try: 12 | import HuffDec12 13 | HuffDecoder12 = HuffDec12.HuffDecoder(12) 14 | except: 15 | HuffDecoder12 = None 16 | 17 | class Globals(object): 18 | HuffDecoder = HuffDecoder11 19 | dumpManifest = True # Dump CPD manifest 20 | dumpMeta = True # Dump modules metadata 21 | dumpRaw = False # Dump raw modules data (compressed/encrypted) 22 | dumpChunks = False # Dump HUFF chunks 23 | g = Globals() 24 | 25 | class Error(Exception): pass 26 | 27 | def BitFields(obj, val, bitDef): 28 | def bitf(val, lo, hi): return (val & ((2<> lo 29 | for name, lo, hi in bitDef: setattr(obj, name, bitf(val, lo, hi)) 30 | 31 | def ListTrueBools(obj, bitDef): 32 | return [v[0] for v in filter(lambda x: x[1] == x[2] and getattr(obj, x[0]), bitDef)] 33 | 34 | class StructReader(object): 35 | def __init__(self, ab, base=0, isLE=True): 36 | self.ab = ab 37 | self.base = base 38 | self.o = self.base 39 | self.cE = "<" if isLE else ">" 40 | 41 | def sizeLeft(self): 42 | return len(self.ab) - self.o 43 | 44 | def getData(self, o, cb): 45 | o += self.base 46 | if o < len(self.ab) and cb >= 0 and o + cb <= len(self.ab): 47 | return self.ab[o:o+cb] 48 | 49 | def read(self, obj, stDef, o=None): 50 | if o is None: o = self.o 51 | self.o += self.base 52 | for fldDef in stDef: # Walk field definitions 53 | name = fldDef[0] 54 | fmt = self.cE + fldDef[1] 55 | val, = struct.unpack_from(fmt, self.ab, o) 56 | if 3 == len(fldDef): 57 | expected = fldDef[2] 58 | if isinstance(expected, (list, tuple)): 59 | if not val in expected: 60 | print >>sys.stderr, "- %s.%s: not %s in %s" % (obj.__class__.__name__, name, val, expected) 61 | else: 62 | if val != expected: 63 | print >>sys.stderr, "- %s.%s:" % (obj.__class__.__name__, name), 64 | if isinstance(val, str): print >>sys.stderr, "Got %s, expected %s" % (val.encode("hex"), expected.encode("hex")) 65 | else: print >>sys.stderr, "Got [%s], expected [%s]" % (repr(val), repr(expected)) 66 | else: assert val == expected 67 | setattr(obj, name, val) 68 | o += struct.calcsize(fmt) 69 | self.o = o 70 | 71 | def done(self): 72 | assert len(self.ab) == self.o 73 | 74 | aPubKeyHash = [v.decode("hex") for v in ( 75 | "EA6FA86514FA887C9044218EDB4D70BB3BCC7C2D37587EA8F760BAFBE158C587", 76 | "A24E0682EDC8870DCA947C01603D19818AF714BEE9F39D2872D79B8C422F3890", 77 | "EA3E9C34C8FD6BDEA277F0A8C6AC5A37E8E39256469C89D279FA86A7317B21AE", 78 | "C8E7AA2C5F691F63A892BC044CD3935C5E77C6CB71C8E8627BE4987DFB730856", 79 | "3D512A6DB7C855E9F6328DB8B2C259A2C0F291BB6E3EC74A2FB811AD84C5D404", 80 | "04A6F35B14628879050AB0B3459326DDF946AE4E5EFD7BB1930883F57F68D084", 81 | "980F9572AC1B5BDC9A5F3E89F2503A624C9C5BDF97B72D9031DCCDAB11A9F7A8", 82 | "C468E6BA739856797BAF70910861BDE4C3BA95C956B1DCE24B738D614F1211BA", 83 | )] 84 | 85 | #*************************************************************************** 86 | #*************************************************************************** 87 | #*************************************************************************** 88 | 89 | args_lzma = { 90 | "Windows": ["lzma", "d", "-si", "-so"], 91 | "Linux": ["lzma", "-d"], 92 | "Darwin": ["lzma", "-d"], # "brew install xz" or "sudo port install xz" 93 | }[platform.system()] 94 | 95 | def LZMA_decompress(compdata): 96 | process = subprocess.Popen(args_lzma, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 97 | output, errout = process.communicate(compdata) 98 | retcode = process.poll() 99 | if retcode: raise Error(errout) 100 | return output 101 | 102 | def decompress(data, compType, length): 103 | if compType is None: 104 | return data 105 | elif "lzma" == compType: 106 | if not data.startswith("36004000".decode("hex")): 107 | print >>sys.stderr, "- Bad LZMA[0x%X] header %s" % (len(data), data[:17].encode("hex")) 108 | return None 109 | assert data.startswith("36004000".decode("hex")) 110 | assert '\0\0\0' == data[14:17] 111 | return LZMA_decompress(data[:14] + data[17:]) 112 | elif "huff" == compType: 113 | return g.HuffDecoder.decompress(data, length) if g.HuffDecoder else None 114 | else: 115 | raise Error("Invalid compType %s" % compType) 116 | 117 | 118 | RESTART_NOT_ALLOWED = 0 119 | RESTART_IMMEDIATLY = 1 120 | RESTART_ON_NEXT_BOOT = 2 121 | 122 | # MODULE_TYPES 123 | PROCESS_TYPE = 0 124 | SHARED_LIBRARY_TYPE = 1 125 | DATA_TYPE = 2 126 | IUNIT_TYPE = 3 # v12 127 | 128 | # PARTITION_TYPES 129 | FPT_AREATYPE_GENERIC = 1 130 | FPT_AREATYPE_CODE = 0 131 | FPT_AREATYPE_ROM = 1 132 | FPT_AREATYPE_DATA = 1 133 | 134 | # COMPRESSION_TYPE 135 | COMP_TYPE_NOT_COMPRESSED = 0 136 | COMP_TYPE_HUFFMAN = 1 137 | COMP_TYPE_LZMA = 2 138 | dCompType = { 139 | COMP_TYPE_NOT_COMPRESSED : None, 140 | COMP_TYPE_HUFFMAN: "huff", 141 | COMP_TYPE_LZMA: "lzma", 142 | } 143 | 144 | #*************************************************************************** 145 | #*************************************************************************** 146 | #*************************************************************************** 147 | 148 | class Extension(object): 149 | NAME = None 150 | TYPE = None 151 | LIST = None 152 | def Banner(self, noSize=False): 153 | nItems = "" if noSize or (self.LIST is None) else "[%d]" % len(getattr(self, self.LIST)) 154 | return ". Ext#%d %s%s:" % (self.TYPE, self.NAME, nItems) 155 | 156 | def PrintItems(self, flog): 157 | for i,e in enumerate(getattr(self, self.LIST)): print >>flog, "%6d: %s" % (i+1, e) 158 | 159 | def LoadItems(self, stR, cls, cnt=None): 160 | if cnt is None: 161 | lst = [] 162 | while stR.o < len(stR.ab): lst.append(cls(stR)) 163 | else: 164 | lst = [cls(stR) for i in xrange(cnt)] 165 | stR.done() 166 | setattr(self, self.LIST, lst) 167 | 168 | #*************************************************************************** 169 | #*************************************************************************** 170 | #*************************************************************************** 171 | 172 | #*************************************************************************** 173 | #*************************************************************************** 174 | #*************************************************************************** 175 | 176 | class System_Info_Ext(Extension): # 0 : used in Mainfist 177 | NAME = "SystemInfo" 178 | TYPE = 0 # for system info extension 179 | LIST = "indParts" 180 | SYSTEM_INFO_EXTENSION = ( 181 | ("uma_size", "L", ), # Minimum UMA size required for this SKU in bytes 182 | ("chipset_version", "L", ), # Chipset version 183 | ("img_default_hash", "32s", ), # SHA2 hash of a 'defaults' file added to the image. (/intel.cfg). The load manager is responsible for verifying the hash of this file and creating the default files at the first system boot. 184 | ("pageable_uma_size", "L", ), # Size of pageable space within UMA in bytes. Must be divisible by 4K. 185 | ("reserved_0", "Q", 0), # 186 | ("reserved_1", "L", 0), # 187 | # INDEPENDENT_PARTITION_ENTRY[] 188 | ) 189 | def __init__(self, ab): 190 | stR = StructReader(ab) 191 | stR.read(self, self.SYSTEM_INFO_EXTENSION) 192 | self.img_default_hash = self.img_default_hash[::-1] # Reverse? 193 | self.LoadItems(stR, Independent_Partition_Entry) 194 | 195 | def dump(self, flog=sys.stdout): 196 | print >>flog, "%s uma_size:0x%X, chipset_version:0x%X, pageable_uma_size:0x%X defaults_h:%s" % (self.Banner(), self.uma_size, self.chipset_version, self.pageable_uma_size, self.img_default_hash.encode("hex")) 197 | self.PrintItems(flog) 198 | 199 | #*************************************************************************** 200 | 201 | class Independent_Partition_Entry: 202 | INDEPENDENT_PARTITION_ENTRY = ( 203 | ("name", "4s", ), # 204 | ("version", "L", ), # 205 | ("user_id", "H", ), # 206 | ("reserved", "H", ), # 207 | ) 208 | def __init__(self, stR): 209 | stR.read(self, self.INDEPENDENT_PARTITION_ENTRY) 210 | self.name = self.name.rstrip('\0') 211 | 212 | def __str__(self): 213 | return "[%-4s] user_id:0x%04X ver:0x%08X %X" % (self.name, self.user_id, self.version, self.reserved) 214 | 215 | #*************************************************************************** 216 | #*************************************************************************** 217 | #*************************************************************************** 218 | 219 | class Init_Script_Ext(Extension): # 1 : used in Mainfist 220 | NAME = "InitScript" 221 | TYPE = 1 # for initialization script extension 222 | LIST = "scripts" 223 | # length: In bytes; equals (16 + 52*n) for this version where n is the number of modules in the initialization script 224 | INIT_SCRIPT = ( 225 | ("reserved", "L", 0), # Reserved for future use. 226 | ("number_of_modules", "L", ), # Number of modules in this initialization script. Cannot be more than MAX_MODULES (this is a configuration parameter defining the maximum number of modules supported by the system set at system build time). 227 | # INIT_SCRIPT_ENTRY[] # initialization script extension entries 228 | ) 229 | def __init__(self, ab): 230 | stR = StructReader(ab) 231 | stR.read(self, self.INIT_SCRIPT) 232 | 233 | clsSize, remainder = divmod(stR.sizeLeft(), self.number_of_modules) 234 | if remainder: raise Error("Init_Script_Ext data size == %d is not miltiple of nItems == %d" % stR.sizeLeft(), self.number_of_modules) 235 | cls = {24: Init_Script_Entry, 28: Init_Script_Entry_v12}[clsSize] 236 | self.LoadItems(stR, cls, self.number_of_modules) 237 | 238 | def dump(self, flog=sys.stdout): 239 | print >>flog, self.Banner() 240 | self.PrintItems(flog) 241 | 242 | #*************************************************************************** 243 | 244 | class Init_Script_Entry: 245 | INIT_SCRIPT_ENTRY = ( 246 | ("partition_name", "4s", ), # Manifest Partition Name. This field identifies the manifest in which this module's hash will be found irregardles of manifest's physical location (i.e. FTP manifest may be physically located in NFTP flash partition during FW update). 247 | ("name", "12s", ), # Module Name 248 | ("bf_init_flags", "L", ), # Flags used govern initialization flow. 249 | ("bf_boot_type", "L", ), # Boot path flag bits to indicate which boot path(s) this module is applicable to. Bit 0 - Normal Bit 1 - HAP Bit 2 - HMRFPO Bit 3 - Temp Disable Bit 4 - Recovery Bit 5 - Safe Mode Bit 6 - FW Update Bits 7:31 - Reserved 250 | ) 251 | def __init__(self, stR): 252 | self.unk = None 253 | stR.read(self, self.INIT_SCRIPT_ENTRY) 254 | self.partition_name = self.partition_name.rstrip('\0') 255 | self.name = self.name.rstrip('\0') 256 | self.init_flags = Init_Script_Flags(self.bf_init_flags) 257 | self.boot_type = Init_Script_Boot_Type(self.bf_boot_type) 258 | 259 | def __str__(self): 260 | return "%4s:%-12s Init: %08X (%s) Boot: %08X (%s)" % (self.partition_name, self.name, self.bf_init_flags, self.init_flags, self.bf_boot_type, self.boot_type) 261 | 262 | #*************************************************************************** 263 | 264 | class Init_Script_Entry_v12: 265 | INIT_SCRIPT_ENTRY = ( 266 | ("partition_name", "4s", ), # Manifest Partition Name. This field identifies the manifest in which this module's hash will be found irregardles of manifest's physical location (i.e. FTP manifest may be physically located in NFTP flash partition during FW update). 267 | ("name", "12s", ), # Module Name 268 | ("bf_init_flags", "L", ), # Flags used govern initialization flow. 269 | ("bf_boot_type", "L", ), # Boot path flag bits to indicate which boot path(s) this module is applicable to. Bit 0 - Normal Bit 1 - HAP Bit 2 - HMRFPO Bit 3 - Temp Disable Bit 4 - Recovery Bit 5 - Safe Mode Bit 6 - FW Update Bits 7:31 - Reserved 270 | ("unk", "L", ), # 271 | ) 272 | def __init__(self, stR): 273 | stR.read(self, self.INIT_SCRIPT_ENTRY) 274 | self.partition_name = self.partition_name.rstrip('\0') 275 | self.name = self.name.rstrip('\0') 276 | self.init_flags = Init_Script_Flags(self.bf_init_flags) 277 | self.boot_type = Init_Script_Boot_Type(self.bf_boot_type) 278 | 279 | def __str__(self): 280 | return "%4s:%-12s Init: %08X (%s) Boot: %08X (%s) Unk: %X" % (self.partition_name, self.name, self.bf_init_flags, self.init_flags, self.bf_boot_type, self.boot_type, self.unk) 281 | 282 | #*************************************************************************** 283 | 284 | class Init_Script_Flags: # !!! Not sure... 285 | dRestart = { 286 | RESTART_NOT_ALLOWED : "Not Allowed", # 0 287 | RESTART_IMMEDIATLY : "Immediatly", # 1 288 | RESTART_ON_NEXT_BOOT: "On Next Boot", # 2 289 | } 290 | INIT_SCRIPT_FLAGS = ( # BitFields 291 | ("Ibl", 0, 0), 292 | ("IsRemovable", 1, 1), 293 | ("InitImmediately", 2, 2), 294 | ("RestartPolicy", 3, 15), 295 | ("Cm0_u", 16, 16), 296 | ("Cm0_nu", 17, 17), 297 | ("Cm3", 18, 18), 298 | # ("reserved", 19, 31), 299 | ) 300 | def __init__(self, dw): 301 | BitFields(self, dw, self.INIT_SCRIPT_FLAGS) 302 | 303 | def __str__(self): 304 | r = ListTrueBools(self, self.INIT_SCRIPT_FLAGS) 305 | if self.RestartPolicy: r.append("Restart %s" % self.dRestart[self.RestartPolicy]) 306 | return ", ".join(r) 307 | 308 | #*************************************************************************** 309 | 310 | class Init_Script_Boot_Type: 311 | INIT_SCRIPT_BOOT_TYPE = ( # BitFields 312 | ("Normal", 0, 0), 313 | ("HAP", 1, 1), 314 | ("HMRFPO", 2, 2), 315 | ("TmpDisable", 3, 3), 316 | ("Recovery", 4, 4), 317 | ("SafeMode", 5, 5), 318 | ("FWUpdate", 6, 6), 319 | # ("reserved", 7, 31), 320 | ) 321 | def __init__(self, dw): 322 | BitFields(self, dw, self.INIT_SCRIPT_BOOT_TYPE) 323 | 324 | def __str__(self): 325 | return ", ".join(ListTrueBools(self, self.INIT_SCRIPT_BOOT_TYPE)) 326 | 327 | #*************************************************************************** 328 | #*************************************************************************** 329 | #*************************************************************************** 330 | 331 | class Feature_Permissions_Ext(Extension): # 2 : used in Mainfist 332 | NAME = "FeaturePermissions" 333 | TYPE = 2 # for feature permission extension 334 | LIST = "permissions" 335 | # length: In bytes; equals (12 + 2*n) for this version where n is the number of features in this extension 336 | FEATURE_PERMISSIONS_EXTENSION = ( 337 | ("num_of_features", "L", ), # Number of features feature numbering always starts from 0. 338 | # FEATURE_PERMISSION_ENTRY[] # feature permission extension entries 339 | ) 340 | def __init__(self, ab): 341 | stR = StructReader(ab) 342 | stR.read(self, self.FEATURE_PERMISSIONS_EXTENSION) 343 | self.LoadItems(stR, Feature_Permission_Entry, self.num_of_features) 344 | 345 | def dump(self, flog=sys.stdout): 346 | print >>flog, "%s [%s]" % (self.Banner(), ", ".join("0x%04X" % e.user_id for e in self.permissions)) 347 | 348 | #*************************************************************************** 349 | 350 | class Feature_Permission_Entry: 351 | FEATURE_PERMISSION_ENTRY = ( 352 | ("user_id", "H", ), # User ID that may change feature state for feature 0. 353 | ("reserved", "H", 0), # 354 | ) 355 | def __init__(self, stR): 356 | stR.read(self, self.FEATURE_PERMISSION_ENTRY) 357 | 358 | #*************************************************************************** 359 | #*************************************************************************** 360 | #*************************************************************************** 361 | 362 | class Partition_Info_Ext(Extension): # 3 : used in Mainfist 363 | NAME = "PartitionInfo" 364 | TYPE = 3 # for partition info extension 365 | LIST = "modules" 366 | # length: In bytes; equals (92 + 52*n) for this version where n is the number of modules in the manifest 367 | MANIFEST_PARTITION_INFO_EXT = ( 368 | ("partition_name", "4s", ), # Name of the partition 369 | ("partition_length", "L", ), # Length of complete partition before any process have been removed by the OEM or the firmware update process 370 | ("partition_hash", "32s", ), # SHA256 hash of the original complete partition covering everything in the partition except for the manifest (directory binaries and LUT) 371 | ("version_control_number", "L", ), # The version control number (VCN) is incremented whenever a change is made to the FW that makes it incompatible from an update perspective with previously released versions of the FW. 372 | ("partition_version", "L", ), # minor number 373 | ("data_format_version", "L", ), # 374 | ("instance_id", "L", ), # 375 | ("flags", "L", ), # Support multiple instances Y/N. Used for independently updated partitions that may have multiple instances (such as WLAN uCode or Localization) 376 | ("reserved", "16s", ('\0'*16, '\xFF'*16,)), # set to 0xff 377 | ("unknown0", "l", (0, 1, 3, -1)), # Was 0xffffffff 378 | # MANIFEST_MODULE_INFO_EXT[] # Module info extension entries 379 | ) 380 | def __init__(self, ab): 381 | stR = StructReader(ab) 382 | stR.read(self, self.MANIFEST_PARTITION_INFO_EXT) 383 | self.partition_name = self.partition_name.rstrip('\0') 384 | self.partition_hash = self.partition_hash[::-1] # Reverse? 385 | self.LoadItems(stR, Module_Info) 386 | 387 | def dump(self, flog=sys.stdout): 388 | print >>flog, self.Banner(True) 389 | print >>flog, " Name: [%s]" % self.partition_name 390 | print >>flog, " Length: %08X" % self.partition_length 391 | print >>flog, " Hash: %s" % self.partition_hash.encode("hex") 392 | print >>flog, " VCN: %d" % self.version_control_number 393 | print >>flog, " Ver: %X, %X" % (self.partition_version, self.data_format_version) 394 | print >>flog, " Instance ID: %d" % self.instance_id 395 | print >>flog, " Flags: %d" % self.flags 396 | print >>flog, " Unknown: %d" % self.unknown0 397 | print >>flog, " Modules[%d]:" % len(self.modules) 398 | self.PrintItems(flog) 399 | 400 | #*************************************************************************** 401 | 402 | class Module_Info: 403 | dModType = { 404 | PROCESS_TYPE: "Proc", # 0 405 | SHARED_LIBRARY_TYPE: "Lib ", # 1 406 | DATA_TYPE: "Data", # 2 407 | IUNIT_TYPE: "iUnt", # 3 v12 408 | } 409 | MANIFEST_MODULE_INFO_EXT = ( 410 | ("name", "12s", ), # Character array. If name length is shorter than field size the name is padded with 0 bytes 411 | ("type", "B", (0,1,2,3)), # 0 - Process; 1 - Shared Library; 2 - Data; 3 - iUnit 412 | ("reserved0", "B", ), # 413 | ("reserved1", "H", (0, 0xFFFF)), # set to 0xffff 414 | ("metadata_size", "L", ), # 415 | ("metadata_hash", "32s" ), # For a process/shared library this is the SHA256 of the module metadata file; for a data module this is the SHA256 hash of the module binary itself 416 | ) 417 | def __init__(self, stR): 418 | stR.read(self, self.MANIFEST_MODULE_INFO_EXT) 419 | self.name = self.name.rstrip('\0') 420 | self.metadata_hash = self.metadata_hash[::-1] # Reverse 421 | 422 | def __str__(self): 423 | return "%-4s, Meta cb:%4X h:%s %s" % (self.dModType[self.type], self.metadata_size, self.metadata_hash.encode("hex"), self.name) 424 | 425 | #*************************************************************************** 426 | #*************************************************************************** 427 | #*************************************************************************** 428 | 429 | class Shared_Lib_Ext(Extension): # 4 : used in Metadata 430 | NAME = "SharedLib" 431 | TYPE = 4 # for shared library extension 432 | # length: In bytes equals 52 for this version 433 | SHARED_LIB_EXTENSION = ( 434 | ("context_size", "L", ), # Size in bytes of the shared library context 435 | ("total_alloc_virtual_space", "L", ), # Including padding pages for library growth. Currently set to a temporary value. This needs to be updated once the SHARED_CONTEXT_SIZE symbol is defined in the build process. 436 | ("code_base_address", "L", ), # Base address for the library private code in VAS. Must be 4KB aligned. 437 | ("tls_size", "L", ), # Size of Thread-Local-Storage used by the shared library. 438 | ("reserved", "L", ), # reserved bytes set to 0xffffffff 439 | ) 440 | def __init__(self, ab): 441 | stR = StructReader(ab) 442 | stR.read(self, self.SHARED_LIB_EXTENSION) 443 | stR.done() 444 | 445 | def dump(self, flog=sys.stdout): 446 | print >>flog, "%s context_size:0x%X, total_alloc_virtual_space:0x%X, code_base_address:0x%X, tls_size:0x%x" % (self.Banner(), self.context_size, self.total_alloc_virtual_space, self.code_base_address, self.tls_size) 447 | 448 | #*************************************************************************** 449 | #*************************************************************************** 450 | #*************************************************************************** 451 | 452 | class Man_Process_Ext(Extension): # 5 : used in Metadata 453 | NAME = "Process" 454 | TYPE = 5 # for process attribute extension 455 | # length: In bytes equals 160 + 2*n for this version where n is the number of group IDs entries in the extension 456 | MAN_PROCESS_EXTENSION = ( 457 | ("bf_flags", "L", ), # Flags 458 | ("main_thread_id", "L", ), # TID for main thread. Optional for IBL processes only. Must be 0 for other processes. 459 | ("priv_code_base_address", "L", ), # Base address for code. Address is in LAS for Bringup/Kernel VAS for other processes. Must be 4KB aligned 460 | ("uncompressed_priv_code_size","L", ), # Size of uncompressed process code. Does not include code for shared library. 461 | ("cm0_heap_size", "L", ), # Size of Thread-Local-Storage for the process 462 | ("bss_size", "L", ), # 463 | ("default_heap_size", "L", ), # 464 | ("main_thread_entry", "L", ), # VAS of entry point function for the process main thread 465 | ("allowed_sys_calls", "12s", ), # Bitmask of allowed system calls by the process 466 | ("user_id", "H", ), # Runtime User ID for process 467 | ("reserved_0", "L", ), # Temporary placeholder for thread base 468 | ("reserved_1", "H", 0), # Must be 0 469 | ("reserved_2", "Q", ), # 470 | # group_ids['H'] # Group ID for process 471 | ) 472 | def __init__(self, ab): 473 | stR = StructReader(ab) 474 | stR.read(self, self.MAN_PROCESS_EXTENSION) 475 | abGIDs = stR.ab[stR.o:] 476 | self.group_ids = list(struct.unpack("<%dH" % (len(abGIDs) / 2), abGIDs)) 477 | self.flags = Man_Process_Flags(self.bf_flags) 478 | 479 | def dump(self, flog=sys.stdout): 480 | print >>flog, self.Banner() 481 | print >>flog, " flags: %s" % self.flags 482 | print >>flog, " main_thread_id: 0x%X" % self.main_thread_id 483 | print >>flog, " priv_code_base_address: 0x%08X" % self.priv_code_base_address 484 | print >>flog, " uncompressed_priv_code_size: 0x%X" % self.uncompressed_priv_code_size 485 | print >>flog, " cm0_heap_size: 0x%X" % self.cm0_heap_size 486 | print >>flog, " bss_size: 0x%X" % self.bss_size 487 | print >>flog, " default_heap_size: 0x%X" % self.default_heap_size 488 | print >>flog, " main_thread_entry: 0x%08X" % self.main_thread_entry 489 | print >>flog, " allowed_sys_calls: %s" % self.allowed_sys_calls.encode("hex") 490 | print >>flog, " user_id: 0x%04X" % self.user_id 491 | print >>flog, " group_ids[%d]: [%s]" % (len(self.group_ids), ", ".join("0x%04X" % gid for gid in self.group_ids)) 492 | 493 | #*************************************************************************** 494 | 495 | class Man_Process_Flags: 496 | MAN_PROCESS_FLAGS = ( # BitFields 497 | ("fault_tolerant", 0, 0), # Kernel exception policy: 0 - Reset System, 1 - Terminate Process 498 | ("permanent_process", 1, 1), # permanent process Y/N. A permanent process' code/rodata sections are not removed from RAM when it terminates normally in order to optimize its reload flow. 499 | ("single_instance", 2, 2), # Single Instance Y/N. When the process is spawned if it is already running in the system the spawn will fail. 500 | ("trusted_snd_rev_sender", 3, 3), # Trusted SendReceive Sender Y/N. If set this process is allowed to send IPC_SendReceive messages to any process (not only public). 501 | ("trusted_notify_sender", 4, 4), # Trusted Notify Sender Y/N. If set this process is allowed to send IPC_Notify notifications to any process (not only public). 502 | ("public_snd_rev_receiver", 5, 5), # Public SendReceive Receiver Y/N. If set any other process is allowed to send IPC_SendReceive messages to it (not only trusted). 503 | ("public_notify_receiver", 6, 6), # Public Notify Receiver Y/N. If set any other process is allowed to IPC_Notify notifications messages to it (not only trusted). 504 | #("reserved", 7, 31), # reserved. Set to 0 505 | ) 506 | def __init__(self, dw): 507 | BitFields(self, dw, self.MAN_PROCESS_FLAGS) 508 | 509 | def __str__(self): 510 | return ", ".join(ListTrueBools(self, self.MAN_PROCESS_FLAGS)) 511 | 512 | #*************************************************************************** 513 | #*************************************************************************** 514 | #*************************************************************************** 515 | 516 | class Threads_Ext(Extension): # 6 : used in Metadata 517 | NAME = "Threads" 518 | TYPE = 6 # for threads extension 519 | LIST = "threads" 520 | def __init__(self, ab): 521 | self.LoadItems(StructReader(ab), Thread_Entry) 522 | 523 | def dump(self, flog=sys.stdout): 524 | print >>flog, self.Banner() 525 | self.PrintItems(flog) 526 | 527 | #*************************************************************************** 528 | 529 | class Thread_Entry: 530 | THREAD_ENTRY = ( 531 | ("stack_size", "L", ), # Size of main thread stack in bytes (not including guard page including space reserved for TLS). Must be divisible by 4K with the following exception: if the default heap size is smaller than 4K the last thread's stack size may have any size. 532 | ("flags", "L", ), # Bit0 - set to 0 for live thread 1 for CM0-U-only thread; Bits 1-31 - reserved must be 0 533 | ("scheduling_policy", "L", ), # Bits 0-7: Scheduling Policy, 0 -> fixed priority; Bits 8-31: Scheduling attributes. For a fixed priority policy this is the scheduling priority of the thread. 534 | ("reserved", "L", ), # 535 | ) 536 | def __init__(self, stR): 537 | stR.read(self, self.THREAD_ENTRY) 538 | 539 | def __str__(self): 540 | return "stack_size:0x%08X, flags:%X, scheduling_policy:%08X" % (self.stack_size, self.flags, self.scheduling_policy) 541 | 542 | #*************************************************************************** 543 | #*************************************************************************** 544 | #*************************************************************************** 545 | 546 | class Device_Ids_Ext(Extension): # 7 : used in Metadata 547 | NAME = "DeviceIds" 548 | TYPE = 7 # for device ids extension 549 | LIST = "device_id_group" 550 | def __init__(self, ab): 551 | self.LoadItems(StructReader(ab), Device_Entry) 552 | 553 | def dump(self, flog=sys.stdout): 554 | print >>flog, "%s [%s]" % (self.Banner(), ", ".join("%08X" % v.device_id for v in self.device_id_group)) 555 | 556 | #*************************************************************************** 557 | 558 | class Device_Entry: 559 | DEVICE_ENTRY = ( 560 | ("device_id", "L", ), # 561 | ("reserved", "L", ), # 562 | ) 563 | def __init__(self, stR): 564 | stR.read(self, self.DEVICE_ENTRY) 565 | 566 | #*************************************************************************** 567 | #*************************************************************************** 568 | #*************************************************************************** 569 | 570 | class Mmio_Ranges_Ext(Extension): # 8 : used in Metadata 571 | NAME = "MmioRanges" 572 | TYPE = 8 # for mmio ranges extension 573 | LIST = "mmio_range_defs" 574 | def __init__(self, ab): 575 | self.LoadItems(StructReader(ab), Mmio_Range_Def) 576 | 577 | def dump(self, flog=sys.stdout): 578 | print >>flog, self.Banner() 579 | # self.PrintItems(flog) 580 | for i,e in enumerate(getattr(self, self.LIST)): print >>flog, " %s" % (e) 581 | 582 | #*************************************************************************** 583 | 584 | class Mmio_Range_Def: 585 | MMIO_RANGE_DEF = ( 586 | ("base", "L", ), # Base address of the MMIO range 587 | ("size", "L", ), # Limit in bytes of the MMIO range 588 | ("flags", "L", ), # Read access Y/N 589 | ) 590 | def __init__(self, stR): 591 | stR.read(self, self.MMIO_RANGE_DEF) 592 | 593 | def __str__(self): 594 | return "base:%08X, size:%08X, flags:%08X" % (self.base, self.size, self.flags) 595 | 596 | #*************************************************************************** 597 | #*************************************************************************** 598 | #*************************************************************************** 599 | 600 | class Special_File_Producer_Ext(Extension): # 9 : used in Metadata 601 | NAME = "SpecialFileProducer" 602 | TYPE = 9 # for special file producer extension 603 | LIST = "files" 604 | SPECIAL_FILE_PRODUCER_EXTENSION = ( 605 | ("major_number", "H", ), # 606 | ("flags", "H", ), # 607 | # SPECIAL_FILE_DEF[] 608 | ) 609 | def __init__(self, ab): 610 | stR = StructReader(ab) 611 | stR.read(self, self.SPECIAL_FILE_PRODUCER_EXTENSION) 612 | self.LoadItems(stR, Special_File_Def) 613 | 614 | def dump(self, flog=sys.stdout): 615 | print >>flog, "%s major_number=0x%04X" % (self.Banner(), self.major_number) 616 | self.PrintItems(flog) 617 | 618 | #*************************************************************************** 619 | 620 | class Special_File_Def: 621 | SPECIAL_FILE_DEF = ( 622 | ("name", "12s", ), # 623 | ("access_mode", "H", ), # 624 | ("user_id", "H", ), # 625 | ("group_id", "H", ), # 626 | ("minor_number", "B", ), # 627 | ("reserved0", "B", ), # 628 | ("reserved1", "L", ), # 629 | ) 630 | def __init__(self, stR): 631 | stR.read(self, self.SPECIAL_FILE_DEF) 632 | self.name = self.name.rstrip('\0') 633 | 634 | def __str__(self): 635 | return "%-12s access_mode:%04o, user_id:0x%04X group_id:0x%04X minor_number:%02X" % (self.name, self.access_mode, self.user_id, self.group_id, self.minor_number) 636 | 637 | #*************************************************************************** 638 | #*************************************************************************** 639 | #*************************************************************************** 640 | 641 | class Mod_Attr_Ext(Extension): # 10 : used in Metadata 642 | NAME = "ModAttr" 643 | TYPE = 10 # for this module attribute extension 644 | # length: In bytes; equals 56 for this version 645 | dCompType = { 646 | COMP_TYPE_NOT_COMPRESSED:" ", 647 | COMP_TYPE_HUFFMAN:"Huff", 648 | COMP_TYPE_LZMA:"LZMA", 649 | } 650 | MOD_ATTR_EXTENSION = ( 651 | ("compression_type", "B", (0,1,2,)), # 0 - Uncompressed; 1 - Huffman Compressed; 2 - LZMA Compressed 652 | ("encrypted", "B", (0,1)), # Used as "encrypted" flag 653 | ("reserved1", "B", 0), # Must be 0 654 | ("reserved2", "B", 0), # Must be 0 655 | ("uncompressed_size", "L", ), # Uncompressed image size must be divisible by 4K 656 | ("compressed_size", "L", ), # Compressed image size. This is applicable for LZMA compressed modules only. For other modules should be the same as uncompressed_size field. 657 | ("module_number", "H", ), # Module number unique in the scope of the vendor. 658 | ("vendor_id", "H", 0x8086), # Vendor ID (PCI style). For Intel modules must be 0x8086. 659 | ("image_hash", "32s", ), # SHA2 Hash of uncompressed image 660 | ) 661 | def __init__(self, ab): 662 | stR = StructReader(ab) 663 | stR.read(self, self.MOD_ATTR_EXTENSION) 664 | self.image_hash = self.image_hash[::-1] # Reverse 665 | stR.done() 666 | 667 | def dump(self, flog=sys.stdout): 668 | print >>flog, "%s %s enc=%d %08X->%08X id:%04X.%04X h:%s" % (self.Banner(), self.dCompType[self.compression_type], self.encrypted, self.compressed_size, self.uncompressed_size, self.module_number, self.vendor_id, self.image_hash.encode("hex")) 669 | 670 | #*************************************************************************** 671 | #*************************************************************************** 672 | #*************************************************************************** 673 | 674 | class Locked_Ranges_Ext(Extension): # 11 : used in Metadata 675 | NAME = "LockedRanges" 676 | TYPE = 11 # for unknown 11 extension 677 | LIST = "ranges" 678 | def __init__(self, ab): 679 | self.LoadItems(StructReader(ab), Locked_Range) 680 | 681 | def dump(self, flog=sys.stdout): 682 | print >>flog, self.Banner() 683 | self.PrintItems(flog) 684 | 685 | #*************************************************************************** 686 | 687 | class Locked_Range: 688 | LOCKED_RANGE = ( 689 | ("base", "L", ), # Base address in VAS of range to be locked. Must be divisible in 4KB. 690 | ("size", "L", ), # Size of range to be locked. Must be divisible in 4KB. 691 | ) 692 | def __init__(self, stR): 693 | stR.read(self, self.LOCKED_RANGE) 694 | 695 | def __str__(self): 696 | return "base:0x%08X, size:%X" % (self.base, self.size) 697 | 698 | #*************************************************************************** 699 | #*************************************************************************** 700 | #*************************************************************************** 701 | 702 | class Client_System_Info_Ext(Extension): # 12 : used in Manifest 703 | NAME = "ClientSystemInfo" 704 | TYPE = 12 # for client system info extension 705 | CLIENT_SYSTEM_INFO_EXTENSION = ( 706 | ("fw_sku_caps", "L", ), # 707 | ("fw_sku_caps_reserved", "28s", '\xFF'*28), # 708 | ("bf_fw_sku_attributes", "Q", ), # Bits 0:3 - CSE region size in multiples of 0.5 MB Bits 4:6 - firmware sku; 0 for 5.0MB 1 for 1.5MB 2 for slim sku. Bit 7 - Patsberg support Y/N Bit 8 - M3 support Y/N Bit 9 - M0 support Y/N Bits 10:11 - reserved Bits 12:15 - Si class (all H M L) Bits 16:63 - reserved 709 | ) 710 | 711 | def __init__(self, ab): 712 | stR = StructReader(ab) 713 | stR.read(self, self.CLIENT_SYSTEM_INFO_EXTENSION) 714 | self.attr = Client_System_Sku_Attributes(self.bf_fw_sku_attributes) 715 | stR.done() 716 | 717 | def dump(self, flog=sys.stdout): 718 | print >>flog, self.Banner() 719 | print >>flog, " fw_sku_caps: %x" % self.fw_sku_caps 720 | print >>flog, " fw_sku_attributes: %s" % self.attr 721 | 722 | #*************************************************************************** 723 | 724 | class Client_System_Sku_Attributes: 725 | dFirmwareSKU = { 726 | 0: "5.0MB", 727 | 1: "1.5MB", 728 | 2: "Slim", 729 | 3: "SPS", 730 | } 731 | CLIENT_SYSTEM_SKU_ATTRIBUTES = ( # BitFields 732 | ("CSE_region_size", 0, 3), # Bits 0:3 - CSE region size in multiples of 0.5 MB 733 | ("firmware_sku", 4, 6), # Bits 4:6 - firmware sku; 0 for 5.0MB 1 for 1.5MB 2 for slim sku. 734 | ("Patsberg", 7, 7), # Bit 7 - Patsberg support Y/N 735 | ("M3", 8, 8), # Bit 8 - M3 support Y/N 736 | ("M0", 9, 9), # Bit 9 - M0 support Y/N 737 | # ("reserved0", 10, 11), # Bits 10:11 - reserved 738 | ("Si_class", 12, 15), # Bits 12:15 - Si class (all H M L) 739 | # ("reserved1", 16, 63), # Bits 16:63 - reserved 740 | ) 741 | def __init__(self, qw): 742 | BitFields(self, qw, self.CLIENT_SYSTEM_SKU_ATTRIBUTES) 743 | 744 | def __str__(self): 745 | return "CSE region size: %.2f, firmware sku: %s, Si class: %X, %s" % (0.5*self.CSE_region_size, self.dFirmwareSKU[self.firmware_sku], self.Si_class, ", ".join(ListTrueBools(self, self.CLIENT_SYSTEM_SKU_ATTRIBUTES))) 746 | 747 | #*************************************************************************** 748 | #*************************************************************************** 749 | #*************************************************************************** 750 | 751 | class User_Info_Ext(Extension): # 13 : used in Manifest 752 | NAME = "UserInfo" 753 | TYPE = 13 # for user info extension 754 | LIST = "users" 755 | def __init__(self, ab): 756 | try: 757 | self.LoadItems(StructReader(ab), User_Info_Entry) 758 | except: 759 | self.LoadItems(StructReader(ab), User_Info_Entry_new) 760 | 761 | def dump(self, flog=sys.stdout): 762 | print >>flog, self.Banner() 763 | self.PrintItems(flog) 764 | 765 | #*************************************************************************** 766 | 767 | class User_Info_Entry: 768 | USER_INFO_ENTRY = ( 769 | ("user_id", "H", ), # User ID. 770 | ("reserved", "H", (0,1)), # Must be 0. 771 | ("non_volatile_storage_quota","L", ), # Maximum size of non-volatile storage area. 772 | ("ram_storage_quota", "L", ), # Maximum size of RAM storage area. 773 | ("wop_quota", "L", ), # Quota to use in wear-out prevention algorithm; in most cases this should match the non-volatile storage quota; however it is possible to virtually add quota to a user to allow it to perform more write operations on expense of another user. At build time the build system will check that the sum of all users WOP quota is not more than the sum of all users non-volatile storage quota. 774 | ("working_dir", "36s", ), # Starting directory for the user. Used when accessing files with a relative path. Character array; if name length is shorter than field size the name is padded with 0 bytes. 775 | ) 776 | def __init__(self, stR): 777 | stR.read(self, self.USER_INFO_ENTRY) 778 | self.working_dir = self.working_dir.rstrip('\0') 779 | assert self.working_dir.find('\0') < 0 780 | 781 | def __str__(self): 782 | return "user id:0x%04X, NV quota:%8X, RAM quota:%8X, WOP quota:%8X, working dir: [%s]" % (self.user_id, self.non_volatile_storage_quota, self.ram_storage_quota, self.wop_quota, self.working_dir) 783 | 784 | #*************************************************************************** 785 | 786 | class User_Info_Entry_new: 787 | USER_INFO_ENTRY = ( 788 | ("user_id", "H", ), # User ID. 789 | ("reserved", "H", 0), # Must be 0. 790 | ("non_volatile_storage_quota","L", ), # Maximum size of non-volatile storage area. 791 | ("ram_storage_quota", "L", ), # Maximum size of RAM storage area. 792 | ("wop_quota", "L", ), # Quota to use in wear-out prevention algorithm; in most cases this should match the non-volatile storage quota; however it is possible to virtually add quota to a user to allow it to perform more write operations on expense of another user. At build time the build system will check that the sum of all users WOP quota is not more than the sum of all users non-volatile storage quota. 793 | ) 794 | def __init__(self, stR): 795 | stR.read(self, self.USER_INFO_ENTRY) 796 | 797 | def __str__(self): 798 | return "user id:0x%04X, NV quota:%8X, RAM quota:%8X, WOP quota:%8X" % (self.user_id, self.non_volatile_storage_quota, self.ram_storage_quota, self.wop_quota) 799 | 800 | #*************************************************************************** 801 | #*************************************************************************** 802 | #*************************************************************************** 803 | 804 | class Package_Info_Ext(Extension): # 15 : used in TXE Mainfist 805 | NAME = "PackageInfo" 806 | TYPE = 15 # for partition info extension 807 | LIST = "modules" 808 | SIGNED_PACKAGE_INFO_EXT = ( 809 | ("package_name", "4s", ), # Name of the partition 810 | ("version_control_number", "L", ), # The version control number (VCN) is incremented whenever a change is made to the FW that makes it incompatible from an update perspective with previously released versions of the FW. 811 | ("usage_bitmap", "16s", ), # Bitmap of usages depicted by this manifest, indicating which key is used to sign the manifest 812 | ("svn", "L", ), # Secure Version Number 813 | ("unknown", "L", ), # 814 | ("reserved", "12s", '\x00'*12), # Must be 0 815 | # SIGNED_PACKAGE_INFO_EXT_ENTRY[] # Module info extension entries 816 | ) 817 | def __init__(self, ab): 818 | stR = StructReader(ab) 819 | stR.read(self, self.SIGNED_PACKAGE_INFO_EXT) 820 | self.package_name = self.package_name.rstrip('\0') 821 | self.LoadItems(stR, Package_Info_Ext_Entry) 822 | 823 | def dump(self, flog=sys.stdout): 824 | print >>flog, self.Banner(True) 825 | print >>flog, " Name: [%s]" % self.package_name 826 | print >>flog, " VCN: %d" % self.version_control_number 827 | print >>flog, " Usage Bitmap: %s" % self.usage_bitmap.encode("hex") 828 | print >>flog, " svn: %d" % self.svn 829 | print >>flog, " unknown: 0x%X" % self.unknown 830 | print >>flog, " Modules[%d]:" % len(self.modules) 831 | self.PrintItems(flog) 832 | 833 | #*************************************************************************** 834 | 835 | class Package_Info_Ext_Entry: 836 | dModType = { 837 | PROCESS_TYPE: "Proc", # 0 838 | SHARED_LIBRARY_TYPE: "Lib ", # 1 839 | DATA_TYPE: "Data", # 2 840 | IUNIT_TYPE: "iUnt", # 3 v12 841 | } 842 | dHashAlgorithm = { 843 | 1: "SHA1", 844 | 2: "SHA256", 845 | } 846 | SIGNED_PACKAGE_INFO_EXT_ENTRY = ( 847 | ("name", "12s", ), # Character array. If name length is shorter than field size the name is padded with 0 bytes 848 | ("type", "B", (0,1,2,3)), # 0 - Process; 1 - Shared Library; 2 - Data; 3 - iUnit 849 | ("hash_algorithm", "B", 2), # 0 - Reserved; 1 - SHA1; 2 - SHA256 850 | ("hash_size", "H", 32), # Size of Hash in bytes = N; BXT to support only SHA256. So N=32. 851 | ("metadata_size", "L", ), # Size of metadata file 852 | ("metadata_hash", "32s" ), # The SHA2 of the module metadata file 853 | ) 854 | def __init__(self, stR): 855 | stR.read(self, self.SIGNED_PACKAGE_INFO_EXT_ENTRY) 856 | self.name = self.name.rstrip('\0') 857 | self.metadata_hash = self.metadata_hash[::-1] # Reverse 858 | 859 | def __str__(self): 860 | return "%-4s, Meta cb:%4X h=%s[%d]:%s %s" % (self.dModType[self.type], self.metadata_size, self.dHashAlgorithm[self.hash_algorithm], self.hash_size, self.metadata_hash.encode("hex"), self.name) 861 | 862 | #*************************************************************************** 863 | #*************************************************************************** 864 | #*************************************************************************** 865 | 866 | class Unk_16_Ext(Extension): # 16 : used in Manifest (for iUnit) 867 | NAME = "Unk_iUnit_16" 868 | TYPE = 16 # for iUnit extension 869 | UNK_IUNIT_16_EXT = ( 870 | ("v0_1", "L", 1), # 871 | ("unk16", "16s", '\0'*16), # 872 | ("v2_3", "L", 3), # 873 | ("v3", "L", ), # 874 | ("v4_1", "L", 1), # 875 | ("h", "32s", ), # 876 | ("reserved", "24s", '\0'*24), # 877 | ) 878 | def __init__(self, ab): 879 | stR = StructReader(ab) 880 | stR.read(self, self.UNK_IUNIT_16_EXT) 881 | # self.h = self.h[::-1] # Reverse? 882 | stR.done() 883 | 884 | def dump(self, flog=sys.stdout): 885 | print >>flog, self.Banner() 886 | print >>flog, " %X %X %X %X h=%s" % (self.v0_1, self.v2_3, self.v3, self.v4_1, self.h.encode("hex")) 887 | 888 | #*************************************************************************** 889 | #*************************************************************************** 890 | #*************************************************************************** 891 | 892 | class Unk_18_Ext(Extension): # 18 : used in Manifest 893 | NAME = "Unk_18" 894 | TYPE = 18 # for user info extension 895 | LIST = "records" 896 | UNK_18_EXT = ( 897 | ("items", "L", ), # 898 | ("unk", "16s", ), # 899 | ) 900 | def __init__(self, ab): 901 | stR = StructReader(ab) 902 | stR.read(self, self.UNK_18_EXT) 903 | self.LoadItems(stR, Unk_18_Ext_Entry) 904 | 905 | def dump(self, flog=sys.stdout): 906 | print >>flog, self.Banner() 907 | print >>flog, " Records[%d] %s:" % (self.items, self.unk.encode("hex")) 908 | self.PrintItems(flog) 909 | 910 | #*************************************************************************** 911 | 912 | class Unk_18_Ext_Entry: 913 | UNK_18_EXT_ENTRY = ( 914 | ("ab", "56s", ), # 915 | ) 916 | def __init__(self, stR): 917 | stR.read(self, self.UNK_18_EXT_ENTRY) 918 | 919 | def __str__(self): 920 | return self.ab.encode("hex") 921 | 922 | #*************************************************************************** 923 | #*************************************************************************** 924 | #*************************************************************************** 925 | 926 | class Unk_22_Ext(Extension): # 22 : used in Manifest (v12) 927 | NAME = "Unk_22" 928 | TYPE = 22 # for v12 extension 929 | UNK_22_EXT = ( 930 | ("name", "4s", ), # 931 | ("unk24", "24s", ), # 932 | ("h", "32s", ), # 933 | ("reserved", "20s", '\0'*20), # 934 | ) 935 | def __init__(self, ab): 936 | stR = StructReader(ab) 937 | stR.read(self, self.UNK_22_EXT) 938 | # self.h = self.h[::-1] # Reverse? 939 | stR.done() 940 | 941 | def dump(self, flog=sys.stdout): 942 | print >>flog, "%s [%s] u=%s h=%s" % (self.Banner(), self.name, self.unk24.encode("hex"), self.h.encode("hex")) 943 | 944 | #*************************************************************************** 945 | #*************************************************************************** 946 | #*************************************************************************** 947 | 948 | class Unk_50_Ext(Extension): # 50 : used in Manifest (HP) 949 | NAME = "Unk_50" 950 | TYPE = 50 # for iUnit extension 951 | UNK_50_EXT = ( 952 | ("name", "4s", ), # 953 | ("dw0", "L", 0), # 954 | ) 955 | def __init__(self, ab): 956 | stR = StructReader(ab) 957 | stR.read(self, self.UNK_50_EXT) 958 | stR.done() 959 | 960 | def dump(self, flog=sys.stdout): 961 | print >>flog, "%s [%s]" % (self.Banner(), self.name) 962 | 963 | #*************************************************************************** 964 | #*************************************************************************** 965 | #*************************************************************************** 966 | 967 | aExtHandlers = ( 968 | System_Info_Ext, # 0 969 | Init_Script_Ext, # 1 970 | Feature_Permissions_Ext, # 2 971 | Partition_Info_Ext, # 3 972 | Shared_Lib_Ext, # 4 973 | Man_Process_Ext, # 5 974 | Threads_Ext, # 6 975 | Device_Ids_Ext, # 7 976 | Mmio_Ranges_Ext, # 8 977 | Special_File_Producer_Ext, # 9 978 | Mod_Attr_Ext, # 10 979 | Locked_Ranges_Ext, # 11 980 | Client_System_Info_Ext, # 12 981 | User_Info_Ext, # 13 982 | # None, # 14 983 | Package_Info_Ext, # 15 984 | Unk_16_Ext, # 16 985 | Unk_18_Ext, # 18 986 | Unk_22_Ext, # 22 987 | Unk_50_Ext, # 50 988 | ) 989 | 990 | dExtHandlers = {ext.TYPE: ext for ext in aExtHandlers} 991 | 992 | def Ext_ParseAll(obj, ab, o=0): 993 | def EnumTags(ab, o=0): 994 | while o < len(ab): 995 | tag, cb = struct.unpack_from("= 8 997 | assert o+cb <= len(ab) 998 | yield tag, ab[o+8:o+cb] 999 | o += cb 1000 | 1001 | obj.extList = [] 1002 | for extType, extData in EnumTags(ab, o): 1003 | ext = dExtHandlers.get(extType, None) 1004 | if ext is not None: 1005 | extObj = ext(extData) 1006 | setattr(obj, ext.NAME, extObj) 1007 | obj.extList.append(extObj) 1008 | # else: raise Error("Extension #%d[%d] not supported" % (extType, len(extData))) 1009 | else: 1010 | parent = obj.name + (".met" if isinstance(obj, CPD_Entry) else "") 1011 | print >>sys.stderr, "- %s: Unknown extType#%d[%d] %s" % (parent, extType, len(extData), extData.encode("hex")) 1012 | 1013 | def Ext_DumpAll(obj, flog=sys.stdout): 1014 | if hasattr(obj, "extList"): 1015 | for extObj in obj.extList: extObj.dump(flog) 1016 | # for ext in aExtHandlers: 1017 | # if hasattr(obj, ext.NAME): getattr(obj, ext.NAME).dump(flog) 1018 | 1019 | #*************************************************************************** 1020 | #*************************************************************************** 1021 | #*************************************************************************** 1022 | 1023 | class CPD_Manifest: 1024 | MARKER = "$MN2" 1025 | MANIFEST_HEADER = ( 1026 | ("type", "L", 4), # Must be 0x4 1027 | ("length", "L", 161), # in Dwords equals 161 for this version 1028 | ("version", "L", 0x10000), # 0x1000 for this version 1029 | ("flags", "L", ), # Debug intel owned 1030 | ("vendor", "L", 0x8086), # 0x8086 for intel 1031 | ("date", "L", ), # yyymmdd in BCD format 1032 | ("size", "L", ), # in Dwords size of the entire manifest. Maximum size is 2K DWORDS (8KB) 1033 | ("header_id", "4s", MARKER), # Magic number. Equals $MN2 for this version 1034 | ("reserved0", "L", ), # Must be 0x4 [not True: it is 0!] 1035 | ("version_major", "H", ), # Major Version [== 11] 1036 | ("version_minor", "H", ), # Minor Version 1037 | ("version_hotfix", "H", ), # Hotfix 1038 | ("version_build", "H", ), # Build number 1039 | ("svn", "L", ), # Secure Version Number 1040 | ("reserved1", "Q", 0), # must be 0 1041 | ("reserved2", "64s", '\0'*64), # will be set to 0 1042 | ("modulus_size", "L", 64), # In DWORDs; 64 for pkcs 1.5-2048 1043 | ("exponent_size", "L", 1), # In DWORDs; 1 for pkcs 1.5-2048 1044 | ) 1045 | CRYPTO_BLOCK = ( 1046 | ("public_key", "256s", ), # Public Key 1047 | ("exponent", "L", ), # Exponent [== 17] 1048 | ("signature", "256s" ), # RSA signature of manifest 1049 | ) 1050 | def __init__(self, ab, name): 1051 | self.name = name 1052 | self.stR = StructReader(ab) 1053 | self.stR.read(self, self.MANIFEST_HEADER) 1054 | self.stR.read(self, self.CRYPTO_BLOCK) 1055 | assert 4*self.size == len(ab) 1056 | Ext_ParseAll(self, ab, 4*self.length) # Parse all Extensions 1057 | 1058 | if 12 == self.version_major: g.HuffDecoder = HuffDecoder12 1059 | 1060 | def dump(self, flog=sys.stdout): 1061 | print >>flog, "CPD Manifest" 1062 | print >>flog, " Date: %08X" % self.date 1063 | print >>flog, " Version: %d.%d.%d.%d" % (self.version_major, self.version_minor, self.version_hotfix, self.version_build) 1064 | print >>flog, " SVN: %08X" % self.svn 1065 | 1066 | # Validate RSA Public Key hash 1067 | h = hashlib.sha256(self.public_key + struct.pack(">flog, " RSA Modulus: known[%d]," % aPubKeyHash.index(h), 1070 | except: 1071 | print >>flog, "- RSA Modulus hash %s is unknown\nmod=0x%s" % (h.encode("hex"), self.public_key[::-1].encode("hex").upper()) 1072 | 1073 | # Validate RSA Signatire 1074 | h = hashlib.sha256(self.stR.ab[:0x80] + self.stR.ab[4*self.length:]).digest() 1075 | modulus = int(self.public_key[::-1].encode("hex"), 16) 1076 | sign = int(self.signature[::-1].encode("hex"), 16) 1077 | decoded = ("%0512X" % pow(sign, self.exponent, modulus)).decode("hex") 1078 | expected = "\x00\x01" + "\xFF"*202 + "003031300D060960864801650304020105000420".decode("hex") + h 1079 | print >>flog, "Exponent:%d, Verification:%s, SigHash: %s" % (self.exponent, "OK" if decoded == expected else "FAILED", hashlib.sha256(self.signature).hexdigest().upper()) 1080 | Ext_DumpAll(self, flog) # Dump all extensions 1081 | 1082 | #*************************************************************************** 1083 | #*************************************************************************** 1084 | #*************************************************************************** 1085 | 1086 | class CPD_Entry: 1087 | CPD_ENTRY_OFFSET = ( # BitFields 1088 | ("address", 0, 24), 1089 | ("compress_flag", 25, 25), 1090 | # ("offset_reserved", 26, 31), 1091 | ) 1092 | CPD_ENTRY = ( 1093 | ("name", "12s", ), 1094 | ("bf_offset", "L", ), 1095 | ("length", "L", ), 1096 | ("reserved", "L", ), 1097 | ) 1098 | def __init__(self, parent): 1099 | self.cpd = parent 1100 | self.cpd.stR.read(self, self.CPD_ENTRY) 1101 | self.name = self.name.rstrip('\0') 1102 | BitFields(self, self.bf_offset, self.CPD_ENTRY_OFFSET) 1103 | self.mod = None 1104 | self.metadata = None 1105 | 1106 | def __str__(self): 1107 | return "%-12s %s %8X %-8X" % (self.name, "HUFF" if self.compress_flag else " ", self.address, self.length) 1108 | 1109 | def getData(self): 1110 | return self.cpd.stR.getData(self.address, self.ModAttr.compressed_size if self.compress_flag else self.length) 1111 | 1112 | def saveRaw(self, baseDir, name=None): 1113 | if name is None: name = self.name 1114 | with open (os.path.join(baseDir, name), "wb") as fo: fo.write(self.getData()) 1115 | 1116 | #*************************************************************************** 1117 | #*************************************************************************** 1118 | #*************************************************************************** 1119 | 1120 | class CPD: # Code Partition Directory 1121 | MARKER = "$CPD" 1122 | CPD_HEADER = ( 1123 | ("marker", "4s", MARKER), 1124 | ("entries", "L", ), 1125 | ("header_version", "B", 0x01), 1126 | ("entry_version", "B", 0x01), 1127 | ("header_length", "B", 0x10), 1128 | ("checksum", "B", ), 1129 | ("partition_name", "4s", ), 1130 | ) 1131 | def __init__(self, ab, base): 1132 | self.stR = StructReader(ab, base) 1133 | self.stR.read(self, self.CPD_HEADER) # Read header 1134 | self.partition_name = self.partition_name.rstrip('\0') 1135 | self.files = [CPD_Entry(self) for i in xrange(self.entries)] # Read directory entries 1136 | self.d = {e.name:e for e in self.files} # Dict maps name CPD_Entry 1137 | 1138 | e = self.files[0] # Access Manifest (very first entry in lookup table) 1139 | self.Manifest = CPD_Manifest(e.getData(), e.name) if e.name.endswith(".man") else None 1140 | # assert self.partition_name + ".man" == e.name 1141 | 1142 | self.modules = None 1143 | if self.Manifest: 1144 | if hasattr(self.Manifest, "PackageInfo"): 1145 | self.modules = self.Manifest.PackageInfo.modules 1146 | elif hasattr(self.Manifest, "PartitionInfo"): 1147 | self.modules = self.Manifest.PartitionInfo.modules 1148 | if len(self.files) != 1 + 2*len(self.modules): # Manfest + nFiles * (Data + Metadata) 1149 | print >>sys.stderr, "- Partition holds %d files but only %d module[s] (%d expected)" % (len(self.files), len(self.modules), (len(self.files)-1)/2) 1150 | 1151 | if self.modules: # Try to attach Module Info and Metadata to Entry 1152 | for i,mod in enumerate(self.modules): # Walk through modules listed in partion manifest 1153 | e = self.d[mod.name] # Access CPD_Entry by module name 1154 | e.mod = mod # Attach Module Info to entry 1155 | metaName = e.name if e.name.endswith(".met") else e.name + ".met" 1156 | e.metadata = self.d[metaName].getData() # Get Metadata content 1157 | assert len(e.metadata) == e.mod.metadata_size # Check Metadata length 1158 | # assert hashlib.sha256(e.metadata).digest() == mod.metadata_hash # Check Metadata hash 1159 | if hashlib.sha256(e.metadata).digest() != e.mod.metadata_hash: # Check Metadata hash 1160 | print >>sys.stderr, "MetaHash %s[%d]: %s != %s" % (e.name, e.mod.metadata_size, hashlib.sha256(e.metadata).hexdigest(), e.mod.metadata_hash.encode("hex")) 1161 | Ext_ParseAll(e, e.metadata) # Parse all Metadata Extensions and store them in CPD_Entry 1162 | 1163 | def dump(self, flog=sys.stdout, baseDir=None): 1164 | print >>flog, "%08X: CPD %-4s.%02X [%d]" % (self.stR.base, self.partition_name, self.checksum, self.entries) 1165 | if baseDir is not None: 1166 | baseDir = os.path.join(baseDir, "%08X.%s" % (self.stR.base, self.partition_name)) 1167 | if not os.path.exists(baseDir): os.makedirs(baseDir) 1168 | if self.Manifest: 1169 | with open(os.path.join(baseDir, "Manifest.txt"), "wt") as fo: self.Manifest.dump(fo) 1170 | if self.Manifest: self.Manifest.dump(flog) 1171 | 1172 | print >>flog, "\nCPD Files[%d]:" % len(self.files) 1173 | for i,e in enumerate(self.files): 1174 | print >>flog, "=================================\n%4d: %s" % (i+1, e) 1175 | Ext_DumpAll(e, flog) # Dump all Metadata Extensions 1176 | if baseDir is None: continue 1177 | 1178 | fileName = e.name 1179 | fileExt = os.path.splitext(fileName)[1] 1180 | bSaveRaw = False 1181 | if ".man" == fileExt: # CPD Manifest 1182 | if g.dumpManifest: bSaveRaw = True 1183 | elif ".met" == fileExt: # Module Metadata 1184 | if g.dumpMeta: bSaveRaw = True 1185 | else: # Module 1186 | if e.metadata: # Module (with metadata) 1187 | if g.dumpRaw: 1188 | bSaveRaw = True 1189 | fileName += ".raw" 1190 | else: bSaveRaw = True # Not a module (without metadata) - always dump "as is" 1191 | if bSaveRaw: e.saveRaw(baseDir, fileName) # Save raw file data (compressed/encrypted) 1192 | 1193 | if e.metadata: # Only for modules with metadata 1194 | with open(os.path.join(baseDir, "%s.txt" % e.name), "wt") as fo: # Dump module info 1195 | print >>fo, "%4d: %s" % (i+1, e) 1196 | Ext_DumpAll(e, fo) # Dump all Metadata Extensions 1197 | 1198 | if not hasattr(e, "ModAttr"): 1199 | e.saveRaw(baseDir) 1200 | continue 1201 | 1202 | compType = dCompType[e.ModAttr.compression_type] 1203 | data = e.getData() 1204 | if e.ModAttr.encrypted: 1205 | print >>sys.stderr, "- Module %s is encrypted" % e.name 1206 | 1207 | if "huff" == compType: 1208 | assert e.length == e.ModAttr.uncompressed_size 1209 | nChunks, left = divmod(e.length, 0x1000) 1210 | assert 0 == left 1211 | 1212 | plain = decompress(data, compType, e.length) 1213 | 1214 | hashChecked = False 1215 | if "huff" != compType and hashlib.sha256(data).digest() == e.ModAttr.image_hash: 1216 | # print "%8s: data" % e.name 1217 | hashChecked = True 1218 | 1219 | if plain: 1220 | if not hashChecked: 1221 | # assert hashlib.sha256(plain).digest() == e.ModAttr.image_hash 1222 | if hashlib.sha256(plain).digest() == e.ModAttr.image_hash: 1223 | hashChecked = True 1224 | # print "%8s: plain" % e.name 1225 | 1226 | with open(os.path.join(baseDir, "%s.mod" % e.name), "wb") as fo: fo.write(plain) 1227 | else: 1228 | if "huff" == compType: 1229 | chunks = HUFF_chunks(nChunks, data) 1230 | chunks.save(os.path.join(baseDir, "%s.%s" % (e.name, compType))) 1231 | if g.dumpChunks: chunks.dump(os.path.join(baseDir, "%s" % e.name)) 1232 | else: 1233 | with open(os.path.join(baseDir, "%s.%s" % (e.name, compType)), "wb") as fo: 1234 | fo.write(data) 1235 | if not hashChecked: print >>sys.stderr, "- hash %s.%s[%s]: %s" % (self.partition_name, e.name, compType, e.ModAttr.image_hash.encode("hex")) 1236 | # print 1237 | 1238 | #*************************************************************************** 1239 | #*************************************************************************** 1240 | #*************************************************************************** 1241 | 1242 | class HUFF_chunks: 1243 | def __init__(self, nChunks, data=None): 1244 | if isinstance(nChunks, str): 1245 | fn = nChunks 1246 | with open(fn, "rb") as f: 1247 | nChunks = struct.unpack(">flog, "NumFptEntries: %d" % self.NumFptEntries 1367 | print >>flog, "HeaderVersion: %d.%d" % divmod(self.HeaderVersion, 16) 1368 | print >>flog, "EntryVersion: %d.%d" % divmod(self.EntryVersion, 16) 1369 | print >>flog, "HeaderLength: 0x%02X" % self.HeaderLength 1370 | print >>flog, "HeaderChecksum: 0x%02X" % self.HeaderChecksum 1371 | print >>flog, "TicksToAdd: 0x%04X" % self.TicksToAdd 1372 | print >>flog, "TokensToAdd: 0x%04X" % self.TokensToAdd 1373 | print >>flog, "FlashLayout: 0x%X" % self.FlashLayout 1374 | print >>flog, "Fitc: %d.%d.%d.%d" % (self.FitcMajor, self.FitcMinor, self.FitcHotfix, self.FitcBuild) 1375 | print >>flog, "ROM Bypass instruction: %s" % (self.RomBypass.encode("hex") if self.RomBypass.rstrip('\0') else "") 1376 | for i,e in enumerate(self.partitions): 1377 | print >>flog, "%4d: %s" % (i+1, e) 1378 | if baseDir is None: continue # Do not write files 1379 | data = e.getData() 1380 | if data: 1381 | with open(os.path.join(baseDir, "%08X.%d.%s.part" % (e.offset, e.attributes.type, e.name)), "wb") as fo: 1382 | fo.write(data) 1383 | 1384 | #*************************************************************************** 1385 | #*************************************************************************** 1386 | #*************************************************************************** 1387 | 1388 | class ME11: 1389 | def __init__(self, fn): 1390 | self.fn = fn 1391 | with open (self.fn, "rb") as f: self.ab = f.read() 1392 | 1393 | for o in xrange(0, len(self.ab), 0x1000): # Search for FPT 1394 | if not self.ab[o+16:o+16+4] == FPT.MARKER: continue 1395 | self.fpt = FPT(self.ab, o) 1396 | break 1397 | else: 1398 | print "FPT not found" 1399 | self.fpt = None 1400 | # raise Error("FPT not found") 1401 | 1402 | o = 0 1403 | self.CPDs = [] 1404 | while True: # Search for CPDs 1405 | o = self.ab.find(CPD.MARKER, o) 1406 | if o < 0: break 1407 | if "\x01\x01\x10" == self.ab[o+8:o+11]: 1408 | # print "%s at %08X" % (CPD.MARKER, o) 1409 | print ". Processing CPD at 0x%X" % o 1410 | self.CPDs.append(CPD(self.ab, o)) 1411 | # try: except: pass 1412 | o += 4 1413 | 1414 | def dump(self): 1415 | baseDir = os.path.splitext(self.fn)[0] 1416 | # baseDir = None 1417 | if baseDir: 1418 | if not os.path.exists(baseDir): os.makedirs(baseDir) 1419 | flog = open(baseDir + ".txt", "wt") 1420 | else: flog = sys.stdout 1421 | 1422 | if self.fpt: self.fpt.dump(flog, baseDir) 1423 | 1424 | for cpd in self.CPDs: 1425 | print >>flog 1426 | cpd.dump(flog, baseDir) 1427 | 1428 | if flog != sys.stdout: flog.close() 1429 | 1430 | #*************************************************************************** 1431 | #*************************************************************************** 1432 | #*************************************************************************** 1433 | 1434 | def main(argv): 1435 | for fn in argv[1:]: 1436 | me = ME11(fn) 1437 | me.dump() 1438 | 1439 | if __name__=="__main__": main(sys.argv) 1440 | --------------------------------------------------------------------------------