comparison pirelli/preboot.disasm @ 68:6a136554378e

pirelli preboot re: figured out the triggering condition
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Mon, 10 Feb 2014 02:33:17 +0000
parents 88cf9811f97c
children
comparison
equal deleted inserted replaced
67:88cf9811f97c 68:6a136554378e
189 2f0: 000002a9 189 2f0: 000002a9
190 190
191 2f4: 4700 bx r0 191 2f4: 4700 bx r0
192 2f6: 0000 192 2f6: 0000
193 193
194 ; Thumb call trampoline to 0x818f2c
195 ; offset 0x8AA8 from start of copy
196 ; should be at 0xAFB0 in flash
194 2f8: b082 sub sp, #8 197 2f8: b082 sub sp, #8
195 2fa: 9400 str r4, [sp, #0] 198 2fa: 9400 str r4, [sp, #0]
196 2fc: 4c01 ldr r4, [pc, #4] (0x304) 199 2fc: 4c01 ldr r4, [pc, #4] (0x304)
197 2fe: 9401 str r4, [sp, #4] 200 2fe: 9401 str r4, [sp, #4]
198 300: bd10 pop {r4, pc} 201 300: bd10 pop {r4, pc}
387 390
388 2500: 00000000 391 2500: 00000000
389 2504: ffffffff 392 2504: ffffffff
390 393
391 2508: 0xAA88 bytes copied to IRAM 394 2508: 0xAA88 bytes copied to IRAM
395
396 ad8c: b5f0 push {r4, r5, r6, r7, lr}
397 ad8e: 4643 mov r3, r8
398 ad90: 464c mov r4, r9
399 ad92: b418 push {r3, r4}
400 ad94: b08b sub sp, #44
401 ad96: 4690 mov r8, r2
402 ad98: 1c0f mov r7, r1 (add r7, r1, #0)
403 ad9a: 4684 mov ip, r0
404 ad9c: 1c3e mov r6, r7 (add r6, r7, #0)
405 ad9e: 1c31 mov r1, r6 (add r1, r6, #0)
406 ada0: aa09 add r2, sp, #36
407 ada2: 2305 mov r3, #5
408 ada4: ffdcf7ff bl 0xad60
409 ada8: 2800 cmp r0, #0
410 adaa: d079 beq 0xaea0
411 adac: 4660 mov r0, ip
412 adae: 3005 add r0, #5
413 adb0: 4684 mov ip, r0
414 adb2: 3f05 sub r7, #5
415 adb4: 2400 mov r4, #0
416 adb6: 2500 mov r5, #0
417 adb8: 4660 mov r0, ip
418 adba: 1c39 mov r1, r7 (add r1, r7, #0)
419 adbc: 221d mov r2, #29
420 adbe: 446a add r2, sp
421 adc0: 2301 mov r3, #1
422 adc2: ffcdf7ff bl 0xad60
423 adc6: 2800 cmp r0, #0
424 adc8: d06a beq 0xaea0
425 adca: 4660 mov r0, ip
426 adcc: 3001 add r0, #1
427 adce: 4684 mov ip, r0
428 add0: 3f01 sub r7, #1
429 add2: 4668 mov r0, sp
430 add4: 7f40 ldrb r0, [r0, #29]
431 add6: 00e9 lsl r1, r5, #3
432 add8: 4088 lsl r0, r1
433 adda: 1904 add r4, r0, r4
434 addc: 3501 add r5, #1
435 adde: 2d04 cmp r5, #4
436 ade0: dbea blt 0xadb8
437 ade2: 2000 mov r0, #0
438 ade4: 43c0 mvn r0, r0
439 ade6: 4284 cmp r4, r0
440 ade8: d05a beq 0xaea0
441 adea: 2504 mov r5, #4
442 adec: 4660 mov r0, ip
443 adee: 1c39 mov r1, r7 (add r1, r7, #0)
444 adf0: aa07 add r2, sp, #28
445 adf2: 2301 mov r3, #1
446 adf4: ffb4f7ff bl 0xad60
447 adf8: 2800 cmp r0, #0
448 adfa: d051 beq 0xaea0
449 adfc: 4668 mov r0, sp
450 adfe: 7f00 ldrb r0, [r0, #28]
451 ae00: 2800 cmp r0, #0
452 ae02: d14d bne 0xaea0
453 ae04: 3f01 sub r7, #1
454 ae06: 4660 mov r0, ip
455 ae08: 3001 add r0, #1
456 ae0a: 4684 mov ip, r0
457 ae0c: 3d01 sub r5, #1
458 ae0e: 2d00 cmp r5, #0
459 ae10: d1ec bne 0xadec
460 ae12: 200d mov r0, #13
461 ae14: 1a30 sub r0, r6, r0
462 ae16: 4681 mov r9, r0
463 ae18: 4660 mov r0, ip
464 ae1a: 2800 cmp r0, #0
465 ae1c: d040 beq 0xaea0
466 ae1e: a809 add r0, sp, #36
467 ae20: 7802 ldrb r2, [r0, #0]
468 ae22: a809 add r0, sp, #36
469 ae24: 7800 ldrb r0, [r0, #0]
470 ae26: 28e1 cmp r0, #225
471 ae28: da3a bge 0xaea0
472 ae2a: 4973 ldr r1, [pc, #460] (0xaff8)
473 ae2c: 2500 mov r5, #0
474 ae2e: 2000 mov r0, #0
475 ae30: 2600 mov r6, #0
476 ae32: 2a2e cmp r2, #46
477 ae34: db06 blt 0xae44
478 ae36: 3a2d sub r2, #45
479 ae38: 0612 lsl r2, r2, #24
480 ae3a: 0e12 lsr r2, r2, #24
481 ae3c: 3601 add r6, #1
482 ae3e: 3901 sub r1, #1
483 ae40: 2900 cmp r1, #0
484 ae42: d1f6 bne 0xae32
485 ae44: 496c ldr r1, [pc, #432] (0xaff8)
486 ae46: 2300 mov r3, #0
487 ae48: 2a09 cmp r2, #9
488 ae4a: db06 blt 0xae5a
489 ae4c: 3a09 sub r2, #9
490 ae4e: 0612 lsl r2, r2, #24
491 ae50: 0e12 lsr r2, r2, #24
492 ae52: 3301 add r3, #1
493 ae54: 3901 sub r1, #1
494 ae56: 2900 cmp r1, #0
495 ae58: d1f6 bne 0xae48
496 ae5a: 1899 add r1, r3, r2
497 ae5c: 2703 mov r7, #3
498 ae5e: 023f lsl r7, r7, #8
499 ae60: 408f lsl r7, r1
500 ae62: 4966 ldr r1, [pc, #408] (0xaffc)
501 ae64: 19c9 add r1, r1, r7
502 ae66: 0049 lsl r1, r1, #1
503 ae68: 277f mov r7, #127
504 ae6a: 043f lsl r7, r7, #16
505 ae6c: 42bc cmp r4, r7
506 ae6e: d800 bhi 0xae72
507 ae70: 4d63 ldr r5, [pc, #396] (0xb000)
508 ae72: 2701 mov r7, #1
509 ae74: 043f lsl r7, r7, #16
510 ae76: 42b9 cmp r1, r7
511 ae78: d801 bhi 0xae7e
512 ae7a: 2001 mov r0, #1
513 ae7c: 0600 lsl r0, r0, #24
514 ae7e: 2d00 cmp r5, #0
515 ae80: d00e beq 0xaea0
516 ae82: 2800 cmp r0, #0
517 ae84: d00c beq 0xaea0
518 ae86: 9600 str r6, [sp, #0]
519 ae88: 4666 mov r6, ip
520 ae8a: 9601 str r6, [sp, #4]
521 ae8c: 464e mov r6, r9
522 ae8e: 9602 str r6, [sp, #8]
523 ae90: 9503 str r5, [sp, #12]
524 ae92: 9404 str r4, [sp, #16]
525 ae94: ac08 add r4, sp, #32
526 ae96: 9405 str r4, [sp, #20]
527 ae98: ff1bf000 bl 0xbcd2
528 ae9c: 2800 cmp r0, #0
529 ae9e: d001 beq 0xaea4
530 aea0: 2000 mov r0, #0
531 aea2: e005 b 0xaeb0
532 aea4: 4640 mov r0, r8
533 aea6: 6005 str r5, [r0, #0]
534 aea8: 2028 mov r0, #40
535 aeaa: fbbbf7f7 bl 0x2624
536 aeae: 9808 ldr r0, [sp, #32]
537 aeb0: b00b add sp, #44
538 aeb2: bc18 pop {r3, r4}
539 aeb4: 4698 mov r8, r3
540 aeb6: 46a1 mov r9, r4
541 aeb8: bdf0 pop {r4, r5, r6, r7, pc}
542
543 aeba: b530 push {r4, r5, lr}
544 aebc: b09e sub sp, #120
545 aebe: 2000 mov r0, #0
546 aec0: 43c4 mvn r4, r0
547 aec2: 2000 mov r0, #0
548 aec4: a901 add r1, sp, #4
549 aec6: 2201 mov r2, #1
550 aec8: f8fbf000 bl 0xb0c2
551 aecc: 2800 cmp r0, #0
552 aece: d13c bne 0xaf4a
553 aed0: a801 add r0, sp, #4
554 aed2: a903 add r1, sp, #12
555 aed4: f93df000 bl 0xb152
556 aed8: 2800 cmp r0, #0
557 aeda: d132 bne 0xaf42
558 aedc: 9d03 ldr r5, [sp, #12]
559 aede: 1c28 mov r0, r5 (add r0, r5, #0)
560 aee0: fd90f7ff bl 0xaa04
561 aee4: 2800 cmp r0, #0
562 aee6: d02c beq 0xaf42
563 aee8: 9803 ldr r0, [sp, #12]
564 aeea: fdf6f7ff bl 0xaada
565 aeee: 2800 cmp r0, #0
566 aef0: d027 beq 0xaf42
567 aef2: 2038 mov r0, #56
568 aef4: 1941 add r1, r0, r5
569 aef6: 2230 mov r2, #48
570 aef8: a805 add r0, sp, #20
571 aefa: 780b ldrb r3, [r1, #0]
572 aefc: 7003 strb r3, [r0, #0]
573 aefe: 3101 add r1, #1
574 af00: 3001 add r0, #1
575 af02: 3a01 sub r2, #1
576 af04: 2a00 cmp r2, #0
577 af06: d1f8 bne 0xaefa
578 af08: 2000 mov r0, #0
579 af0a: 9000 str r0, [sp, #0]
580 af0c: 9803 ldr r0, [sp, #12]
581 af0e: 30ff add r0, #255
582 af10: 3079 add r0, #121
583 af12: 9904 ldr r1, [sp, #16]
584 af14: 39ff sub r1, #255
585 af16: 3979 sub r1, #121
586 af18: 466a mov r2, sp
587 af1a: ff37f7ff bl 0xad8c
588 af1e: 1c03 mov r3, r0 (add r3, r0, #0)
589 af20: 2b00 cmp r3, #0
590 af22: d00e beq 0xaf42
591 af24: 20ff mov r0, #255
592 af26: 3071 add r0, #113
593 af28: 5940 ldr r0, [r0, r5]
594 af2a: fd5df7ff bl 0xa9e8
595 af2e: 1c02 mov r2, r0 (add r2, r0, #0)
596 af30: 9800 ldr r0, [sp, #0]
597 af32: 1c19 mov r1, r3 (add r1, r3, #0)
598 af34: fbcef000 bl 0xb6d4
599 af38: 2800 cmp r0, #0
600 af3a: d101 bne 0xaf40
601 af3c: 2400 mov r4, #0
602 af3e: e000 b 0xaf42
603 af40: e000 b 0xaf44
604 af42: a801 add r0, sp, #4
605 af44: 2100 mov r1, #0
606 af46: f9d5f000 bl 0xb2f4
607 af4a: 2001 mov r0, #1
608 af4c: a901 add r1, sp, #4
609 af4e: 2201 mov r2, #1
610 af50: f8b7f000 bl 0xb0c2
611 af54: 2800 cmp r0, #0
612 af56: d129 bne 0xafac
613 af58: a801 add r0, sp, #4
614 af5a: a903 add r1, sp, #12
615 af5c: f8f9f000 bl 0xb152
616 af60: 2800 cmp r0, #0
617 af62: d123 bne 0xafac
618 af64: 9903 ldr r1, [sp, #12]
619 af66: aa11 add r2, sp, #68
620 af68: 2000 mov r0, #0
621 af6a: 780b ldrb r3, [r1, #0]
622 af6c: 5483 strb r3, [r0, r2]
623 af6e: 3101 add r1, #1
624 af70: 3001 add r0, #1
625 af72: 2834 cmp r0, #52
626 af74: d3f9 bcc 0xaf6a
627 af76: a801 add r0, sp, #4
628 af78: 2100 mov r1, #0
629 af7a: f9bbf000 bl 0xb2f4
630 af7e: 2001 mov r0, #1
631 af80: a901 add r1, sp, #4
632 af82: 2202 mov r2, #2
633 af84: f89df000 bl 0xb0c2
634 af88: 2800 cmp r0, #0
635 af8a: d10f bne 0xafac
636 af8c: 2c00 cmp r4, #0
637 af8e: d101 bne 0xaf94
638 af90: 2003 mov r0, #3
639 af92: 9011 str r0, [sp, #68]
640 af94: a801 add r0, sp, #4
641 af96: a911 add r1, sp, #68
642 af98: 2234 mov r2, #52
643 af9a: f8fdf000 bl 0xb198
644 af9e: a801 add r0, sp, #4
645 afa0: 2100 mov r1, #0
646 afa2: f9a7f000 bl 0xb2f4
647 afa6: 2063 mov r0, #99
648 afa8: fb3cf7f7 bl 0x2624
649 afac: b01e add sp, #120
650 afae: bd30 pop {r4, r5, pc}
651
652 ; This is the first function in the copied code,
653 ; called from the boot entry code.
654 afb0: b510 push {r4, lr}
655 afb2: b084 sub sp, #16
656 afb4: 2001 mov r0, #1
657 afb6: 4669 mov r1, sp
658 afb8: 2201 mov r2, #1
659 afba: f882f000 bl 0xb0c2
660 afbe: 2800 cmp r0, #0
661 afc0: d118 bne 0xaff4
662 afc2: 4668 mov r0, sp
663 afc4: a902 add r1, sp, #8
664 afc6: f8c4f000 bl 0xb152
665 afca: 1c04 mov r4, r0 (add r4, r0, #0)
666 afcc: 4668 mov r0, sp
667 afce: 2100 mov r1, #0
668 afd0: f990f000 bl 0xb2f4
669 afd4: 2c00 cmp r4, #0
670 afd6: d10d bne 0xaff4
671 afd8: 9802 ldr r0, [sp, #8]
672 afda: 6800 ldr r0, [r0, #0]
673 afdc: 2802 cmp r0, #2
674 afde: d109 bne 0xaff4
675 afe0: fb70f7f7 bl 0x26c4
676 afe4: fa90f7f7 bl 0x2508
677 afe8: fac3f7f7 bl 0x2572
678 afec: ff65f7ff bl 0xaeba
679 aff0: f9acf7f8 bl 0x334c
680 aff4: b004 add sp, #16
681 aff6: bd10 pop {r4, pc}
682
683 ; This function ensures that the flash at the given address
684 ; is not toggling.
685 b004: 8802 ldrh r2, [r0, #0]
686 b006: 8801 ldrh r1, [r0, #0]
687 b008: 404a eor r2, r1
688 b00a: 09d1 lsr r1, r2, #7
689 b00c: d2fa bcs 0xb004
690 b00e: 4770 bx lr
691
692 b010: b530 push {r4, r5, lr}
693 b012: 1c0c mov r4, r1 (add r4, r1, #0)
694 b014: 1c05 mov r5, r0 (add r5, r0, #0)
695 b016: fa87f000 bl 0xb528
696 b01a: 0400 lsl r0, r0, #16
697 b01c: 0c00 lsr r0, r0, #16
698 b01e: 49e1 ldr r1, [pc, #900] (0xb3a4)
699 b020: 4288 cmp r0, r1
700 b022: d008 beq 0xb036
701 b024: 2121 mov r1, #33
702 b026: 0209 lsl r1, r1, #8
703 b028: 4288 cmp r0, r1
704 b02a: d126 bne 0xb07a
705 b02c: 49ea ldr r1, [pc, #936] (0xb3d8)
706 b02e: 0b28 lsr r0, r5, #12
707 b030: 0300 lsl r0, r0, #12
708 b032: 1808 add r0, r1, r0
709 b034: e003 b 0xb03e
710 b036: 49e8 ldr r1, [pc, #928] (0xb3d8)
711 b038: 0c28 lsr r0, r5, #16
712 b03a: 0400 lsl r0, r0, #16
713 b03c: 1808 add r0, r1, r0
714 b03e: 4ae7 ldr r2, [pc, #924] (0xb3dc)
715 b040: 21aa mov r1, #170
716 b042: 5211 strh r1, [r2, r0]
717 b044: 2155 mov r1, #85
718 b046: 8001 strh r1, [r0, #0]
719 b048: 49e4 ldr r1, [pc, #912] (0xb3dc)
720 b04a: 22a0 mov r2, #160
721 b04c: 520a strh r2, [r1, r0]
722 b04e: 802c strh r4, [r5, #0]
723 b050: 2080 mov r0, #128
724 b052: 4020 and r0, r4
725 b054: 8829 ldrh r1, [r5, #0]
726 b056: 2280 mov r2, #128
727 b058: 400a and r2, r1
728 b05a: 4282 cmp r2, r0
729 b05c: d00d beq 0xb07a
730 b05e: 0989 lsr r1, r1, #6
731 b060: d3f8 bcc 0xb054
732 b062: 8829 ldrh r1, [r5, #0]
733 b064: 2280 mov r2, #128
734 b066: 400a and r2, r1
735 b068: 4282 cmp r2, r0
736 b06a: d006 beq 0xb07a
737 b06c: 2090 mov r0, #144
738 b06e: 8028 strh r0, [r5, #0]
739 b070: 2000 mov r0, #0
740 b072: 8028 strh r0, [r5, #0]
741 b074: 48da ldr r0, [pc, #872] (0xb3e0)
742 b076: 2101 mov r1, #1
743 b078: 7001 strb r1, [r0, #0]
744 b07a: bd30 pop {r4, r5, pc}
745
746 b07c: b530 push {r4, r5, lr}
747 b07e: b081 sub sp, #4
748 b080: 0b01 lsr r1, r0, #12
749 b082: 030b lsl r3, r1, #12
750 b084: 49d7 ldr r1, [pc, #860] (0xb3e4)
751 b086: 18c9 add r1, r1, r3
752 b088: 22aa mov r2, #170
753 b08a: 800a strh r2, [r1, #0]
754 b08c: 4cd2 ldr r4, [pc, #840] (0xb3d8)
755 b08e: 18e4 add r4, r4, r3
756 b090: 2355 mov r3, #85
757 b092: 8023 strh r3, [r4, #0]
758 b094: 2580 mov r5, #128
759 b096: 800d strh r5, [r1, #0]
760 b098: 800a strh r2, [r1, #0]
761 b09a: 8023 strh r3, [r4, #0]
762 b09c: 2130 mov r1, #48
763 b09e: 8001 strh r1, [r0, #0]
764 b0a0: 8801 ldrh r1, [r0, #0]
765 b0a2: 0909 lsr r1, r1, #4
766 b0a4: d3fc bcc 0xb0a0
767 b0a6: 4669 mov r1, sp
768 b0a8: 8802 ldrh r2, [r0, #0]
769 b0aa: 804a strh r2, [r1, #2]
770 b0ac: 466a mov r2, sp
771 b0ae: 8801 ldrh r1, [r0, #0]
772 b0b0: 8011 strh r1, [r2, #0]
773 b0b2: 4669 mov r1, sp
774 b0b4: 8849 ldrh r1, [r1, #2]
775 b0b6: 8812 ldrh r2, [r2, #0]
776 b0b8: 4051 eor r1, r2
777 b0ba: 09c9 lsr r1, r1, #7
778 b0bc: d2f3 bcs 0xb0a6
779 b0be: b001 add sp, #4
780 b0c0: bd30 pop {r4, r5, pc}
781
782 ; arg1: magic region number
783 ; arg2: ptr to 8-byte buffer receiving copies of arg1 and arg3
784 ; arg3: mode, must be 1 or 2
785 ;
786 ; Mode 1: check the region (which must be in a state other than 2) for
787 ; a checksum-passing image, and advance to state 1 if found. If already
788 ; in state 1, increment the byte at offset 8 in struct.
789 ;
790 ; Mode 2: put the region (which must be in state 0) into state 2.
791 ;
792 ; Returns:
793 ; 0 = success
794 ; 1 = region in the wrong state for mode
795 ; 2 = called with bad arguments
796 ; 3 = mode 1: no checksum-passing image found
797
798 b0c2: b5f0 push {r4, r5, r6, r7, lr}
799 b0c4: 1c15 mov r5, r2 (add r5, r2, #0)
800 b0c6: 1c0e mov r6, r1 (add r6, r1, #0)
801 b0c8: 1c04 mov r4, r0 (add r4, r0, #0)
802 b0ca: 4fe5 ldr r7, [pc, #916] (0xb460) =0x810020
803 b0cc: 7838 ldrb r0, [r7, #0]
804 b0ce: 2800 cmp r0, #0
805 b0d0: d103 bne 0xb0da
806 b0d2: f969f000 bl 0xb3a8
807 b0d6: 2001 mov r0, #1
808 b0d8: 7038 strb r0, [r7, #0]
809 b0da: 2c03 cmp r4, #3
810 b0dc: da07 bge 0xb0ee
811 b0de: 2d03 cmp r5, #3
812 b0e0: da05 bge 0xb0ee
813 b0e2: 1e68 sub r0, r5, #1
814 b0e4: 2800 cmp r0, #0
815 b0e6: d019 beq 0xb11c
816 b0e8: 3801 sub r0, #1
817 b0ea: 2800 cmp r0, #0
818 b0ec: d001 beq 0xb0f2
819 ; return 2; means invalid invokation?
820 b0ee: 2002 mov r0, #2
821 b0f0: bdf0 pop {r4, r5, r6, r7, pc}
822 ; goes here if 3rd arg == 2
823 b0f2: 2018 mov r0, #24
824 b0f4: 4360 mul r0, r4
825 b0f6: 49db ldr r1, [pc, #876] (0xb464) =0x810024
826 b0f8: 1809 add r1, r1, r0
827 b0fa: 2004 mov r0, #4
828 b0fc: 1840 add r0, r0, r1
829 b0fe: 6802 ldr r2, [r0, #0]
830 b100: 2a00 cmp r2, #0
831 b102: d112 bne 0xb12a ; return 1;
832 b104: 2202 mov r2, #2
833 b106: 6002 str r2, [r0, #0]
834 b108: 2000 mov r0, #0
835 b10a: 8288 strh r0, [r1, #20]
836 b10c: 6108 str r0, [r1, #16]
837 b10e: 4aea ldr r2, [pc, #936] (0xb4b8) =0x81006C
838 b110: 00a3 lsl r3, r4, #2
839 b112: 58d2 ldr r2, [r2, r3]
840 b114: 6892 ldr r2, [r2, #8]
841 b116: 600a str r2, [r1, #0]
842 b118: 7248 strb r0, [r1, #9]
843 b11a: e016 b 0xb14a
844 ; goes here if 3rd arg == 1
845 b11c: 2018 mov r0, #24
846 b11e: 4360 mul r0, r4
847 b120: 49d1 ldr r1, [pc, #836] (0xb468) =0x810028
848 b122: 180f add r7, r1, r0
849 b124: 6838 ldr r0, [r7, #0]
850 b126: 2802 cmp r0, #2
851 b128: d101 bne 0xb12e
852 ; return 1;
853 b12a: 2001 mov r0, #1
854 b12c: bdf0 pop {r4, r5, r6, r7, pc}
855 ; continuation of operation with arg3 == 1
856 b12e: 2800 cmp r0, #0
857 b130: d108 bne 0xb144
858 b132: 1c20 mov r0, r4 (add r0, r4, #0)
859 b134: f99af000 bl 0xb46c
860 b138: 2800 cmp r0, #0
861 b13a: d001 beq 0xb140
862 b13c: 2003 mov r0, #3
863 b13e: bdf0 pop {r4, r5, r6, r7, pc}
864 b140: 2001 mov r0, #1
865 b142: 6038 str r0, [r7, #0]
866 b144: 7938 ldrb r0, [r7, #4]
867 b146: 3001 add r0, #1
868 b148: 7138 strb r0, [r7, #4]
869 b14a: 6034 str r4, [r6, #0]
870 b14c: 6075 str r5, [r6, #4]
871 b14e: 2000 mov r0, #0
872 b150: bdf0 pop {r4, r5, r6, r7, pc}
873
874 ; arg1: points to buffer filled by successful 0xb0c2 in mode 1
875 ; arg2: 8-byte buffer filled as:
876 ; 0: points to start of image
877 ; 4: image length
878 b152: b530 push {r4, r5, lr}
879 b154: 1c0c mov r4, r1 (add r4, r1, #0)
880 b156: 1c01 mov r1, r0 (add r1, r0, #0)
881 b158: 48c1 ldr r0, [pc, #772] (0xb460) =0x810020
882 b15a: 7800 ldrb r0, [r0, #0]
883 b15c: 2800 cmp r0, #0
884 b15e: d010 beq 0xb182
885 b160: 6808 ldr r0, [r1, #0]
886 b162: 4ad5 ldr r2, [pc, #852] (0xb4b8) =0x81006C
887 b164: 0083 lsl r3, r0, #2
888 b166: 18d5 add r5, r2, r3
889 b168: 2803 cmp r0, #3
890 b16a: da02 bge 0xb172
891 b16c: 6849 ldr r1, [r1, #4]
892 b16e: 2903 cmp r1, #3
893 b170: db01 blt 0xb176
894 b172: 2002 mov r0, #2
895 b174: bd30 pop {r4, r5, pc}
896 b176: 2118 mov r1, #24
897 b178: 4341 mul r1, r0
898 b17a: 4abb ldr r2, [pc, #748] (0xb468) =0x810028
899 b17c: 5851 ldr r1, [r2, r1]
900 b17e: 2901 cmp r1, #1
901 b180: d001 beq 0xb186
902 b182: 2005 mov r0, #5
903 b184: bd30 pop {r4, r5, pc}
904 b186: f95ff000 bl 0xb448
905 b18a: 6840 ldr r0, [r0, #4]
906 b18c: 6060 str r0, [r4, #4]
907 b18e: 6828 ldr r0, [r5, #0]
908 b190: 6880 ldr r0, [r0, #8]
909 b192: 6020 str r0, [r4, #0]
910 b194: 2000 mov r0, #0
911 b196: bd30 pop {r4, r5, pc}
912
913 b2f4: b570 push {r4, r5, r6, lr}
914 b2f6: 1c04 mov r4, r0 (add r4, r0, #0)
915 b2f8: 4859 ldr r0, [pc, #356] (0xb460) =0x810020
916 b2fa: 7800 ldrb r0, [r0, #0]
917 b2fc: 2800 cmp r0, #0
918 b2fe: d00f beq 0xb320
919 b300: 6820 ldr r0, [r4, #0]
920 b302: 2803 cmp r0, #3
921 b304: da14 bge 0xb330
922 b306: 6866 ldr r6, [r4, #4]
923 b308: 2e03 cmp r6, #3
924 b30a: da11 bge 0xb330
925 b30c: 2902 cmp r1, #2
926 b30e: da0f bge 0xb330
927 b310: 4d54 ldr r5, [pc, #336] (0xb464) =0x810024
928 b312: 2218 mov r2, #24
929 b314: 4342 mul r2, r0
930 b316: 18aa add r2, r5, r2
931 b318: 3204 add r2, #4
932 b31a: 6813 ldr r3, [r2, #0]
933 b31c: 2b00 cmp r3, #0
934 b31e: d101 bne 0xb324
935 b320: 2005 mov r0, #5
936 b322: bd70 pop {r4, r5, r6, pc}
937 b324: 1e73 sub r3, r6, #1
938 b326: 2b00 cmp r3, #0
939 b328: d010 beq 0xb34c
940 b32a: 3b01 sub r3, #1
941 b32c: 2b00 cmp r3, #0
942 b32e: d001 beq 0xb334
943 b330: 2002 mov r0, #2
944 b332: bd70 pop {r4, r5, r6, pc}
945 b334: 2900 cmp r1, #0
946 b336: d106 bne 0xb346
947 b338: f856f000 bl 0xb3e8
948 b33c: 2018 mov r0, #24
949 b33e: 6821 ldr r1, [r4, #0]
950 b340: 4348 mul r0, r1
951 b342: 182a add r2, r5, r0
952 b344: 3204 add r2, #4
953 b346: 2000 mov r0, #0
954 b348: 6010 str r0, [r2, #0]
955 b34a: e00c b 0xb366
956 b34c: 7910 ldrb r0, [r2, #4]
957 b34e: 3801 sub r0, #1
958 b350: 0600 lsl r0, r0, #24
959 b352: 0e00 lsr r0, r0, #24
960 b354: 7110 strb r0, [r2, #4]
961 b356: 2800 cmp r0, #0
962 b358: d105 bne 0xb366
963 b35a: 2018 mov r0, #24
964 b35c: 6821 ldr r1, [r4, #0]
965 b35e: 4348 mul r0, r1
966 b360: 1828 add r0, r5, r0
967 b362: 2100 mov r1, #0
968 b364: 6041 str r1, [r0, #4]
969 b366: 2000 mov r0, #0
970 b368: bd70 pop {r4, r5, r6, pc}
971
972 ; This function adjusts the flash region pointers
973 ; in the table @81006C depending on the chip revision.
974 b36a: b500 push {lr}
975 b36c: f8dcf000 bl 0xb528
976 b370: 0400 lsl r0, r0, #16
977 b372: 0c00 lsr r0, r0, #16
978 b374: 2121 mov r1, #33
979 b376: 0209 lsl r1, r1, #8
980 b378: 4288 cmp r0, r1
981 b37a: d00a beq 0xb392
982 b37c: 4909 ldr r1, [pc, #36] (0xb3a4)
983 b37e: 4288 cmp r0, r1
984 b380: d10e bne 0xb3a0
985 b382: 484d ldr r0, [pc, #308] (0xb4b8)
986 b384: 4981 ldr r1, [pc, #516] (0xb58c)
987 b386: 6001 str r1, [r0, #0]
988 b388: 4981 ldr r1, [pc, #516] (0xb590)
989 b38a: 6041 str r1, [r0, #4]
990 b38c: 4981 ldr r1, [pc, #516] (0xb594)
991 b38e: 6081 str r1, [r0, #8]
992 b390: bd00 pop {pc}
993 b392: 4849 ldr r0, [pc, #292] (0xb4b8)
994 b394: 4980 ldr r1, [pc, #512] (0xb598)
995 b396: 6001 str r1, [r0, #0]
996 b398: 4980 ldr r1, [pc, #512] (0xb59c)
997 b39a: 6041 str r1, [r0, #4]
998 b39c: 4980 ldr r1, [pc, #512] (0xb5a0)
999 b39e: 6081 str r1, [r0, #8]
1000 b3a0: bd00 pop {pc}
1001 b3a2: 46c0 nop (mov r8, r8)
1002 b3a4: 00002101
1003
1004 b3a8: b530 push {r4, r5, lr}
1005 b3aa: ffdef7ff bl 0xb36a
1006 b3ae: 2100 mov r1, #0
1007 b3b0: 4d7c ldr r5, [pc, #496] (0xb5a4) =0x12345678
1008 b3b2: 2303 mov r3, #3
1009 b3b4: 4a40 ldr r2, [pc, #256] (0xb4b8)
1010 b3b6: 482b ldr r0, [pc, #172] (0xb464) =0x810024
1011 b3b8: 6814 ldr r4, [r2, #0]
1012 b3ba: 68a4 ldr r4, [r4, #8]
1013 b3bc: 6004 str r4, [r0, #0]
1014 b3be: 60c5 str r5, [r0, #12]
1015 b3c0: 8281 strh r1, [r0, #20]
1016 b3c2: 6101 str r1, [r0, #16]
1017 b3c4: 6041 str r1, [r0, #4]
1018 b3c6: 7201 strb r1, [r0, #8]
1019 b3c8: 7241 strb r1, [r0, #9]
1020 b3ca: 3204 add r2, #4
1021 b3cc: 3018 add r0, #24
1022 b3ce: 3b01 sub r3, #1
1023 b3d0: 2b00 cmp r3, #0
1024 b3d2: d1f1 bne 0xb3b8
1025 b3d4: bd30 pop {r4, r5, pc}
1026 b3d6: 46c0 nop (mov r8, r8)
1027
1028 ; This function ensures that the flash in the last sector of the
1029 ; specified magic region is not toggling, and then returns
1030 ; the address of where 0x12345678 is expected.
1031 b448: b500 push {lr}
1032 b44a: 491b ldr r1, [pc, #108] (0xb4b8) =0x81006C
1033 b44c: 0080 lsl r0, r0, #2
1034 b44e: 5808 ldr r0, [r1, r0]
1035 b450: 7901 ldrb r1, [r0, #4]
1036 b452: 0089 lsl r1, r1, #2
1037 b454: 1840 add r0, r0, r1
1038 b456: 6880 ldr r0, [r0, #8]
1039 b458: 380c sub r0, #12
1040 b45a: fdd3f7ff bl 0xb004
1041 b45e: bd00 pop {pc}
1042
1043 b460: 00810020
1044 b464: 00810024
1045 b468: 00810028
1046
1047 ; This function checks whether the magic region specified by the argument
1048 ; contains a checksum-passing image or not. Returns 0 if pass, 3 otherwise.
1049 b46c: b530 push {r4, r5, lr}
1050 b46e: 1c04 mov r4, r0 (add r4, r0, #0)
1051 b470: ffeaf7ff bl 0xb448
1052 b474: 1c02 mov r2, r0 (add r2, r0, #0)
1053 b476: 2105 mov r1, #5
1054 b478: 2300 mov r3, #0
1055 b47a: 8815 ldrh r5, [r2, #0]
1056 b47c: 18eb add r3, r5, r3
1057 b47e: 041b lsl r3, r3, #16
1058 b480: 0c1b lsr r3, r3, #16
1059 b482: 3202 add r2, #2
1060 b484: 3901 sub r1, #1
1061 b486: 2900 cmp r1, #0
1062 b488: d1f7 bne 0xb47a
1063 b48a: 8941 ldrh r1, [r0, #10]
1064 b48c: 428b cmp r3, r1
1065 b48e: d11e bne 0xb4ce
1066 b490: 4909 ldr r1, [pc, #36] (0xb4b8) =0x81006C
1067 b492: 00a2 lsl r2, r4, #2
1068 b494: 5889 ldr r1, [r1, r2]
1069 b496: 688b ldr r3, [r1, #8]
1070 b498: 6842 ldr r2, [r0, #4]
1071 b49a: 2400 mov r4, #0
1072 b49c: 0851 lsr r1, r2, #1
1073 b49e: 2900 cmp r1, #0
1074 b4a0: d007 beq 0xb4b2
1075 b4a2: 881d ldrh r5, [r3, #0]
1076 b4a4: 192c add r4, r5, r4
1077 b4a6: 0424 lsl r4, r4, #16
1078 b4a8: 0c24 lsr r4, r4, #16
1079 b4aa: 3302 add r3, #2
1080 b4ac: 3901 sub r1, #1
1081 b4ae: 2900 cmp r1, #0
1082 b4b0: d1f7 bne 0xb4a2
1083 b4b2: 0851 lsr r1, r2, #1
1084 b4b4: d308 bcc 0xb4c8
1085 b4b6: e001 b 0xb4bc
1086 ; interspersed literal
1087 b4b8: 0081006c
1088 ; function continues
1089 b4bc: 8819 ldrh r1, [r3, #0]
1090 b4be: 0609 lsl r1, r1, #24
1091 b4c0: 0e09 lsr r1, r1, #24
1092 b4c2: 1909 add r1, r1, r4
1093 b4c4: 0409 lsl r1, r1, #16
1094 b4c6: 0c0c lsr r4, r1, #16
1095 b4c8: 8900 ldrh r0, [r0, #8]
1096 b4ca: 4284 cmp r4, r0
1097 b4cc: d001 beq 0xb4d2
1098 b4ce: 2003 mov r0, #3
1099 b4d0: bd30 pop {r4, r5, pc}
1100 b4d2: 2000 mov r0, #0
1101 b4d4: bd30 pop {r4, r5, pc}
1102
1103 ; This function reads flash ID from the chip.
1104 ; R0 needs to point to a 2-byte buffer into which the read manuf ID is stored.
1105 ; R1 needs to point to an 8-byte buffer (4 16-bit words) filled as follows:
1106 ; 0: word read from 0x02 in autoselect mode
1107 ; 2: word read from 0x1C ""
1108 ; 4: word read from 0x1E ""
1109 ; 6: revision number word from CFI
1110 b4d6: b5f0 push {r4, r5, r6, r7, lr}
1111 b4d8: 2303 mov r3, #3
1112 b4da: 2200 mov r2, #0
1113 b4dc: 0114 lsl r4, r2, #4
1114 b4de: 4314 orr r4, r2
1115 b4e0: 220a mov r2, #10
1116 b4e2: 4322 orr r2, r4
1117 b4e4: 3b01 sub r3, #1
1118 b4e6: 2b00 cmp r3, #0
1119 b4e8: d1f8 bne 0xb4dc
1120 b4ea: 24aa mov r4, #170
1121 b4ec: 8014 strh r4, [r2, #0]
1122 b4ee: 1056 asr r6, r2, #1
1123 b4f0: 2555 mov r5, #85
1124 b4f2: 8035 strh r5, [r6, #0]
1125 b4f4: 2390 mov r3, #144
1126 b4f6: 8013 strh r3, [r2, #0]
1127 b4f8: 2300 mov r3, #0
1128 b4fa: 881f ldrh r7, [r3, #0]
1129 b4fc: 8007 strh r7, [r0, #0]
1130 b4fe: 8858 ldrh r0, [r3, #2]
1131 b500: 8008 strh r0, [r1, #0]
1132 b502: 8b98 ldrh r0, [r3, #28]
1133 b504: 8048 strh r0, [r1, #2]
1134 b506: 8bd8 ldrh r0, [r3, #30]
1135 b508: 8088 strh r0, [r1, #4]
1136 b50a: 2098 mov r0, #152
1137 b50c: 8010 strh r0, [r2, #0]
1138 b50e: 2086 mov r0, #134
1139 b510: 8847 ldrh r7, [r0, #2]
1140 b512: 8800 ldrh r0, [r0, #0]
1141 b514: 0200 lsl r0, r0, #8
1142 b516: 4307 orr r7, r0
1143 b518: 80cf strh r7, [r1, #6]
1144 b51a: 20ff mov r0, #255
1145 b51c: 8018 strh r0, [r3, #0]
1146 b51e: 8014 strh r4, [r2, #0]
1147 b520: 8035 strh r5, [r6, #0]
1148 b522: 20f0 mov r0, #240
1149 b524: 8010 strh r0, [r2, #0]
1150 b526: bdf0 pop {r4, r5, r6, r7, pc}
1151
1152 ; This function computes a single-word flash device ID. The algorithm is
1153 ; as follows:
1154 ; - if the manuf is other than 01 or 04, return the autoselect word from 0x02
1155 ; - ditto autosel[0x02] != 0x227E
1156 ; - in the case of our expected S71PL129NC0, return value will be
1157 ; 0x2100 or 0x2101 depending on the chip rev indicated in CFI table
1158
1159 b528: b500 push {lr}
1160 b52a: b083 sub sp, #12
1161 b52c: 4668 mov r0, sp
1162 b52e: a901 add r1, sp, #4
1163 b530: ffd1f7ff bl 0xb4d6
1164 b534: 4668 mov r0, sp
1165 b536: 8800 ldrh r0, [r0, #0]
1166 b538: 2801 cmp r0, #1
1167 b53a: d003 beq 0xb544
1168 b53c: 4668 mov r0, sp
1169 b53e: 8800 ldrh r0, [r0, #0]
1170 b540: 2804 cmp r0, #4
1171 b542: d11e bne 0xb582
1172 b544: 4668 mov r0, sp
1173 b546: 8881 ldrh r1, [r0, #4]
1174 b548: 4817 ldr r0, [pc, #92] (0xb5a8)
1175 b54a: 4281 cmp r1, r0
1176 b54c: d119 bne 0xb582
1177 b54e: 4668 mov r0, sp
1178 b550: 7a00 ldrb r0, [r0, #8]
1179 b552: 4669 mov r1, sp
1180 b554: 88c9 ldrh r1, [r1, #6]
1181 b556: 0209 lsl r1, r1, #8
1182 b558: 4308 orr r0, r1
1183 b55a: 0400 lsl r0, r0, #16
1184 b55c: 0c00 lsr r0, r0, #16
1185 b55e: 4669 mov r1, sp
1186 b560: 88c9 ldrh r1, [r1, #6]
1187 b562: 4a12 ldr r2, [pc, #72] (0xb5ac)
1188 b564: 4291 cmp r1, r2
1189 b566: d10e bne 0xb586
1190 b568: 4669 mov r1, sp
1191 b56a: 890a ldrh r2, [r1, #8]
1192 b56c: 2111 mov r1, #17
1193 b56e: 0249 lsl r1, r1, #9
1194 b570: 428a cmp r2, r1
1195 b572: d108 bne 0xb586
1196 b574: 4669 mov r1, sp
1197 b576: 8949 ldrh r1, [r1, #10]
1198 b578: 4a0d ldr r2, [pc, #52] (0xb5b0)
1199 b57a: 4291 cmp r1, r2
1200 b57c: d003 beq 0xb586
1201 b57e: 480d ldr r0, [pc, #52] (0xb5b4)
1202 b580: e001 b 0xb586
1203 b582: 4668 mov r0, sp
1204 b584: 8880 ldrh r0, [r0, #4]
1205 b586: b003 add sp, #12
1206 b588: bd00 pop {pc}
1207 b58a: 46c0 nop (mov r8, r8)
1208
1209 ; written into table @81006C for one chip rev
1210 b58c: 0081a61c
1211 b590: 0081a8b4
1212 b594: 0081ab4c
1213 ; written into table @81006C for the other chip rev
1214 b598: 0081a4d0
1215 b59c: 0081a768
1216 b5a0: 0081aa00
1217 ; looks like 6 records of 0x14C bytes each, starting at 0x81a4d0
1218 ; that's offset 0xA04C from the start of copy, 0xC554 in flash
1219
1220 b5a4: 12345678
1221 b5a8: 0000227e
1222 b5ac: 00002221
1223 b5b0: 00003133
1224 b5b4: 00002101
1225
1226 c554: 00000000
1227 c558: 00000036
1228 c55c: 02480000
1229 c560: 02490000
1230 c564: 024a0000
1231 c568: 024b0000
1232 c56c: 024c0000
1233 c570: 024d0000
1234 c574: 024e0000
1235 c578: 024f0000
1236 c57c: 02500000
1237 c580: 02510000
1238 c584: 02520000
1239 c588: 02530000
1240 c58c: 02540000
1241 c590: 02550000
1242 c594: 02560000
1243 c598: 02570000
1244 c59c: 02580000
1245 c5a0: 02590000
1246 c5a4: 025a0000
1247 c5a8: 025b0000
1248 c5ac: 025c0000
1249 c5b0: 025d0000
1250 c5b4: 025e0000
1251 c5b8: 025f0000
1252 c5bc: 02600000
1253 c5c0: 02610000
1254 c5c4: 02620000
1255 c5c8: 02630000
1256 c5cc: 02640000
1257 c5d0: 02650000
1258 c5d4: 02660000
1259 c5d8: 02670000
1260 c5dc: 02680000
1261 c5e0: 02690000
1262 c5e4: 026a0000
1263 c5e8: 026b0000
1264 c5ec: 026c0000
1265 c5f0: 026d0000
1266 c5f4: 026e0000
1267 c5f8: 026f0000
1268 c5fc: 02700000
1269 c600: 02710000
1270 c604: 02720000
1271 c608: 02730000
1272 c60c: 02740000
1273 c610: 02750000
1274 c614: 02760000
1275 c618: 02770000
1276 c61c: 02780000
1277 c620: 02790000
1278 c624: 027a0000
1279 c628: 027b0000
1280 c62c: 027c0000
1281 c630: 027d0000
1282 c634: 027e0000
1283 ...
1284 c6a4: 0000000f
1285 c6a8: 02480000
1286 c6ac: 024c0000
1287 c6b0: 02500000
1288 c6b4: 02540000
1289 c6b8: 02580000
1290 c6bc: 025c0000
1291 c6c0: 02600000
1292 c6c4: 02640000
1293 c6c8: 02680000
1294 c6cc: 026c0000
1295 c6d0: 02700000
1296 c6d4: 02740000
1297 c6d8: 02780000
1298 c6dc: 027c0000
1299 c6e0: 027d0000
1300 c6e4: 027e0000
1301 ...
1302 c7ec: 00000001
1303 c7f0: 00000001
1304 c7f4: 027e0000
1305 c7f8: 027f0000
1306 ...
1307 c938: 00000001
1308 c93c: 00000001
1309 c940: 027e0000
1310 c944: 027f0000
1311 ...
1312 ca84: 00000002
1313 ca88: 00000008
1314 ca8c: 027f0000
1315 ca90: 027f2000
1316 ca94: 027f4000
1317 ca98: 027f6000
1318 ca9c: 027f8000
1319 caa0: 027fa000
1320 caa4: 027fc000
1321 caa8: 027fe000
1322 caac: 02800000
1323 ...
1324 cbd0: 00000002
1325 cbd4: 00000001
1326 cbd8: 027f0000
1327 cbdc: 02800000
1328 ...
1329 cd1c: 00030000
1330 cd20: 00040000
1331 cd24: 00050000
1332 cd28: 00060000
1333 cd2c: 00070000
1334 cd30: 00080000
1335 cd34: 00090000
1336 cd38: 000a0000
1337 cd3c: 000b0000
1338 cd40: 000c0000
1339 cd44: 000d0000
1340 cd48: 000e0000
1341 cd4c: 000f0000
1342 cd50: 00100000
1343 cd54: 00110000
1344 cd58: 00120000
1345 cd5c: 00130000
1346 cd60: 00140000
1347 cd64: 00150000
1348 cd68: 00160000
1349 cd6c: 00170000
1350 cd70: 00180000
1351 cd74: 00190000
1352 cd78: 001a0000
1353 cd7c: 001b0000
1354 cd80: 001c0000
1355 cd84: 001d0000
1356 cd88: 001e0000
1357 cd8c: 001f0000
1358 cd90: 00200000
1359 cd94: 00210000
1360 cd98: 00220000
1361 cd9c: 00230000
1362 cda0: 00240000
1363 cda4: 00250000
1364 cda8: 00260000
1365 cdac: 00270000
1366 cdb0: 00280000
1367 cdb4: 00290000
1368 cdb8: 002a0000
1369 cdbc: 002b0000
1370 cdc0: 002c0000
1371 cdc4: 002d0000
1372 cdc8: 002e0000
1373 cdcc: 002f0000
1374 cdd0: 00300000
1375 cdd4: 00310000
1376 cdd8: 00320000
1377 cddc: 00330000
1378 cde0: 00340000
1379 cde4: 00350000
1380 cde8: 00360000
1381 cdec: 00370000
1382 cdf0: 00380000
1383 cdf4: 00390000
1384 cdf8: 003a0000
1385 cdfc: 003b0000
1386 ce00: 003c0000
1387 ce04: 003d0000
1388 ce08: 003e0000
1389 ce0c: 003f0000
1390 ce10: 00400000
1391 ce14: 00410000
1392 ce18: 00420000
1393 ce1c: 00430000
1394 ce20: 00440000
1395 ce24: 00450000
1396 ce28: 00460000
1397 ce2c: 00470000
1398 ce30: 00480000
1399 ce34: 00490000
1400 ce38: 004a0000
1401 ce3c: 004b0000
1402 ce40: 004c0000
1403 ce44: 004d0000
1404 ce48: 004e0000
1405 ce4c: 004f0000
1406 ce50: 00500000
1407 ce54: 00510000
1408 ce58: 00520000
1409 ce5c: 00530000
1410 ce60: 00540000
1411 ce64: 00550000
1412 ce68: 00560000
1413 ce6c: 00570000
1414 ce70: 00580000
1415 ce74: 00590000
1416 ce78: 005a0000
1417 ce7c: 005b0000
1418 ce80: 005c0000
1419 ce84: 005d0000
1420 ce88: 005e0000
1421 ce8c: 005f0000
1422 ce90: 00600000
1423 ce94: 00610000
1424 ce98: 00620000
1425 ce9c: 00630000
1426 cea0: 00640000
1427 cea4: 00650000
1428 cea8: 00660000
1429 ceac: 00670000
1430 ceb0: 00680000
1431 ceb4: 00690000
1432 ceb8: 006a0000
1433 cebc: 006b0000
1434 cec0: 006c0000
1435 cec4: 006d0000
1436 cec8: 006e0000
1437 cecc: 006f0000
1438 ced0: 00700000
1439 ced4: 00710000
1440 ced8: 00720000
1441 cedc: 00730000
1442 cee0: 00740000
1443 cee4: 00750000
1444 cee8: 00760000
1445 ceec: 00770000
1446 cef0: 00780000
1447 cef4: 00790000
1448 cef8: 007a0000
1449 cefc: 007b0000
1450 cf00: 007c0000
1451 cf04: 007d0000
1452 cf08: 007e0000
1453 cf0c: 007f0000
1454
1455 cf10: 00030000
1456 cf14: 00040000
1457 cf18: 00080000
1458 cf1c: 000c0000
1459 cf20: 00100000
1460 cf24: 00140000
1461 cf28: 00180000
1462 cf2c: 001c0000
1463 cf30: 00200000
1464 cf34: 00240000
1465 cf38: 00280000
1466 cf3c: 002c0000
1467 cf40: 00300000
1468 cf44: 00340000
1469 cf48: 00380000
1470 cf4c: 003c0000
1471 cf50: 00400000
1472 cf54: 00440000
1473 cf58: 00480000
1474 cf5c: 004c0000
1475 cf60: 00500000
1476 cf64: 00540000
1477 cf68: 00580000
1478 cf6c: 005c0000
1479 cf70: 00600000
1480 cf74: 00640000
1481 cf78: 00680000
1482 cf7c: 006c0000
1483 cf80: 00700000
1484 cf84: 00740000
1485 cf88: 00780000
1486 cf8c: 007c0000
1487
392 CF8F: last copied byte 1488 CF8F: last copied byte
393 1489
394 <CF90-1F9FF: all FFs> 1490 <CF90-1F9FF: all FFs>
395 1491
396 ; initialized data table 1492 ; initialized data table