-
Notifications
You must be signed in to change notification settings - Fork 0
/
kernel.list
1530 lines (1373 loc) · 51.6 KB
/
kernel.list
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
build/output.elf: file format elf32-littlearm
Disassembly of section .init:
00008000 <_start>:
8000: ea020e85 b 8ba1c <main>
Disassembly of section .text:
0008ba1c <main>:
8ba1c: e3a0d902 mov sp, #32768 ; 0x8000
8ba20: eb000024 bl 8bab8 <EnableJTAG>
8ba24: eb000046 bl 8bb44 <InitFrameBuffer>
8ba28: eb0000db bl 8bd9c <Init_SNES>
0008ba2c <mainLoop>:
8ba2c: eb000378 bl 8c814 <Game_Display>
8ba30: eb00037c bl 8c828 <Game_Test>
8ba34: ea000000 b 8ba3c <haltLoop$>
0008ba38 <Quit>:
8ba38: eaffffff b 8ba3c <haltLoop$>
0008ba3c <haltLoop$>:
8ba3c: eafffffe b 8ba3c <haltLoop$>
0008ba40 <Score_Increment>:
8ba40: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8ba44: e59f0068 ldr r0, [pc, #104] ; 8bab4 <endScoreUpdateLoop+0x28>
8ba48: e5d01000 ldrb r1, [r0]
8ba4c: e2811001 add r1, r1, #1
8ba50: e5c01000 strb r1, [r0]
8ba54: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8ba58: e12fff1e bx lr
0008ba5c <Score_Update>:
8ba5c: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8ba60: e3a06000 mov r6, #0
8ba64: e3a07000 mov r7, #0
8ba68: e3a08001 mov r8, #1
0008ba6c <scoreUpdateLoop>:
8ba6c: e3560013 cmp r6, #19
8ba70: aa000005 bge 8ba8c <endScoreUpdateLoop>
8ba74: e0009008 and r9, r0, r8
8ba78: e3590000 cmp r9, #0
8ba7c: 12877001 addne r7, r7, #1
8ba80: e2866001 add r6, r6, #1
8ba84: e1a08088 lsl r8, r8, #1
8ba88: eafffff7 b 8ba6c <scoreUpdateLoop>
0008ba8c <endScoreUpdateLoop>:
8ba8c: e3570001 cmp r7, #1
8ba90: 03a0a00a moveq sl, #10
8ba94: 13a0a00f movne sl, #15
8ba98: e007079a mul r7, sl, r7
8ba9c: e59f4010 ldr r4, [pc, #16] ; 8bab4 <endScoreUpdateLoop+0x28>
8baa0: e5d45000 ldrb r5, [r4]
8baa4: e0855007 add r5, r5, r7
8baa8: e5c45000 strb r5, [r4]
8baac: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bab0: e12fff1e bx lr
8bab4: 00009080 .word 0x00009080
0008bab8 <EnableJTAG>:
8bab8: e52de004 push {lr} ; (str lr, [sp, #-4]!)
8babc: e59f0064 ldr r0, [pc, #100] ; 8bb28 <dowaitloop+0xc>
8bac0: e0211001 eor r1, r1, r1
8bac4: e5801000 str r1, [r0]
8bac8: eb000012 bl 8bb18 <dowait>
8bacc: e59f0058 ldr r0, [pc, #88] ; 8bb2c <dowaitloop+0x10>
8bad0: e59f1058 ldr r1, [pc, #88] ; 8bb30 <dowaitloop+0x14>
8bad4: e5801000 str r1, [r0]
8bad8: eb00000e bl 8bb18 <dowait>
8badc: e0211001 eor r1, r1, r1
8bae0: e5801000 str r1, [r0]
8bae4: e59f0048 ldr r0, [pc, #72] ; 8bb34 <dowaitloop+0x18>
8bae8: e5901000 ldr r1, [r0]
8baec: e3c11a07 bic r1, r1, #28672 ; 0x7000
8baf0: e3811a02 orr r1, r1, #8192 ; 0x2000
8baf4: e5801000 str r1, [r0]
8baf8: e59f0038 ldr r0, [pc, #56] ; 8bb38 <dowaitloop+0x1c>
8bafc: e5901000 ldr r1, [r0]
8bb00: e59f2034 ldr r2, [pc, #52] ; 8bb3c <dowaitloop+0x20>
8bb04: e1c11002 bic r1, r1, r2
8bb08: e59f2030 ldr r2, [pc, #48] ; 8bb40 <dowaitloop+0x24>
8bb0c: e1811002 orr r1, r1, r2
8bb10: e5801000 str r1, [r0]
8bb14: e49df004 pop {pc} ; (ldr pc, [sp], #4)
0008bb18 <dowait>:
8bb18: e3a02f4b mov r2, #300 ; 0x12c
0008bb1c <dowaitloop>:
8bb1c: e2522001 subs r2, r2, #1
8bb20: 1afffffd bne 8bb1c <dowaitloop>
8bb24: e12fff1e bx lr
8bb28: 3f200094 .word 0x3f200094
8bb2c: 3f200098 .word 0x3f200098
8bb30: 0bc00010 .word 0x0bc00010
8bb34: 3f200000 .word 0x3f200000
8bb38: 3f200008 .word 0x3f200008
8bb3c: 00e3ffc0 .word 0x00e3ffc0
8bb40: 0061b6c0 .word 0x0061b6c0
0008bb44 <InitFrameBuffer>:
8bb44: e59f2068 ldr r2, [pc, #104] ; 8bbb4 <pointerWaitLoop$+0x1c>
8bb48: e59f3068 ldr r3, [pc, #104] ; 8bbb8 <pointerWaitLoop$+0x20>
0008bb4c <mBoxFullLoop$>:
8bb4c: e5920018 ldr r0, [r2, #24]
8bb50: e3100102 tst r0, #-2147483648 ; 0x80000000
8bb54: 1afffffc bne 8bb4c <mBoxFullLoop$>
8bb58: e2830101 add r0, r3, #1073741824 ; 0x40000000
8bb5c: e3800008 orr r0, r0, #8
8bb60: e5820020 str r0, [r2, #32]
0008bb64 <mBoxEmptyLoop$>:
8bb64: e5920018 ldr r0, [r2, #24]
8bb68: e3100101 tst r0, #1073741824 ; 0x40000000
8bb6c: 1afffffc bne 8bb64 <mBoxEmptyLoop$>
8bb70: e5920000 ldr r0, [r2]
8bb74: e200100f and r1, r0, #15
8bb78: e3310008 teq r1, #8
8bb7c: 1afffff8 bne 8bb64 <mBoxEmptyLoop$>
8bb80: e59f0030 ldr r0, [pc, #48] ; 8bbb8 <pointerWaitLoop$+0x20>
8bb84: e5901004 ldr r1, [r0, #4]
8bb88: e3310102 teq r1, #-2147483648 ; 0x80000000
8bb8c: 0a000001 beq 8bb98 <pointerWaitLoop$>
8bb90: 13a00000 movne r0, #0
8bb94: 112fff1e bxne lr
0008bb98 <pointerWaitLoop$>:
8bb98: e59f001c ldr r0, [pc, #28] ; 8bbbc <pointerWaitLoop$+0x24>
8bb9c: e5900000 ldr r0, [r0]
8bba0: e3300000 teq r0, #0
8bba4: 0afffffb beq 8bb98 <pointerWaitLoop$>
8bba8: e59f3010 ldr r3, [pc, #16] ; 8bbc0 <pointerWaitLoop$+0x28>
8bbac: e5830000 str r0, [r3]
8bbb0: e12fff1e bx lr
8bbb4: 3f00b880 .word 0x3f00b880
8bbb8: 00009090 .word 0x00009090
8bbbc: 000090dc .word 0x000090dc
8bbc0: 000090f0 .word 0x000090f0
0008bbc4 <Move_Down>:
8bbc4: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bbc8: eb00034e bl 8c908 <Clear_Tetromino>
8bbcc: eb000372 bl 8c99c <Clear_Tet_Screen>
8bbd0: e59f4184 ldr r4, [pc, #388] ; 8bd5c <endLeftLoop+0x10>
8bbd4: e3a08001 mov r8, #1
8bbd8: e59f9180 ldr r9, [pc, #384] ; 8bd60 <endLeftLoop+0x14>
8bbdc: e3a07000 mov r7, #0
8bbe0: e3a0a00c mov sl, #12
0008bbe4 <downTestLoop>:
8bbe4: e3570004 cmp r7, #4
8bbe8: aa00000b bge 8bc1c <endDownTestLoop>
8bbec: e4d45001 ldrb r5, [r4], #1
8bbf0: e4d46001 ldrb r6, [r4], #1
8bbf4: e2866001 add r6, r6, #1
8bbf8: e1a00005 mov r0, r5
8bbfc: e1a01006 mov r1, r6
8bc00: eb00038f bl 8ca44 <Check_Empty>
8bc04: e3500001 cmp r0, #1
8bc08: 15c98000 strbne r8, [r9]
8bc0c: 13a08000 movne r8, #0
8bc10: 1a00000c bne 8bc48 <endDownLoop>
8bc14: e2877001 add r7, r7, #1
8bc18: eafffff1 b 8bbe4 <downTestLoop>
0008bc1c <endDownTestLoop>:
8bc1c: e3a07000 mov r7, #0
8bc20: e3a0a00c mov sl, #12
8bc24: e59f4130 ldr r4, [pc, #304] ; 8bd5c <endLeftLoop+0x10>
8bc28: e2844001 add r4, r4, #1
0008bc2c <downLoop>:
8bc2c: e3570004 cmp r7, #4
8bc30: aa000004 bge 8bc48 <endDownLoop>
8bc34: e5d46000 ldrb r6, [r4]
8bc38: e2866001 add r6, r6, #1
8bc3c: e4c46002 strb r6, [r4], #2
8bc40: e2877001 add r7, r7, #1
8bc44: eafffff8 b 8bc2c <downLoop>
0008bc48 <endDownLoop>:
8bc48: eb00031b bl 8c8bc <Set_Tetromino>
8bc4c: eb00033f bl 8c950 <Set_Tet_Screen>
8bc50: e1a00008 mov r0, r8
8bc54: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bc58: e12fff1e bx lr
0008bc5c <Move_Right>:
8bc5c: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bc60: eb000328 bl 8c908 <Clear_Tetromino>
8bc64: eb00034c bl 8c99c <Clear_Tet_Screen>
8bc68: e59f40ec ldr r4, [pc, #236] ; 8bd5c <endLeftLoop+0x10>
8bc6c: e3a07000 mov r7, #0
8bc70: e3a0800c mov r8, #12
0008bc74 <rightTestLoop>:
8bc74: e3570004 cmp r7, #4
8bc78: aa000009 bge 8bca4 <endRightTestLoop>
8bc7c: e4d45001 ldrb r5, [r4], #1
8bc80: e2855001 add r5, r5, #1
8bc84: e4d46001 ldrb r6, [r4], #1
8bc88: e1a00005 mov r0, r5
8bc8c: e1a01006 mov r1, r6
8bc90: eb00036b bl 8ca44 <Check_Empty>
8bc94: e3500001 cmp r0, #1
8bc98: 1a00000b bne 8bccc <endRightLoop>
8bc9c: e2877001 add r7, r7, #1
8bca0: eafffff3 b 8bc74 <rightTestLoop>
0008bca4 <endRightTestLoop>:
8bca4: e3a07000 mov r7, #0
8bca8: e3a0800c mov r8, #12
8bcac: e59f40a8 ldr r4, [pc, #168] ; 8bd5c <endLeftLoop+0x10>
0008bcb0 <rightLoop>:
8bcb0: e3570004 cmp r7, #4
8bcb4: aa000004 bge 8bccc <endRightLoop>
8bcb8: e5d45000 ldrb r5, [r4]
8bcbc: e2855001 add r5, r5, #1
8bcc0: e4c45002 strb r5, [r4], #2
8bcc4: e2877001 add r7, r7, #1
8bcc8: eafffff8 b 8bcb0 <rightLoop>
0008bccc <endRightLoop>:
8bccc: eb0002fa bl 8c8bc <Set_Tetromino>
8bcd0: eb00031e bl 8c950 <Set_Tet_Screen>
8bcd4: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bcd8: e12fff1e bx lr
0008bcdc <Move_Left>:
8bcdc: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bce0: eb000308 bl 8c908 <Clear_Tetromino>
8bce4: eb00032c bl 8c99c <Clear_Tet_Screen>
8bce8: e59f406c ldr r4, [pc, #108] ; 8bd5c <endLeftLoop+0x10>
8bcec: e3a07000 mov r7, #0
8bcf0: e3a0800c mov r8, #12
0008bcf4 <leftTestLoop>:
8bcf4: e3570004 cmp r7, #4
8bcf8: aa000009 bge 8bd24 <endLeftTestLoop>
8bcfc: e4d45001 ldrb r5, [r4], #1
8bd00: e2455001 sub r5, r5, #1
8bd04: e4d46001 ldrb r6, [r4], #1
8bd08: e1a00005 mov r0, r5
8bd0c: e1a01006 mov r1, r6
8bd10: eb00034b bl 8ca44 <Check_Empty>
8bd14: e3500001 cmp r0, #1
8bd18: 1a00000b bne 8bd4c <endLeftLoop>
8bd1c: e2877001 add r7, r7, #1
8bd20: eafffff3 b 8bcf4 <leftTestLoop>
0008bd24 <endLeftTestLoop>:
8bd24: e3a07000 mov r7, #0
8bd28: e3a0800c mov r8, #12
8bd2c: e59f4028 ldr r4, [pc, #40] ; 8bd5c <endLeftLoop+0x10>
0008bd30 <leftLoop>:
8bd30: e3570004 cmp r7, #4
8bd34: aa000004 bge 8bd4c <endLeftLoop>
8bd38: e5d45000 ldrb r5, [r4]
8bd3c: e2455001 sub r5, r5, #1
8bd40: e4c45002 strb r5, [r4], #2
8bd44: e2877001 add r7, r7, #1
8bd48: eafffff8 b 8bd30 <leftLoop>
0008bd4c <endLeftLoop>:
8bd4c: eb0002da bl 8c8bc <Set_Tetromino>
8bd50: eb0002fe bl 8c950 <Set_Tet_Screen>
8bd54: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bd58: e12fff1e bx lr
8bd5c: 0008b90a .word 0x0008b90a
8bd60: 0008b908 .word 0x0008b908
0008bd64 <Get_SNES>:
8bd64: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bd68: e59f41a8 ldr r4, [pc, #424] ; 8bf18 <Read_Data+0x30>
8bd6c: e1d450b0 ldrh r5, [r4]
8bd70: eb000018 bl 8bdd8 <Read_SNES>
8bd74: e1a07000 mov r7, r0
8bd78: e1e06005 mvn r6, r5
8bd7c: e0000006 and r0, r0, r6
8bd80: e1a08000 mov r8, r0
8bd84: e1c470b0 strh r7, [r4]
8bd88: e3a00efa mov r0, #4000 ; 0xfa0
8bd8c: eb000234 bl 8c664 <Wait>
8bd90: e1a00008 mov r0, r8
8bd94: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bd98: e12fff1e bx lr
0008bd9c <Init_SNES>:
8bd9c: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bda0: e3a00009 mov r0, #9
8bda4: e3a01001 mov r1, #1
8bda8: eb000029 bl 8be54 <Init_GPIO>
8bdac: e3a0000b mov r0, #11
8bdb0: e3a01001 mov r1, #1
8bdb4: eb000026 bl 8be54 <Init_GPIO>
8bdb8: e3a0000a mov r0, #10
8bdbc: e3a01000 mov r1, #0
8bdc0: eb000023 bl 8be54 <Init_GPIO>
8bdc4: e59f214c ldr r2, [pc, #332] ; 8bf18 <Read_Data+0x30>
8bdc8: e3a03000 mov r3, #0
8bdcc: e1c230b0 strh r3, [r2]
8bdd0: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bdd4: e12fff1e bx lr
0008bdd8 <Read_SNES>:
8bdd8: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bddc: e3a00001 mov r0, #1
8bde0: eb000036 bl 8bec0 <Write_Clock>
8bde4: e3a00001 mov r0, #1
8bde8: eb00002a bl 8be98 <Write_Latch>
8bdec: e3a0000c mov r0, #12
8bdf0: eb00021b bl 8c664 <Wait>
8bdf4: e3a00000 mov r0, #0
8bdf8: eb000026 bl 8be98 <Write_Latch>
8bdfc: e3a04000 mov r4, #0
8be00: e3a05000 mov r5, #0
8be04: e3a06001 mov r6, #1
0008be08 <pulseLoop>:
8be08: e3550010 cmp r5, #16
8be0c: 2a00000d bcs 8be48 <endPulseLoop>
8be10: e3a00006 mov r0, #6
8be14: eb000212 bl 8c664 <Wait>
8be18: e3a00000 mov r0, #0
8be1c: eb000027 bl 8bec0 <Write_Clock>
8be20: e3a00006 mov r0, #6
8be24: eb00020e bl 8c664 <Wait>
8be28: eb00002e bl 8bee8 <Read_Data>
8be2c: e3500000 cmp r0, #0
8be30: 01844006 orreq r4, r4, r6
8be34: e3a00001 mov r0, #1
8be38: eb000020 bl 8bec0 <Write_Clock>
8be3c: e1a06086 lsl r6, r6, #1
8be40: e2855001 add r5, r5, #1
8be44: eaffffef b 8be08 <pulseLoop>
0008be48 <endPulseLoop>:
8be48: e1a00004 mov r0, r4
8be4c: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8be50: e12fff1e bx lr
0008be54 <Init_GPIO>:
8be54: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8be58: e3a02000 mov r2, #0
0008be5c <lineLoop>:
8be5c: e3500009 cmp r0, #9
8be60: 8240000a subhi r0, r0, #10
8be64: 82822004 addhi r2, r2, #4
8be68: 8afffffb bhi 8be5c <lineLoop>
0008be6c <endLineLoop>:
8be6c: e59f30a8 ldr r3, [pc, #168] ; 8bf1c <Read_Data+0x34>
8be70: e0822003 add r2, r2, r3
8be74: e5924000 ldr r4, [r2]
8be78: e3a06003 mov r6, #3
8be7c: e0000096 mul r0, r6, r0
8be80: e3a05007 mov r5, #7
8be84: e1c44015 bic r4, r4, r5, lsl r0
8be88: e1844011 orr r4, r4, r1, lsl r0
8be8c: e5824000 str r4, [r2]
8be90: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8be94: e12fff1e bx lr
0008be98 <Write_Latch>:
8be98: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8be9c: e3a01009 mov r1, #9
8bea0: e59f2074 ldr r2, [pc, #116] ; 8bf1c <Read_Data+0x34>
8bea4: e3a03001 mov r3, #1
8bea8: e1a03113 lsl r3, r3, r1
8beac: e3500000 cmp r0, #0
8beb0: 05823028 streq r3, [r2, #40] ; 0x28
8beb4: 1582301c strne r3, [r2, #28]
8beb8: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bebc: e12fff1e bx lr
0008bec0 <Write_Clock>:
8bec0: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bec4: e3a0100b mov r1, #11
8bec8: e59f204c ldr r2, [pc, #76] ; 8bf1c <Read_Data+0x34>
8becc: e3a03001 mov r3, #1
8bed0: e1a03113 lsl r3, r3, r1
8bed4: e3500000 cmp r0, #0
8bed8: 05823028 streq r3, [r2, #40] ; 0x28
8bedc: 1582301c strne r3, [r2, #28]
8bee0: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bee4: e12fff1e bx lr
0008bee8 <Read_Data>:
8bee8: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8beec: e3a0100a mov r1, #10
8bef0: e59f3024 ldr r3, [pc, #36] ; 8bf1c <Read_Data+0x34>
8bef4: e5932034 ldr r2, [r3, #52] ; 0x34
8bef8: e3a04001 mov r4, #1
8befc: e1a04114 lsl r4, r4, r1
8bf00: e0022004 and r2, r2, r4
8bf04: e3520000 cmp r2, #0
8bf08: 03a00000 moveq r0, #0
8bf0c: 13a00001 movne r0, #1
8bf10: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bf14: e12fff1e bx lr
8bf18: 00087108 .word 0x00087108
8bf1c: 3f200000 .word 0x3f200000
0008bf20 <Spawn_Tetromino>:
8bf20: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bf24: eb0001e1 bl 8c6b0 <Get_Random_Tetromino>
8bf28: e1a04000 mov r4, r0
8bf2c: e3540000 cmp r4, #0
8bf30: db000046 blle 8c050 <Spawn_I>
8bf34: e3540000 cmp r4, #0
8bf38: da000018 ble 8bfa0 <startSpawn>
8bf3c: e3540001 cmp r4, #1
8bf40: 0b000059 bleq 8c0ac <Spawn_J>
8bf44: e3540001 cmp r4, #1
8bf48: 0a000014 beq 8bfa0 <startSpawn>
8bf4c: e3540002 cmp r4, #2
8bf50: 0b00006c bleq 8c108 <Spawn_L>
8bf54: e3540002 cmp r4, #2
8bf58: 0a000010 beq 8bfa0 <startSpawn>
8bf5c: e3540003 cmp r4, #3
8bf60: 0b00007f bleq 8c164 <Spawn_O>
8bf64: e3540003 cmp r4, #3
8bf68: 0a00000c beq 8bfa0 <startSpawn>
8bf6c: e3540004 cmp r4, #4
8bf70: 0b000092 bleq 8c1c0 <Spawn_S>
8bf74: e3540004 cmp r4, #4
8bf78: 0a000008 beq 8bfa0 <startSpawn>
8bf7c: e3540005 cmp r4, #5
8bf80: 0b0000a5 bleq 8c21c <Spawn_T>
8bf84: e3540005 cmp r4, #5
8bf88: 0a000004 beq 8bfa0 <startSpawn>
8bf8c: e3540006 cmp r4, #6
8bf90: 0b0000b8 bleq 8c278 <Spawn_Z>
8bf94: e3540006 cmp r4, #6
8bf98: 0a000000 beq 8bfa0 <startSpawn>
8bf9c: eb000014 bl 8bff4 <Spawn_Imp>
0008bfa0 <startSpawn>:
8bfa0: e3a06000 mov r6, #0
8bfa4: e3a07001 mov r7, #1
0008bfa8 <spawnLoop>:
8bfa8: e3560002 cmp r6, #2
8bfac: aa000004 bge 8bfc4 <endSpawnLoop>
8bfb0: ebffff03 bl 8bbc4 <Move_Down>
8bfb4: e3500000 cmp r0, #0
8bfb8: 0a000001 beq 8bfc4 <endSpawnLoop>
8bfbc: e2866001 add r6, r6, #1
8bfc0: eafffff8 b 8bfa8 <spawnLoop>
0008bfc4 <endSpawnLoop>:
8bfc4: e3560000 cmp r6, #0
8bfc8: 03a07000 moveq r7, #0
8bfcc: 0a000005 beq 8bfe8 <endSpawn>
8bfd0: e59f92fc ldr r9, [pc, #764] ; 8c2d4 <Spawn_Z+0x5c>
8bfd4: e3a05000 mov r5, #0
8bfd8: e5c95000 strb r5, [r9]
8bfdc: e59f92f4 ldr r9, [pc, #756] ; 8c2d8 <Spawn_Z+0x60>
8bfe0: e3a05075 mov r5, #117 ; 0x75
8bfe4: e5c95000 strb r5, [r9]
0008bfe8 <endSpawn>:
8bfe8: e1a00007 mov r0, r7
8bfec: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8bff0: e12fff1e bx lr
0008bff4 <Spawn_Imp>:
8bff4: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8bff8: e59f42dc ldr r4, [pc, #732] ; 8c2dc <Spawn_Z+0x64>
8bffc: e3a05004 mov r5, #4
8c000: e4c45001 strb r5, [r4], #1
8c004: e3a05001 mov r5, #1
8c008: e4c45001 strb r5, [r4], #1
8c00c: e3a05005 mov r5, #5
8c010: e4c45001 strb r5, [r4], #1
8c014: e3a05001 mov r5, #1
8c018: e4c45001 strb r5, [r4], #1
8c01c: e3a05006 mov r5, #6
8c020: e4c45001 strb r5, [r4], #1
8c024: e3a05000 mov r5, #0
8c028: e4c45001 strb r5, [r4], #1
8c02c: e3a05007 mov r5, #7
8c030: e4c45001 strb r5, [r4], #1
8c034: e3a05000 mov r5, #0
8c038: e4c45001 strb r5, [r4], #1
8c03c: e59f629c ldr r6, [pc, #668] ; 8c2e0 <Spawn_Z+0x68>
8c040: e3a07043 mov r7, #67 ; 0x43
8c044: e5c67000 strb r7, [r6]
8c048: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c04c: e12fff1e bx lr
0008c050 <Spawn_I>:
8c050: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c054: e59f4280 ldr r4, [pc, #640] ; 8c2dc <Spawn_Z+0x64>
8c058: e3a05004 mov r5, #4
8c05c: e4c45001 strb r5, [r4], #1
8c060: e3a05001 mov r5, #1
8c064: e4c45001 strb r5, [r4], #1
8c068: e3a05005 mov r5, #5
8c06c: e4c45001 strb r5, [r4], #1
8c070: e3a05001 mov r5, #1
8c074: e4c45001 strb r5, [r4], #1
8c078: e3a05006 mov r5, #6
8c07c: e4c45001 strb r5, [r4], #1
8c080: e3a05001 mov r5, #1
8c084: e4c45001 strb r5, [r4], #1
8c088: e3a05007 mov r5, #7
8c08c: e4c45001 strb r5, [r4], #1
8c090: e3a05001 mov r5, #1
8c094: e4c45001 strb r5, [r4], #1
8c098: e59f6240 ldr r6, [pc, #576] ; 8c2e0 <Spawn_Z+0x68>
8c09c: e3a07043 mov r7, #67 ; 0x43
8c0a0: e5c67000 strb r7, [r6]
8c0a4: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c0a8: e12fff1e bx lr
0008c0ac <Spawn_J>:
8c0ac: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c0b0: e59f4224 ldr r4, [pc, #548] ; 8c2dc <Spawn_Z+0x64>
8c0b4: e3a05004 mov r5, #4
8c0b8: e4c45001 strb r5, [r4], #1
8c0bc: e3a05000 mov r5, #0
8c0c0: e4c45001 strb r5, [r4], #1
8c0c4: e3a05004 mov r5, #4
8c0c8: e4c45001 strb r5, [r4], #1
8c0cc: e3a05001 mov r5, #1
8c0d0: e4c45001 strb r5, [r4], #1
8c0d4: e3a05005 mov r5, #5
8c0d8: e4c45001 strb r5, [r4], #1
8c0dc: e3a05001 mov r5, #1
8c0e0: e4c45001 strb r5, [r4], #1
8c0e4: e3a05006 mov r5, #6
8c0e8: e4c45001 strb r5, [r4], #1
8c0ec: e3a05001 mov r5, #1
8c0f0: e4c45001 strb r5, [r4], #1
8c0f4: e59f61e4 ldr r6, [pc, #484] ; 8c2e0 <Spawn_Z+0x68>
8c0f8: e3a07042 mov r7, #66 ; 0x42
8c0fc: e5c67000 strb r7, [r6]
8c100: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c104: e12fff1e bx lr
0008c108 <Spawn_L>:
8c108: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c10c: e59f41c8 ldr r4, [pc, #456] ; 8c2dc <Spawn_Z+0x64>
8c110: e3a05004 mov r5, #4
8c114: e4c45001 strb r5, [r4], #1
8c118: e3a05001 mov r5, #1
8c11c: e4c45001 strb r5, [r4], #1
8c120: e3a05005 mov r5, #5
8c124: e4c45001 strb r5, [r4], #1
8c128: e3a05001 mov r5, #1
8c12c: e4c45001 strb r5, [r4], #1
8c130: e3a05006 mov r5, #6
8c134: e4c45001 strb r5, [r4], #1
8c138: e3a05001 mov r5, #1
8c13c: e4c45001 strb r5, [r4], #1
8c140: e3a05006 mov r5, #6
8c144: e4c45001 strb r5, [r4], #1
8c148: e3a05000 mov r5, #0
8c14c: e4c45001 strb r5, [r4], #1
8c150: e59f6188 ldr r6, [pc, #392] ; 8c2e0 <Spawn_Z+0x68>
8c154: e3a0704f mov r7, #79 ; 0x4f
8c158: e5c67000 strb r7, [r6]
8c15c: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c160: e12fff1e bx lr
0008c164 <Spawn_O>:
8c164: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c168: e59f416c ldr r4, [pc, #364] ; 8c2dc <Spawn_Z+0x64>
8c16c: e3a05005 mov r5, #5
8c170: e4c45001 strb r5, [r4], #1
8c174: e3a05000 mov r5, #0
8c178: e4c45001 strb r5, [r4], #1
8c17c: e3a05006 mov r5, #6
8c180: e4c45001 strb r5, [r4], #1
8c184: e3a05000 mov r5, #0
8c188: e4c45001 strb r5, [r4], #1
8c18c: e3a05005 mov r5, #5
8c190: e4c45001 strb r5, [r4], #1
8c194: e3a05001 mov r5, #1
8c198: e4c45001 strb r5, [r4], #1
8c19c: e3a05006 mov r5, #6
8c1a0: e4c45001 strb r5, [r4], #1
8c1a4: e3a05001 mov r5, #1
8c1a8: e4c45001 strb r5, [r4], #1
8c1ac: e59f612c ldr r6, [pc, #300] ; 8c2e0 <Spawn_Z+0x68>
8c1b0: e3a07059 mov r7, #89 ; 0x59
8c1b4: e5c67000 strb r7, [r6]
8c1b8: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c1bc: e12fff1e bx lr
0008c1c0 <Spawn_S>:
8c1c0: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c1c4: e59f4110 ldr r4, [pc, #272] ; 8c2dc <Spawn_Z+0x64>
8c1c8: e3a05005 mov r5, #5
8c1cc: e4c45001 strb r5, [r4], #1
8c1d0: e3a05000 mov r5, #0
8c1d4: e4c45001 strb r5, [r4], #1
8c1d8: e3a05006 mov r5, #6
8c1dc: e4c45001 strb r5, [r4], #1
8c1e0: e3a05000 mov r5, #0
8c1e4: e4c45001 strb r5, [r4], #1
8c1e8: e3a05004 mov r5, #4
8c1ec: e4c45001 strb r5, [r4], #1
8c1f0: e3a05001 mov r5, #1
8c1f4: e4c45001 strb r5, [r4], #1
8c1f8: e3a05005 mov r5, #5
8c1fc: e4c45001 strb r5, [r4], #1
8c200: e3a05001 mov r5, #1
8c204: e4c45001 strb r5, [r4], #1
8c208: e59f60d0 ldr r6, [pc, #208] ; 8c2e0 <Spawn_Z+0x68>
8c20c: e3a07047 mov r7, #71 ; 0x47
8c210: e5c67000 strb r7, [r6]
8c214: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c218: e12fff1e bx lr
0008c21c <Spawn_T>:
8c21c: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c220: e59f40b4 ldr r4, [pc, #180] ; 8c2dc <Spawn_Z+0x64>
8c224: e3a05004 mov r5, #4
8c228: e4c45001 strb r5, [r4], #1
8c22c: e3a05000 mov r5, #0
8c230: e4c45001 strb r5, [r4], #1
8c234: e3a05005 mov r5, #5
8c238: e4c45001 strb r5, [r4], #1
8c23c: e3a05000 mov r5, #0
8c240: e4c45001 strb r5, [r4], #1
8c244: e3a05006 mov r5, #6
8c248: e4c45001 strb r5, [r4], #1
8c24c: e3a05000 mov r5, #0
8c250: e4c45001 strb r5, [r4], #1
8c254: e3a05005 mov r5, #5
8c258: e4c45001 strb r5, [r4], #1
8c25c: e3a05001 mov r5, #1
8c260: e4c45001 strb r5, [r4], #1
8c264: e59f6074 ldr r6, [pc, #116] ; 8c2e0 <Spawn_Z+0x68>
8c268: e3a07050 mov r7, #80 ; 0x50
8c26c: e5c67000 strb r7, [r6]
8c270: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c274: e12fff1e bx lr
0008c278 <Spawn_Z>:
8c278: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c27c: e59f4058 ldr r4, [pc, #88] ; 8c2dc <Spawn_Z+0x64>
8c280: e3a05004 mov r5, #4
8c284: e4c45001 strb r5, [r4], #1
8c288: e3a05000 mov r5, #0
8c28c: e4c45001 strb r5, [r4], #1
8c290: e3a05005 mov r5, #5
8c294: e4c45001 strb r5, [r4], #1
8c298: e3a05000 mov r5, #0
8c29c: e4c45001 strb r5, [r4], #1
8c2a0: e3a05005 mov r5, #5
8c2a4: e4c45001 strb r5, [r4], #1
8c2a8: e3a05001 mov r5, #1
8c2ac: e4c45001 strb r5, [r4], #1
8c2b0: e3a05006 mov r5, #6
8c2b4: e4c45001 strb r5, [r4], #1
8c2b8: e3a05001 mov r5, #1
8c2bc: e4c45001 strb r5, [r4], #1
8c2c0: e59f6018 ldr r6, [pc, #24] ; 8c2e0 <Spawn_Z+0x68>
8c2c4: e3a07052 mov r7, #82 ; 0x52
8c2c8: e5c67000 strb r7, [r6]
8c2cc: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c2d0: e12fff1e bx lr
8c2d4: 0008b908 .word 0x0008b908
8c2d8: 0008b913 .word 0x0008b913
8c2dc: 0008b90a .word 0x0008b90a
8c2e0: 0008b912 .word 0x0008b912
0008c2e4 <Clear_Rows>:
8c2e4: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c2e8: eb000016 bl 8c348 <Check_Rows>
8c2ec: e3500000 cmp r0, #0
8c2f0: 0a000012 beq 8c340 <endClearRows>
8c2f4: e1a04000 mov r4, r0
8c2f8: e3a07012 mov r7, #18
8c2fc: e3a05001 mov r5, #1
0008c300 <clearRowsLoop>:
8c300: e3540000 cmp r4, #0
8c304: 0a00000c beq 8c33c <endClearRowsLoop>
8c308: e0046005 and r6, r4, r5
8c30c: e3560000 cmp r6, #0
8c310: 0a000007 beq 8c334 <skipClearAndMove>
8c314: e1a00005 mov r0, r5
8c318: eb000123 bl 8c7ac <Number_To_Bit>
8c31c: eb00004c bl 8c454 <Clear_Move>
8c320: e1a00007 mov r0, r7
8c324: eb000038 bl 8c40c <Clear_Row>
8c328: e1c44005 bic r4, r4, r5
8c32c: e1a040a4 lsr r4, r4, #1
8c330: eafffff2 b 8c300 <clearRowsLoop>
0008c334 <skipClearAndMove>:
8c334: e1a05085 lsl r5, r5, #1
8c338: eafffff0 b 8c300 <clearRowsLoop>
0008c33c <endClearRowsLoop>:
8c33c: eb0001a8 bl 8c9e4 <Redraw_Board>
0008c340 <endClearRows>:
8c340: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c344: e12fff1e bx lr
0008c348 <Check_Rows>:
8c348: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c34c: e3a0400b mov r4, #11
8c350: e3a05014 mov r5, #20
8c354: e3a06000 mov r6, #0
8c358: e3a09000 mov r9, #0
0008c35c <checkRowsOuterLoop>:
8c35c: e3560013 cmp r6, #19
8c360: 2a000012 bcs 8c3b0 <endCheckRowsOuterLoop>
8c364: e3a07000 mov r7, #0
8c368: e3a0400a mov r4, #10
8c36c: e3a08001 mov r8, #1
0008c370 <checkRowsInnerLoop>:
8c370: e357000a cmp r7, #10
8c374: 2a000008 bcs 8c39c <endCheckRowsInnerLoop>
8c378: e1a00004 mov r0, r4
8c37c: e1a01005 mov r1, r5
8c380: eb0001af bl 8ca44 <Check_Empty>
8c384: e3500001 cmp r0, #1
8c388: 03a08000 moveq r8, #0
8c38c: 0a000002 beq 8c39c <endCheckRowsInnerLoop>
8c390: e2877001 add r7, r7, #1
8c394: e2444001 sub r4, r4, #1
8c398: eafffff4 b 8c370 <checkRowsInnerLoop>
0008c39c <endCheckRowsInnerLoop>:
8c39c: e1a08618 lsl r8, r8, r6
8c3a0: e1899008 orr r9, r9, r8
8c3a4: e2866001 add r6, r6, #1
8c3a8: e2455001 sub r5, r5, #1
8c3ac: eaffffea b 8c35c <checkRowsOuterLoop>
0008c3b0 <endCheckRowsOuterLoop>:
8c3b0: e1a00009 mov r0, r9
8c3b4: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c3b8: e12fff1e bx lr
0008c3bc <Move_Down_Row>:
8c3bc: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c3c0: e3a05014 mov r5, #20
8c3c4: e0455000 sub r5, r5, r0
8c3c8: e59f60c4 ldr r6, [pc, #196] ; 8c494 <endClearMoveLoop+0x8>
8c3cc: e3a0800c mov r8, #12
8c3d0: e0050598 mul r5, r8, r5
8c3d4: e3a0400a mov r4, #10
8c3d8: e0866004 add r6, r6, r4
8c3dc: e0866005 add r6, r6, r5
8c3e0: e1a07006 mov r7, r6
8c3e4: e0877008 add r7, r7, r8
8c3e8: e3a09000 mov r9, #0
0008c3ec <moveDownRowLoop>:
8c3ec: e359000a cmp r9, #10
8c3f0: aa000003 bge 8c404 <endMoveDownRowLoop>
8c3f4: e456a001 ldrb sl, [r6], #-1
8c3f8: e447a001 strb sl, [r7], #-1
8c3fc: e2899001 add r9, r9, #1
8c400: eafffff9 b 8c3ec <moveDownRowLoop>
0008c404 <endMoveDownRowLoop>:
8c404: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c408: e12fff1e bx lr
0008c40c <Clear_Row>:
8c40c: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c410: e3a05014 mov r5, #20
8c414: e0455000 sub r5, r5, r0
8c418: e59f6074 ldr r6, [pc, #116] ; 8c494 <endClearMoveLoop+0x8>
8c41c: e3a0700c mov r7, #12
8c420: e0050597 mul r5, r7, r5
8c424: e3a0400a mov r4, #10
8c428: e0866004 add r6, r6, r4
8c42c: e0866005 add r6, r6, r5
8c430: e3a08000 mov r8, #0
8c434: e3a09045 mov r9, #69 ; 0x45
0008c438 <clearRowLoop>:
8c438: e358000a cmp r8, #10
8c43c: aa000002 bge 8c44c <endClearRowLoop>
8c440: e4469001 strb r9, [r6], #-1
8c444: e2888001 add r8, r8, #1
8c448: eafffffa b 8c438 <clearRowLoop>
0008c44c <endClearRowLoop>:
8c44c: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c450: e12fff1e bx lr
0008c454 <Clear_Move>:
8c454: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c458: e1a05000 mov r5, r0
8c45c: ebffffea bl 8c40c <Clear_Row>
8c460: e1a06005 mov r6, r5
8c464: e2656013 rsb r6, r5, #19
8c468: e3a07000 mov r7, #0
8c46c: e2855001 add r5, r5, #1
0008c470 <clearMoveLoop>:
8c470: e1570006 cmp r7, r6
8c474: aa000004 bge 8c48c <endClearMoveLoop>
8c478: e1a00005 mov r0, r5
8c47c: ebffffce bl 8c3bc <Move_Down_Row>
8c480: e2877001 add r7, r7, #1
8c484: e2855001 add r5, r5, #1
8c488: eafffff8 b 8c470 <clearMoveLoop>
0008c48c <endClearMoveLoop>:
8c48c: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c490: e12fff1e bx lr
8c494: 0008b914 .word 0x0008b914
0008c498 <Draw_Pixel>:
8c498: e52d4004 push {r4} ; (str r4, [sp, #-4]!)
8c49c: e0804501 add r4, r0, r1, lsl #10
8c4a0: e1a04084 lsl r4, r4, #1
8c4a4: e59f01b0 ldr r0, [pc, #432] ; 8c65c <Clear_Screen+0x24>
8c4a8: e5900000 ldr r0, [r0]
8c4ac: e18020b4 strh r2, [r0, r4]
8c4b0: e49d4004 pop {r4} ; (ldr r4, [sp], #4)
8c4b4: e12fff1e bx lr
0008c4b8 <Draw_LineH>:
8c4b8: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c4bc: e1a04000 mov r4, r0
8c4c0: e1a05001 mov r5, r1
8c4c4: e1a06002 mov r6, r2
8c4c8: e1a07003 mov r7, r3
8c4cc: e3a08001 mov r8, #1
0008c4d0 <lineHLoop>:
8c4d0: e1580007 cmp r8, r7
8c4d4: 8a000006 bhi 8c4f4 <endLineHLoop>
8c4d8: e1a00004 mov r0, r4
8c4dc: e1a01005 mov r1, r5
8c4e0: e1a02006 mov r2, r6
8c4e4: ebffffeb bl 8c498 <Draw_Pixel>
8c4e8: e2888001 add r8, r8, #1
8c4ec: e2844001 add r4, r4, #1
8c4f0: eafffff6 b 8c4d0 <lineHLoop>
0008c4f4 <endLineHLoop>:
8c4f4: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c4f8: e12fff1e bx lr
0008c4fc <Draw_Box>:
8c4fc: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c500: e1a05000 mov r5, r0
8c504: e1a06001 mov r6, r1
8c508: e1a07002 mov r7, r2
8c50c: e1a08003 mov r8, r3
8c510: e1a09004 mov r9, r4
8c514: e3a0a001 mov sl, #1
0008c518 <lineVLoop>:
8c518: e15a0009 cmp sl, r9
8c51c: 8a000007 bhi 8c540 <endLineVLoop>
8c520: e1a00005 mov r0, r5
8c524: e1a01006 mov r1, r6
8c528: e1a02007 mov r2, r7
8c52c: e1a03008 mov r3, r8
8c530: ebffffe0 bl 8c4b8 <Draw_LineH>
8c534: e28aa001 add sl, sl, #1
8c538: e2866001 add r6, r6, #1
8c53c: eafffff5 b 8c518 <lineVLoop>
0008c540 <endLineVLoop>:
8c540: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c544: e12fff1e bx lr
0008c548 <Draw_Image>:
8c548: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c54c: e1a04000 mov r4, r0
8c550: e0d450b2 ldrh r5, [r4], #2
8c554: e0d460b2 ldrh r6, [r4], #2
8c558: e0d470b2 ldrh r7, [r4], #2
8c55c: e0d480b2 ldrh r8, [r4], #2
8c560: e3a09000 mov r9, #0
0008c564 <outerImageLoop>:
8c564: e1590008 cmp r9, r8
8c568: 2a00000d bcs 8c5a4 <endOuterImageLoop>
8c56c: e3a0a000 mov sl, #0
0008c570 <innerImageLoop>:
8c570: e15a0007 cmp sl, r7
8c574: 2a000006 bcs 8c594 <endInnerImageLoop>
8c578: e1a00005 mov r0, r5
8c57c: e1a01006 mov r1, r6
8c580: e0d420b2 ldrh r2, [r4], #2
8c584: ebffffc3 bl 8c498 <Draw_Pixel>
8c588: e28aa001 add sl, sl, #1
8c58c: e2855001 add r5, r5, #1
8c590: eafffff6 b 8c570 <innerImageLoop>
0008c594 <endInnerImageLoop>:
8c594: e2899001 add r9, r9, #1
8c598: e2866001 add r6, r6, #1
8c59c: e0455007 sub r5, r5, r7
8c5a0: eaffffef b 8c564 <outerImageLoop>
0008c5a4 <endOuterImageLoop>:
8c5a4: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c5a8: e12fff1e bx lr
0008c5ac <Draw_Block>:
8c5ac: e3520001 cmp r2, #1
8c5b0: da00001e ble 8c630 <endOuterBlockLoop>
8c5b4: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c5b8: e1a04000 mov r4, r0
8c5bc: e3a07020 mov r7, #32
8c5c0: e3a08020 mov r8, #32
8c5c4: e1a05001 mov r5, r1
8c5c8: e0050597 mul r5, r7, r5
8c5cc: e59f008c ldr r0, [pc, #140] ; 8c660 <Clear_Screen+0x28>
8c5d0: e0d010b2 ldrh r1, [r0], #2
8c5d4: e0855001 add r5, r5, r1
8c5d8: e1a06002 mov r6, r2
8c5dc: e0060697 mul r6, r7, r6
8c5e0: e1d010b0 ldrh r1, [r0]
8c5e4: e2411020 sub r1, r1, #32
8c5e8: e0866001 add r6, r6, r1
8c5ec: e3a09000 mov r9, #0
0008c5f0 <outerBlockLoop>:
8c5f0: e1590008 cmp r9, r8
8c5f4: 2a00000d bcs 8c630 <endOuterBlockLoop>
8c5f8: e3a0a000 mov sl, #0
0008c5fc <innerBlockLoop>:
8c5fc: e15a0007 cmp sl, r7
8c600: 2a000006 bcs 8c620 <endInnerBlockLoop>
8c604: e1a00005 mov r0, r5
8c608: e1a01006 mov r1, r6
8c60c: e0d420b2 ldrh r2, [r4], #2
8c610: ebffffa0 bl 8c498 <Draw_Pixel>
8c614: e28aa001 add sl, sl, #1
8c618: e2855001 add r5, r5, #1
8c61c: eafffff6 b 8c5fc <innerBlockLoop>
0008c620 <endInnerBlockLoop>:
8c620: e2899001 add r9, r9, #1
8c624: e2866001 add r6, r6, #1
8c628: e0455007 sub r5, r5, r7
8c62c: eaffffef b 8c5f0 <outerBlockLoop>
0008c630 <endOuterBlockLoop>:
8c630: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c634: e12fff1e bx lr
0008c638 <Clear_Screen>:
8c638: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c63c: e3a00000 mov r0, #0
8c640: e3a01000 mov r1, #0
8c644: e3a02000 mov r2, #0
8c648: e3a03b01 mov r3, #1024 ; 0x400
8c64c: e3a04c03 mov r4, #768 ; 0x300
8c650: ebffffa9 bl 8c4fc <Draw_Box>
8c654: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c658: e12fff1e bx lr
8c65c: 000090f0 .word 0x000090f0
8c660: 00009100 .word 0x00009100
0008c664 <Wait>:
8c664: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c668: e59f117c ldr r1, [pc, #380] ; 8c7ec <endNumberToBitLoop+0x14>
8c66c: e5912000 ldr r2, [r1]
8c670: e0823000 add r3, r2, r0
0008c674 <delayLoop>:
8c674: e5914000 ldr r4, [r1]
8c678: e1540003 cmp r4, r3
8c67c: 3afffffc bcc 8c674 <delayLoop>
0008c680 <endDelayLoop>:
8c680: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
8c684: e12fff1e bx lr
0008c688 <Random_Number_Generator>:
8c688: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
8c68c: e59f1158 ldr r1, [pc, #344] ; 8c7ec <endNumberToBitLoop+0x14>
8c690: e5910000 ldr r0, [r1]
8c694: e0200620 eor r0, r0, r0, lsr #12
8c698: e0200c80 eor r0, r0, r0, lsl #25