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
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global MPStartup
MPStartup:
/* 802F0588 002EC1E8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F058C 002EC1EC 7C 08 02 A6 */ mflr r0
/* 802F0590 002EC1F0 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F0594 002EC1F4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802F0598 002EC1F8 93 C1 00 08 */ stw r30, 8(r1)
/* 802F059C 002EC1FC 7C 7E 1B 78 */ mr r30, r3
/* 802F05A0 002EC200 80 0D 8B F4 */ lwz r0, lbl_8063DEB4-_SDA_BASE_(r13)
/* 802F05A4 002EC204 2C 00 00 00 */ cmpwi r0, 0
/* 802F05A8 002EC208 41 80 00 0C */ blt lbl_802F05B4
/* 802F05AC 002EC20C 38 60 FF 06 */ li r3, -250
/* 802F05B0 002EC210 48 00 00 28 */ b lbl_802F05D8
lbl_802F05B4:
/* 802F05B4 002EC214 4B FF D1 9D */ bl NCDLockWirelessDriver
/* 802F05B8 002EC218 2C 03 00 00 */ cmpwi r3, 0
/* 802F05BC 002EC21C 40 80 00 14 */ bge lbl_802F05D0
/* 802F05C0 002EC220 2C 03 FF FE */ cmpwi r3, -2
/* 802F05C4 002EC224 41 82 00 0C */ beq lbl_802F05D0
/* 802F05C8 002EC228 38 60 FF 06 */ li r3, -250
/* 802F05CC 002EC22C 48 00 00 0C */ b lbl_802F05D8
lbl_802F05D0:
/* 802F05D0 002EC230 90 6D 8B F4 */ stw r3, lbl_8063DEB4-_SDA_BASE_(r13)
/* 802F05D4 002EC234 38 60 00 00 */ li r3, 0
lbl_802F05D8:
/* 802F05D8 002EC238 2C 03 00 00 */ cmpwi r3, 0
/* 802F05DC 002EC23C 40 80 00 08 */ bge lbl_802F05E4
/* 802F05E0 002EC240 48 00 01 68 */ b lbl_802F0748
lbl_802F05E4:
/* 802F05E4 002EC244 4B F7 E1 79 */ bl OSDisableInterrupts
/* 802F05E8 002EC248 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
/* 802F05EC 002EC24C 7C 7F 1B 78 */ mr r31, r3
/* 802F05F0 002EC250 2C 00 00 01 */ cmpwi r0, 1
/* 802F05F4 002EC254 40 82 00 2C */ bne lbl_802F0620
/* 802F05F8 002EC258 4B F7 E1 8D */ bl OSRestoreInterrupts
/* 802F05FC 002EC25C 80 6D 8B F4 */ lwz r3, lbl_8063DEB4-_SDA_BASE_(r13)
/* 802F0600 002EC260 2C 03 00 00 */ cmpwi r3, 0
/* 802F0604 002EC264 41 80 00 14 */ blt lbl_802F0618
/* 802F0608 002EC268 38 00 FF FF */ li r0, -1
/* 802F060C 002EC26C 90 0D 8B F4 */ stw r0, lbl_8063DEB4-_SDA_BASE_(r13)
/* 802F0610 002EC270 4B FF D2 45 */ bl NCDUnlockWirelessDriver
/* 802F0614 002EC274 2C 03 00 00 */ cmpwi r3, 0
lbl_802F0618:
/* 802F0618 002EC278 38 60 FF 14 */ li r3, -236
/* 802F061C 002EC27C 48 00 01 2C */ b lbl_802F0748
lbl_802F0620:
/* 802F0620 002EC280 38 00 00 00 */ li r0, 0
/* 802F0624 002EC284 80 6D 8B F0 */ lwz r3, lbl_8063DEB0-_SDA_BASE_(r13)
/* 802F0628 002EC288 90 0D AF 38 */ stw r0, lbl_806401F8-_SDA_BASE_(r13)
/* 802F062C 002EC28C 4B F7 90 25 */ bl OSRegisterVersion
/* 802F0630 002EC290 7F C3 F3 78 */ mr r3, r30
/* 802F0634 002EC294 48 00 02 25 */ bl MPiStartupSystem
/* 802F0638 002EC298 2C 03 00 00 */ cmpwi r3, 0
/* 802F063C 002EC29C 7C 7E 1B 78 */ mr r30, r3
/* 802F0640 002EC2A0 41 80 00 7C */ blt lbl_802F06BC
/* 802F0644 002EC2A4 48 00 17 75 */ bl MPiStartupConnection
/* 802F0648 002EC2A8 2C 03 00 00 */ cmpwi r3, 0
/* 802F064C 002EC2AC 7C 7E 1B 78 */ mr r30, r3
/* 802F0650 002EC2B0 41 80 00 6C */ blt lbl_802F06BC
/* 802F0654 002EC2B4 48 00 0E 35 */ bl MPiStartupTxRx
/* 802F0658 002EC2B8 2C 03 00 00 */ cmpwi r3, 0
/* 802F065C 002EC2BC 7C 7E 1B 78 */ mr r30, r3
/* 802F0660 002EC2C0 41 80 00 5C */ blt lbl_802F06BC
/* 802F0664 002EC2C4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0668 002EC2C8 80 03 00 0C */ lwz r0, 0xc(r3)
/* 802F066C 002EC2CC 28 00 00 01 */ cmplwi r0, 1
/* 802F0670 002EC2D0 40 82 00 14 */ bne lbl_802F0684
/* 802F0674 002EC2D4 48 00 1D 91 */ bl MPiStartupParent
/* 802F0678 002EC2D8 2C 03 00 00 */ cmpwi r3, 0
/* 802F067C 002EC2DC 7C 7E 1B 78 */ mr r30, r3
/* 802F0680 002EC2E0 41 80 00 3C */ blt lbl_802F06BC
lbl_802F0684:
/* 802F0684 002EC2E4 48 00 2A D5 */ bl MPiStartupNotification
/* 802F0688 002EC2E8 2C 03 00 00 */ cmpwi r3, 0
/* 802F068C 002EC2EC 7C 7E 1B 78 */ mr r30, r3
/* 802F0690 002EC2F0 41 80 00 2C */ blt lbl_802F06BC
/* 802F0694 002EC2F4 48 00 34 1D */ bl MPiStartupBeacon
/* 802F0698 002EC2F8 2C 03 00 00 */ cmpwi r3, 0
/* 802F069C 002EC2FC 7C 7E 1B 78 */ mr r30, r3
/* 802F06A0 002EC300 41 80 00 1C */ blt lbl_802F06BC
/* 802F06A4 002EC304 48 00 2C 7D */ bl MPiStartupPort
/* 802F06A8 002EC308 2C 03 00 00 */ cmpwi r3, 0
/* 802F06AC 002EC30C 7C 7E 1B 78 */ mr r30, r3
/* 802F06B0 002EC310 41 80 00 0C */ blt lbl_802F06BC
/* 802F06B4 002EC314 38 00 00 01 */ li r0, 1
/* 802F06B8 002EC318 90 0D AF 38 */ stw r0, lbl_806401F8-_SDA_BASE_(r13)
lbl_802F06BC:
/* 802F06BC 002EC31C 7F E3 FB 78 */ mr r3, r31
/* 802F06C0 002EC320 4B F7 E0 C5 */ bl OSRestoreInterrupts
/* 802F06C4 002EC324 2C 1E 00 00 */ cmpwi r30, 0
/* 802F06C8 002EC328 40 80 00 10 */ bge lbl_802F06D8
/* 802F06CC 002EC32C 48 00 00 95 */ bl MPCleanup
/* 802F06D0 002EC330 7F C3 F3 78 */ mr r3, r30
/* 802F06D4 002EC334 48 00 00 74 */ b lbl_802F0748
lbl_802F06D8:
/* 802F06D8 002EC338 48 00 0E 0D */ bl MPiStartupTxRxLater
/* 802F06DC 002EC33C 2C 03 00 00 */ cmpwi r3, 0
/* 802F06E0 002EC340 7C 7E 1B 78 */ mr r30, r3
/* 802F06E4 002EC344 41 80 00 4C */ blt lbl_802F0730
/* 802F06E8 002EC348 48 00 2D 41 */ bl MPiStartupPortLater
/* 802F06EC 002EC34C 2C 03 00 00 */ cmpwi r3, 0
/* 802F06F0 002EC350 7C 7E 1B 78 */ mr r30, r3
/* 802F06F4 002EC354 41 80 00 3C */ blt lbl_802F0730
/* 802F06F8 002EC358 48 00 05 39 */ bl MPiStartupWD
/* 802F06FC 002EC35C 2C 03 00 00 */ cmpwi r3, 0
/* 802F0700 002EC360 7C 7E 1B 78 */ mr r30, r3
/* 802F0704 002EC364 41 80 00 2C */ blt lbl_802F0730
/* 802F0708 002EC368 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F070C 002EC36C 80 03 00 0C */ lwz r0, 0xc(r3)
/* 802F0710 002EC370 28 00 00 01 */ cmplwi r0, 1
/* 802F0714 002EC374 40 82 00 14 */ bne lbl_802F0728
/* 802F0718 002EC378 48 00 1E 35 */ bl MPiStartupParentLater
/* 802F071C 002EC37C 2C 03 00 00 */ cmpwi r3, 0
/* 802F0720 002EC380 7C 7E 1B 78 */ mr r30, r3
/* 802F0724 002EC384 41 80 00 0C */ blt lbl_802F0730
lbl_802F0728:
/* 802F0728 002EC388 48 00 2A 7D */ bl MPiStartupNotificationLater
/* 802F072C 002EC38C 7C 7E 1B 78 */ mr r30, r3
lbl_802F0730:
/* 802F0730 002EC390 2C 1E 00 00 */ cmpwi r30, 0
/* 802F0734 002EC394 40 80 00 10 */ bge lbl_802F0744
/* 802F0738 002EC398 48 00 00 29 */ bl MPCleanup
/* 802F073C 002EC39C 7F C3 F3 78 */ mr r3, r30
/* 802F0740 002EC3A0 48 00 00 08 */ b lbl_802F0748
lbl_802F0744:
/* 802F0744 002EC3A4 38 60 00 00 */ li r3, 0
lbl_802F0748:
/* 802F0748 002EC3A8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F074C 002EC3AC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802F0750 002EC3B0 83 C1 00 08 */ lwz r30, 8(r1)
/* 802F0754 002EC3B4 7C 08 03 A6 */ mtlr r0
/* 802F0758 002EC3B8 38 21 00 10 */ addi r1, r1, 0x10
/* 802F075C 002EC3BC 4E 80 00 20 */ blr
.global MPCleanup
MPCleanup:
/* 802F0760 002EC3C0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F0764 002EC3C4 7C 08 02 A6 */ mflr r0
/* 802F0768 002EC3C8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F076C 002EC3CC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802F0770 002EC3D0 93 C1 00 08 */ stw r30, 8(r1)
/* 802F0774 002EC3D4 48 00 06 01 */ bl MPiCleanupWD
/* 802F0778 002EC3D8 80 6D 8B F4 */ lwz r3, lbl_8063DEB4-_SDA_BASE_(r13)
/* 802F077C 002EC3DC 2C 03 00 00 */ cmpwi r3, 0
/* 802F0780 002EC3E0 41 80 00 14 */ blt lbl_802F0794
/* 802F0784 002EC3E4 38 00 FF FF */ li r0, -1
/* 802F0788 002EC3E8 90 0D 8B F4 */ stw r0, lbl_8063DEB4-_SDA_BASE_(r13)
/* 802F078C 002EC3EC 4B FF D0 C9 */ bl NCDUnlockWirelessDriver
/* 802F0790 002EC3F0 2C 03 00 00 */ cmpwi r3, 0
lbl_802F0794:
/* 802F0794 002EC3F4 48 00 2A 79 */ bl MPiCleanupNotificationEarlier
/* 802F0798 002EC3F8 48 00 1F C9 */ bl MPiCleanupParentEarlier
/* 802F079C 002EC3FC 48 00 0D D1 */ bl MPiCleanupTxRxEarlier
/* 802F07A0 002EC400 4B F7 DF BD */ bl OSDisableInterrupts
/* 802F07A4 002EC404 3B E0 00 00 */ li r31, 0
/* 802F07A8 002EC408 7C 7E 1B 78 */ mr r30, r3
/* 802F07AC 002EC40C 93 ED AF 38 */ stw r31, lbl_806401F8-_SDA_BASE_(r13)
/* 802F07B0 002EC410 48 00 2D 3D */ bl MPiCleanupPort
/* 802F07B4 002EC414 48 00 33 79 */ bl MPiCleanupBeacon
/* 802F07B8 002EC418 48 00 2A AD */ bl MPiCleanupNotification
/* 802F07BC 002EC41C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F07C0 002EC420 7C 03 F8 40 */ cmplw r3, r31
/* 802F07C4 002EC424 41 82 00 14 */ beq lbl_802F07D8
/* 802F07C8 002EC428 80 03 00 0C */ lwz r0, 0xc(r3)
/* 802F07CC 002EC42C 28 00 00 01 */ cmplwi r0, 1
/* 802F07D0 002EC430 40 82 00 08 */ bne lbl_802F07D8
/* 802F07D4 002EC434 48 00 20 35 */ bl MPiCleanupParent
lbl_802F07D8:
/* 802F07D8 002EC438 48 00 0E 51 */ bl MPiCleanupTxRx
/* 802F07DC 002EC43C 48 00 16 C9 */ bl MPiCleanupConnection
/* 802F07E0 002EC440 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F07E4 002EC444 38 00 00 00 */ li r0, 0
/* 802F07E8 002EC448 7C 03 00 40 */ cmplw r3, r0
/* 802F07EC 002EC44C 41 82 00 40 */ beq lbl_802F082C
/* 802F07F0 002EC450 83 E3 00 04 */ lwz r31, 4(r3)
/* 802F07F4 002EC454 38 63 59 84 */ addi r3, r3, 0x5984
/* 802F07F8 002EC458 38 80 00 00 */ li r4, 0
/* 802F07FC 002EC45C 38 A0 07 00 */ li r5, 0x700
/* 802F0800 002EC460 4B D1 39 05 */ bl memset
/* 802F0804 002EC464 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0808 002EC468 38 80 00 00 */ li r4, 0
/* 802F080C 002EC46C 38 A0 74 E0 */ li r5, 0x74e0
/* 802F0810 002EC470 4B D1 38 F5 */ bl memset
/* 802F0814 002EC474 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0818 002EC478 7F EC FB 78 */ mr r12, r31
/* 802F081C 002EC47C 88 03 FF FF */ lbz r0, -1(r3)
/* 802F0820 002EC480 7C 60 18 50 */ subf r3, r0, r3
/* 802F0824 002EC484 7D 89 03 A6 */ mtctr r12
/* 802F0828 002EC488 4E 80 04 21 */ bctrl
lbl_802F082C:
/* 802F082C 002EC48C 38 00 00 00 */ li r0, 0
/* 802F0830 002EC490 7F C3 F3 78 */ mr r3, r30
/* 802F0834 002EC494 90 02 AA 30 */ stw r0, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0838 002EC498 4B F7 DF 4D */ bl OSRestoreInterrupts
/* 802F083C 002EC49C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802F0840 002EC4A0 38 60 00 00 */ li r3, 0
/* 802F0844 002EC4A4 83 C1 00 08 */ lwz r30, 8(r1)
/* 802F0848 002EC4A8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F084C 002EC4AC 7C 08 03 A6 */ mtlr r0
/* 802F0850 002EC4B0 38 21 00 10 */ addi r1, r1, 0x10
/* 802F0854 002EC4B4 4E 80 00 20 */ blr
.global MPiStartupSystem
MPiStartupSystem:
/* 802F0858 002EC4B8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F085C 002EC4BC 7C 08 02 A6 */ mflr r0
/* 802F0860 002EC4C0 81 83 00 00 */ lwz r12, 0(r3)
/* 802F0864 002EC4C4 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F0868 002EC4C8 2C 0C 00 00 */ cmpwi r12, 0
/* 802F086C 002EC4CC 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802F0870 002EC4D0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802F0874 002EC4D4 7C 7E 1B 78 */ mr r30, r3
/* 802F0878 002EC4D8 93 A1 00 14 */ stw r29, 0x14(r1)
/* 802F087C 002EC4DC 41 82 00 10 */ beq lbl_802F088C
/* 802F0880 002EC4E0 80 03 00 04 */ lwz r0, 4(r3)
/* 802F0884 002EC4E4 2C 00 00 00 */ cmpwi r0, 0
/* 802F0888 002EC4E8 40 82 00 0C */ bne lbl_802F0894
lbl_802F088C:
/* 802F088C 002EC4EC 38 60 FF 01 */ li r3, -255
/* 802F0890 002EC4F0 48 00 01 04 */ b lbl_802F0994
lbl_802F0894:
/* 802F0894 002EC4F4 38 60 75 20 */ li r3, 0x7520
/* 802F0898 002EC4F8 7D 89 03 A6 */ mtctr r12
/* 802F089C 002EC4FC 4E 80 04 21 */ bctrl
/* 802F08A0 002EC500 38 03 00 20 */ addi r0, r3, 0x20
/* 802F08A4 002EC504 54 1D 00 34 */ rlwinm r29, r0, 0, 0, 0x1a
/* 802F08A8 002EC508 7C 03 E8 50 */ subf r0, r3, r29
/* 802F08AC 002EC50C 98 1D FF FF */ stb r0, -1(r29)
/* 802F08B0 002EC510 80 0D 8B F8 */ lwz r0, lbl_8063DEB8-_SDA_BASE_(r13)
/* 802F08B4 002EC514 2C 00 00 00 */ cmpwi r0, 0
/* 802F08B8 002EC518 41 82 00 50 */ beq lbl_802F0908
/* 802F08BC 002EC51C 2C 1D 00 00 */ cmpwi r29, 0
/* 802F08C0 002EC520 41 82 00 48 */ beq lbl_802F0908
/* 802F08C4 002EC524 57 A4 00 FE */ clrlwi r4, r29, 3
/* 802F08C8 002EC528 3C 00 10 00 */ lis r0, 0x1000
/* 802F08CC 002EC52C 7C 04 00 40 */ cmplw r4, r0
/* 802F08D0 002EC530 38 60 00 00 */ li r3, 0
/* 802F08D4 002EC534 41 80 00 14 */ blt lbl_802F08E8
/* 802F08D8 002EC538 3C 00 18 00 */ lis r0, 0x1800
/* 802F08DC 002EC53C 7C 04 00 40 */ cmplw r4, r0
/* 802F08E0 002EC540 40 80 00 08 */ bge lbl_802F08E8
/* 802F08E4 002EC544 38 60 00 01 */ li r3, 1
lbl_802F08E8:
/* 802F08E8 002EC548 2C 03 00 00 */ cmpwi r3, 0
/* 802F08EC 002EC54C 40 82 00 1C */ bne lbl_802F0908
/* 802F08F0 002EC550 88 1D FF FF */ lbz r0, -1(r29)
/* 802F08F4 002EC554 81 9E 00 04 */ lwz r12, 4(r30)
/* 802F08F8 002EC558 7C 60 E8 50 */ subf r3, r0, r29
/* 802F08FC 002EC55C 7D 89 03 A6 */ mtctr r12
/* 802F0900 002EC560 4E 80 04 21 */ bctrl
/* 802F0904 002EC564 3B A0 00 00 */ li r29, 0
lbl_802F0908:
/* 802F0908 002EC568 2C 1D 00 00 */ cmpwi r29, 0
/* 802F090C 002EC56C 40 82 00 14 */ bne lbl_802F0920
/* 802F0910 002EC570 38 00 00 00 */ li r0, 0
/* 802F0914 002EC574 38 60 FF 10 */ li r3, -240
/* 802F0918 002EC578 90 02 AA 30 */ stw r0, lbl_80643030-_SDA2_BASE_(r2)
/* 802F091C 002EC57C 48 00 00 78 */ b lbl_802F0994
lbl_802F0920:
/* 802F0920 002EC580 93 A2 AA 30 */ stw r29, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0924 002EC584 7F A3 EB 78 */ mr r3, r29
/* 802F0928 002EC588 38 80 00 00 */ li r4, 0
/* 802F092C 002EC58C 38 A0 74 E0 */ li r5, 0x74e0
/* 802F0930 002EC590 4B D1 37 D5 */ bl memset
/* 802F0934 002EC594 7F A3 EB 78 */ mr r3, r29
/* 802F0938 002EC598 7F C4 F3 78 */ mr r4, r30
/* 802F093C 002EC59C 38 A0 01 40 */ li r5, 0x140
/* 802F0940 002EC5A0 4B D1 36 C1 */ bl memcpy
/* 802F0944 002EC5A4 3B FD 59 84 */ addi r31, r29, 0x5984
/* 802F0948 002EC5A8 38 80 00 00 */ li r4, 0
/* 802F094C 002EC5AC 7F E3 FB 78 */ mr r3, r31
/* 802F0950 002EC5B0 38 A0 07 00 */ li r5, 0x700
/* 802F0954 002EC5B4 4B D1 37 B1 */ bl memset
/* 802F0958 002EC5B8 3B DD 58 E4 */ addi r30, r29, 0x58e4
/* 802F095C 002EC5BC 38 9D 59 04 */ addi r4, r29, 0x5904
/* 802F0960 002EC5C0 7F C3 F3 78 */ mr r3, r30
/* 802F0964 002EC5C4 38 A0 00 20 */ li r5, 0x20
/* 802F0968 002EC5C8 4B F7 E5 91 */ bl OSInitMessageQueue
/* 802F096C 002EC5CC 3B A0 00 00 */ li r29, 0
lbl_802F0970:
/* 802F0970 002EC5D0 7F C3 F3 78 */ mr r3, r30
/* 802F0974 002EC5D4 7F E4 FB 78 */ mr r4, r31
/* 802F0978 002EC5D8 38 A0 00 00 */ li r5, 0
/* 802F097C 002EC5DC 4B F7 E5 DD */ bl OSSendMessage
/* 802F0980 002EC5E0 3B BD 00 01 */ addi r29, r29, 1
/* 802F0984 002EC5E4 3B FF 00 38 */ addi r31, r31, 0x38
/* 802F0988 002EC5E8 2C 1D 00 20 */ cmpwi r29, 0x20
/* 802F098C 002EC5EC 41 80 FF E4 */ blt lbl_802F0970
/* 802F0990 002EC5F0 38 60 00 00 */ li r3, 0
lbl_802F0994:
/* 802F0994 002EC5F4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F0998 002EC5F8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802F099C 002EC5FC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802F09A0 002EC600 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 802F09A4 002EC604 7C 08 03 A6 */ mtlr r0
/* 802F09A8 002EC608 38 21 00 20 */ addi r1, r1, 0x20
/* 802F09AC 002EC60C 4E 80 00 20 */ blr
.global MPiAllocateCommandBlock
MPiAllocateCommandBlock:
/* 802F09B0 002EC610 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F09B4 002EC614 7C 08 02 A6 */ mflr r0
/* 802F09B8 002EC618 2C 04 00 01 */ cmpwi r4, 1
/* 802F09BC 002EC61C 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F09C0 002EC620 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802F09C4 002EC624 7C 7F 1B 78 */ mr r31, r3
/* 802F09C8 002EC628 40 82 00 1C */ bne lbl_802F09E4
/* 802F09CC 002EC62C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F09D0 002EC630 38 81 00 08 */ addi r4, r1, 8
/* 802F09D4 002EC634 38 A0 00 01 */ li r5, 1
/* 802F09D8 002EC638 38 63 58 E4 */ addi r3, r3, 0x58e4
/* 802F09DC 002EC63C 4B F7 E6 45 */ bl OSReceiveMessage
/* 802F09E0 002EC640 48 00 00 30 */ b lbl_802F0A10
lbl_802F09E4:
/* 802F09E4 002EC644 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F09E8 002EC648 38 81 00 08 */ addi r4, r1, 8
/* 802F09EC 002EC64C 38 A0 00 00 */ li r5, 0
/* 802F09F0 002EC650 38 63 58 E4 */ addi r3, r3, 0x58e4
/* 802F09F4 002EC654 4B F7 E6 2D */ bl OSReceiveMessage
/* 802F09F8 002EC658 2C 03 00 00 */ cmpwi r3, 0
/* 802F09FC 002EC65C 40 82 00 14 */ bne lbl_802F0A10
/* 802F0A00 002EC660 38 00 00 00 */ li r0, 0
/* 802F0A04 002EC664 38 60 FF 13 */ li r3, -237
/* 802F0A08 002EC668 90 1F 00 00 */ stw r0, 0(r31)
/* 802F0A0C 002EC66C 48 00 00 24 */ b lbl_802F0A30
lbl_802F0A10:
/* 802F0A10 002EC670 80 01 00 08 */ lwz r0, 8(r1)
/* 802F0A14 002EC674 90 1F 00 00 */ stw r0, 0(r31)
/* 802F0A18 002EC678 80 01 00 08 */ lwz r0, 8(r1)
/* 802F0A1C 002EC67C 2C 00 00 00 */ cmpwi r0, 0
/* 802F0A20 002EC680 40 82 00 0C */ bne lbl_802F0A2C
/* 802F0A24 002EC684 38 60 FF 00 */ li r3, -256
/* 802F0A28 002EC688 48 00 00 08 */ b lbl_802F0A30
lbl_802F0A2C:
/* 802F0A2C 002EC68C 38 60 00 00 */ li r3, 0
lbl_802F0A30:
/* 802F0A30 002EC690 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F0A34 002EC694 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802F0A38 002EC698 7C 08 03 A6 */ mtlr r0
/* 802F0A3C 002EC69C 38 21 00 20 */ addi r1, r1, 0x20
/* 802F0A40 002EC6A0 4E 80 00 20 */ blr
.global MPiFreeCommandBlock
MPiFreeCommandBlock:
/* 802F0A44 002EC6A4 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
/* 802F0A48 002EC6A8 7C 64 1B 78 */ mr r4, r3
/* 802F0A4C 002EC6AC 38 A0 00 00 */ li r5, 0
/* 802F0A50 002EC6B0 38 66 58 E4 */ addi r3, r6, 0x58e4
/* 802F0A54 002EC6B4 4B F7 E5 04 */ b OSSendMessage
.global MPiSendRequest
MPiSendRequest:
/* 802F0A58 002EC6B8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F0A5C 002EC6BC 7C 08 02 A6 */ mflr r0
/* 802F0A60 002EC6C0 2C 05 00 01 */ cmpwi r5, 1
/* 802F0A64 002EC6C4 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F0A68 002EC6C8 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802F0A6C 002EC6CC 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802F0A70 002EC6D0 7C 9E 23 78 */ mr r30, r4
/* 802F0A74 002EC6D4 93 A1 00 14 */ stw r29, 0x14(r1)
/* 802F0A78 002EC6D8 7C 7D 1B 78 */ mr r29, r3
/* 802F0A7C 002EC6DC 40 82 00 3C */ bne lbl_802F0AB8
/* 802F0A80 002EC6E0 38 64 00 08 */ addi r3, r4, 8
/* 802F0A84 002EC6E4 38 80 00 00 */ li r4, 0
/* 802F0A88 002EC6E8 4B F8 03 E1 */ bl OSInitSemaphore
/* 802F0A8C 002EC6EC 4B F7 DC D1 */ bl OSDisableInterrupts
/* 802F0A90 002EC6F0 7C 7F 1B 78 */ mr r31, r3
/* 802F0A94 002EC6F4 7F A3 EB 78 */ mr r3, r29
/* 802F0A98 002EC6F8 7F C4 F3 78 */ mr r4, r30
/* 802F0A9C 002EC6FC 38 A0 00 01 */ li r5, 1
/* 802F0AA0 002EC700 4B F7 E4 B9 */ bl OSSendMessage
/* 802F0AA4 002EC704 38 7E 00 08 */ addi r3, r30, 8
/* 802F0AA8 002EC708 4B F8 04 19 */ bl OSWaitSemaphore
/* 802F0AAC 002EC70C 7F E3 FB 78 */ mr r3, r31
/* 802F0AB0 002EC710 4B F7 DC D5 */ bl OSRestoreInterrupts
/* 802F0AB4 002EC714 48 00 00 1C */ b lbl_802F0AD0
lbl_802F0AB8:
/* 802F0AB8 002EC718 38 A0 00 00 */ li r5, 0
/* 802F0ABC 002EC71C 4B F7 E4 9D */ bl OSSendMessage
/* 802F0AC0 002EC720 2C 03 00 00 */ cmpwi r3, 0
/* 802F0AC4 002EC724 40 82 00 0C */ bne lbl_802F0AD0
/* 802F0AC8 002EC728 38 60 FF 13 */ li r3, -237
/* 802F0ACC 002EC72C 48 00 00 08 */ b lbl_802F0AD4
lbl_802F0AD0:
/* 802F0AD0 002EC730 38 60 00 00 */ li r3, 0
lbl_802F0AD4:
/* 802F0AD4 002EC734 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F0AD8 002EC738 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802F0ADC 002EC73C 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802F0AE0 002EC740 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 802F0AE4 002EC744 7C 08 03 A6 */ mtlr r0
/* 802F0AE8 002EC748 38 21 00 20 */ addi r1, r1, 0x20
/* 802F0AEC 002EC74C 4E 80 00 20 */ blr
.global MPiRespondToWaitingRequest
MPiRespondToWaitingRequest:
/* 802F0AF0 002EC750 80 04 00 04 */ lwz r0, 4(r4)
/* 802F0AF4 002EC754 90 64 00 14 */ stw r3, 0x14(r4)
/* 802F0AF8 002EC758 2C 00 00 01 */ cmpwi r0, 1
/* 802F0AFC 002EC75C 40 82 00 0C */ bne lbl_802F0B08
/* 802F0B00 002EC760 38 64 00 08 */ addi r3, r4, 8
/* 802F0B04 002EC764 4B F8 04 7C */ b OSSignalSemaphore
lbl_802F0B08:
/* 802F0B08 002EC768 81 84 00 18 */ lwz r12, 0x18(r4)
/* 802F0B0C 002EC76C 7D 89 03 A6 */ mtctr r12
/* 802F0B10 002EC770 4E 80 04 20 */ bctr
.global MPiIsEqualMacAddress
MPiIsEqualMacAddress:
/* 802F0B14 002EC774 88 A3 00 00 */ lbz r5, 0(r3)
/* 802F0B18 002EC778 88 04 00 00 */ lbz r0, 0(r4)
/* 802F0B1C 002EC77C 7C 05 00 40 */ cmplw r5, r0
/* 802F0B20 002EC780 41 82 00 0C */ beq lbl_802F0B2C
/* 802F0B24 002EC784 38 60 00 00 */ li r3, 0
/* 802F0B28 002EC788 4E 80 00 20 */ blr
lbl_802F0B2C:
/* 802F0B2C 002EC78C 88 A3 00 01 */ lbz r5, 1(r3)
/* 802F0B30 002EC790 88 04 00 01 */ lbz r0, 1(r4)
/* 802F0B34 002EC794 7C 05 00 40 */ cmplw r5, r0
/* 802F0B38 002EC798 41 82 00 0C */ beq lbl_802F0B44
/* 802F0B3C 002EC79C 38 60 00 00 */ li r3, 0
/* 802F0B40 002EC7A0 4E 80 00 20 */ blr
lbl_802F0B44:
/* 802F0B44 002EC7A4 88 A3 00 02 */ lbz r5, 2(r3)
/* 802F0B48 002EC7A8 88 04 00 02 */ lbz r0, 2(r4)
/* 802F0B4C 002EC7AC 7C 05 00 40 */ cmplw r5, r0
/* 802F0B50 002EC7B0 41 82 00 0C */ beq lbl_802F0B5C
/* 802F0B54 002EC7B4 38 60 00 00 */ li r3, 0
/* 802F0B58 002EC7B8 4E 80 00 20 */ blr
lbl_802F0B5C:
/* 802F0B5C 002EC7BC 88 A3 00 03 */ lbz r5, 3(r3)
/* 802F0B60 002EC7C0 88 04 00 03 */ lbz r0, 3(r4)
/* 802F0B64 002EC7C4 7C 05 00 40 */ cmplw r5, r0
/* 802F0B68 002EC7C8 41 82 00 0C */ beq lbl_802F0B74
/* 802F0B6C 002EC7CC 38 60 00 00 */ li r3, 0
/* 802F0B70 002EC7D0 4E 80 00 20 */ blr
lbl_802F0B74:
/* 802F0B74 002EC7D4 88 A3 00 04 */ lbz r5, 4(r3)
/* 802F0B78 002EC7D8 88 04 00 04 */ lbz r0, 4(r4)
/* 802F0B7C 002EC7DC 7C 05 00 40 */ cmplw r5, r0
/* 802F0B80 002EC7E0 41 82 00 0C */ beq lbl_802F0B8C
/* 802F0B84 002EC7E4 38 60 00 00 */ li r3, 0
/* 802F0B88 002EC7E8 4E 80 00 20 */ blr
lbl_802F0B8C:
/* 802F0B8C 002EC7EC 88 A3 00 05 */ lbz r5, 5(r3)
/* 802F0B90 002EC7F0 88 04 00 05 */ lbz r0, 5(r4)
/* 802F0B94 002EC7F4 7C 05 00 40 */ cmplw r5, r0
/* 802F0B98 002EC7F8 41 82 00 0C */ beq lbl_802F0BA4
/* 802F0B9C 002EC7FC 38 60 00 00 */ li r3, 0
/* 802F0BA0 002EC800 4E 80 00 20 */ blr
lbl_802F0BA4:
/* 802F0BA4 002EC804 38 60 00 01 */ li r3, 1
/* 802F0BA8 002EC808 4E 80 00 20 */ blr
.global MPiGetNewTgid
MPiGetNewTgid:
/* 802F0BAC 002EC80C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F0BB0 002EC810 7C 08 02 A6 */ mflr r0
/* 802F0BB4 002EC814 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F0BB8 002EC818 4B F8 1C 01 */ bl OSGetTime
/* 802F0BBC 002EC81C 3C 60 00 01 */ lis r3, 0x0000FFFF@ha
/* 802F0BC0 002EC820 38 03 FF FF */ addi r0, r3, 0x0000FFFF@l
/* 802F0BC4 002EC824 7C 83 00 38 */ and r3, r4, r0
/* 802F0BC8 002EC828 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F0BCC 002EC82C 7C 08 03 A6 */ mtlr r0
/* 802F0BD0 002EC830 38 21 00 10 */ addi r1, r1, 0x10
/* 802F0BD4 002EC834 4E 80 00 20 */ blr
.global MPiCountPopulation
MPiCountPopulation:
/* 802F0BD8 002EC838 3C C0 55 55 */ lis r6, 0x55555555@ha
/* 802F0BDC 002EC83C 3C A0 33 33 */ lis r5, 0x33333333@ha
/* 802F0BE0 002EC840 54 67 F8 7E */ srwi r7, r3, 1
/* 802F0BE4 002EC844 3C 80 0F 0F */ lis r4, 0x0F0F0F0F@ha
/* 802F0BE8 002EC848 38 06 55 55 */ addi r0, r6, 0x55555555@l
/* 802F0BEC 002EC84C 38 A5 33 33 */ addi r5, r5, 0x33333333@l
/* 802F0BF0 002EC850 7C E6 00 38 */ and r6, r7, r0
/* 802F0BF4 002EC854 38 04 0F 0F */ addi r0, r4, 0x0F0F0F0F@l
/* 802F0BF8 002EC858 7C 86 18 50 */ subf r4, r6, r3
/* 802F0BFC 002EC85C 54 83 F0 BE */ srwi r3, r4, 2
/* 802F0C00 002EC860 7C 84 28 38 */ and r4, r4, r5
/* 802F0C04 002EC864 7C 63 28 38 */ and r3, r3, r5
/* 802F0C08 002EC868 7C 84 1A 14 */ add r4, r4, r3
/* 802F0C0C 002EC86C 54 83 E1 3E */ srwi r3, r4, 4
/* 802F0C10 002EC870 7C 84 1A 14 */ add r4, r4, r3
/* 802F0C14 002EC874 7C 84 00 38 */ and r4, r4, r0
/* 802F0C18 002EC878 54 80 C2 3E */ srwi r0, r4, 8
/* 802F0C1C 002EC87C 7C 84 02 14 */ add r4, r4, r0
/* 802F0C20 002EC880 54 80 84 3E */ srwi r0, r4, 0x10
/* 802F0C24 002EC884 7C 84 02 14 */ add r4, r4, r0
/* 802F0C28 002EC888 54 83 06 3E */ clrlwi r3, r4, 0x18
/* 802F0C2C 002EC88C 4E 80 00 20 */ blr
|