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
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global MPiStartupWD
MPiStartupWD:
/* 802F0C30 002EC890 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F0C34 002EC894 7C 08 02 A6 */ mflr r0
/* 802F0C38 002EC898 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F0C3C 002EC89C 39 61 00 20 */ addi r11, r1, 0x20
/* 802F0C40 002EC8A0 4B ED 64 E5 */ bl _savegpr_26
/* 802F0C44 002EC8A4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0C48 002EC8A8 80 03 00 0C */ lwz r0, 0xc(r3)
/* 802F0C4C 002EC8AC 2C 00 00 01 */ cmpwi r0, 1
/* 802F0C50 002EC8B0 41 82 00 14 */ beq lbl_802F0C64
/* 802F0C54 002EC8B4 48 00 00 08 */ b lbl_802F0C5C
/* 802F0C58 002EC8B8 48 00 00 0C */ b lbl_802F0C64
lbl_802F0C5C:
/* 802F0C5C 002EC8BC 38 60 FF 01 */ li r3, -255
/* 802F0C60 002EC8C0 48 00 00 FC */ b lbl_802F0D5C
lbl_802F0C64:
/* 802F0C64 002EC8C4 4B F8 1B 55 */ bl OSGetTime
/* 802F0C68 002EC8C8 3F E0 80 00 */ lis r31, 0x800000F8@ha
/* 802F0C6C 002EC8CC 3C A0 10 62 */ lis r5, 0x10624DD3@ha
/* 802F0C70 002EC8D0 80 DF 00 F8 */ lwz r6, 0x800000F8@l(r31)
/* 802F0C74 002EC8D4 3B C5 4D D3 */ addi r30, r5, 0x10624DD3@l
/* 802F0C78 002EC8D8 38 00 00 00 */ li r0, 0
/* 802F0C7C 002EC8DC 3B 60 00 0A */ li r27, 0xa
/* 802F0C80 002EC8E0 54 C5 F0 BE */ srwi r5, r6, 2
/* 802F0C84 002EC8E4 7C BE 28 16 */ mulhwu r5, r30, r5
/* 802F0C88 002EC8E8 7F 80 D9 D6 */ mullw r28, r0, r27
/* 802F0C8C 002EC8EC 54 A5 D1 BE */ srwi r5, r5, 6
/* 802F0C90 002EC8F0 1C A5 75 30 */ mulli r5, r5, 0x7530
/* 802F0C94 002EC8F4 7F 45 20 14 */ addc r26, r5, r4
/* 802F0C98 002EC8F8 7C 00 19 14 */ adde r0, r0, r3
/* 802F0C9C 002EC8FC 6C 1D 80 00 */ xoris r29, r0, 0x8000
lbl_802F0CA0:
/* 802F0CA0 002EC900 38 60 00 01 */ li r3, 1
/* 802F0CA4 002EC904 4B FF D8 45 */ bl WD_Startup
/* 802F0CA8 002EC908 2C 03 FF FA */ cmpwi r3, -6
/* 802F0CAC 002EC90C 40 82 00 48 */ bne lbl_802F0CF4
/* 802F0CB0 002EC910 80 1F 00 F8 */ lwz r0, 0xf8(r31)
/* 802F0CB4 002EC914 54 00 F0 BE */ srwi r0, r0, 2
/* 802F0CB8 002EC918 7C 1E 00 16 */ mulhwu r0, r30, r0
/* 802F0CBC 002EC91C 54 03 D1 BE */ srwi r3, r0, 6
/* 802F0CC0 002EC920 7C 03 D8 16 */ mulhwu r0, r3, r27
/* 802F0CC4 002EC924 1C 83 00 0A */ mulli r4, r3, 0xa
/* 802F0CC8 002EC928 7C 60 E2 14 */ add r3, r0, r28
/* 802F0CCC 002EC92C 4B F8 1A 39 */ bl OSSleepTicks
/* 802F0CD0 002EC930 4B F8 1A E9 */ bl OSGetTime
/* 802F0CD4 002EC934 6C 63 80 00 */ xoris r3, r3, 0x8000
/* 802F0CD8 002EC938 7C 04 D0 10 */ subfc r0, r4, r26
/* 802F0CDC 002EC93C 7C 63 E9 10 */ subfe r3, r3, r29
/* 802F0CE0 002EC940 7C 7D E9 10 */ subfe r3, r29, r29
/* 802F0CE4 002EC944 7C 63 00 D1 */ neg. r3, r3
/* 802F0CE8 002EC948 41 82 FF B8 */ beq lbl_802F0CA0
/* 802F0CEC 002EC94C 38 60 FF 15 */ li r3, -235
/* 802F0CF0 002EC950 48 00 00 6C */ b lbl_802F0D5C
lbl_802F0CF4:
/* 802F0CF4 002EC954 2C 03 00 00 */ cmpwi r3, 0
/* 802F0CF8 002EC958 40 80 00 08 */ bge lbl_802F0D00
/* 802F0CFC 002EC95C 48 00 00 60 */ b lbl_802F0D5C
lbl_802F0D00:
/* 802F0D00 002EC960 3F C0 80 58 */ lis r30, lbl_805790C0@ha
/* 802F0D04 002EC964 38 7E 90 C0 */ addi r3, r30, lbl_805790C0@l
/* 802F0D08 002EC968 4B FF D5 B1 */ bl WD_GetInfo
/* 802F0D0C 002EC96C 2C 03 00 00 */ cmpwi r3, 0
/* 802F0D10 002EC970 40 80 00 08 */ bge lbl_802F0D18
/* 802F0D14 002EC974 48 00 00 28 */ b lbl_802F0D3C
lbl_802F0D18:
/* 802F0D18 002EC978 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0D1C 002EC97C 38 9E 90 C0 */ addi r4, r30, -28480
/* 802F0D20 002EC980 38 A0 00 06 */ li r5, 6
/* 802F0D24 002EC984 38 63 57 6C */ addi r3, r3, 0x576c
/* 802F0D28 002EC988 4B D1 32 D9 */ bl memcpy
/* 802F0D2C 002EC98C 38 9E 90 C0 */ addi r4, r30, -28480
/* 802F0D30 002EC990 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0D34 002EC994 A0 04 00 08 */ lhz r0, 8(r4)
/* 802F0D38 002EC998 90 03 57 68 */ stw r0, 0x5768(r3)
lbl_802F0D3C:
/* 802F0D3C 002EC99C 48 00 03 41 */ bl StartParent
/* 802F0D40 002EC9A0 2C 03 00 00 */ cmpwi r3, 0
/* 802F0D44 002EC9A4 7C 7A 1B 78 */ mr r26, r3
/* 802F0D48 002EC9A8 40 80 00 10 */ bge lbl_802F0D58
/* 802F0D4C 002EC9AC 4B FF D8 81 */ bl WD_Cleanup
/* 802F0D50 002EC9B0 7F 43 D3 78 */ mr r3, r26
/* 802F0D54 002EC9B4 48 00 00 08 */ b lbl_802F0D5C
lbl_802F0D58:
/* 802F0D58 002EC9B8 38 60 00 00 */ li r3, 0
lbl_802F0D5C:
/* 802F0D5C 002EC9BC 39 61 00 20 */ addi r11, r1, 0x20
/* 802F0D60 002EC9C0 4B ED 64 11 */ bl _restgpr_26
/* 802F0D64 002EC9C4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F0D68 002EC9C8 7C 08 03 A6 */ mtlr r0
/* 802F0D6C 002EC9CC 38 21 00 20 */ addi r1, r1, 0x20
/* 802F0D70 002EC9D0 4E 80 00 20 */ blr
.global MPiCleanupWD
MPiCleanupWD:
/* 802F0D74 002EC9D4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F0D78 002EC9D8 7C 08 02 A6 */ mflr r0
/* 802F0D7C 002EC9DC 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F0D80 002EC9E0 39 61 00 20 */ addi r11, r1, 0x20
/* 802F0D84 002EC9E4 4B ED 63 A1 */ bl _savegpr_26
/* 802F0D88 002EC9E8 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0D8C 002EC9EC 3B 40 00 00 */ li r26, 0
/* 802F0D90 002EC9F0 7C 03 D0 40 */ cmplw r3, r26
/* 802F0D94 002EC9F4 41 82 01 24 */ beq lbl_802F0EB8
/* 802F0D98 002EC9F8 3B 63 55 E0 */ addi r27, r3, 0x55e0
/* 802F0D9C 002EC9FC 93 43 00 24 */ stw r26, 0x24(r3)
/* 802F0DA0 002ECA00 38 80 00 00 */ li r4, 0
/* 802F0DA4 002ECA04 38 A0 01 80 */ li r5, 0x180
/* 802F0DA8 002ECA08 7F 63 DB 78 */ mr r3, r27
/* 802F0DAC 002ECA0C 4B D1 33 59 */ bl memset
/* 802F0DB0 002ECA10 38 00 00 04 */ li r0, 4
/* 802F0DB4 002ECA14 3C 80 00 03 */ lis r4, 0x0003007F@ha
/* 802F0DB8 002ECA18 B0 1B 00 AC */ sth r0, 0xac(r27)
/* 802F0DBC 002ECA1C 7F 63 DB 78 */ mr r3, r27
/* 802F0DC0 002ECA20 80 E2 AA 30 */ lwz r7, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0DC4 002ECA24 38 A4 00 7F */ addi r5, r4, 0x0003007F@l
/* 802F0DC8 002ECA28 38 C0 00 00 */ li r6, 0
/* 802F0DCC 002ECA2C 80 07 00 20 */ lwz r0, 0x20(r7)
/* 802F0DD0 002ECA30 B0 1B 00 AE */ sth r0, 0xae(r27)
/* 802F0DD4 002ECA34 80 07 00 24 */ lwz r0, 0x24(r7)
/* 802F0DD8 002ECA38 98 1B 00 B0 */ stb r0, 0xb0(r27)
/* 802F0DDC 002ECA3C B3 5B 00 B2 */ sth r26, 0xb2(r27)
/* 802F0DE0 002ECA40 B3 5B 01 38 */ sth r26, 0x138(r27)
/* 802F0DE4 002ECA44 9B 5B 00 B1 */ stb r26, 0xb1(r27)
/* 802F0DE8 002ECA48 80 07 00 18 */ lwz r0, 0x18(r7)
/* 802F0DEC 002ECA4C 98 1B 00 B4 */ stb r0, 0xb4(r27)
/* 802F0DF0 002ECA50 4B FF D0 FD */ bl WD_SetConfig
/* 802F0DF4 002ECA54 2C 03 00 00 */ cmpwi r3, 0
/* 802F0DF8 002ECA58 38 60 00 00 */ li r3, 0
/* 802F0DFC 002ECA5C 48 00 05 0D */ bl MPSetEntryFlag
/* 802F0E00 002ECA60 2C 03 00 00 */ cmpwi r3, 0
/* 802F0E04 002ECA64 40 82 00 08 */ bne lbl_802F0E0C
/* 802F0E08 002ECA68 48 00 2F 39 */ bl MPiMakeAndChangeBeacon
lbl_802F0E0C:
/* 802F0E0C 002ECA6C 83 42 AA 30 */ lwz r26, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0E10 002ECA70 3B 60 00 00 */ li r27, 0
/* 802F0E14 002ECA74 3B 80 00 00 */ li r28, 0
/* 802F0E18 002ECA78 3B C0 00 00 */ li r30, 0
/* 802F0E1C 002ECA7C 83 BA 57 60 */ lwz r29, 0x5760(r26)
lbl_802F0E20:
/* 802F0E20 002ECA80 7C 1C E8 40 */ cmplw r28, r29
/* 802F0E24 002ECA84 41 82 00 20 */ beq lbl_802F0E44
/* 802F0E28 002ECA88 7C 7A F2 14 */ add r3, r26, r30
/* 802F0E2C 002ECA8C 38 82 AA 38 */ addi r4, r2, lbl_80643038-_SDA2_BASE_
/* 802F0E30 002ECA90 38 63 57 72 */ addi r3, r3, 0x5772
/* 802F0E34 002ECA94 4B FF FC E1 */ bl MPiIsEqualMacAddress
/* 802F0E38 002ECA98 2C 03 00 00 */ cmpwi r3, 0
/* 802F0E3C 002ECA9C 40 82 00 08 */ bne lbl_802F0E44
/* 802F0E40 002ECAA0 3B 7B 00 01 */ addi r27, r27, 1
lbl_802F0E44:
/* 802F0E44 002ECAA4 3B 9C 00 01 */ addi r28, r28, 1
/* 802F0E48 002ECAA8 3B DE 00 06 */ addi r30, r30, 6
/* 802F0E4C 002ECAAC 28 1C 00 10 */ cmplwi r28, 0x10
/* 802F0E50 002ECAB0 41 80 FF D0 */ blt lbl_802F0E20
/* 802F0E54 002ECAB4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0E58 002ECAB8 80 03 00 20 */ lwz r0, 0x20(r3)
/* 802F0E5C 002ECABC 7F 40 D9 D6 */ mullw r26, r0, r27
/* 802F0E60 002ECAC0 2C 1A 02 58 */ cmpwi r26, 0x258
/* 802F0E64 002ECAC4 40 80 00 08 */ bge lbl_802F0E6C
/* 802F0E68 002ECAC8 3B 40 02 58 */ li r26, 0x258
lbl_802F0E6C:
/* 802F0E6C 002ECACC 2C 1A 0F A0 */ cmpwi r26, 0xfa0
/* 802F0E70 002ECAD0 40 81 00 08 */ ble lbl_802F0E78
/* 802F0E74 002ECAD4 3B 40 0F A0 */ li r26, 0xfa0
lbl_802F0E78:
/* 802F0E78 002ECAD8 48 00 0D A5 */ bl MPDisconnectAll
/* 802F0E7C 002ECADC 3C 80 80 00 */ lis r4, 0x800000F8@ha
/* 802F0E80 002ECAE0 3C 60 10 62 */ lis r3, 0x10624DD3@ha
/* 802F0E84 002ECAE4 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
/* 802F0E88 002ECAE8 38 63 4D D3 */ addi r3, r3, 0x10624DD3@l
/* 802F0E8C 002ECAEC 38 80 00 00 */ li r4, 0
/* 802F0E90 002ECAF0 54 00 F0 BE */ srwi r0, r0, 2
/* 802F0E94 002ECAF4 7C 63 00 16 */ mulhwu r3, r3, r0
/* 802F0E98 002ECAF8 7C 1A 21 D6 */ mullw r0, r26, r4
/* 802F0E9C 002ECAFC 54 65 D1 BE */ srwi r5, r3, 6
/* 802F0EA0 002ECB00 7C 7A 28 16 */ mulhwu r3, r26, r5
/* 802F0EA4 002ECB04 7C 84 29 D6 */ mullw r4, r4, r5
/* 802F0EA8 002ECB08 7C 63 22 14 */ add r3, r3, r4
/* 802F0EAC 002ECB0C 7C 9A 29 D6 */ mullw r4, r26, r5
/* 802F0EB0 002ECB10 7C 63 02 14 */ add r3, r3, r0
/* 802F0EB4 002ECB14 4B F8 18 51 */ bl OSSleepTicks
lbl_802F0EB8:
/* 802F0EB8 002ECB18 4B FF D0 21 */ bl WD_GetLinkState
/* 802F0EBC 002ECB1C 2C 03 00 01 */ cmpwi r3, 1
/* 802F0EC0 002ECB20 40 82 00 A4 */ bne lbl_802F0F64
/* 802F0EC4 002ECB24 38 60 00 00 */ li r3, 0
/* 802F0EC8 002ECB28 4B FF CF 89 */ bl WD_SetLinkState
/* 802F0ECC 002ECB2C 2C 03 00 00 */ cmpwi r3, 0
/* 802F0ED0 002ECB30 40 80 00 08 */ bge lbl_802F0ED8
/* 802F0ED4 002ECB34 48 00 00 90 */ b lbl_802F0F64
lbl_802F0ED8:
/* 802F0ED8 002ECB38 4B F8 18 E1 */ bl OSGetTime
/* 802F0EDC 002ECB3C 3F E0 80 00 */ lis r31, 0x800000F8@ha
/* 802F0EE0 002ECB40 3C A0 10 62 */ lis r5, 0x10624DD3@ha
/* 802F0EE4 002ECB44 80 DF 00 F8 */ lwz r6, 0x800000F8@l(r31)
/* 802F0EE8 002ECB48 3B C5 4D D3 */ addi r30, r5, 0x10624DD3@l
/* 802F0EEC 002ECB4C 38 00 00 00 */ li r0, 0
/* 802F0EF0 002ECB50 3B 60 00 0A */ li r27, 0xa
/* 802F0EF4 002ECB54 54 C5 F0 BE */ srwi r5, r6, 2
/* 802F0EF8 002ECB58 7C BE 28 16 */ mulhwu r5, r30, r5
/* 802F0EFC 002ECB5C 7F 80 D9 D6 */ mullw r28, r0, r27
/* 802F0F00 002ECB60 54 A5 D1 BE */ srwi r5, r5, 6
/* 802F0F04 002ECB64 1C A5 75 30 */ mulli r5, r5, 0x7530
/* 802F0F08 002ECB68 7F 45 20 14 */ addc r26, r5, r4
/* 802F0F0C 002ECB6C 7C 00 19 14 */ adde r0, r0, r3
/* 802F0F10 002ECB70 6C 1D 80 00 */ xoris r29, r0, 0x8000
/* 802F0F14 002ECB74 48 00 00 44 */ b lbl_802F0F58
lbl_802F0F18:
/* 802F0F18 002ECB78 80 1F 00 F8 */ lwz r0, 0xf8(r31)
/* 802F0F1C 002ECB7C 54 00 F0 BE */ srwi r0, r0, 2
/* 802F0F20 002ECB80 7C 1E 00 16 */ mulhwu r0, r30, r0
/* 802F0F24 002ECB84 54 03 D1 BE */ srwi r3, r0, 6
/* 802F0F28 002ECB88 7C 03 D8 16 */ mulhwu r0, r3, r27
/* 802F0F2C 002ECB8C 1C 83 00 0A */ mulli r4, r3, 0xa
/* 802F0F30 002ECB90 7C 60 E2 14 */ add r3, r0, r28
/* 802F0F34 002ECB94 4B F8 17 D1 */ bl OSSleepTicks
/* 802F0F38 002ECB98 4B F8 18 81 */ bl OSGetTime
/* 802F0F3C 002ECB9C 6C 63 80 00 */ xoris r3, r3, 0x8000
/* 802F0F40 002ECBA0 7C 04 D0 10 */ subfc r0, r4, r26
/* 802F0F44 002ECBA4 7C 63 E9 10 */ subfe r3, r3, r29
/* 802F0F48 002ECBA8 7C 7D E9 10 */ subfe r3, r29, r29
/* 802F0F4C 002ECBAC 7C 63 00 D1 */ neg. r3, r3
/* 802F0F50 002ECBB0 41 82 00 08 */ beq lbl_802F0F58
/* 802F0F54 002ECBB4 48 00 00 10 */ b lbl_802F0F64
lbl_802F0F58:
/* 802F0F58 002ECBB8 4B FF CF 81 */ bl WD_GetLinkState
/* 802F0F5C 002ECBBC 2C 03 00 01 */ cmpwi r3, 1
/* 802F0F60 002ECBC0 41 82 FF B8 */ beq lbl_802F0F18
lbl_802F0F64:
/* 802F0F64 002ECBC4 4B FF D6 69 */ bl WD_Cleanup
/* 802F0F68 002ECBC8 39 61 00 20 */ addi r11, r1, 0x20
/* 802F0F6C 002ECBCC 4B ED 62 05 */ bl _restgpr_26
/* 802F0F70 002ECBD0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F0F74 002ECBD4 7C 08 03 A6 */ mtlr r0
/* 802F0F78 002ECBD8 38 21 00 20 */ addi r1, r1, 0x20
/* 802F0F7C 002ECBDC 4E 80 00 20 */ blr
.global MPiSendFrame
MPiSendFrame:
/* 802F0F80 002ECBE0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F0F84 002ECBE4 7C 08 02 A6 */ mflr r0
/* 802F0F88 002ECBE8 54 84 04 3E */ clrlwi r4, r4, 0x10
/* 802F0F8C 002ECBEC 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F0F90 002ECBF0 4B FF D1 F1 */ bl WD_MpSendFrame
/* 802F0F94 002ECBF4 7C 60 FE 70 */ srawi r0, r3, 0x1f
/* 802F0F98 002ECBF8 7C 63 00 38 */ and r3, r3, r0
/* 802F0F9C 002ECBFC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F0FA0 002ECC00 7C 08 03 A6 */ mtlr r0
/* 802F0FA4 002ECC04 38 21 00 10 */ addi r1, r1, 0x10
/* 802F0FA8 002ECC08 4E 80 00 20 */ blr
.global MPiReceiveFrame
MPiReceiveFrame:
/* 802F0FAC 002ECC0C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F0FB0 002ECC10 7C 08 02 A6 */ mflr r0
/* 802F0FB4 002ECC14 54 84 04 3E */ clrlwi r4, r4, 0x10
/* 802F0FB8 002ECC18 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F0FBC 002ECC1C 4B FF D4 A9 */ bl WD_ReceiveFrame
/* 802F0FC0 002ECC20 2C 03 00 00 */ cmpwi r3, 0
/* 802F0FC4 002ECC24 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F0FC8 002ECC28 7C 08 03 A6 */ mtlr r0
/* 802F0FCC 002ECC2C 38 21 00 10 */ addi r1, r1, 0x10
/* 802F0FD0 002ECC30 4E 80 00 20 */ blr
.global MPiChangeBeacon
MPiChangeBeacon:
/* 802F0FD4 002ECC34 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F0FD8 002ECC38 7C 08 02 A6 */ mflr r0
/* 802F0FDC 002ECC3C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F0FE0 002ECC40 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802F0FE4 002ECC44 7C 7F 1B 78 */ mr r31, r3
/* 802F0FE8 002ECC48 48 00 2F 31 */ bl MPiGetVTsf
/* 802F0FEC 002ECC4C 7F E4 FB 78 */ mr r4, r31
/* 802F0FF0 002ECC50 54 63 04 3E */ clrlwi r3, r3, 0x10
/* 802F0FF4 002ECC54 4B FF CF D1 */ bl WD_ChangeBeacon
/* 802F0FF8 002ECC58 7C 60 FE 70 */ srawi r0, r3, 0x1f
/* 802F0FFC 002ECC5C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802F1000 002ECC60 7C 63 00 38 */ and r3, r3, r0
/* 802F1004 002ECC64 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F1008 002ECC68 7C 08 03 A6 */ mtlr r0
/* 802F100C 002ECC6C 38 21 00 10 */ addi r1, r1, 0x10
/* 802F1010 002ECC70 4E 80 00 20 */ blr
.global MPiChangeVTSF
MPiChangeVTSF:
/* 802F1014 002ECC74 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F1018 002ECC78 7C 08 02 A6 */ mflr r0
/* 802F101C 002ECC7C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F1020 002ECC80 48 00 2E F9 */ bl MPiGetVTsf
/* 802F1024 002ECC84 54 63 04 3E */ clrlwi r3, r3, 0x10
/* 802F1028 002ECC88 4B FF D0 3D */ bl WD_ChangeVTSF
/* 802F102C 002ECC8C 7C 60 FE 70 */ srawi r0, r3, 0x1f
/* 802F1030 002ECC90 7C 63 00 38 */ and r3, r3, r0
/* 802F1034 002ECC94 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F1038 002ECC98 7C 08 03 A6 */ mtlr r0
/* 802F103C 002ECC9C 38 21 00 10 */ addi r1, r1, 0x10
/* 802F1040 002ECCA0 4E 80 00 20 */ blr
.global MPiDisAssoc
MPiDisAssoc:
/* 802F1044 002ECCA4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F1048 002ECCA8 7C 08 02 A6 */ mflr r0
/* 802F104C 002ECCAC 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F1050 002ECCB0 4B FF D0 9D */ bl WD_DisAssoc
/* 802F1054 002ECCB4 3C 03 80 00 */ addis r0, r3, 0x8000
/* 802F1058 002ECCB8 28 00 80 01 */ cmplwi r0, 0x8001
/* 802F105C 002ECCBC 38 00 FF 01 */ li r0, -255
/* 802F1060 002ECCC0 41 82 00 08 */ beq lbl_802F1068
/* 802F1064 002ECCC4 7C 60 1B 78 */ mr r0, r3
lbl_802F1068:
/* 802F1068 002ECCC8 7C 03 03 78 */ mr r3, r0
/* 802F106C 002ECCCC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F1070 002ECCD0 7C 08 03 A6 */ mtlr r0
/* 802F1074 002ECCD4 38 21 00 10 */ addi r1, r1, 0x10
/* 802F1078 002ECCD8 4E 80 00 20 */ blr
.global StartParent
StartParent:
/* 802F107C 002ECCDC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F1080 002ECCE0 7C 08 02 A6 */ mflr r0
/* 802F1084 002ECCE4 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F1088 002ECCE8 39 61 00 20 */ addi r11, r1, 0x20
/* 802F108C 002ECCEC 4B ED 60 99 */ bl _savegpr_26
/* 802F1090 002ECCF0 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F1094 002ECCF4 80 83 57 68 */ lwz r4, 0x5768(r3)
/* 802F1098 002ECCF8 2C 04 00 00 */ cmpwi r4, 0
/* 802F109C 002ECCFC 41 82 00 20 */ beq lbl_802F10BC
/* 802F10A0 002ECD00 80 63 00 18 */ lwz r3, 0x18(r3)
/* 802F10A4 002ECD04 2C 03 00 00 */ cmpwi r3, 0
/* 802F10A8 002ECD08 41 82 00 1C */ beq lbl_802F10C4
/* 802F10AC 002ECD0C 38 00 00 01 */ li r0, 1
/* 802F10B0 002ECD10 7C 00 18 30 */ slw r0, r0, r3
/* 802F10B4 002ECD14 7C 80 00 39 */ and. r0, r4, r0
/* 802F10B8 002ECD18 40 82 00 0C */ bne lbl_802F10C4
lbl_802F10BC:
/* 802F10BC 002ECD1C 38 60 FF 12 */ li r3, -238
/* 802F10C0 002ECD20 48 00 01 5C */ b lbl_802F121C
lbl_802F10C4:
/* 802F10C4 002ECD24 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F10C8 002ECD28 38 80 00 00 */ li r4, 0
/* 802F10CC 002ECD2C 38 A0 01 80 */ li r5, 0x180
/* 802F10D0 002ECD30 3B 43 55 E0 */ addi r26, r3, 0x55e0
/* 802F10D4 002ECD34 7F 43 D3 78 */ mr r3, r26
/* 802F10D8 002ECD38 4B D1 30 2D */ bl memset
/* 802F10DC 002ECD3C 38 00 00 04 */ li r0, 4
/* 802F10E0 002ECD40 3C 80 00 03 */ lis r4, 0x0003007F@ha
/* 802F10E4 002ECD44 B0 1A 00 AC */ sth r0, 0xac(r26)
/* 802F10E8 002ECD48 38 A4 00 7F */ addi r5, r4, 0x0003007F@l
/* 802F10EC 002ECD4C 80 E2 AA 30 */ lwz r7, lbl_80643030-_SDA2_BASE_(r2)
/* 802F10F0 002ECD50 38 00 00 00 */ li r0, 0
/* 802F10F4 002ECD54 7F 43 D3 78 */ mr r3, r26
/* 802F10F8 002ECD58 38 C0 00 00 */ li r6, 0
/* 802F10FC 002ECD5C 80 87 00 20 */ lwz r4, 0x20(r7)
/* 802F1100 002ECD60 B0 9A 00 AE */ sth r4, 0xae(r26)
/* 802F1104 002ECD64 80 87 00 24 */ lwz r4, 0x24(r7)
/* 802F1108 002ECD68 98 9A 00 B0 */ stb r4, 0xb0(r26)
/* 802F110C 002ECD6C B0 1A 00 B2 */ sth r0, 0xb2(r26)
/* 802F1110 002ECD70 B0 1A 01 38 */ sth r0, 0x138(r26)
/* 802F1114 002ECD74 98 1A 00 B1 */ stb r0, 0xb1(r26)
/* 802F1118 002ECD78 80 07 00 18 */ lwz r0, 0x18(r7)
/* 802F111C 002ECD7C 98 1A 00 B4 */ stb r0, 0xb4(r26)
/* 802F1120 002ECD80 4B FF CD CD */ bl WD_SetConfig
/* 802F1124 002ECD84 2C 03 00 00 */ cmpwi r3, 0
/* 802F1128 002ECD88 40 80 00 08 */ bge lbl_802F1130
/* 802F112C 002ECD8C 48 00 00 08 */ b lbl_802F1134
lbl_802F1130:
/* 802F1130 002ECD90 38 60 00 00 */ li r3, 0
lbl_802F1134:
/* 802F1134 002ECD94 2C 03 00 00 */ cmpwi r3, 0
/* 802F1138 002ECD98 40 80 00 08 */ bge lbl_802F1140
/* 802F113C 002ECD9C 48 00 00 E0 */ b lbl_802F121C
lbl_802F1140:
/* 802F1140 002ECDA0 48 00 2C 01 */ bl MPiMakeAndChangeBeacon
/* 802F1144 002ECDA4 2C 03 00 00 */ cmpwi r3, 0
/* 802F1148 002ECDA8 40 80 00 08 */ bge lbl_802F1150
/* 802F114C 002ECDAC 48 00 00 D0 */ b lbl_802F121C
lbl_802F1150:
/* 802F1150 002ECDB0 38 60 00 01 */ li r3, 1
/* 802F1154 002ECDB4 4B FF CC FD */ bl WD_SetLinkState
/* 802F1158 002ECDB8 2C 03 00 00 */ cmpwi r3, 0
/* 802F115C 002ECDBC 40 80 00 08 */ bge lbl_802F1164
/* 802F1160 002ECDC0 48 00 00 BC */ b lbl_802F121C
lbl_802F1164:
/* 802F1164 002ECDC4 4B F8 16 55 */ bl OSGetTime
/* 802F1168 002ECDC8 3F E0 80 00 */ lis r31, 0x800000F8@ha
/* 802F116C 002ECDCC 3C A0 10 62 */ lis r5, 0x10624DD3@ha
/* 802F1170 002ECDD0 80 DF 00 F8 */ lwz r6, 0x800000F8@l(r31)
/* 802F1174 002ECDD4 3B C5 4D D3 */ addi r30, r5, 0x10624DD3@l
/* 802F1178 002ECDD8 38 00 00 00 */ li r0, 0
/* 802F117C 002ECDDC 3B 60 00 0A */ li r27, 0xa
/* 802F1180 002ECDE0 54 C5 F0 BE */ srwi r5, r6, 2
/* 802F1184 002ECDE4 7C BE 28 16 */ mulhwu r5, r30, r5
/* 802F1188 002ECDE8 7F 80 D9 D6 */ mullw r28, r0, r27
/* 802F118C 002ECDEC 54 A5 D1 BE */ srwi r5, r5, 6
/* 802F1190 002ECDF0 1C A5 75 30 */ mulli r5, r5, 0x7530
/* 802F1194 002ECDF4 7F 45 20 14 */ addc r26, r5, r4
/* 802F1198 002ECDF8 7C 00 19 14 */ adde r0, r0, r3
/* 802F119C 002ECDFC 6C 1D 80 00 */ xoris r29, r0, 0x8000
/* 802F11A0 002ECE00 48 00 00 48 */ b lbl_802F11E8
lbl_802F11A4:
/* 802F11A4 002ECE04 80 1F 00 F8 */ lwz r0, 0xf8(r31)
/* 802F11A8 002ECE08 54 00 F0 BE */ srwi r0, r0, 2
/* 802F11AC 002ECE0C 7C 1E 00 16 */ mulhwu r0, r30, r0
/* 802F11B0 002ECE10 54 03 D1 BE */ srwi r3, r0, 6
/* 802F11B4 002ECE14 7C 03 D8 16 */ mulhwu r0, r3, r27
/* 802F11B8 002ECE18 1C 83 00 0A */ mulli r4, r3, 0xa
/* 802F11BC 002ECE1C 7C 60 E2 14 */ add r3, r0, r28
/* 802F11C0 002ECE20 4B F8 15 45 */ bl OSSleepTicks
/* 802F11C4 002ECE24 4B F8 15 F5 */ bl OSGetTime
/* 802F11C8 002ECE28 6C 63 80 00 */ xoris r3, r3, 0x8000
/* 802F11CC 002ECE2C 7C 04 D0 10 */ subfc r0, r4, r26
/* 802F11D0 002ECE30 7C 63 E9 10 */ subfe r3, r3, r29
/* 802F11D4 002ECE34 7C 7D E9 10 */ subfe r3, r29, r29
/* 802F11D8 002ECE38 7C 63 00 D1 */ neg. r3, r3
/* 802F11DC 002ECE3C 41 82 00 0C */ beq lbl_802F11E8
/* 802F11E0 002ECE40 38 60 FF 15 */ li r3, -235
/* 802F11E4 002ECE44 48 00 00 38 */ b lbl_802F121C
lbl_802F11E8:
/* 802F11E8 002ECE48 4B FF CC F1 */ bl WD_GetLinkState
/* 802F11EC 002ECE4C 2C 03 00 00 */ cmpwi r3, 0
/* 802F11F0 002ECE50 41 82 FF B4 */ beq lbl_802F11A4
/* 802F11F4 002ECE54 3C 60 80 00 */ lis r3, 0x800031A0@ha
/* 802F11F8 002ECE58 38 80 00 20 */ li r4, 0x20
/* 802F11FC 002ECE5C 3B 43 31 A0 */ addi r26, r3, 0x800031A0@l
/* 802F1200 002ECE60 7F 43 D3 78 */ mr r3, r26
/* 802F1204 002ECE64 4B F7 94 25 */ bl DCInvalidateRange
/* 802F1208 002ECE68 88 7A 00 02 */ lbz r3, 2(r26)
/* 802F120C 002ECE6C 2C 03 00 00 */ cmpwi r3, 0
/* 802F1210 002ECE70 41 82 00 08 */ beq lbl_802F1218
/* 802F1214 002ECE74 4B FB 68 CD */ bl WPADSetDisableChannel
lbl_802F1218:
/* 802F1218 002ECE78 38 60 00 00 */ li r3, 0
lbl_802F121C:
/* 802F121C 002ECE7C 39 61 00 20 */ addi r11, r1, 0x20
/* 802F1220 002ECE80 4B ED 5F 51 */ bl _restgpr_26
/* 802F1224 002ECE84 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F1228 002ECE88 7C 08 03 A6 */ mtlr r0
/* 802F122C 002ECE8C 38 21 00 20 */ addi r1, r1, 0x20
/* 802F1230 002ECE90 4E 80 00 20 */ blr
|