summaryrefslogtreecommitdiff
path: root/asm/GameSpy/gsRC4.s
blob: 2e1fad319839b738fbfdc68e8be84842315e321e (plain)
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
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global RC4Init
RC4Init:
/* 8033BF60 00337BC0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8033BF64 00337BC4  2C 04 00 00 */	cmpwi r4, 0
/* 8033BF68 00337BC8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8033BF6C 00337BCC  3B E0 00 00 */	li r31, 0
/* 8033BF70 00337BD0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8033BF74 00337BD4  3B C0 00 00 */	li r30, 0
/* 8033BF78 00337BD8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8033BF7C 00337BDC  41 82 03 14 */	beq lbl_8033C290
/* 8033BF80 00337BE0  2C 05 00 00 */	cmpwi r5, 0
/* 8033BF84 00337BE4  40 82 00 08 */	bne lbl_8033BF8C
/* 8033BF88 00337BE8  48 00 03 08 */	b lbl_8033C290
lbl_8033BF8C:
/* 8033BF8C 00337BEC  38 C0 00 00 */	li r6, 0
/* 8033BF90 00337BF0  38 00 00 08 */	li r0, 8
/* 8033BF94 00337BF4  98 C3 00 00 */	stb r6, 0(r3)
/* 8033BF98 00337BF8  3B A0 00 00 */	li r29, 0
/* 8033BF9C 00337BFC  98 C3 00 01 */	stb r6, 1(r3)
/* 8033BFA0 00337C00  7C 09 03 A6 */	mtctr r0
lbl_8033BFA4:
/* 8033BFA4 00337C04  7D 83 EA 14 */	add r12, r3, r29
/* 8033BFA8 00337C08  39 7D 00 01 */	addi r11, r29, 1
/* 8033BFAC 00337C0C  9B AC 00 02 */	stb r29, 2(r12)
/* 8033BFB0 00337C10  39 5D 00 02 */	addi r10, r29, 2
/* 8033BFB4 00337C14  39 3D 00 03 */	addi r9, r29, 3
/* 8033BFB8 00337C18  39 1D 00 04 */	addi r8, r29, 4
/* 8033BFBC 00337C1C  99 6C 00 03 */	stb r11, 3(r12)
/* 8033BFC0 00337C20  38 FD 00 05 */	addi r7, r29, 5
/* 8033BFC4 00337C24  38 DD 00 06 */	addi r6, r29, 6
/* 8033BFC8 00337C28  38 1D 00 07 */	addi r0, r29, 7
/* 8033BFCC 00337C2C  99 4C 00 04 */	stb r10, 4(r12)
/* 8033BFD0 00337C30  39 7D 00 09 */	addi r11, r29, 9
/* 8033BFD4 00337C34  39 5D 00 0A */	addi r10, r29, 0xa
/* 8033BFD8 00337C38  99 2C 00 05 */	stb r9, 5(r12)
/* 8033BFDC 00337C3C  39 3D 00 0B */	addi r9, r29, 0xb
/* 8033BFE0 00337C40  99 0C 00 06 */	stb r8, 6(r12)
/* 8033BFE4 00337C44  39 1D 00 0C */	addi r8, r29, 0xc
/* 8033BFE8 00337C48  98 EC 00 07 */	stb r7, 7(r12)
/* 8033BFEC 00337C4C  38 FD 00 0D */	addi r7, r29, 0xd
/* 8033BFF0 00337C50  98 CC 00 08 */	stb r6, 8(r12)
/* 8033BFF4 00337C54  38 DD 00 0E */	addi r6, r29, 0xe
/* 8033BFF8 00337C58  3B BD 00 08 */	addi r29, r29, 8
/* 8033BFFC 00337C5C  98 0C 00 09 */	stb r0, 9(r12)
/* 8033C000 00337C60  7D 83 EA 14 */	add r12, r3, r29
/* 8033C004 00337C64  38 1D 00 07 */	addi r0, r29, 7
/* 8033C008 00337C68  9B AC 00 02 */	stb r29, 2(r12)
/* 8033C00C 00337C6C  99 6C 00 03 */	stb r11, 3(r12)
/* 8033C010 00337C70  39 7D 00 09 */	addi r11, r29, 9
/* 8033C014 00337C74  99 4C 00 04 */	stb r10, 4(r12)
/* 8033C018 00337C78  39 5D 00 0A */	addi r10, r29, 0xa
/* 8033C01C 00337C7C  99 2C 00 05 */	stb r9, 5(r12)
/* 8033C020 00337C80  39 3D 00 0B */	addi r9, r29, 0xb
/* 8033C024 00337C84  99 0C 00 06 */	stb r8, 6(r12)
/* 8033C028 00337C88  39 1D 00 0C */	addi r8, r29, 0xc
/* 8033C02C 00337C8C  98 EC 00 07 */	stb r7, 7(r12)
/* 8033C030 00337C90  38 FD 00 0D */	addi r7, r29, 0xd
/* 8033C034 00337C94  98 CC 00 08 */	stb r6, 8(r12)
/* 8033C038 00337C98  38 DD 00 0E */	addi r6, r29, 0xe
/* 8033C03C 00337C9C  3B BD 00 08 */	addi r29, r29, 8
/* 8033C040 00337CA0  98 0C 00 09 */	stb r0, 9(r12)
/* 8033C044 00337CA4  7D 83 EA 14 */	add r12, r3, r29
/* 8033C048 00337CA8  38 1D 00 07 */	addi r0, r29, 7
/* 8033C04C 00337CAC  9B AC 00 02 */	stb r29, 2(r12)
/* 8033C050 00337CB0  99 6C 00 03 */	stb r11, 3(r12)
/* 8033C054 00337CB4  39 7D 00 09 */	addi r11, r29, 9
/* 8033C058 00337CB8  99 4C 00 04 */	stb r10, 4(r12)
/* 8033C05C 00337CBC  39 5D 00 0A */	addi r10, r29, 0xa
/* 8033C060 00337CC0  99 2C 00 05 */	stb r9, 5(r12)
/* 8033C064 00337CC4  39 3D 00 0B */	addi r9, r29, 0xb
/* 8033C068 00337CC8  99 0C 00 06 */	stb r8, 6(r12)
/* 8033C06C 00337CCC  39 1D 00 0C */	addi r8, r29, 0xc
/* 8033C070 00337CD0  98 EC 00 07 */	stb r7, 7(r12)
/* 8033C074 00337CD4  38 FD 00 0D */	addi r7, r29, 0xd
/* 8033C078 00337CD8  98 CC 00 08 */	stb r6, 8(r12)
/* 8033C07C 00337CDC  38 DD 00 0E */	addi r6, r29, 0xe
/* 8033C080 00337CE0  3B BD 00 08 */	addi r29, r29, 8
/* 8033C084 00337CE4  98 0C 00 09 */	stb r0, 9(r12)
/* 8033C088 00337CE8  7D 83 EA 14 */	add r12, r3, r29
/* 8033C08C 00337CEC  38 1D 00 07 */	addi r0, r29, 7
/* 8033C090 00337CF0  9B AC 00 02 */	stb r29, 2(r12)
/* 8033C094 00337CF4  3B BD 00 08 */	addi r29, r29, 8
/* 8033C098 00337CF8  99 6C 00 03 */	stb r11, 3(r12)
/* 8033C09C 00337CFC  99 4C 00 04 */	stb r10, 4(r12)
/* 8033C0A0 00337D00  99 2C 00 05 */	stb r9, 5(r12)
/* 8033C0A4 00337D04  99 0C 00 06 */	stb r8, 6(r12)
/* 8033C0A8 00337D08  98 EC 00 07 */	stb r7, 7(r12)
/* 8033C0AC 00337D0C  98 CC 00 08 */	stb r6, 8(r12)
/* 8033C0B0 00337D10  98 0C 00 09 */	stb r0, 9(r12)
/* 8033C0B4 00337D14  42 00 FE F0 */	bdnz lbl_8033BFA4
/* 8033C0B8 00337D18  38 00 00 20 */	li r0, 0x20
/* 8033C0BC 00337D1C  38 E0 00 00 */	li r7, 0
/* 8033C0C0 00337D20  7C 09 03 A6 */	mtctr r0
lbl_8033C0C4:
/* 8033C0C4 00337D24  39 1E 00 01 */	addi r8, r30, 1
/* 8033C0C8 00337D28  7C C3 3A 14 */	add r6, r3, r7
/* 8033C0CC 00337D2C  7C 08 2B D6 */	divw r0, r8, r5
/* 8033C0D0 00337D30  89 66 00 02 */	lbz r11, 2(r6)
/* 8033C0D4 00337D34  7D 44 F0 AE */	lbzx r10, r4, r30
/* 8033C0D8 00337D38  7D 3F 5A 14 */	add r9, r31, r11
/* 8033C0DC 00337D3C  7D 2A 4A 14 */	add r9, r10, r9
/* 8033C0E0 00337D40  55 2C 06 3E */	clrlwi r12, r9, 0x18
/* 8033C0E4 00337D44  7C 00 29 D6 */	mullw r0, r0, r5
/* 8033C0E8 00337D48  7D 43 62 14 */	add r10, r3, r12
/* 8033C0EC 00337D4C  89 2A 00 02 */	lbz r9, 2(r10)
/* 8033C0F0 00337D50  99 26 00 02 */	stb r9, 2(r6)
/* 8033C0F4 00337D54  7C 00 40 50 */	subf r0, r0, r8
/* 8033C0F8 00337D58  99 6A 00 02 */	stb r11, 2(r10)
/* 8033C0FC 00337D5C  54 09 06 3E */	clrlwi r9, r0, 0x18
/* 8033C100 00337D60  39 09 00 01 */	addi r8, r9, 1
/* 8033C104 00337D64  89 66 00 03 */	lbz r11, 3(r6)
/* 8033C108 00337D68  7C 08 2B D6 */	divw r0, r8, r5
/* 8033C10C 00337D6C  7D 44 48 AE */	lbzx r10, r4, r9
/* 8033C110 00337D70  7D 2C 5A 14 */	add r9, r12, r11
/* 8033C114 00337D74  7D 2A 4A 14 */	add r9, r10, r9
/* 8033C118 00337D78  55 2C 06 3E */	clrlwi r12, r9, 0x18
/* 8033C11C 00337D7C  7D 43 62 14 */	add r10, r3, r12
/* 8033C120 00337D80  7C 00 29 D6 */	mullw r0, r0, r5
/* 8033C124 00337D84  89 2A 00 02 */	lbz r9, 2(r10)
/* 8033C128 00337D88  99 26 00 03 */	stb r9, 3(r6)
/* 8033C12C 00337D8C  99 6A 00 02 */	stb r11, 2(r10)
/* 8033C130 00337D90  7C 00 40 50 */	subf r0, r0, r8
/* 8033C134 00337D94  54 09 06 3E */	clrlwi r9, r0, 0x18
/* 8033C138 00337D98  89 66 00 04 */	lbz r11, 4(r6)
/* 8033C13C 00337D9C  39 09 00 01 */	addi r8, r9, 1
/* 8033C140 00337DA0  7D 44 48 AE */	lbzx r10, r4, r9
/* 8033C144 00337DA4  7C 08 2B D6 */	divw r0, r8, r5
/* 8033C148 00337DA8  7D 2C 5A 14 */	add r9, r12, r11
/* 8033C14C 00337DAC  7D 2A 4A 14 */	add r9, r10, r9
/* 8033C150 00337DB0  55 2C 06 3E */	clrlwi r12, r9, 0x18
/* 8033C154 00337DB4  7D 43 62 14 */	add r10, r3, r12
/* 8033C158 00337DB8  89 2A 00 02 */	lbz r9, 2(r10)
/* 8033C15C 00337DBC  7C 00 29 D6 */	mullw r0, r0, r5
/* 8033C160 00337DC0  99 26 00 04 */	stb r9, 4(r6)
/* 8033C164 00337DC4  99 6A 00 02 */	stb r11, 2(r10)
/* 8033C168 00337DC8  89 66 00 05 */	lbz r11, 5(r6)
/* 8033C16C 00337DCC  7C 00 40 50 */	subf r0, r0, r8
/* 8033C170 00337DD0  54 0A 06 3E */	clrlwi r10, r0, 0x18
/* 8033C174 00337DD4  7D 0C 5A 14 */	add r8, r12, r11
/* 8033C178 00337DD8  39 2A 00 01 */	addi r9, r10, 1
/* 8033C17C 00337DDC  7D 44 50 AE */	lbzx r10, r4, r10
/* 8033C180 00337DE0  7C 09 2B D6 */	divw r0, r9, r5
/* 8033C184 00337DE4  7D 0A 42 14 */	add r8, r10, r8
/* 8033C188 00337DE8  55 0C 06 3E */	clrlwi r12, r8, 0x18
/* 8033C18C 00337DEC  7D 43 62 14 */	add r10, r3, r12
/* 8033C190 00337DF0  89 0A 00 02 */	lbz r8, 2(r10)
/* 8033C194 00337DF4  99 06 00 05 */	stb r8, 5(r6)
/* 8033C198 00337DF8  7C 00 29 D6 */	mullw r0, r0, r5
/* 8033C19C 00337DFC  99 6A 00 02 */	stb r11, 2(r10)
/* 8033C1A0 00337E00  89 66 00 06 */	lbz r11, 6(r6)
/* 8033C1A4 00337E04  7D 0C 5A 14 */	add r8, r12, r11
/* 8033C1A8 00337E08  7C 00 48 50 */	subf r0, r0, r9
/* 8033C1AC 00337E0C  54 0A 06 3E */	clrlwi r10, r0, 0x18
/* 8033C1B0 00337E10  39 2A 00 01 */	addi r9, r10, 1
/* 8033C1B4 00337E14  7D 44 50 AE */	lbzx r10, r4, r10
/* 8033C1B8 00337E18  7C 09 2B D6 */	divw r0, r9, r5
/* 8033C1BC 00337E1C  7D 0A 42 14 */	add r8, r10, r8
/* 8033C1C0 00337E20  55 0C 06 3E */	clrlwi r12, r8, 0x18
/* 8033C1C4 00337E24  7D 43 62 14 */	add r10, r3, r12
/* 8033C1C8 00337E28  89 0A 00 02 */	lbz r8, 2(r10)
/* 8033C1CC 00337E2C  99 06 00 06 */	stb r8, 6(r6)
/* 8033C1D0 00337E30  7D 00 29 D6 */	mullw r8, r0, r5
/* 8033C1D4 00337E34  99 6A 00 02 */	stb r11, 2(r10)
/* 8033C1D8 00337E38  89 46 00 07 */	lbz r10, 7(r6)
/* 8033C1DC 00337E3C  7C 0C 52 14 */	add r0, r12, r10
/* 8033C1E0 00337E40  7D 08 48 50 */	subf r8, r8, r9
/* 8033C1E4 00337E44  55 0B 06 3E */	clrlwi r11, r8, 0x18
/* 8033C1E8 00337E48  7D 04 58 AE */	lbzx r8, r4, r11
/* 8033C1EC 00337E4C  7C 08 02 14 */	add r0, r8, r0
/* 8033C1F0 00337E50  54 0C 06 3E */	clrlwi r12, r0, 0x18
/* 8033C1F4 00337E54  7D 23 62 14 */	add r9, r3, r12
/* 8033C1F8 00337E58  88 09 00 02 */	lbz r0, 2(r9)
/* 8033C1FC 00337E5C  98 06 00 07 */	stb r0, 7(r6)
/* 8033C200 00337E60  39 0B 00 01 */	addi r8, r11, 1
/* 8033C204 00337E64  99 49 00 02 */	stb r10, 2(r9)
/* 8033C208 00337E68  7C 08 2B D6 */	divw r0, r8, r5
/* 8033C20C 00337E6C  38 E7 00 08 */	addi r7, r7, 8
/* 8033C210 00337E70  89 66 00 08 */	lbz r11, 8(r6)
/* 8033C214 00337E74  7D 2C 5A 14 */	add r9, r12, r11
/* 8033C218 00337E78  7C 00 29 D6 */	mullw r0, r0, r5
/* 8033C21C 00337E7C  7C 00 40 50 */	subf r0, r0, r8
/* 8033C220 00337E80  54 0A 06 3E */	clrlwi r10, r0, 0x18
/* 8033C224 00337E84  39 0A 00 01 */	addi r8, r10, 1
/* 8033C228 00337E88  7D 44 50 AE */	lbzx r10, r4, r10
/* 8033C22C 00337E8C  7C 08 2B D6 */	divw r0, r8, r5
/* 8033C230 00337E90  7D 2A 4A 14 */	add r9, r10, r9
/* 8033C234 00337E94  55 2C 06 3E */	clrlwi r12, r9, 0x18
/* 8033C238 00337E98  7D 43 62 14 */	add r10, r3, r12
/* 8033C23C 00337E9C  89 2A 00 02 */	lbz r9, 2(r10)
/* 8033C240 00337EA0  99 26 00 08 */	stb r9, 8(r6)
/* 8033C244 00337EA4  7C 00 29 D6 */	mullw r0, r0, r5
/* 8033C248 00337EA8  99 6A 00 02 */	stb r11, 2(r10)
/* 8033C24C 00337EAC  89 66 00 09 */	lbz r11, 9(r6)
/* 8033C250 00337EB0  7D 2C 5A 14 */	add r9, r12, r11
/* 8033C254 00337EB4  7C 00 40 50 */	subf r0, r0, r8
/* 8033C258 00337EB8  54 0A 06 3E */	clrlwi r10, r0, 0x18
/* 8033C25C 00337EBC  39 0A 00 01 */	addi r8, r10, 1
/* 8033C260 00337EC0  7D 44 50 AE */	lbzx r10, r4, r10
/* 8033C264 00337EC4  7C 08 2B D6 */	divw r0, r8, r5
/* 8033C268 00337EC8  7D 2A 4A 14 */	add r9, r10, r9
/* 8033C26C 00337ECC  55 3F 06 3E */	clrlwi r31, r9, 0x18
/* 8033C270 00337ED0  7D 43 FA 14 */	add r10, r3, r31
/* 8033C274 00337ED4  89 2A 00 02 */	lbz r9, 2(r10)
/* 8033C278 00337ED8  99 26 00 09 */	stb r9, 9(r6)
/* 8033C27C 00337EDC  7C 00 29 D6 */	mullw r0, r0, r5
/* 8033C280 00337EE0  99 6A 00 02 */	stb r11, 2(r10)
/* 8033C284 00337EE4  7C 00 40 50 */	subf r0, r0, r8
/* 8033C288 00337EE8  54 1E 06 3E */	clrlwi r30, r0, 0x18
/* 8033C28C 00337EEC  42 00 FE 38 */	bdnz lbl_8033C0C4
lbl_8033C290:
/* 8033C290 00337EF0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8033C294 00337EF4  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8033C298 00337EF8  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8033C29C 00337EFC  38 21 00 20 */	addi r1, r1, 0x20
/* 8033C2A0 00337F00  4E 80 00 20 */	blr

.global RC4Encrypt
RC4Encrypt:
/* 8033C2A4 00337F04  2C 06 00 00 */	cmpwi r6, 0
/* 8033C2A8 00337F08  4C 81 00 20 */	blelr
/* 8033C2AC 00337F0C  54 C0 F8 7F */	rlwinm. r0, r6, 0x1f, 1, 0x1f
/* 8033C2B0 00337F10  7C 09 03 A6 */	mtctr r0
/* 8033C2B4 00337F14  41 82 00 F8 */	beq lbl_8033C3AC
lbl_8033C2B8:
/* 8033C2B8 00337F18  89 03 00 00 */	lbz r8, 0(r3)
/* 8033C2BC 00337F1C  88 E3 00 01 */	lbz r7, 1(r3)
/* 8033C2C0 00337F20  39 08 00 01 */	addi r8, r8, 1
/* 8033C2C4 00337F24  89 24 00 00 */	lbz r9, 0(r4)
/* 8033C2C8 00337F28  55 00 06 3E */	clrlwi r0, r8, 0x18
/* 8033C2CC 00337F2C  99 03 00 00 */	stb r8, 0(r3)
/* 8033C2D0 00337F30  7D 03 02 14 */	add r8, r3, r0
/* 8033C2D4 00337F34  88 08 00 02 */	lbz r0, 2(r8)
/* 8033C2D8 00337F38  7C 07 02 14 */	add r0, r7, r0
/* 8033C2DC 00337F3C  98 03 00 01 */	stb r0, 1(r3)
/* 8033C2E0 00337F40  54 00 06 3E */	clrlwi r0, r0, 0x18
/* 8033C2E4 00337F44  7C E3 02 14 */	add r7, r3, r0
/* 8033C2E8 00337F48  89 48 00 02 */	lbz r10, 2(r8)
/* 8033C2EC 00337F4C  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C2F0 00337F50  98 08 00 02 */	stb r0, 2(r8)
/* 8033C2F4 00337F54  99 47 00 02 */	stb r10, 2(r7)
/* 8033C2F8 00337F58  88 E3 00 00 */	lbz r7, 0(r3)
/* 8033C2FC 00337F5C  88 03 00 01 */	lbz r0, 1(r3)
/* 8033C300 00337F60  7D 03 3A 14 */	add r8, r3, r7
/* 8033C304 00337F64  7C E3 02 14 */	add r7, r3, r0
/* 8033C308 00337F68  89 08 00 02 */	lbz r8, 2(r8)
/* 8033C30C 00337F6C  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C310 00337F70  7C 08 02 14 */	add r0, r8, r0
/* 8033C314 00337F74  54 00 06 3E */	clrlwi r0, r0, 0x18
/* 8033C318 00337F78  7C E3 02 14 */	add r7, r3, r0
/* 8033C31C 00337F7C  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C320 00337F80  7D 20 02 78 */	xor r0, r9, r0
/* 8033C324 00337F84  89 24 00 01 */	lbz r9, 1(r4)
/* 8033C328 00337F88  98 05 00 00 */	stb r0, 0(r5)
/* 8033C32C 00337F8C  38 84 00 02 */	addi r4, r4, 2
/* 8033C330 00337F90  89 03 00 00 */	lbz r8, 0(r3)
/* 8033C334 00337F94  88 E3 00 01 */	lbz r7, 1(r3)
/* 8033C338 00337F98  39 08 00 01 */	addi r8, r8, 1
/* 8033C33C 00337F9C  55 00 06 3E */	clrlwi r0, r8, 0x18
/* 8033C340 00337FA0  99 03 00 00 */	stb r8, 0(r3)
/* 8033C344 00337FA4  7D 03 02 14 */	add r8, r3, r0
/* 8033C348 00337FA8  88 08 00 02 */	lbz r0, 2(r8)
/* 8033C34C 00337FAC  7C 07 02 14 */	add r0, r7, r0
/* 8033C350 00337FB0  98 03 00 01 */	stb r0, 1(r3)
/* 8033C354 00337FB4  54 00 06 3E */	clrlwi r0, r0, 0x18
/* 8033C358 00337FB8  7C E3 02 14 */	add r7, r3, r0
/* 8033C35C 00337FBC  89 48 00 02 */	lbz r10, 2(r8)
/* 8033C360 00337FC0  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C364 00337FC4  98 08 00 02 */	stb r0, 2(r8)
/* 8033C368 00337FC8  99 47 00 02 */	stb r10, 2(r7)
/* 8033C36C 00337FCC  88 E3 00 00 */	lbz r7, 0(r3)
/* 8033C370 00337FD0  88 03 00 01 */	lbz r0, 1(r3)
/* 8033C374 00337FD4  7D 03 3A 14 */	add r8, r3, r7
/* 8033C378 00337FD8  7C E3 02 14 */	add r7, r3, r0
/* 8033C37C 00337FDC  89 08 00 02 */	lbz r8, 2(r8)
/* 8033C380 00337FE0  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C384 00337FE4  7C 08 02 14 */	add r0, r8, r0
/* 8033C388 00337FE8  54 00 06 3E */	clrlwi r0, r0, 0x18
/* 8033C38C 00337FEC  7C E3 02 14 */	add r7, r3, r0
/* 8033C390 00337FF0  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C394 00337FF4  7D 20 02 78 */	xor r0, r9, r0
/* 8033C398 00337FF8  98 05 00 01 */	stb r0, 1(r5)
/* 8033C39C 00337FFC  38 A5 00 02 */	addi r5, r5, 2
/* 8033C3A0 00338000  42 00 FF 18 */	bdnz lbl_8033C2B8
/* 8033C3A4 00338004  70 C6 00 01 */	andi. r6, r6, 1
/* 8033C3A8 00338008  4D 82 00 20 */	beqlr
lbl_8033C3AC:
/* 8033C3AC 0033800C  7C C9 03 A6 */	mtctr r6
lbl_8033C3B0:
/* 8033C3B0 00338010  89 03 00 00 */	lbz r8, 0(r3)
/* 8033C3B4 00338014  89 24 00 00 */	lbz r9, 0(r4)
/* 8033C3B8 00338018  38 84 00 01 */	addi r4, r4, 1
/* 8033C3BC 0033801C  39 08 00 01 */	addi r8, r8, 1
/* 8033C3C0 00338020  88 E3 00 01 */	lbz r7, 1(r3)
/* 8033C3C4 00338024  55 00 06 3E */	clrlwi r0, r8, 0x18
/* 8033C3C8 00338028  99 03 00 00 */	stb r8, 0(r3)
/* 8033C3CC 0033802C  7D 03 02 14 */	add r8, r3, r0
/* 8033C3D0 00338030  88 08 00 02 */	lbz r0, 2(r8)
/* 8033C3D4 00338034  7C 07 02 14 */	add r0, r7, r0
/* 8033C3D8 00338038  98 03 00 01 */	stb r0, 1(r3)
/* 8033C3DC 0033803C  54 00 06 3E */	clrlwi r0, r0, 0x18
/* 8033C3E0 00338040  7C E3 02 14 */	add r7, r3, r0
/* 8033C3E4 00338044  89 48 00 02 */	lbz r10, 2(r8)
/* 8033C3E8 00338048  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C3EC 0033804C  98 08 00 02 */	stb r0, 2(r8)
/* 8033C3F0 00338050  99 47 00 02 */	stb r10, 2(r7)
/* 8033C3F4 00338054  88 E3 00 00 */	lbz r7, 0(r3)
/* 8033C3F8 00338058  88 03 00 01 */	lbz r0, 1(r3)
/* 8033C3FC 0033805C  7D 03 3A 14 */	add r8, r3, r7
/* 8033C400 00338060  7C E3 02 14 */	add r7, r3, r0
/* 8033C404 00338064  89 08 00 02 */	lbz r8, 2(r8)
/* 8033C408 00338068  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C40C 0033806C  7C 08 02 14 */	add r0, r8, r0
/* 8033C410 00338070  54 00 06 3E */	clrlwi r0, r0, 0x18
/* 8033C414 00338074  7C E3 02 14 */	add r7, r3, r0
/* 8033C418 00338078  88 07 00 02 */	lbz r0, 2(r7)
/* 8033C41C 0033807C  7D 20 02 78 */	xor r0, r9, r0
/* 8033C420 00338080  98 05 00 00 */	stb r0, 0(r5)
/* 8033C424 00338084  38 A5 00 01 */	addi r5, r5, 1
/* 8033C428 00338088  42 00 FF 88 */	bdnz lbl_8033C3B0
/* 8033C42C 0033808C  4E 80 00 20 */	blr