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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global MATHi_CRC8InitTable
MATHi_CRC8InitTable:
/* 802EE638 002EA298 38 00 01 00 */ li r0, 0x100
/* 802EE63C 002EA29C 38 C0 00 00 */ li r6, 0
/* 802EE640 002EA2A0 7C 09 03 A6 */ mtctr r0
lbl_802EE644:
/* 802EE644 002EA2A4 54 C0 06 31 */ rlwinm. r0, r6, 0, 0x18, 0x18
/* 802EE648 002EA2A8 54 C5 08 3C */ slwi r5, r6, 1
/* 802EE64C 002EA2AC 41 82 00 08 */ beq lbl_802EE654
/* 802EE650 002EA2B0 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE654:
/* 802EE654 002EA2B4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EE658 002EA2B8 54 A5 08 3C */ slwi r5, r5, 1
/* 802EE65C 002EA2BC 41 82 00 08 */ beq lbl_802EE664
/* 802EE660 002EA2C0 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE664:
/* 802EE664 002EA2C4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EE668 002EA2C8 54 A5 08 3C */ slwi r5, r5, 1
/* 802EE66C 002EA2CC 41 82 00 08 */ beq lbl_802EE674
/* 802EE670 002EA2D0 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE674:
/* 802EE674 002EA2D4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EE678 002EA2D8 54 A5 08 3C */ slwi r5, r5, 1
/* 802EE67C 002EA2DC 41 82 00 08 */ beq lbl_802EE684
/* 802EE680 002EA2E0 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE684:
/* 802EE684 002EA2E4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EE688 002EA2E8 54 A5 08 3C */ slwi r5, r5, 1
/* 802EE68C 002EA2EC 41 82 00 08 */ beq lbl_802EE694
/* 802EE690 002EA2F0 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE694:
/* 802EE694 002EA2F4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EE698 002EA2F8 54 A5 08 3C */ slwi r5, r5, 1
/* 802EE69C 002EA2FC 41 82 00 08 */ beq lbl_802EE6A4
/* 802EE6A0 002EA300 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE6A4:
/* 802EE6A4 002EA304 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EE6A8 002EA308 54 A5 08 3C */ slwi r5, r5, 1
/* 802EE6AC 002EA30C 41 82 00 08 */ beq lbl_802EE6B4
/* 802EE6B0 002EA310 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE6B4:
/* 802EE6B4 002EA314 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EE6B8 002EA318 54 A5 08 3C */ slwi r5, r5, 1
/* 802EE6BC 002EA31C 41 82 00 08 */ beq lbl_802EE6C4
/* 802EE6C0 002EA320 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE6C4:
/* 802EE6C4 002EA324 98 A3 00 00 */ stb r5, 0(r3)
/* 802EE6C8 002EA328 38 C6 00 01 */ addi r6, r6, 1
/* 802EE6CC 002EA32C 38 63 00 01 */ addi r3, r3, 1
/* 802EE6D0 002EA330 42 00 FF 74 */ bdnz lbl_802EE644
/* 802EE6D4 002EA334 4E 80 00 20 */ blr
.global MATHi_CRC32InitTableRev
MATHi_CRC32InitTableRev:
/* 802EE6D8 002EA338 38 00 01 00 */ li r0, 0x100
/* 802EE6DC 002EA33C 38 C0 00 00 */ li r6, 0
/* 802EE6E0 002EA340 7C 09 03 A6 */ mtctr r0
lbl_802EE6E4:
/* 802EE6E4 002EA344 54 C0 07 FF */ clrlwi. r0, r6, 0x1f
/* 802EE6E8 002EA348 54 C5 F8 7E */ srwi r5, r6, 1
/* 802EE6EC 002EA34C 41 82 00 08 */ beq lbl_802EE6F4
/* 802EE6F0 002EA350 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE6F4:
/* 802EE6F4 002EA354 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
/* 802EE6F8 002EA358 54 A5 F8 7E */ srwi r5, r5, 1
/* 802EE6FC 002EA35C 41 82 00 08 */ beq lbl_802EE704
/* 802EE700 002EA360 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE704:
/* 802EE704 002EA364 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
/* 802EE708 002EA368 54 A5 F8 7E */ srwi r5, r5, 1
/* 802EE70C 002EA36C 41 82 00 08 */ beq lbl_802EE714
/* 802EE710 002EA370 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE714:
/* 802EE714 002EA374 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
/* 802EE718 002EA378 54 A5 F8 7E */ srwi r5, r5, 1
/* 802EE71C 002EA37C 41 82 00 08 */ beq lbl_802EE724
/* 802EE720 002EA380 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE724:
/* 802EE724 002EA384 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
/* 802EE728 002EA388 54 A5 F8 7E */ srwi r5, r5, 1
/* 802EE72C 002EA38C 41 82 00 08 */ beq lbl_802EE734
/* 802EE730 002EA390 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE734:
/* 802EE734 002EA394 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
/* 802EE738 002EA398 54 A5 F8 7E */ srwi r5, r5, 1
/* 802EE73C 002EA39C 41 82 00 08 */ beq lbl_802EE744
/* 802EE740 002EA3A0 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE744:
/* 802EE744 002EA3A4 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
/* 802EE748 002EA3A8 54 A5 F8 7E */ srwi r5, r5, 1
/* 802EE74C 002EA3AC 41 82 00 08 */ beq lbl_802EE754
/* 802EE750 002EA3B0 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE754:
/* 802EE754 002EA3B4 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
/* 802EE758 002EA3B8 54 A5 F8 7E */ srwi r5, r5, 1
/* 802EE75C 002EA3BC 41 82 00 08 */ beq lbl_802EE764
/* 802EE760 002EA3C0 7C A5 22 78 */ xor r5, r5, r4
lbl_802EE764:
/* 802EE764 002EA3C4 90 A3 00 00 */ stw r5, 0(r3)
/* 802EE768 002EA3C8 38 63 00 04 */ addi r3, r3, 4
/* 802EE76C 002EA3CC 38 C6 00 01 */ addi r6, r6, 1
/* 802EE770 002EA3D0 42 00 FF 74 */ bdnz lbl_802EE6E4
/* 802EE774 002EA3D4 4E 80 00 20 */ blr
.global MATH_CalcCRC8
MATH_CalcCRC8:
/* 802EE778 002EA3D8 2C 05 00 00 */ cmpwi r5, 0
/* 802EE77C 002EA3DC 38 E0 00 00 */ li r7, 0
/* 802EE780 002EA3E0 39 60 00 00 */ li r11, 0
/* 802EE784 002EA3E4 41 82 00 BC */ beq lbl_802EE840
/* 802EE788 002EA3E8 28 05 00 08 */ cmplwi r5, 8
/* 802EE78C 002EA3EC 38 C5 FF F8 */ addi r6, r5, -8
/* 802EE790 002EA3F0 40 81 00 88 */ ble lbl_802EE818
/* 802EE794 002EA3F4 38 06 00 07 */ addi r0, r6, 7
/* 802EE798 002EA3F8 54 00 E8 FE */ srwi r0, r0, 3
/* 802EE79C 002EA3FC 7C 09 03 A6 */ mtctr r0
/* 802EE7A0 002EA400 28 06 00 00 */ cmplwi r6, 0
/* 802EE7A4 002EA404 40 81 00 74 */ ble lbl_802EE818
lbl_802EE7A8:
/* 802EE7A8 002EA408 88 04 00 00 */ lbz r0, 0(r4)
/* 802EE7AC 002EA40C 39 6B 00 08 */ addi r11, r11, 8
/* 802EE7B0 002EA410 88 C4 00 01 */ lbz r6, 1(r4)
/* 802EE7B4 002EA414 7C E7 02 78 */ xor r7, r7, r0
/* 802EE7B8 002EA418 88 04 00 02 */ lbz r0, 2(r4)
/* 802EE7BC 002EA41C 54 E7 06 3E */ clrlwi r7, r7, 0x18
/* 802EE7C0 002EA420 89 24 00 03 */ lbz r9, 3(r4)
/* 802EE7C4 002EA424 7C E3 38 AE */ lbzx r7, r3, r7
/* 802EE7C8 002EA428 89 04 00 04 */ lbz r8, 4(r4)
/* 802EE7CC 002EA42C 7C E6 32 78 */ xor r6, r7, r6
/* 802EE7D0 002EA430 88 E4 00 05 */ lbz r7, 5(r4)
/* 802EE7D4 002EA434 7D 43 30 AE */ lbzx r10, r3, r6
/* 802EE7D8 002EA438 88 C4 00 06 */ lbz r6, 6(r4)
/* 802EE7DC 002EA43C 7D 4A 02 78 */ xor r10, r10, r0
/* 802EE7E0 002EA440 88 04 00 07 */ lbz r0, 7(r4)
/* 802EE7E4 002EA444 7D 43 50 AE */ lbzx r10, r3, r10
/* 802EE7E8 002EA448 38 84 00 08 */ addi r4, r4, 8
/* 802EE7EC 002EA44C 7D 49 4A 78 */ xor r9, r10, r9
/* 802EE7F0 002EA450 7D 23 48 AE */ lbzx r9, r3, r9
/* 802EE7F4 002EA454 7D 28 42 78 */ xor r8, r9, r8
/* 802EE7F8 002EA458 7D 03 40 AE */ lbzx r8, r3, r8
/* 802EE7FC 002EA45C 7D 07 3A 78 */ xor r7, r8, r7
/* 802EE800 002EA460 7C E3 38 AE */ lbzx r7, r3, r7
/* 802EE804 002EA464 7C E6 32 78 */ xor r6, r7, r6
/* 802EE808 002EA468 7C C3 30 AE */ lbzx r6, r3, r6
/* 802EE80C 002EA46C 7C C0 02 78 */ xor r0, r6, r0
/* 802EE810 002EA470 7C E3 00 AE */ lbzx r7, r3, r0
/* 802EE814 002EA474 42 00 FF 94 */ bdnz lbl_802EE7A8
lbl_802EE818:
/* 802EE818 002EA478 7C 0B 28 50 */ subf r0, r11, r5
/* 802EE81C 002EA47C 7C 09 03 A6 */ mtctr r0
/* 802EE820 002EA480 7C 0B 28 40 */ cmplw r11, r5
/* 802EE824 002EA484 40 80 00 1C */ bge lbl_802EE840
lbl_802EE828:
/* 802EE828 002EA488 88 04 00 00 */ lbz r0, 0(r4)
/* 802EE82C 002EA48C 38 84 00 01 */ addi r4, r4, 1
/* 802EE830 002EA490 7C E0 02 78 */ xor r0, r7, r0
/* 802EE834 002EA494 54 00 06 3E */ clrlwi r0, r0, 0x18
/* 802EE838 002EA498 7C E3 00 AE */ lbzx r7, r3, r0
/* 802EE83C 002EA49C 42 00 FF EC */ bdnz lbl_802EE828
lbl_802EE840:
/* 802EE840 002EA4A0 7C E3 3B 78 */ mr r3, r7
/* 802EE844 002EA4A4 4E 80 00 20 */ blr
.global MATH_CalcCRC32
MATH_CalcCRC32:
/* 802EE848 002EA4A8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802EE84C 002EA4AC 2C 05 00 00 */ cmpwi r5, 0
/* 802EE850 002EA4B0 39 20 FF FF */ li r9, -1
/* 802EE854 002EA4B4 38 C0 00 00 */ li r6, 0
/* 802EE858 002EA4B8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802EE85C 002EA4BC 41 82 01 20 */ beq lbl_802EE97C
/* 802EE860 002EA4C0 28 05 00 08 */ cmplwi r5, 8
/* 802EE864 002EA4C4 38 E5 FF F8 */ addi r7, r5, -8
/* 802EE868 002EA4C8 40 81 00 E4 */ ble lbl_802EE94C
/* 802EE86C 002EA4CC 38 07 00 07 */ addi r0, r7, 7
/* 802EE870 002EA4D0 54 00 E8 FE */ srwi r0, r0, 3
/* 802EE874 002EA4D4 7C 09 03 A6 */ mtctr r0
/* 802EE878 002EA4D8 28 07 00 00 */ cmplwi r7, 0
/* 802EE87C 002EA4DC 40 81 00 D0 */ ble lbl_802EE94C
lbl_802EE880:
/* 802EE880 002EA4E0 88 E4 00 00 */ lbz r7, 0(r4)
/* 802EE884 002EA4E4 55 28 C2 3E */ srwi r8, r9, 8
/* 802EE888 002EA4E8 88 04 00 01 */ lbz r0, 1(r4)
/* 802EE88C 002EA4EC 38 C6 00 08 */ addi r6, r6, 8
/* 802EE890 002EA4F0 7D 27 3A 78 */ xor r7, r9, r7
/* 802EE894 002EA4F4 89 64 00 02 */ lbz r11, 2(r4)
/* 802EE898 002EA4F8 54 E7 15 BA */ rlwinm r7, r7, 2, 0x16, 0x1d
/* 802EE89C 002EA4FC 89 44 00 03 */ lbz r10, 3(r4)
/* 802EE8A0 002EA500 7C E3 38 2E */ lwzx r7, r3, r7
/* 802EE8A4 002EA504 89 24 00 04 */ lbz r9, 4(r4)
/* 802EE8A8 002EA508 7D 1F 3A 78 */ xor r31, r8, r7
/* 802EE8AC 002EA50C 89 04 00 05 */ lbz r8, 5(r4)
/* 802EE8B0 002EA510 7F E0 02 78 */ xor r0, r31, r0
/* 802EE8B4 002EA514 88 E4 00 06 */ lbz r7, 6(r4)
/* 802EE8B8 002EA518 54 0C 15 BA */ rlwinm r12, r0, 2, 0x16, 0x1d
/* 802EE8BC 002EA51C 88 04 00 07 */ lbz r0, 7(r4)
/* 802EE8C0 002EA520 7D 83 60 2E */ lwzx r12, r3, r12
/* 802EE8C4 002EA524 57 FF C2 3E */ srwi r31, r31, 8
/* 802EE8C8 002EA528 38 84 00 08 */ addi r4, r4, 8
/* 802EE8CC 002EA52C 7F EC 62 78 */ xor r12, r31, r12
/* 802EE8D0 002EA530 7D 8B 5A 78 */ xor r11, r12, r11
/* 802EE8D4 002EA534 55 6B 15 BA */ rlwinm r11, r11, 2, 0x16, 0x1d
/* 802EE8D8 002EA538 55 8C C2 3E */ srwi r12, r12, 8
/* 802EE8DC 002EA53C 7D 63 58 2E */ lwzx r11, r3, r11
/* 802EE8E0 002EA540 7D 8B 5A 78 */ xor r11, r12, r11
/* 802EE8E4 002EA544 7D 6A 52 78 */ xor r10, r11, r10
/* 802EE8E8 002EA548 55 4A 15 BA */ rlwinm r10, r10, 2, 0x16, 0x1d
/* 802EE8EC 002EA54C 55 6B C2 3E */ srwi r11, r11, 8
/* 802EE8F0 002EA550 7D 43 50 2E */ lwzx r10, r3, r10
/* 802EE8F4 002EA554 7D 6A 52 78 */ xor r10, r11, r10
/* 802EE8F8 002EA558 7D 49 4A 78 */ xor r9, r10, r9
/* 802EE8FC 002EA55C 55 29 15 BA */ rlwinm r9, r9, 2, 0x16, 0x1d
/* 802EE900 002EA560 55 4A C2 3E */ srwi r10, r10, 8
/* 802EE904 002EA564 7D 23 48 2E */ lwzx r9, r3, r9
/* 802EE908 002EA568 7D 49 4A 78 */ xor r9, r10, r9
/* 802EE90C 002EA56C 7D 28 42 78 */ xor r8, r9, r8
/* 802EE910 002EA570 55 08 15 BA */ rlwinm r8, r8, 2, 0x16, 0x1d
/* 802EE914 002EA574 55 29 C2 3E */ srwi r9, r9, 8
/* 802EE918 002EA578 7D 03 40 2E */ lwzx r8, r3, r8
/* 802EE91C 002EA57C 7D 28 42 78 */ xor r8, r9, r8
/* 802EE920 002EA580 7D 07 3A 78 */ xor r7, r8, r7
/* 802EE924 002EA584 54 E7 15 BA */ rlwinm r7, r7, 2, 0x16, 0x1d
/* 802EE928 002EA588 55 08 C2 3E */ srwi r8, r8, 8
/* 802EE92C 002EA58C 7C E3 38 2E */ lwzx r7, r3, r7
/* 802EE930 002EA590 7D 07 3A 78 */ xor r7, r8, r7
/* 802EE934 002EA594 7C E0 02 78 */ xor r0, r7, r0
/* 802EE938 002EA598 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
/* 802EE93C 002EA59C 54 E7 C2 3E */ srwi r7, r7, 8
/* 802EE940 002EA5A0 7C 03 00 2E */ lwzx r0, r3, r0
/* 802EE944 002EA5A4 7C E9 02 78 */ xor r9, r7, r0
/* 802EE948 002EA5A8 42 00 FF 38 */ bdnz lbl_802EE880
lbl_802EE94C:
/* 802EE94C 002EA5AC 7C 06 28 50 */ subf r0, r6, r5
/* 802EE950 002EA5B0 7C 09 03 A6 */ mtctr r0
/* 802EE954 002EA5B4 7C 06 28 40 */ cmplw r6, r5
/* 802EE958 002EA5B8 40 80 00 24 */ bge lbl_802EE97C
lbl_802EE95C:
/* 802EE95C 002EA5BC 88 04 00 00 */ lbz r0, 0(r4)
/* 802EE960 002EA5C0 55 25 C2 3E */ srwi r5, r9, 8
/* 802EE964 002EA5C4 38 84 00 01 */ addi r4, r4, 1
/* 802EE968 002EA5C8 7D 20 02 78 */ xor r0, r9, r0
/* 802EE96C 002EA5CC 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
/* 802EE970 002EA5D0 7C 03 00 2E */ lwzx r0, r3, r0
/* 802EE974 002EA5D4 7C A9 02 78 */ xor r9, r5, r0
/* 802EE978 002EA5D8 42 00 FF E4 */ bdnz lbl_802EE95C
lbl_802EE97C:
/* 802EE97C 002EA5DC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802EE980 002EA5E0 7D 23 48 F8 */ nor r3, r9, r9
/* 802EE984 002EA5E4 38 21 00 10 */ addi r1, r1, 0x10
/* 802EE988 002EA5E8 4E 80 00 20 */ blr
|