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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global DWC_Base64Encode
DWC_Base64Encode:
/* 8031C124 00317D84 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 8031C128 00317D88 7C 08 02 A6 */ mflr r0
/* 8031C12C 00317D8C 90 01 00 34 */ stw r0, 0x34(r1)
/* 8031C130 00317D90 39 61 00 30 */ addi r11, r1, 0x30
/* 8031C134 00317D94 4B EA AF E9 */ bl _savegpr_24
/* 8031C138 00317D98 3C E0 AA AB */ lis r7, 0xAAAAAAAB@ha
/* 8031C13C 00317D9C 2C 05 00 00 */ cmpwi r5, 0
/* 8031C140 00317DA0 3B C7 AA AB */ addi r30, r7, 0xAAAAAAAB@l
/* 8031C144 00317DA4 7C B9 2B 78 */ mr r25, r5
/* 8031C148 00317DA8 7C FE 20 16 */ mulhwu r7, r30, r4
/* 8031C14C 00317DAC 54 E0 F8 7E */ srwi r0, r7, 1
/* 8031C150 00317DB0 54 E7 08 3A */ rlwinm r7, r7, 1, 0, 0x1d
/* 8031C154 00317DB4 1C 00 00 03 */ mulli r0, r0, 3
/* 8031C158 00317DB8 7C A0 20 50 */ subf r5, r0, r4
/* 8031C15C 00317DBC 7C 05 00 D0 */ neg r0, r5
/* 8031C160 00317DC0 7C 00 2B 78 */ or r0, r0, r5
/* 8031C164 00317DC4 7C 00 FE 70 */ srawi r0, r0, 0x1f
/* 8031C168 00317DC8 54 00 07 7A */ rlwinm r0, r0, 0, 0x1d, 0x1d
/* 8031C16C 00317DCC 7C 07 02 14 */ add r0, r7, r0
/* 8031C170 00317DD0 40 82 00 0C */ bne lbl_8031C17C
/* 8031C174 00317DD4 7C 03 03 78 */ mr r3, r0
/* 8031C178 00317DD8 48 00 01 24 */ b lbl_8031C29C
lbl_8031C17C:
/* 8031C17C 00317DDC 7C 06 00 40 */ cmplw r6, r0
/* 8031C180 00317DE0 40 80 00 0C */ bge lbl_8031C18C
/* 8031C184 00317DE4 38 60 FF FF */ li r3, -1
/* 8031C188 00317DE8 48 00 01 14 */ b lbl_8031C29C
lbl_8031C18C:
/* 8031C18C 00317DEC 7C 7C 1B 78 */ mr r28, r3
/* 8031C190 00317DF0 7F 3A CB 78 */ mr r26, r25
/* 8031C194 00317DF4 7F 63 22 14 */ add r27, r3, r4
/* 8031C198 00317DF8 3B 00 00 2A */ li r24, 0x2a
/* 8031C19C 00317DFC 48 00 00 F4 */ b lbl_8031C290
lbl_8031C1A0:
/* 8031C1A0 00317E00 7C BC D8 50 */ subf r5, r28, r27
/* 8031C1A4 00317E04 3B E0 00 03 */ li r31, 3
/* 8031C1A8 00317E08 54 A3 18 38 */ slwi r3, r5, 3
/* 8031C1AC 00317E0C 7C 1E 18 16 */ mulhwu r0, r30, r3
/* 8031C1B0 00317E10 2C 05 00 03 */ cmpwi r5, 3
/* 8031C1B4 00317E14 54 04 F0 BE */ srwi r4, r0, 2
/* 8031C1B8 00317E18 1C 04 00 06 */ mulli r0, r4, 6
/* 8031C1BC 00317E1C 7C 60 18 50 */ subf r3, r0, r3
/* 8031C1C0 00317E20 7C 03 00 D0 */ neg r0, r3
/* 8031C1C4 00317E24 7C 00 1B 78 */ or r0, r0, r3
/* 8031C1C8 00317E28 54 00 0F FE */ srwi r0, r0, 0x1f
/* 8031C1CC 00317E2C 7F A4 02 14 */ add r29, r4, r0
/* 8031C1D0 00317E30 40 80 00 08 */ bge lbl_8031C1D8
/* 8031C1D4 00317E34 7C BF 2B 78 */ mr r31, r5
lbl_8031C1D8:
/* 8031C1D8 00317E38 38 61 00 08 */ addi r3, r1, 8
/* 8031C1DC 00317E3C 38 80 00 00 */ li r4, 0
/* 8031C1E0 00317E40 38 A0 00 03 */ li r5, 3
/* 8031C1E4 00317E44 4B CE 7F 21 */ bl memset
/* 8031C1E8 00317E48 7F 84 E3 78 */ mr r4, r28
/* 8031C1EC 00317E4C 7F E5 FB 78 */ mr r5, r31
/* 8031C1F0 00317E50 38 61 00 08 */ addi r3, r1, 8
/* 8031C1F4 00317E54 4B CE 7E 0D */ bl memcpy
/* 8031C1F8 00317E58 88 01 00 08 */ lbz r0, 8(r1)
/* 8031C1FC 00317E5C 28 1D 00 02 */ cmplwi r29, 2
/* 8031C200 00317E60 80 6D 8D 28 */ lwz r3, lbl_8063DFE8-_SDA_BASE_(r13)
/* 8031C204 00317E64 7C 00 16 70 */ srawi r0, r0, 2
/* 8031C208 00317E68 7C 03 00 AE */ lbzx r0, r3, r0
/* 8031C20C 00317E6C 98 1A 00 00 */ stb r0, 0(r26)
/* 8031C210 00317E70 41 80 00 24 */ blt lbl_8031C234
/* 8031C214 00317E74 88 01 00 09 */ lbz r0, 9(r1)
/* 8031C218 00317E78 88 61 00 08 */ lbz r3, 8(r1)
/* 8031C21C 00317E7C 7C 00 26 70 */ srawi r0, r0, 4
/* 8031C220 00317E80 80 8D 8D 28 */ lwz r4, lbl_8063DFE8-_SDA_BASE_(r13)
/* 8031C224 00317E84 50 60 26 B6 */ rlwimi r0, r3, 4, 0x1a, 0x1b
/* 8031C228 00317E88 7C 04 00 AE */ lbzx r0, r4, r0
/* 8031C22C 00317E8C 98 1A 00 01 */ stb r0, 1(r26)
/* 8031C230 00317E90 48 00 00 08 */ b lbl_8031C238
lbl_8031C234:
/* 8031C234 00317E94 9B 1A 00 01 */ stb r24, 1(r26)
lbl_8031C238:
/* 8031C238 00317E98 28 1D 00 03 */ cmplwi r29, 3
/* 8031C23C 00317E9C 41 80 00 24 */ blt lbl_8031C260
/* 8031C240 00317EA0 88 01 00 0A */ lbz r0, 0xa(r1)
/* 8031C244 00317EA4 88 61 00 09 */ lbz r3, 9(r1)
/* 8031C248 00317EA8 7C 00 36 70 */ srawi r0, r0, 6
/* 8031C24C 00317EAC 80 8D 8D 28 */ lwz r4, lbl_8063DFE8-_SDA_BASE_(r13)
/* 8031C250 00317EB0 50 60 16 BA */ rlwimi r0, r3, 2, 0x1a, 0x1d
/* 8031C254 00317EB4 7C 04 00 AE */ lbzx r0, r4, r0
/* 8031C258 00317EB8 98 1A 00 02 */ stb r0, 2(r26)
/* 8031C25C 00317EBC 48 00 00 08 */ b lbl_8031C264
lbl_8031C260:
/* 8031C260 00317EC0 9B 1A 00 02 */ stb r24, 2(r26)
lbl_8031C264:
/* 8031C264 00317EC4 28 1D 00 04 */ cmplwi r29, 4
/* 8031C268 00317EC8 41 80 00 1C */ blt lbl_8031C284
/* 8031C26C 00317ECC 88 01 00 0A */ lbz r0, 0xa(r1)
/* 8031C270 00317ED0 80 6D 8D 28 */ lwz r3, lbl_8063DFE8-_SDA_BASE_(r13)
/* 8031C274 00317ED4 54 00 06 BE */ clrlwi r0, r0, 0x1a
/* 8031C278 00317ED8 7C 03 00 AE */ lbzx r0, r3, r0
/* 8031C27C 00317EDC 98 1A 00 03 */ stb r0, 3(r26)
/* 8031C280 00317EE0 48 00 00 08 */ b lbl_8031C288
lbl_8031C284:
/* 8031C284 00317EE4 9B 1A 00 03 */ stb r24, 3(r26)
lbl_8031C288:
/* 8031C288 00317EE8 7F 9C FA 14 */ add r28, r28, r31
/* 8031C28C 00317EEC 3B 5A 00 04 */ addi r26, r26, 4
lbl_8031C290:
/* 8031C290 00317EF0 7C 1C D8 40 */ cmplw r28, r27
/* 8031C294 00317EF4 40 82 FF 0C */ bne lbl_8031C1A0
/* 8031C298 00317EF8 7C 79 D0 50 */ subf r3, r25, r26
lbl_8031C29C:
/* 8031C29C 00317EFC 39 61 00 30 */ addi r11, r1, 0x30
/* 8031C2A0 00317F00 4B EA AE C9 */ bl _restgpr_24
/* 8031C2A4 00317F04 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8031C2A8 00317F08 7C 08 03 A6 */ mtlr r0
/* 8031C2AC 00317F0C 38 21 00 30 */ addi r1, r1, 0x30
/* 8031C2B0 00317F10 4E 80 00 20 */ blr
.global DWC_Base64Decode
DWC_Base64Decode:
/* 8031C2B4 00317F14 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031C2B8 00317F18 54 80 07 BF */ clrlwi. r0, r4, 0x1e
/* 8031C2BC 00317F1C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8031C2C0 00317F20 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8031C2C4 00317F24 41 82 00 0C */ beq lbl_8031C2D0
/* 8031C2C8 00317F28 38 60 FF FF */ li r3, -1
/* 8031C2CC 00317F2C 48 00 01 B0 */ b lbl_8031C47C
lbl_8031C2D0:
/* 8031C2D0 00317F30 7C 68 1B 78 */ mr r8, r3
/* 8031C2D4 00317F34 38 E0 00 00 */ li r7, 0
/* 8031C2D8 00317F38 7C 89 03 A6 */ mtctr r4
/* 8031C2DC 00317F3C 2C 04 00 00 */ cmpwi r4, 0
/* 8031C2E0 00317F40 40 81 00 1C */ ble lbl_8031C2FC
lbl_8031C2E4:
/* 8031C2E4 00317F44 88 08 00 00 */ lbz r0, 0(r8)
/* 8031C2E8 00317F48 2C 00 00 2A */ cmpwi r0, 0x2a
/* 8031C2EC 00317F4C 41 82 00 08 */ beq lbl_8031C2F4
/* 8031C2F0 00317F50 38 E7 00 06 */ addi r7, r7, 6
lbl_8031C2F4:
/* 8031C2F4 00317F54 39 08 00 01 */ addi r8, r8, 1
/* 8031C2F8 00317F58 42 00 FF EC */ bdnz lbl_8031C2E4
lbl_8031C2FC:
/* 8031C2FC 00317F5C 2C 05 00 00 */ cmpwi r5, 0
/* 8031C300 00317F60 7C E0 1E 70 */ srawi r0, r7, 3
/* 8031C304 00317F64 7C E0 01 94 */ addze r7, r0
/* 8031C308 00317F68 40 82 00 0C */ bne lbl_8031C314
/* 8031C30C 00317F6C 7C E3 3B 78 */ mr r3, r7
/* 8031C310 00317F70 48 00 01 6C */ b lbl_8031C47C
lbl_8031C314:
/* 8031C314 00317F74 7C 06 38 40 */ cmplw r6, r7
/* 8031C318 00317F78 40 80 00 0C */ bge lbl_8031C324
/* 8031C31C 00317F7C 38 60 FF FF */ li r3, -1
/* 8031C320 00317F80 48 00 01 5C */ b lbl_8031C47C
lbl_8031C324:
/* 8031C324 00317F84 2C 04 00 00 */ cmpwi r4, 0
/* 8031C328 00317F88 40 82 00 14 */ bne lbl_8031C33C
/* 8031C32C 00317F8C 38 00 00 00 */ li r0, 0
/* 8031C330 00317F90 38 60 00 00 */ li r3, 0
/* 8031C334 00317F94 98 05 00 00 */ stb r0, 0(r5)
/* 8031C338 00317F98 48 00 01 44 */ b lbl_8031C47C
lbl_8031C33C:
/* 8031C33C 00317F9C 7C A4 2B 78 */ mr r4, r5
/* 8031C340 00317FA0 39 40 00 00 */ li r10, 0
/* 8031C344 00317FA4 39 60 00 3F */ li r11, 0x3f
/* 8031C348 00317FA8 39 80 00 3E */ li r12, 0x3e
/* 8031C34C 00317FAC 38 00 00 04 */ li r0, 4
lbl_8031C350:
/* 8031C350 00317FB0 7C 66 1B 78 */ mr r6, r3
/* 8031C354 00317FB4 39 21 00 08 */ addi r9, r1, 8
/* 8031C358 00317FB8 3B C0 00 00 */ li r30, 0
/* 8031C35C 00317FBC 7C 09 03 A6 */ mtctr r0
lbl_8031C360:
/* 8031C360 00317FC0 8B E6 00 00 */ lbz r31, 0(r6)
/* 8031C364 00317FC4 7F E8 07 74 */ extsb r8, r31
/* 8031C368 00317FC8 2C 08 00 41 */ cmpwi r8, 0x41
/* 8031C36C 00317FCC 41 80 00 18 */ blt lbl_8031C384
/* 8031C370 00317FD0 2C 08 00 5A */ cmpwi r8, 0x5a
/* 8031C374 00317FD4 41 81 00 10 */ bgt lbl_8031C384
/* 8031C378 00317FD8 39 1F FF BF */ addi r8, r31, -65
/* 8031C37C 00317FDC 99 09 00 00 */ stb r8, 0(r9)
/* 8031C380 00317FE0 48 00 00 6C */ b lbl_8031C3EC
lbl_8031C384:
/* 8031C384 00317FE4 7F E8 07 74 */ extsb r8, r31
/* 8031C388 00317FE8 2C 08 00 61 */ cmpwi r8, 0x61
/* 8031C38C 00317FEC 41 80 00 18 */ blt lbl_8031C3A4
/* 8031C390 00317FF0 2C 08 00 7A */ cmpwi r8, 0x7a
/* 8031C394 00317FF4 41 81 00 10 */ bgt lbl_8031C3A4
/* 8031C398 00317FF8 39 1F FF B9 */ addi r8, r31, -71
/* 8031C39C 00317FFC 99 09 00 00 */ stb r8, 0(r9)
/* 8031C3A0 00318000 48 00 00 4C */ b lbl_8031C3EC
lbl_8031C3A4:
/* 8031C3A4 00318004 7F E8 07 74 */ extsb r8, r31
/* 8031C3A8 00318008 2C 08 00 30 */ cmpwi r8, 0x30
/* 8031C3AC 0031800C 41 80 00 18 */ blt lbl_8031C3C4
/* 8031C3B0 00318010 2C 08 00 39 */ cmpwi r8, 0x39
/* 8031C3B4 00318014 41 81 00 10 */ bgt lbl_8031C3C4
/* 8031C3B8 00318018 39 1F 00 04 */ addi r8, r31, 4
/* 8031C3BC 0031801C 99 09 00 00 */ stb r8, 0(r9)
/* 8031C3C0 00318020 48 00 00 2C */ b lbl_8031C3EC
lbl_8031C3C4:
/* 8031C3C4 00318024 7F E8 07 74 */ extsb r8, r31
/* 8031C3C8 00318028 2C 08 00 2E */ cmpwi r8, 0x2e
/* 8031C3CC 0031802C 40 82 00 0C */ bne lbl_8031C3D8
/* 8031C3D0 00318030 99 89 00 00 */ stb r12, 0(r9)
/* 8031C3D4 00318034 48 00 00 18 */ b lbl_8031C3EC
lbl_8031C3D8:
/* 8031C3D8 00318038 2C 08 00 2D */ cmpwi r8, 0x2d
/* 8031C3DC 0031803C 40 82 00 0C */ bne lbl_8031C3E8
/* 8031C3E0 00318040 99 69 00 00 */ stb r11, 0(r9)
/* 8031C3E4 00318044 48 00 00 08 */ b lbl_8031C3EC
lbl_8031C3E8:
/* 8031C3E8 00318048 99 49 00 00 */ stb r10, 0(r9)
lbl_8031C3EC:
/* 8031C3EC 0031804C 39 29 00 01 */ addi r9, r9, 1
/* 8031C3F0 00318050 3B DE 00 01 */ addi r30, r30, 1
/* 8031C3F4 00318054 38 C6 00 01 */ addi r6, r6, 1
/* 8031C3F8 00318058 42 00 FF 68 */ bdnz lbl_8031C360
/* 8031C3FC 0031805C 89 21 00 08 */ lbz r9, 8(r1)
/* 8031C400 00318060 38 C4 00 01 */ addi r6, r4, 1
/* 8031C404 00318064 89 01 00 09 */ lbz r8, 9(r1)
/* 8031C408 00318068 7F E5 30 50 */ subf r31, r5, r6
/* 8031C40C 0031806C 7D 26 07 74 */ extsb r6, r9
/* 8031C410 00318070 38 63 00 04 */ addi r3, r3, 4
/* 8031C414 00318074 7D 09 07 74 */ extsb r9, r8
/* 8031C418 00318078 7C 1F 38 00 */ cmpw r31, r7
/* 8031C41C 0031807C 54 C8 10 3A */ slwi r8, r6, 2
/* 8031C420 00318080 7D 26 26 70 */ srawi r6, r9, 4
/* 8031C424 00318084 7D 06 33 78 */ or r6, r8, r6
/* 8031C428 00318088 98 C4 00 00 */ stb r6, 0(r4)
/* 8031C42C 0031808C 40 80 00 4C */ bge lbl_8031C478
/* 8031C430 00318090 89 01 00 0A */ lbz r8, 0xa(r1)
/* 8031C434 00318094 38 C4 00 02 */ addi r6, r4, 2
/* 8031C438 00318098 7F E5 30 50 */ subf r31, r5, r6
/* 8031C43C 0031809C 55 29 20 36 */ slwi r9, r9, 4
/* 8031C440 003180A0 7D 08 07 74 */ extsb r8, r8
/* 8031C444 003180A4 7D 06 16 70 */ srawi r6, r8, 2
/* 8031C448 003180A8 7C 1F 38 00 */ cmpw r31, r7
/* 8031C44C 003180AC 7D 26 33 78 */ or r6, r9, r6
/* 8031C450 003180B0 98 C4 00 01 */ stb r6, 1(r4)
/* 8031C454 003180B4 40 80 00 24 */ bge lbl_8031C478
/* 8031C458 003180B8 88 C1 00 0B */ lbz r6, 0xb(r1)
/* 8031C45C 003180BC 55 08 30 32 */ slwi r8, r8, 6
/* 8031C460 003180C0 7D 06 33 78 */ or r6, r8, r6
/* 8031C464 003180C4 98 C4 00 02 */ stb r6, 2(r4)
/* 8031C468 003180C8 38 84 00 03 */ addi r4, r4, 3
/* 8031C46C 003180CC 7F E5 20 50 */ subf r31, r5, r4
/* 8031C470 003180D0 7C 1F 38 00 */ cmpw r31, r7
/* 8031C474 003180D4 41 80 FE DC */ blt lbl_8031C350
lbl_8031C478:
/* 8031C478 003180D8 7F E3 FB 78 */ mr r3, r31
lbl_8031C47C:
/* 8031C47C 003180DC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8031C480 003180E0 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8031C484 003180E4 38 21 00 20 */ addi r1, r1, 0x20
/* 8031C488 003180E8 4E 80 00 20 */ blr
|