summaryrefslogtreecommitdiff
path: root/asm/SDK/NTR/wdp_common.s
blob: 99c631670d69961c6d07f4375c599708e68e6e02 (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
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
.include "macros.inc"

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

.global WDPi_GetBeaconCheckSum
WDPi_GetBeaconCheckSum:
/* 802EE9E4 002EA644  38 00 00 03 */	li r0, 3
/* 802EE9E8 002EA648  38 C0 00 00 */	li r6, 0
/* 802EE9EC 002EA64C  7C 09 03 A6 */	mtctr r0
lbl_802EE9F0:
/* 802EE9F0 002EA650  88 83 00 01 */	lbz r4, 1(r3)
/* 802EE9F4 002EA654  88 03 00 03 */	lbz r0, 3(r3)
/* 802EE9F8 002EA658  88 A3 00 00 */	lbz r5, 0(r3)
/* 802EE9FC 002EA65C  50 85 44 2E */	rlwimi r5, r4, 8, 0x10, 0x17
/* 802EEA00 002EA660  88 83 00 02 */	lbz r4, 2(r3)
/* 802EEA04 002EA664  50 04 44 2E */	rlwimi r4, r0, 8, 0x10, 0x17
/* 802EEA08 002EA668  7C C6 2A 14 */	add r6, r6, r5
/* 802EEA0C 002EA66C  88 03 00 05 */	lbz r0, 5(r3)
/* 802EEA10 002EA670  88 A3 00 04 */	lbz r5, 4(r3)
/* 802EEA14 002EA674  7C C6 22 14 */	add r6, r6, r4
/* 802EEA18 002EA678  50 05 44 2E */	rlwimi r5, r0, 8, 0x10, 0x17
/* 802EEA1C 002EA67C  88 03 00 07 */	lbz r0, 7(r3)
/* 802EEA20 002EA680  88 83 00 06 */	lbz r4, 6(r3)
/* 802EEA24 002EA684  7C C6 2A 14 */	add r6, r6, r5
/* 802EEA28 002EA688  50 04 44 2E */	rlwimi r4, r0, 8, 0x10, 0x17
/* 802EEA2C 002EA68C  88 03 00 09 */	lbz r0, 9(r3)
/* 802EEA30 002EA690  88 A3 00 08 */	lbz r5, 8(r3)
/* 802EEA34 002EA694  7C C6 22 14 */	add r6, r6, r4
/* 802EEA38 002EA698  50 05 44 2E */	rlwimi r5, r0, 8, 0x10, 0x17
/* 802EEA3C 002EA69C  88 03 00 0B */	lbz r0, 0xb(r3)
/* 802EEA40 002EA6A0  88 83 00 0A */	lbz r4, 0xa(r3)
/* 802EEA44 002EA6A4  7C C6 2A 14 */	add r6, r6, r5
/* 802EEA48 002EA6A8  50 04 44 2E */	rlwimi r4, r0, 8, 0x10, 0x17
/* 802EEA4C 002EA6AC  88 03 00 0D */	lbz r0, 0xd(r3)
/* 802EEA50 002EA6B0  88 A3 00 0C */	lbz r5, 0xc(r3)
/* 802EEA54 002EA6B4  7C C6 22 14 */	add r6, r6, r4
/* 802EEA58 002EA6B8  50 05 44 2E */	rlwimi r5, r0, 8, 0x10, 0x17
/* 802EEA5C 002EA6BC  88 83 00 0F */	lbz r4, 0xf(r3)
/* 802EEA60 002EA6C0  88 03 00 0E */	lbz r0, 0xe(r3)
/* 802EEA64 002EA6C4  7C C6 2A 14 */	add r6, r6, r5
/* 802EEA68 002EA6C8  50 80 44 2E */	rlwimi r0, r4, 8, 0x10, 0x17
/* 802EEA6C 002EA6CC  88 83 00 11 */	lbz r4, 0x11(r3)
/* 802EEA70 002EA6D0  7C C6 02 14 */	add r6, r6, r0
/* 802EEA74 002EA6D4  88 A3 00 10 */	lbz r5, 0x10(r3)
/* 802EEA78 002EA6D8  50 85 44 2E */	rlwimi r5, r4, 8, 0x10, 0x17
/* 802EEA7C 002EA6DC  88 03 00 13 */	lbz r0, 0x13(r3)
/* 802EEA80 002EA6E0  88 83 00 12 */	lbz r4, 0x12(r3)
/* 802EEA84 002EA6E4  7C C6 2A 14 */	add r6, r6, r5
/* 802EEA88 002EA6E8  50 04 44 2E */	rlwimi r4, r0, 8, 0x10, 0x17
/* 802EEA8C 002EA6EC  88 03 00 15 */	lbz r0, 0x15(r3)
/* 802EEA90 002EA6F0  88 A3 00 14 */	lbz r5, 0x14(r3)
/* 802EEA94 002EA6F4  7C C6 22 14 */	add r6, r6, r4
/* 802EEA98 002EA6F8  50 05 44 2E */	rlwimi r5, r0, 8, 0x10, 0x17
/* 802EEA9C 002EA6FC  88 03 00 17 */	lbz r0, 0x17(r3)
/* 802EEAA0 002EA700  88 83 00 16 */	lbz r4, 0x16(r3)
/* 802EEAA4 002EA704  7C C6 2A 14 */	add r6, r6, r5
/* 802EEAA8 002EA708  50 04 44 2E */	rlwimi r4, r0, 8, 0x10, 0x17
/* 802EEAAC 002EA70C  88 03 00 19 */	lbz r0, 0x19(r3)
/* 802EEAB0 002EA710  88 A3 00 18 */	lbz r5, 0x18(r3)
/* 802EEAB4 002EA714  7C C6 22 14 */	add r6, r6, r4
/* 802EEAB8 002EA718  50 05 44 2E */	rlwimi r5, r0, 8, 0x10, 0x17
/* 802EEABC 002EA71C  88 03 00 1B */	lbz r0, 0x1b(r3)
/* 802EEAC0 002EA720  88 83 00 1A */	lbz r4, 0x1a(r3)
/* 802EEAC4 002EA724  7C C6 2A 14 */	add r6, r6, r5
/* 802EEAC8 002EA728  50 04 44 2E */	rlwimi r4, r0, 8, 0x10, 0x17
/* 802EEACC 002EA72C  88 03 00 1D */	lbz r0, 0x1d(r3)
/* 802EEAD0 002EA730  88 A3 00 1C */	lbz r5, 0x1c(r3)
/* 802EEAD4 002EA734  7C C6 22 14 */	add r6, r6, r4
/* 802EEAD8 002EA738  50 05 44 2E */	rlwimi r5, r0, 8, 0x10, 0x17
/* 802EEADC 002EA73C  88 83 00 1F */	lbz r4, 0x1f(r3)
/* 802EEAE0 002EA740  88 03 00 1E */	lbz r0, 0x1e(r3)
/* 802EEAE4 002EA744  7C C6 2A 14 */	add r6, r6, r5
/* 802EEAE8 002EA748  50 80 44 2E */	rlwimi r0, r4, 8, 0x10, 0x17
/* 802EEAEC 002EA74C  38 63 00 20 */	addi r3, r3, 0x20
/* 802EEAF0 002EA750  7C C6 02 14 */	add r6, r6, r0
/* 802EEAF4 002EA754  42 00 FE FC */	bdnz lbl_802EE9F0
/* 802EEAF8 002EA758  88 03 00 01 */	lbz r0, 1(r3)
/* 802EEAFC 002EA75C  88 83 00 00 */	lbz r4, 0(r3)
/* 802EEB00 002EA760  50 04 44 2E */	rlwimi r4, r0, 8, 0x10, 0x17
/* 802EEB04 002EA764  88 03 00 03 */	lbz r0, 3(r3)
/* 802EEB08 002EA768  88 A3 00 02 */	lbz r5, 2(r3)
/* 802EEB0C 002EA76C  7C C6 22 14 */	add r6, r6, r4
/* 802EEB10 002EA770  50 05 44 2E */	rlwimi r5, r0, 8, 0x10, 0x17
/* 802EEB14 002EA774  88 83 00 05 */	lbz r4, 5(r3)
/* 802EEB18 002EA778  88 03 00 04 */	lbz r0, 4(r3)
/* 802EEB1C 002EA77C  7C C6 2A 14 */	add r6, r6, r5
/* 802EEB20 002EA780  50 80 44 2E */	rlwimi r0, r4, 8, 0x10, 0x17
/* 802EEB24 002EA784  7C C6 02 14 */	add r6, r6, r0
/* 802EEB28 002EA788  54 C3 84 3E */	srwi r3, r6, 0x10
/* 802EEB2C 002EA78C  54 C0 04 3E */	clrlwi r0, r6, 0x10
/* 802EEB30 002EA790  7C 03 02 14 */	add r0, r3, r0
/* 802EEB34 002EA794  54 03 84 3E */	srwi r3, r0, 0x10
/* 802EEB38 002EA798  54 00 04 3E */	clrlwi r0, r0, 0x10
/* 802EEB3C 002EA79C  7C 03 02 14 */	add r0, r3, r0
/* 802EEB40 002EA7A0  7C 00 00 F8 */	nor r0, r0, r0
/* 802EEB44 002EA7A4  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 802EEB48 002EA7A8  4E 80 00 20 */	blr

.global WDP_CompareMemory
WDP_CompareMemory:
/* 802EEB4C 002EA7AC  38 00 00 00 */	li r0, 0
/* 802EEB50 002EA7B0  38 E0 00 00 */	li r7, 0
/* 802EEB54 002EA7B4  48 00 00 1C */	b lbl_802EEB70
lbl_802EEB58:
/* 802EEB58 002EA7B8  88 C4 00 00 */	lbz r6, 0(r4)
/* 802EEB5C 002EA7BC  38 E7 00 01 */	addi r7, r7, 1
/* 802EEB60 002EA7C0  88 03 00 00 */	lbz r0, 0(r3)
/* 802EEB64 002EA7C4  38 63 00 01 */	addi r3, r3, 1
/* 802EEB68 002EA7C8  38 84 00 01 */	addi r4, r4, 1
/* 802EEB6C 002EA7CC  7C 06 00 50 */	subf r0, r6, r0
lbl_802EEB70:
/* 802EEB70 002EA7D0  2C 00 00 00 */	cmpwi r0, 0
/* 802EEB74 002EA7D4  40 82 00 0C */	bne lbl_802EEB80
/* 802EEB78 002EA7D8  7C 07 28 40 */	cmplw r7, r5
/* 802EEB7C 002EA7DC  41 80 FF DC */	blt lbl_802EEB58
lbl_802EEB80:
/* 802EEB80 002EA7E0  7C 03 03 78 */	mr r3, r0
/* 802EEB84 002EA7E4  4E 80 00 20 */	blr

.global WDP_CopyString
WDP_CopyString:
/* 802EEB88 002EA7E8  54 84 F8 7E */	srwi r4, r4, 1
/* 802EEB8C 002EA7EC  38 C0 00 00 */	li r6, 0
/* 802EEB90 002EA7F0  7C 89 03 A6 */	mtctr r4
/* 802EEB94 002EA7F4  28 04 00 00 */	cmplwi r4, 0
/* 802EEB98 002EA7F8  40 81 00 2C */	ble lbl_802EEBC4
lbl_802EEB9C:
/* 802EEB9C 002EA7FC  A0 05 00 00 */	lhz r0, 0(r5)
/* 802EEBA0 002EA800  38 A5 00 02 */	addi r5, r5, 2
/* 802EEBA4 002EA804  2C 00 00 00 */	cmpwi r0, 0
/* 802EEBA8 002EA808  41 82 00 1C */	beq lbl_802EEBC4
/* 802EEBAC 002EA80C  98 03 00 00 */	stb r0, 0(r3)
/* 802EEBB0 002EA810  54 00 C6 3E */	rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 802EEBB4 002EA814  38 C6 00 01 */	addi r6, r6, 1
/* 802EEBB8 002EA818  98 03 00 01 */	stb r0, 1(r3)
/* 802EEBBC 002EA81C  38 63 00 02 */	addi r3, r3, 2
/* 802EEBC0 002EA820  42 00 FF DC */	bdnz lbl_802EEB9C
lbl_802EEBC4:
/* 802EEBC4 002EA824  7C 06 20 40 */	cmplw r6, r4
/* 802EEBC8 002EA828  7C 86 20 50 */	subf r4, r6, r4
/* 802EEBCC 002EA82C  38 A0 00 00 */	li r5, 0
/* 802EEBD0 002EA830  40 80 00 74 */	bge lbl_802EEC44
/* 802EEBD4 002EA834  54 80 E8 FF */	rlwinm. r0, r4, 0x1d, 3, 0x1f
/* 802EEBD8 002EA838  7C 09 03 A6 */	mtctr r0
/* 802EEBDC 002EA83C  41 82 00 54 */	beq lbl_802EEC30
lbl_802EEBE0:
/* 802EEBE0 002EA840  98 A3 00 00 */	stb r5, 0(r3)
/* 802EEBE4 002EA844  98 A3 00 01 */	stb r5, 1(r3)
/* 802EEBE8 002EA848  98 A3 00 02 */	stb r5, 2(r3)
/* 802EEBEC 002EA84C  98 A3 00 03 */	stb r5, 3(r3)
/* 802EEBF0 002EA850  98 A3 00 04 */	stb r5, 4(r3)
/* 802EEBF4 002EA854  98 A3 00 05 */	stb r5, 5(r3)
/* 802EEBF8 002EA858  98 A3 00 06 */	stb r5, 6(r3)
/* 802EEBFC 002EA85C  98 A3 00 07 */	stb r5, 7(r3)
/* 802EEC00 002EA860  98 A3 00 08 */	stb r5, 8(r3)
/* 802EEC04 002EA864  98 A3 00 09 */	stb r5, 9(r3)
/* 802EEC08 002EA868  98 A3 00 0A */	stb r5, 0xa(r3)
/* 802EEC0C 002EA86C  98 A3 00 0B */	stb r5, 0xb(r3)
/* 802EEC10 002EA870  98 A3 00 0C */	stb r5, 0xc(r3)
/* 802EEC14 002EA874  98 A3 00 0D */	stb r5, 0xd(r3)
/* 802EEC18 002EA878  98 A3 00 0E */	stb r5, 0xe(r3)
/* 802EEC1C 002EA87C  98 A3 00 0F */	stb r5, 0xf(r3)
/* 802EEC20 002EA880  38 63 00 10 */	addi r3, r3, 0x10
/* 802EEC24 002EA884  42 00 FF BC */	bdnz lbl_802EEBE0
/* 802EEC28 002EA888  70 84 00 07 */	andi. r4, r4, 7
/* 802EEC2C 002EA88C  41 82 00 18 */	beq lbl_802EEC44
lbl_802EEC30:
/* 802EEC30 002EA890  7C 89 03 A6 */	mtctr r4
lbl_802EEC34:
/* 802EEC34 002EA894  98 A3 00 00 */	stb r5, 0(r3)
/* 802EEC38 002EA898  98 A3 00 01 */	stb r5, 1(r3)
/* 802EEC3C 002EA89C  38 63 00 02 */	addi r3, r3, 2
/* 802EEC40 002EA8A0  42 00 FF F4 */	bdnz lbl_802EEC34
lbl_802EEC44:
/* 802EEC44 002EA8A4  7C C3 33 78 */	mr r3, r6
/* 802EEC48 002EA8A8  4E 80 00 20 */	blr

.global WDPi_IsValidSegmentRegion
WDPi_IsValidSegmentRegion:
/* 802EEC4C 002EA8AC  2C 07 00 00 */	cmpwi r7, 0
/* 802EEC50 002EA8B0  38 00 00 00 */	li r0, 0
/* 802EEC54 002EA8B4  41 82 00 0C */	beq lbl_802EEC60
/* 802EEC58 002EA8B8  39 00 00 00 */	li r8, 0
/* 802EEC5C 002EA8BC  91 07 00 00 */	stw r8, 0(r7)
lbl_802EEC60:
/* 802EEC60 002EA8C0  2C 83 00 03 */	cmpwi cr1, r3, 3
/* 802EEC64 002EA8C4  40 84 01 5C */	bge cr1, lbl_802EEDC0
/* 802EEC68 002EA8C8  7C 88 2B 78 */	or r8, r4, r5
/* 802EEC6C 002EA8CC  55 08 00 01 */	rlwinm. r8, r8, 0, 0, 0
/* 802EEC70 002EA8D0  40 82 01 50 */	bne lbl_802EEDC0
/* 802EEC74 002EA8D4  2C 03 00 01 */	cmpwi r3, 1
/* 802EEC78 002EA8D8  41 82 00 48 */	beq lbl_802EECC0
/* 802EEC7C 002EA8DC  40 80 00 10 */	bge lbl_802EEC8C
/* 802EEC80 002EA8E0  2C 03 00 00 */	cmpwi r3, 0
/* 802EEC84 002EA8E4  40 80 00 10 */	bge lbl_802EEC94
/* 802EEC88 002EA8E8  48 00 01 38 */	b lbl_802EEDC0
lbl_802EEC8C:
/* 802EEC8C 002EA8EC  40 84 01 34 */	bge cr1, lbl_802EEDC0
/* 802EEC90 002EA8F0  48 00 00 58 */	b lbl_802EECE8
lbl_802EEC94:
/* 802EEC94 002EA8F4  3C 60 02 80 */	lis r3, 0x027FFE00@ha
/* 802EEC98 002EA8F8  38 00 00 00 */	li r0, 0
/* 802EEC9C 002EA8FC  38 C3 FE 00 */	addi r6, r3, 0x027FFE00@l
/* 802EECA0 002EA900  7C 04 30 40 */	cmplw r4, r6
/* 802EECA4 002EA904  41 80 01 1C */	blt lbl_802EEDC0
/* 802EECA8 002EA908  7C 84 2A 14 */	add r4, r4, r5
/* 802EECAC 002EA90C  38 63 FF 60 */	addi r3, r3, -160
/* 802EECB0 002EA910  7C 04 18 40 */	cmplw r4, r3
/* 802EECB4 002EA914  41 81 01 0C */	bgt lbl_802EEDC0
/* 802EECB8 002EA918  38 00 00 01 */	li r0, 1
/* 802EECBC 002EA91C  48 00 01 04 */	b lbl_802EEDC0
lbl_802EECC0:
/* 802EECC0 002EA920  3C 60 02 00 */	lis r3, 0x200
/* 802EECC4 002EA924  38 00 00 00 */	li r0, 0
/* 802EECC8 002EA928  7C 04 18 40 */	cmplw r4, r3
/* 802EECCC 002EA92C  41 80 00 F4 */	blt lbl_802EEDC0
/* 802EECD0 002EA930  7C 84 2A 14 */	add r4, r4, r5
/* 802EECD4 002EA934  3C 60 02 2C */	lis r3, 0x22c
/* 802EECD8 002EA938  7C 04 18 40 */	cmplw r4, r3
/* 802EECDC 002EA93C  41 81 00 E4 */	bgt lbl_802EEDC0
/* 802EECE0 002EA940  38 00 00 01 */	li r0, 1
/* 802EECE4 002EA944  48 00 00 DC */	b lbl_802EEDC0
lbl_802EECE8:
/* 802EECE8 002EA948  3C 60 02 00 */	lis r3, 0x200
/* 802EECEC 002EA94C  39 20 00 00 */	li r9, 0
/* 802EECF0 002EA950  7C 04 18 40 */	cmplw r4, r3
/* 802EECF4 002EA954  41 80 00 18 */	blt lbl_802EED0C
/* 802EECF8 002EA958  7D 04 2A 14 */	add r8, r4, r5
/* 802EECFC 002EA95C  3C 60 02 30 */	lis r3, 0x230
/* 802EED00 002EA960  7C 08 18 40 */	cmplw r8, r3
/* 802EED04 002EA964  41 81 00 08 */	bgt lbl_802EED0C
/* 802EED08 002EA968  39 20 00 01 */	li r9, 1
lbl_802EED0C:
/* 802EED0C 002EA96C  2C 09 00 00 */	cmpwi r9, 0
/* 802EED10 002EA970  41 82 00 0C */	beq lbl_802EED1C
/* 802EED14 002EA974  38 00 00 01 */	li r0, 1
/* 802EED18 002EA978  48 00 00 A8 */	b lbl_802EEDC0
lbl_802EED1C:
/* 802EED1C 002EA97C  2C 06 00 00 */	cmpwi r6, 0
/* 802EED20 002EA980  41 82 00 A0 */	beq lbl_802EEDC0
/* 802EED24 002EA984  3C 60 02 30 */	lis r3, 0x230
/* 802EED28 002EA988  39 00 00 00 */	li r8, 0
/* 802EED2C 002EA98C  7C 04 18 40 */	cmplw r4, r3
/* 802EED30 002EA990  41 80 00 1C */	blt lbl_802EED4C
/* 802EED34 002EA994  3C 60 02 40 */	lis r3, 0x023FE800@ha
/* 802EED38 002EA998  7C C4 2A 14 */	add r6, r4, r5
/* 802EED3C 002EA99C  38 63 E8 00 */	addi r3, r3, 0x023FE800@l
/* 802EED40 002EA9A0  7C 06 18 40 */	cmplw r6, r3
/* 802EED44 002EA9A4  41 81 00 08 */	bgt lbl_802EED4C
/* 802EED48 002EA9A8  39 00 00 01 */	li r8, 1
lbl_802EED4C:
/* 802EED4C 002EA9AC  2C 08 00 00 */	cmpwi r8, 0
/* 802EED50 002EA9B0  41 82 00 28 */	beq lbl_802EED78
/* 802EED54 002EA9B4  3C 60 00 04 */	lis r3, 4
/* 802EED58 002EA9B8  7C 05 18 40 */	cmplw r5, r3
/* 802EED5C 002EA9BC  41 81 00 1C */	bgt lbl_802EED78
/* 802EED60 002EA9C0  2C 07 00 00 */	cmpwi r7, 0
/* 802EED64 002EA9C4  38 00 00 01 */	li r0, 1
/* 802EED68 002EA9C8  41 82 00 58 */	beq lbl_802EEDC0
/* 802EED6C 002EA9CC  38 60 00 01 */	li r3, 1
/* 802EED70 002EA9D0  90 67 00 00 */	stw r3, 0(r7)
/* 802EED74 002EA9D4  48 00 00 4C */	b lbl_802EEDC0
lbl_802EED78:
/* 802EED78 002EA9D8  3C 60 03 80 */	lis r3, 0x037F8000@ha
/* 802EED7C 002EA9DC  38 C0 00 00 */	li r6, 0
/* 802EED80 002EA9E0  38 63 80 00 */	addi r3, r3, 0x037F8000@l
/* 802EED84 002EA9E4  7C 04 18 40 */	cmplw r4, r3
/* 802EED88 002EA9E8  41 80 00 1C */	blt lbl_802EEDA4
/* 802EED8C 002EA9EC  3C 60 03 81 */	lis r3, 0x0380F000@ha
/* 802EED90 002EA9F0  7C 84 2A 14 */	add r4, r4, r5
/* 802EED94 002EA9F4  38 63 F0 00 */	addi r3, r3, 0x0380F000@l
/* 802EED98 002EA9F8  7C 04 18 40 */	cmplw r4, r3
/* 802EED9C 002EA9FC  41 81 00 08 */	bgt lbl_802EEDA4
/* 802EEDA0 002EAA00  38 C0 00 01 */	li r6, 1
lbl_802EEDA4:
/* 802EEDA4 002EAA04  2C 06 00 00 */	cmpwi r6, 0
/* 802EEDA8 002EAA08  41 82 00 18 */	beq lbl_802EEDC0
/* 802EEDAC 002EAA0C  2C 07 00 00 */	cmpwi r7, 0
/* 802EEDB0 002EAA10  38 00 00 01 */	li r0, 1
/* 802EEDB4 002EAA14  41 82 00 0C */	beq lbl_802EEDC0
/* 802EEDB8 002EAA18  38 60 00 01 */	li r3, 1
/* 802EEDBC 002EAA1C  90 67 00 00 */	stw r3, 0(r7)
lbl_802EEDC0:
/* 802EEDC0 002EAA20  7C 03 03 78 */	mr r3, r0
/* 802EEDC4 002EAA24  4E 80 00 20 */	blr

.global WDPi_InitSegmentMapper
WDPi_InitSegmentMapper:
/* 802EEDC8 002EAA28  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802EEDCC 002EAA2C  7C 08 02 A6 */	mflr r0
/* 802EEDD0 002EAA30  90 01 00 34 */	stw r0, 0x34(r1)
/* 802EEDD4 002EAA34  39 61 00 30 */	addi r11, r1, 0x30
/* 802EEDD8 002EAA38  4B ED 83 45 */	bl _savegpr_24
/* 802EEDDC 002EAA3C  7C 7B 1B 78 */	mr r27, r3
/* 802EEDE0 002EAA40  7C 9C 23 78 */	mr r28, r4
/* 802EEDE4 002EAA44  3B A5 FF FA */	addi r29, r5, -6
/* 802EEDE8 002EAA48  3B C0 00 00 */	li r30, 0
/* 802EEDEC 002EAA4C  3B E0 00 00 */	li r31, 0
/* 802EEDF0 002EAA50  3B 40 00 00 */	li r26, 0
/* 802EEDF4 002EAA54  3B 20 00 00 */	li r25, 0
lbl_802EEDF8:
/* 802EEDF8 002EAA58  7D 3C D2 14 */	add r9, r28, r26
/* 802EEDFC 002EAA5C  7F E3 FB 78 */	mr r3, r31
/* 802EEE00 002EAA60  88 09 00 15 */	lbz r0, 0x15(r9)
/* 802EEE04 002EAA64  38 C0 00 01 */	li r6, 1
/* 802EEE08 002EAA68  8B 09 00 14 */	lbz r24, 0x14(r9)
/* 802EEE0C 002EAA6C  38 E0 00 00 */	li r7, 0
/* 802EEE10 002EAA70  50 18 44 2E */	rlwimi r24, r0, 8, 0x10, 0x17
/* 802EEE14 002EAA74  88 89 00 16 */	lbz r4, 0x16(r9)
/* 802EEE18 002EAA78  88 09 00 11 */	lbz r0, 0x11(r9)
/* 802EEE1C 002EAA7C  50 98 82 1E */	rlwimi r24, r4, 0x10, 8, 0xf
/* 802EEE20 002EAA80  88 A9 00 17 */	lbz r5, 0x17(r9)
/* 802EEE24 002EAA84  88 89 00 10 */	lbz r4, 0x10(r9)
/* 802EEE28 002EAA88  50 04 44 2E */	rlwimi r4, r0, 8, 0x10, 0x17
/* 802EEE2C 002EAA8C  89 09 00 12 */	lbz r8, 0x12(r9)
/* 802EEE30 002EAA90  50 B8 C0 0E */	rlwimi r24, r5, 0x18, 0, 7
/* 802EEE34 002EAA94  88 09 00 13 */	lbz r0, 0x13(r9)
/* 802EEE38 002EAA98  7F 05 C3 78 */	mr r5, r24
/* 802EEE3C 002EAA9C  51 04 82 1E */	rlwimi r4, r8, 0x10, 8, 0xf
/* 802EEE40 002EAAA0  50 04 C0 0E */	rlwimi r4, r0, 0x18, 0, 7
/* 802EEE44 002EAAA4  4B FF FE 09 */	bl WDPi_IsValidSegmentRegion
/* 802EEE48 002EAAA8  2C 03 00 00 */	cmpwi r3, 0
/* 802EEE4C 002EAAAC  40 82 00 0C */	bne lbl_802EEE58
/* 802EEE50 002EAAB0  3B C0 00 00 */	li r30, 0
/* 802EEE54 002EAAB4  48 00 00 30 */	b lbl_802EEE84
lbl_802EEE58:
/* 802EEE58 002EAAB8  7C 78 EA 14 */	add r3, r24, r29
/* 802EEE5C 002EAABC  7C 9B CA 14 */	add r4, r27, r25
/* 802EEE60 002EAAC0  38 03 FF FF */	addi r0, r3, -1
/* 802EEE64 002EAAC4  3B FF 00 01 */	addi r31, r31, 1
/* 802EEE68 002EAAC8  7C 00 EB 96 */	divwu r0, r0, r29
/* 802EEE6C 002EAACC  B3 C4 00 06 */	sth r30, 6(r4)
/* 802EEE70 002EAAD0  2C 1F 00 03 */	cmpwi r31, 3
/* 802EEE74 002EAAD4  3B 5A 00 10 */	addi r26, r26, 0x10
/* 802EEE78 002EAAD8  3B 39 00 02 */	addi r25, r25, 2
/* 802EEE7C 002EAADC  7F DE 02 14 */	add r30, r30, r0
/* 802EEE80 002EAAE0  41 80 FF 78 */	blt lbl_802EEDF8
lbl_802EEE84:
/* 802EEE84 002EAAE4  28 1E 30 00 */	cmplwi r30, 0x3000
/* 802EEE88 002EAAE8  41 80 00 08 */	blt lbl_802EEE90
/* 802EEE8C 002EAAEC  3B C0 00 00 */	li r30, 0
lbl_802EEE90:
/* 802EEE90 002EAAF0  57 A0 04 3E */	clrlwi r0, r29, 0x10
/* 802EEE94 002EAAF4  B3 DB 00 04 */	sth r30, 4(r27)
/* 802EEE98 002EAAF8  7F 83 E3 78 */	mr r3, r28
/* 802EEE9C 002EAAFC  38 9B 00 0C */	addi r4, r27, 0xc
/* 802EEEA0 002EAB00  90 1B 00 00 */	stw r0, 0(r27)
/* 802EEEA4 002EAB04  38 A0 00 E4 */	li r5, 0xe4
/* 802EEEA8 002EAB08  48 00 51 65 */	bl MI_CpuCopy8
/* 802EEEAC 002EAB0C  39 61 00 30 */	addi r11, r1, 0x30
/* 802EEEB0 002EAB10  7F C3 F3 78 */	mr r3, r30
/* 802EEEB4 002EAB14  4B ED 82 B5 */	bl _restgpr_24
/* 802EEEB8 002EAB18  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802EEEBC 002EAB1C  7C 08 03 A6 */	mtlr r0
/* 802EEEC0 002EAB20  38 21 00 30 */	addi r1, r1, 0x30
/* 802EEEC4 002EAB24  4E 80 00 20 */	blr

.global WDPi_GetSegmentRegion
WDPi_GetSegmentRegion:
/* 802EEEC8 002EAB28  A0 03 00 04 */	lhz r0, 4(r3)
/* 802EEECC 002EAB2C  38 E0 00 00 */	li r7, 0
/* 802EEED0 002EAB30  7C 04 00 40 */	cmplw r4, r0
/* 802EEED4 002EAB34  40 80 00 78 */	bge lbl_802EEF4C
/* 802EEED8 002EAB38  38 C3 00 06 */	addi r6, r3, 6
/* 802EEEDC 002EAB3C  39 00 00 03 */	li r8, 3
/* 802EEEE0 002EAB40  48 00 00 60 */	b lbl_802EEF40
lbl_802EEEE4:
/* 802EEEE4 002EAB44  A0 06 00 06 */	lhz r0, 6(r6)
/* 802EEEE8 002EAB48  7D 20 20 51 */	subf. r9, r0, r4
/* 802EEEEC 002EAB4C  41 80 00 54 */	blt lbl_802EEF40
/* 802EEEF0 002EAB50  55 00 20 36 */	slwi r0, r8, 4
/* 802EEEF4 002EAB54  80 83 00 00 */	lwz r4, 0(r3)
/* 802EEEF8 002EAB58  7C E3 02 14 */	add r7, r3, r0
/* 802EEEFC 002EAB5C  91 05 00 00 */	stw r8, 0(r5)
/* 802EEF00 002EAB60  7C 09 21 D6 */	mullw r0, r9, r4
/* 802EEF04 002EAB64  88 67 00 21 */	lbz r3, 0x21(r7)
/* 802EEF08 002EAB68  89 07 00 20 */	lbz r8, 0x20(r7)
/* 802EEF0C 002EAB6C  50 68 44 2E */	rlwimi r8, r3, 8, 0x10, 0x17
/* 802EEF10 002EAB70  88 C7 00 22 */	lbz r6, 0x22(r7)
/* 802EEF14 002EAB74  88 67 00 23 */	lbz r3, 0x23(r7)
/* 802EEF18 002EAB78  50 C8 82 1E */	rlwimi r8, r6, 0x10, 8, 0xf
/* 802EEF1C 002EAB7C  90 05 00 04 */	stw r0, 4(r5)
/* 802EEF20 002EAB80  50 68 C0 0E */	rlwimi r8, r3, 0x18, 0, 7
/* 802EEF24 002EAB84  7C 00 40 50 */	subf r0, r0, r8
/* 802EEF28 002EAB88  7C 00 20 40 */	cmplw r0, r4
/* 802EEF2C 002EAB8C  90 05 00 08 */	stw r0, 8(r5)
/* 802EEF30 002EAB90  40 81 00 08 */	ble lbl_802EEF38
/* 802EEF34 002EAB94  90 85 00 08 */	stw r4, 8(r5)
lbl_802EEF38:
/* 802EEF38 002EAB98  38 E0 00 01 */	li r7, 1
/* 802EEF3C 002EAB9C  48 00 00 10 */	b lbl_802EEF4C
lbl_802EEF40:
/* 802EEF40 002EABA0  35 08 FF FF */	addic. r8, r8, -1
/* 802EEF44 002EABA4  38 C6 FF FE */	addi r6, r6, -2
/* 802EEF48 002EABA8  40 80 FF 9C */	bge lbl_802EEEE4
lbl_802EEF4C:
/* 802EEF4C 002EABAC  7C E3 3B 78 */	mr r3, r7
/* 802EEF50 002EABB0  4E 80 00 20 */	blr

.global WDP_MergeBitset
WDP_MergeBitset:
/* 802EEF54 002EABB4  7C 03 00 D0 */	neg r0, r3
/* 802EEF58 002EABB8  7C 00 00 34 */	cntlzw r0, r0
/* 802EEF5C 002EABBC  54 07 D9 7F */	rlwinm. r7, r0, 0x1b, 5, 0x1f
/* 802EEF60 002EABC0  40 82 00 38 */	bne lbl_802EEF98
/* 802EEF64 002EABC4  7C 05 20 40 */	cmplw r5, r4
/* 802EEF68 002EABC8  40 80 00 30 */	bge lbl_802EEF98
/* 802EEF6C 002EABCC  54 A6 E8 FA */	rlwinm r6, r5, 0x1d, 3, 0x1d
/* 802EEF70 002EABD0  54 A0 06 FE */	clrlwi r0, r5, 0x1b
/* 802EEF74 002EABD4  38 A0 00 01 */	li r5, 1
/* 802EEF78 002EABD8  7C 83 30 2E */	lwzx r4, r3, r6
/* 802EEF7C 002EABDC  7C A5 00 30 */	slw r5, r5, r0
/* 802EEF80 002EABE0  7C A0 20 38 */	and r0, r5, r4
/* 802EEF84 002EABE4  7C 00 00 34 */	cntlzw r0, r0
/* 802EEF88 002EABE8  54 07 D9 7F */	rlwinm. r7, r0, 0x1b, 5, 0x1f
/* 802EEF8C 002EABEC  41 82 00 0C */	beq lbl_802EEF98
/* 802EEF90 002EABF0  7C 80 2B 78 */	or r0, r4, r5
/* 802EEF94 002EABF4  7C 03 31 2E */	stwx r0, r3, r6
lbl_802EEF98:
/* 802EEF98 002EABF8  7C E3 3B 78 */	mr r3, r7
/* 802EEF9C 002EABFC  4E 80 00 20 */	blr