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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global __prep_buffer
__prep_buffer:
/* 801C93A8 001C5008 80 83 00 18 */ lwz r4, 0x18(r3)
/* 801C93AC 001C500C 80 03 00 2C */ lwz r0, 0x2c(r3)
/* 801C93B0 001C5010 80 C3 00 1C */ lwz r6, 0x1c(r3)
/* 801C93B4 001C5014 80 A3 00 20 */ lwz r5, 0x20(r3)
/* 801C93B8 001C5018 7C 80 00 38 */ and r0, r4, r0
/* 801C93BC 001C501C 90 C3 00 24 */ stw r6, 0x24(r3)
/* 801C93C0 001C5020 7C 00 28 50 */ subf r0, r0, r5
/* 801C93C4 001C5024 90 03 00 28 */ stw r0, 0x28(r3)
/* 801C93C8 001C5028 90 83 00 34 */ stw r4, 0x34(r3)
/* 801C93CC 001C502C 4E 80 00 20 */ blr
.global __load_buffer
__load_buffer:
/* 801C93D0 001C5030 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801C93D4 001C5034 7C 08 02 A6 */ mflr r0
/* 801C93D8 001C5038 2C 05 00 01 */ cmpwi r5, 1
/* 801C93DC 001C503C 90 01 00 14 */ stw r0, 0x14(r1)
/* 801C93E0 001C5040 93 E1 00 0C */ stw r31, 0xc(r1)
/* 801C93E4 001C5044 7C 7F 1B 78 */ mr r31, r3
/* 801C93E8 001C5048 93 C1 00 08 */ stw r30, 8(r1)
/* 801C93EC 001C504C 7C 9E 23 78 */ mr r30, r4
/* 801C93F0 001C5050 80 C3 00 18 */ lwz r6, 0x18(r3)
/* 801C93F4 001C5054 80 03 00 2C */ lwz r0, 0x2c(r3)
/* 801C93F8 001C5058 80 A3 00 1C */ lwz r5, 0x1c(r3)
/* 801C93FC 001C505C 80 83 00 20 */ lwz r4, 0x20(r3)
/* 801C9400 001C5060 7C C0 00 38 */ and r0, r6, r0
/* 801C9404 001C5064 90 A3 00 24 */ stw r5, 0x24(r3)
/* 801C9408 001C5068 7C 00 20 50 */ subf r0, r0, r4
/* 801C940C 001C506C 90 03 00 28 */ stw r0, 0x28(r3)
/* 801C9410 001C5070 90 C3 00 34 */ stw r6, 0x34(r3)
/* 801C9414 001C5074 40 82 00 08 */ bne lbl_801C941C
/* 801C9418 001C5078 90 83 00 28 */ stw r4, 0x28(r3)
lbl_801C941C:
/* 801C941C 001C507C 81 9F 00 3C */ lwz r12, 0x3c(r31)
/* 801C9420 001C5080 38 BF 00 28 */ addi r5, r31, 0x28
/* 801C9424 001C5084 80 63 00 00 */ lwz r3, 0(r3)
/* 801C9428 001C5088 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 801C942C 001C508C 80 DF 00 48 */ lwz r6, 0x48(r31)
/* 801C9430 001C5090 7D 89 03 A6 */ mtctr r12
/* 801C9434 001C5094 4E 80 04 21 */ bctrl
/* 801C9438 001C5098 2C 03 00 02 */ cmpwi r3, 2
/* 801C943C 001C509C 40 82 00 0C */ bne lbl_801C9448
/* 801C9440 001C50A0 38 00 00 00 */ li r0, 0
/* 801C9444 001C50A4 90 1F 00 28 */ stw r0, 0x28(r31)
lbl_801C9448:
/* 801C9448 001C50A8 2C 1E 00 00 */ cmpwi r30, 0
/* 801C944C 001C50AC 41 82 00 0C */ beq lbl_801C9458
/* 801C9450 001C50B0 80 1F 00 28 */ lwz r0, 0x28(r31)
/* 801C9454 001C50B4 90 1E 00 00 */ stw r0, 0(r30)
lbl_801C9458:
/* 801C9458 001C50B8 2C 03 00 00 */ cmpwi r3, 0
/* 801C945C 001C50BC 41 82 00 08 */ beq lbl_801C9464
/* 801C9460 001C50C0 48 00 00 54 */ b lbl_801C94B4
lbl_801C9464:
/* 801C9464 001C50C4 80 1F 00 04 */ lwz r0, 4(r31)
/* 801C9468 001C50C8 80 9F 00 18 */ lwz r4, 0x18(r31)
/* 801C946C 001C50CC 80 7F 00 28 */ lwz r3, 0x28(r31)
/* 801C9470 001C50D0 54 00 6F FF */ rlwinm. r0, r0, 0xd, 0x1f, 0x1f
/* 801C9474 001C50D4 7C 04 1A 14 */ add r0, r4, r3
/* 801C9478 001C50D8 90 1F 00 18 */ stw r0, 0x18(r31)
/* 801C947C 001C50DC 40 82 00 34 */ bne lbl_801C94B0
/* 801C9480 001C50E0 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 801C9484 001C50E4 7C 69 03 A6 */ mtctr r3
/* 801C9488 001C50E8 2C 03 00 00 */ cmpwi r3, 0
/* 801C948C 001C50EC 41 82 00 24 */ beq lbl_801C94B0
lbl_801C9490:
/* 801C9490 001C50F0 88 04 00 00 */ lbz r0, 0(r4)
/* 801C9494 001C50F4 38 84 00 01 */ addi r4, r4, 1
/* 801C9498 001C50F8 28 00 00 0A */ cmplwi r0, 0xa
/* 801C949C 001C50FC 40 82 00 10 */ bne lbl_801C94AC
/* 801C94A0 001C5100 80 7F 00 18 */ lwz r3, 0x18(r31)
/* 801C94A4 001C5104 38 03 00 01 */ addi r0, r3, 1
/* 801C94A8 001C5108 90 1F 00 18 */ stw r0, 0x18(r31)
lbl_801C94AC:
/* 801C94AC 001C510C 42 00 FF E4 */ bdnz lbl_801C9490
lbl_801C94B0:
/* 801C94B0 001C5110 38 60 00 00 */ li r3, 0
lbl_801C94B4:
/* 801C94B4 001C5114 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801C94B8 001C5118 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 801C94BC 001C511C 83 C1 00 08 */ lwz r30, 8(r1)
/* 801C94C0 001C5120 7C 08 03 A6 */ mtlr r0
/* 801C94C4 001C5124 38 21 00 10 */ addi r1, r1, 0x10
/* 801C94C8 001C5128 4E 80 00 20 */ blr
.global __flush_buffer
__flush_buffer:
/* 801C94CC 001C512C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801C94D0 001C5130 7C 08 02 A6 */ mflr r0
/* 801C94D4 001C5134 90 01 00 14 */ stw r0, 0x14(r1)
/* 801C94D8 001C5138 93 E1 00 0C */ stw r31, 0xc(r1)
/* 801C94DC 001C513C 7C 9F 23 78 */ mr r31, r4
/* 801C94E0 001C5140 93 C1 00 08 */ stw r30, 8(r1)
/* 801C94E4 001C5144 7C 7E 1B 78 */ mr r30, r3
/* 801C94E8 001C5148 80 A3 00 1C */ lwz r5, 0x1c(r3)
/* 801C94EC 001C514C 80 03 00 24 */ lwz r0, 0x24(r3)
/* 801C94F0 001C5150 7C 05 00 51 */ subf. r0, r5, r0
/* 801C94F4 001C5154 41 82 00 50 */ beq lbl_801C9544
/* 801C94F8 001C5158 81 9E 00 40 */ lwz r12, 0x40(r30)
/* 801C94FC 001C515C 7C A4 2B 78 */ mr r4, r5
/* 801C9500 001C5160 90 03 00 28 */ stw r0, 0x28(r3)
/* 801C9504 001C5164 38 BE 00 28 */ addi r5, r30, 0x28
/* 801C9508 001C5168 80 63 00 00 */ lwz r3, 0(r3)
/* 801C950C 001C516C 80 DE 00 48 */ lwz r6, 0x48(r30)
/* 801C9510 001C5170 7D 89 03 A6 */ mtctr r12
/* 801C9514 001C5174 4E 80 04 21 */ bctrl
/* 801C9518 001C5178 2C 1F 00 00 */ cmpwi r31, 0
/* 801C951C 001C517C 41 82 00 0C */ beq lbl_801C9528
/* 801C9520 001C5180 80 1E 00 28 */ lwz r0, 0x28(r30)
/* 801C9524 001C5184 90 1F 00 00 */ stw r0, 0(r31)
lbl_801C9528:
/* 801C9528 001C5188 2C 03 00 00 */ cmpwi r3, 0
/* 801C952C 001C518C 41 82 00 08 */ beq lbl_801C9534
/* 801C9530 001C5190 48 00 00 3C */ b lbl_801C956C
lbl_801C9534:
/* 801C9534 001C5194 80 7E 00 18 */ lwz r3, 0x18(r30)
/* 801C9538 001C5198 80 1E 00 28 */ lwz r0, 0x28(r30)
/* 801C953C 001C519C 7C 03 02 14 */ add r0, r3, r0
/* 801C9540 001C51A0 90 1E 00 18 */ stw r0, 0x18(r30)
lbl_801C9544:
/* 801C9544 001C51A4 80 9E 00 18 */ lwz r4, 0x18(r30)
/* 801C9548 001C51A8 38 60 00 00 */ li r3, 0
/* 801C954C 001C51AC 80 1E 00 2C */ lwz r0, 0x2c(r30)
/* 801C9550 001C51B0 80 DE 00 1C */ lwz r6, 0x1c(r30)
/* 801C9554 001C51B4 80 BE 00 20 */ lwz r5, 0x20(r30)
/* 801C9558 001C51B8 7C 80 00 38 */ and r0, r4, r0
/* 801C955C 001C51BC 90 DE 00 24 */ stw r6, 0x24(r30)
/* 801C9560 001C51C0 7C 00 28 50 */ subf r0, r0, r5
/* 801C9564 001C51C4 90 1E 00 28 */ stw r0, 0x28(r30)
/* 801C9568 001C51C8 90 9E 00 34 */ stw r4, 0x34(r30)
lbl_801C956C:
/* 801C956C 001C51CC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801C9570 001C51D0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 801C9574 001C51D4 83 C1 00 08 */ lwz r30, 8(r1)
/* 801C9578 001C51D8 7C 08 03 A6 */ mtlr r0
/* 801C957C 001C51DC 38 21 00 10 */ addi r1, r1, 0x10
/* 801C9580 001C51E0 4E 80 00 20 */ blr
|