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
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global MPUpdateBeacon
MPUpdateBeacon:
/* 802F38A8 002EF508 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F38AC 002EF50C 7C 08 02 A6 */ mflr r0
/* 802F38B0 002EF510 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F38B4 002EF514 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802F38B8 002EF518 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802F38BC 002EF51C 93 A1 00 14 */ stw r29, 0x14(r1)
/* 802F38C0 002EF520 93 81 00 10 */ stw r28, 0x10(r1)
/* 802F38C4 002EF524 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
/* 802F38C8 002EF528 2C 00 00 00 */ cmpwi r0, 0
/* 802F38CC 002EF52C 40 82 00 0C */ bne lbl_802F38D8
/* 802F38D0 002EF530 38 60 FF 14 */ li r3, -236
/* 802F38D4 002EF534 48 00 00 D4 */ b lbl_802F39A8
lbl_802F38D8:
/* 802F38D8 002EF538 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
/* 802F38DC 002EF53C 2C 00 00 00 */ cmpwi r0, 0
/* 802F38E0 002EF540 41 82 00 0C */ beq lbl_802F38EC
/* 802F38E4 002EF544 38 60 FF FF */ li r3, -1
/* 802F38E8 002EF548 48 00 00 C0 */ b lbl_802F39A8
lbl_802F38EC:
/* 802F38EC 002EF54C 38 61 00 08 */ addi r3, r1, 8
/* 802F38F0 002EF550 38 80 00 01 */ li r4, 1
/* 802F38F4 002EF554 4B FF D0 BD */ bl MPiAllocateCommandBlock
/* 802F38F8 002EF558 2C 03 00 00 */ cmpwi r3, 0
/* 802F38FC 002EF55C 40 80 00 08 */ bge lbl_802F3904
/* 802F3900 002EF560 48 00 00 A8 */ b lbl_802F39A8
lbl_802F3904:
/* 802F3904 002EF564 83 82 AA 30 */ lwz r28, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3908 002EF568 83 C1 00 08 */ lwz r30, 8(r1)
/* 802F390C 002EF56C 3B BC 65 DC */ addi r29, r28, 0x65dc
/* 802F3910 002EF570 7F A3 EB 78 */ mr r3, r29
/* 802F3914 002EF574 4B F7 C0 35 */ bl OSLockMutex
/* 802F3918 002EF578 37 FC 55 60 */ addic. r31, r28, 0x5560
/* 802F391C 002EF57C 40 82 00 14 */ bne lbl_802F3930
/* 802F3920 002EF580 7F A3 EB 78 */ mr r3, r29
/* 802F3924 002EF584 4B F7 C1 01 */ bl OSUnlockMutex
/* 802F3928 002EF588 3B E0 FF 10 */ li r31, -240
/* 802F392C 002EF58C 48 00 00 28 */ b lbl_802F3954
lbl_802F3930:
/* 802F3930 002EF590 7F E3 FB 78 */ mr r3, r31
/* 802F3934 002EF594 48 00 02 E5 */ bl MPiMakeGameInfo
/* 802F3938 002EF598 7F E3 FB 78 */ mr r3, r31
/* 802F393C 002EF59C 4B FF D6 99 */ bl MPiChangeBeacon
/* 802F3940 002EF5A0 7C 7F 1B 78 */ mr r31, r3
/* 802F3944 002EF5A4 7F A3 EB 78 */ mr r3, r29
/* 802F3948 002EF5A8 4B F7 C0 DD */ bl OSUnlockMutex
/* 802F394C 002EF5AC 7F E0 FE 70 */ srawi r0, r31, 0x1f
/* 802F3950 002EF5B0 7F FF 00 38 */ and r31, r31, r0
lbl_802F3954:
/* 802F3954 002EF5B4 2C 1F 00 00 */ cmpwi r31, 0
/* 802F3958 002EF5B8 40 80 00 08 */ bge lbl_802F3960
/* 802F395C 002EF5BC 48 00 00 30 */ b lbl_802F398C
lbl_802F3960:
/* 802F3960 002EF5C0 38 C0 00 00 */ li r6, 0
/* 802F3964 002EF5C4 38 00 00 01 */ li r0, 1
/* 802F3968 002EF5C8 90 DE 00 18 */ stw r6, 0x18(r30)
/* 802F396C 002EF5CC 7F C4 F3 78 */ mr r4, r30
/* 802F3970 002EF5D0 38 7C 65 24 */ addi r3, r28, 0x6524
/* 802F3974 002EF5D4 38 A0 00 01 */ li r5, 1
/* 802F3978 002EF5D8 90 1E 00 04 */ stw r0, 4(r30)
/* 802F397C 002EF5DC 90 DE 00 1C */ stw r6, 0x1c(r30)
/* 802F3980 002EF5E0 90 DE 00 20 */ stw r6, 0x20(r30)
/* 802F3984 002EF5E4 4B FF D0 D5 */ bl MPiSendRequest
/* 802F3988 002EF5E8 7C 7F 1B 78 */ mr r31, r3
lbl_802F398C:
/* 802F398C 002EF5EC 80 61 00 08 */ lwz r3, 8(r1)
/* 802F3990 002EF5F0 4B FF D0 B5 */ bl MPiFreeCommandBlock
/* 802F3994 002EF5F4 2C 1F 00 00 */ cmpwi r31, 0
/* 802F3998 002EF5F8 40 80 00 0C */ bge lbl_802F39A4
/* 802F399C 002EF5FC 7F E3 FB 78 */ mr r3, r31
/* 802F39A0 002EF600 48 00 00 08 */ b lbl_802F39A8
lbl_802F39A4:
/* 802F39A4 002EF604 38 60 00 00 */ li r3, 0
lbl_802F39A8:
/* 802F39A8 002EF608 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F39AC 002EF60C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802F39B0 002EF610 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802F39B4 002EF614 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 802F39B8 002EF618 83 81 00 10 */ lwz r28, 0x10(r1)
/* 802F39BC 002EF61C 7C 08 03 A6 */ mtlr r0
/* 802F39C0 002EF620 38 21 00 20 */ addi r1, r1, 0x20
/* 802F39C4 002EF624 4E 80 00 20 */ blr
.global MPUpdateBeaconAsync
MPUpdateBeaconAsync:
/* 802F39C8 002EF628 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F39CC 002EF62C 7C 08 02 A6 */ mflr r0
/* 802F39D0 002EF630 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F39D4 002EF634 39 61 00 20 */ addi r11, r1, 0x20
/* 802F39D8 002EF638 4B ED 37 51 */ bl _savegpr_27
/* 802F39DC 002EF63C 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
/* 802F39E0 002EF640 7C 7B 1B 78 */ mr r27, r3
/* 802F39E4 002EF644 7C 9C 23 78 */ mr r28, r4
/* 802F39E8 002EF648 2C 00 00 00 */ cmpwi r0, 0
/* 802F39EC 002EF64C 40 82 00 0C */ bne lbl_802F39F8
/* 802F39F0 002EF650 38 60 FF 14 */ li r3, -236
/* 802F39F4 002EF654 48 00 00 A4 */ b lbl_802F3A98
lbl_802F39F8:
/* 802F39F8 002EF658 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
/* 802F39FC 002EF65C 2C 00 00 00 */ cmpwi r0, 0
/* 802F3A00 002EF660 41 82 00 0C */ beq lbl_802F3A0C
/* 802F3A04 002EF664 38 60 FF FF */ li r3, -1
/* 802F3A08 002EF668 48 00 00 90 */ b lbl_802F3A98
lbl_802F3A0C:
/* 802F3A0C 002EF66C 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3A10 002EF670 3B DD 65 DC */ addi r30, r29, 0x65dc
/* 802F3A14 002EF674 7F C3 F3 78 */ mr r3, r30
/* 802F3A18 002EF678 4B F7 BF 31 */ bl OSLockMutex
/* 802F3A1C 002EF67C 37 FD 55 60 */ addic. r31, r29, 0x5560
/* 802F3A20 002EF680 40 82 00 14 */ bne lbl_802F3A34
/* 802F3A24 002EF684 7F C3 F3 78 */ mr r3, r30
/* 802F3A28 002EF688 4B F7 BF FD */ bl OSUnlockMutex
/* 802F3A2C 002EF68C 38 60 FF 10 */ li r3, -240
/* 802F3A30 002EF690 48 00 00 28 */ b lbl_802F3A58
lbl_802F3A34:
/* 802F3A34 002EF694 7F E3 FB 78 */ mr r3, r31
/* 802F3A38 002EF698 48 00 01 E1 */ bl MPiMakeGameInfo
/* 802F3A3C 002EF69C 7F E3 FB 78 */ mr r3, r31
/* 802F3A40 002EF6A0 4B FF D5 95 */ bl MPiChangeBeacon
/* 802F3A44 002EF6A4 7C 7F 1B 78 */ mr r31, r3
/* 802F3A48 002EF6A8 7F C3 F3 78 */ mr r3, r30
/* 802F3A4C 002EF6AC 4B F7 BF D9 */ bl OSUnlockMutex
/* 802F3A50 002EF6B0 7F E0 FE 70 */ srawi r0, r31, 0x1f
/* 802F3A54 002EF6B4 7F E3 00 38 */ and r3, r31, r0
lbl_802F3A58:
/* 802F3A58 002EF6B8 2C 03 00 00 */ cmpwi r3, 0
/* 802F3A5C 002EF6BC 40 80 00 08 */ bge lbl_802F3A64
/* 802F3A60 002EF6C0 48 00 00 28 */ b lbl_802F3A88
lbl_802F3A64:
/* 802F3A64 002EF6C4 38 00 00 00 */ li r0, 0
/* 802F3A68 002EF6C8 93 7C 00 18 */ stw r27, 0x18(r28)
/* 802F3A6C 002EF6CC 7F 84 E3 78 */ mr r4, r28
/* 802F3A70 002EF6D0 38 7D 65 24 */ addi r3, r29, 0x6524
/* 802F3A74 002EF6D4 90 1C 00 04 */ stw r0, 4(r28)
/* 802F3A78 002EF6D8 38 A0 00 00 */ li r5, 0
/* 802F3A7C 002EF6DC 90 1C 00 1C */ stw r0, 0x1c(r28)
/* 802F3A80 002EF6E0 90 1C 00 20 */ stw r0, 0x20(r28)
/* 802F3A84 002EF6E4 4B FF CF D5 */ bl MPiSendRequest
lbl_802F3A88:
/* 802F3A88 002EF6E8 2C 03 00 00 */ cmpwi r3, 0
/* 802F3A8C 002EF6EC 40 80 00 08 */ bge lbl_802F3A94
/* 802F3A90 002EF6F0 48 00 00 08 */ b lbl_802F3A98
lbl_802F3A94:
/* 802F3A94 002EF6F4 38 60 00 00 */ li r3, 0
lbl_802F3A98:
/* 802F3A98 002EF6F8 39 61 00 20 */ addi r11, r1, 0x20
/* 802F3A9C 002EF6FC 4B ED 36 D9 */ bl _restgpr_27
/* 802F3AA0 002EF700 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F3AA4 002EF704 7C 08 03 A6 */ mtlr r0
/* 802F3AA8 002EF708 38 21 00 20 */ addi r1, r1, 0x20
/* 802F3AAC 002EF70C 4E 80 00 20 */ blr
.global MPiStartupBeacon
MPiStartupBeacon:
/* 802F3AB0 002EF710 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F3AB4 002EF714 7C 08 02 A6 */ mflr r0
/* 802F3AB8 002EF718 38 A0 00 20 */ li r5, 0x20
/* 802F3ABC 002EF71C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F3AC0 002EF720 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802F3AC4 002EF724 93 C1 00 08 */ stw r30, 8(r1)
/* 802F3AC8 002EF728 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3ACC 002EF72C 38 7E 65 24 */ addi r3, r30, 0x6524
/* 802F3AD0 002EF730 38 9E 65 44 */ addi r4, r30, 0x6544
/* 802F3AD4 002EF734 4B F7 B4 25 */ bl OSInitMessageQueue
/* 802F3AD8 002EF738 38 7E 65 DC */ addi r3, r30, 0x65dc
/* 802F3ADC 002EF73C 4B F7 BE 35 */ bl OSInitMutex
/* 802F3AE0 002EF740 38 7E 55 60 */ addi r3, r30, 0x5560
/* 802F3AE4 002EF744 38 80 00 00 */ li r4, 0
/* 802F3AE8 002EF748 38 A0 00 80 */ li r5, 0x80
/* 802F3AEC 002EF74C 4B D1 06 19 */ bl memset
/* 802F3AF0 002EF750 3B E0 00 00 */ li r31, 0
/* 802F3AF4 002EF754 38 7E 65 F8 */ addi r3, r30, 0x65f8
/* 802F3AF8 002EF758 93 FE 65 F4 */ stw r31, 0x65f4(r30)
/* 802F3AFC 002EF75C 38 80 00 00 */ li r4, 0
/* 802F3B00 002EF760 38 A0 00 14 */ li r5, 0x14
/* 802F3B04 002EF764 4B D1 06 01 */ bl memset
/* 802F3B08 002EF768 93 FE 66 0C */ stw r31, 0x660c(r30)
/* 802F3B0C 002EF76C 38 60 00 00 */ li r3, 0
/* 802F3B10 002EF770 93 FE 66 10 */ stw r31, 0x6610(r30)
/* 802F3B14 002EF774 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802F3B18 002EF778 83 C1 00 08 */ lwz r30, 8(r1)
/* 802F3B1C 002EF77C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F3B20 002EF780 7C 08 03 A6 */ mtlr r0
/* 802F3B24 002EF784 38 21 00 10 */ addi r1, r1, 0x10
/* 802F3B28 002EF788 4E 80 00 20 */ blr
.global MPiCleanupBeacon
MPiCleanupBeacon:
/* 802F3B2C 002EF78C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F3B30 002EF790 7C 08 02 A6 */ mflr r0
/* 802F3B34 002EF794 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3B38 002EF798 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F3B3C 002EF79C 2C 03 00 00 */ cmpwi r3, 0
/* 802F3B40 002EF7A0 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802F3B44 002EF7A4 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802F3B48 002EF7A8 41 82 00 74 */ beq lbl_802F3BBC
/* 802F3B4C 002EF7AC 3B E3 65 24 */ addi r31, r3, 0x6524
/* 802F3B50 002EF7B0 48 00 00 10 */ b lbl_802F3B60
lbl_802F3B54:
/* 802F3B54 002EF7B4 80 81 00 08 */ lwz r4, 8(r1)
/* 802F3B58 002EF7B8 38 60 FF 00 */ li r3, -256
/* 802F3B5C 002EF7BC 4B FF CF 95 */ bl MPiRespondToWaitingRequest
lbl_802F3B60:
/* 802F3B60 002EF7C0 7F E3 FB 78 */ mr r3, r31
/* 802F3B64 002EF7C4 38 81 00 08 */ addi r4, r1, 8
/* 802F3B68 002EF7C8 38 A0 00 00 */ li r5, 0
/* 802F3B6C 002EF7CC 4B F7 B4 B5 */ bl OSReceiveMessage
/* 802F3B70 002EF7D0 2C 03 00 00 */ cmpwi r3, 0
/* 802F3B74 002EF7D4 40 82 FF E0 */ bne lbl_802F3B54
/* 802F3B78 002EF7D8 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3B7C 002EF7DC 38 80 00 00 */ li r4, 0
/* 802F3B80 002EF7E0 38 A0 00 80 */ li r5, 0x80
/* 802F3B84 002EF7E4 38 7E 65 44 */ addi r3, r30, 0x6544
/* 802F3B88 002EF7E8 4B D1 05 7D */ bl memset
/* 802F3B8C 002EF7EC 38 7E 55 60 */ addi r3, r30, 0x5560
/* 802F3B90 002EF7F0 38 80 00 00 */ li r4, 0
/* 802F3B94 002EF7F4 38 A0 00 80 */ li r5, 0x80
/* 802F3B98 002EF7F8 4B D1 05 6D */ bl memset
/* 802F3B9C 002EF7FC 3B E0 00 00 */ li r31, 0
/* 802F3BA0 002EF800 38 7E 65 F8 */ addi r3, r30, 0x65f8
/* 802F3BA4 002EF804 93 FE 65 F4 */ stw r31, 0x65f4(r30)
/* 802F3BA8 002EF808 38 80 00 00 */ li r4, 0
/* 802F3BAC 002EF80C 38 A0 00 14 */ li r5, 0x14
/* 802F3BB0 002EF810 4B D1 05 55 */ bl memset
/* 802F3BB4 002EF814 93 FE 66 0C */ stw r31, 0x660c(r30)
/* 802F3BB8 002EF818 93 FE 66 10 */ stw r31, 0x6610(r30)
lbl_802F3BBC:
/* 802F3BBC 002EF81C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F3BC0 002EF820 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802F3BC4 002EF824 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802F3BC8 002EF828 7C 08 03 A6 */ mtlr r0
/* 802F3BCC 002EF82C 38 21 00 20 */ addi r1, r1, 0x20
/* 802F3BD0 002EF830 4E 80 00 20 */ blr
.global MPiProcessBeaconSentNotification
MPiProcessBeaconSentNotification:
/* 802F3BD4 002EF834 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F3BD8 002EF838 7C 08 02 A6 */ mflr r0
/* 802F3BDC 002EF83C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3BE0 002EF840 38 A0 00 00 */ li r5, 0
/* 802F3BE4 002EF844 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F3BE8 002EF848 38 81 00 08 */ addi r4, r1, 8
/* 802F3BEC 002EF84C 38 63 65 24 */ addi r3, r3, 0x6524
/* 802F3BF0 002EF850 4B F7 B4 31 */ bl OSReceiveMessage
/* 802F3BF4 002EF854 2C 03 00 00 */ cmpwi r3, 0
/* 802F3BF8 002EF858 41 82 00 10 */ beq lbl_802F3C08
/* 802F3BFC 002EF85C 80 81 00 08 */ lwz r4, 8(r1)
/* 802F3C00 002EF860 38 60 00 00 */ li r3, 0
/* 802F3C04 002EF864 4B FF CE ED */ bl MPiRespondToWaitingRequest
lbl_802F3C08:
/* 802F3C08 002EF868 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F3C0C 002EF86C 7C 08 03 A6 */ mtlr r0
/* 802F3C10 002EF870 38 21 00 10 */ addi r1, r1, 0x10
/* 802F3C14 002EF874 4E 80 00 20 */ blr
.global MPiMakeGameInfo
MPiMakeGameInfo:
/* 802F3C18 002EF878 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F3C1C 002EF87C 7C 08 02 A6 */ mflr r0
/* 802F3C20 002EF880 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3C24 002EF884 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F3C28 002EF888 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802F3C2C 002EF88C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802F3C30 002EF890 7C 7E 1B 78 */ mr r30, r3
/* 802F3C34 002EF894 93 A1 00 14 */ stw r29, 0x14(r1)
/* 802F3C38 002EF898 93 81 00 10 */ stw r28, 0x10(r1)
/* 802F3C3C 002EF89C 83 E4 00 14 */ lwz r31, 0x14(r4)
/* 802F3C40 002EF8A0 3C 1F 00 01 */ addis r0, r31, 1
/* 802F3C44 002EF8A4 28 00 FF FF */ cmplwi r0, 0xffff
/* 802F3C48 002EF8A8 40 82 00 14 */ bne lbl_802F3C5C
/* 802F3C4C 002EF8AC 4B FF CF 61 */ bl MPiGetNewTgid
/* 802F3C50 002EF8B0 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3C54 002EF8B4 7C 7F 1B 78 */ mr r31, r3
/* 802F3C58 002EF8B8 90 64 00 14 */ stw r3, 0x14(r4)
lbl_802F3C5C:
/* 802F3C5C 002EF8BC 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3C60 002EF8C0 83 A3 00 3C */ lwz r29, 0x3c(r3)
/* 802F3C64 002EF8C4 28 1D 00 70 */ cmplwi r29, 0x70
/* 802F3C68 002EF8C8 40 81 00 08 */ ble lbl_802F3C70
/* 802F3C6C 002EF8CC 3B A0 00 70 */ li r29, 0x70
lbl_802F3C70:
/* 802F3C70 002EF8D0 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3C74 002EF8D4 3B 80 00 00 */ li r28, 0
/* 802F3C78 002EF8D8 80 03 00 30 */ lwz r0, 0x30(r3)
/* 802F3C7C 002EF8DC 2C 00 00 00 */ cmpwi r0, 0
/* 802F3C80 002EF8E0 41 82 00 08 */ beq lbl_802F3C88
/* 802F3C84 002EF8E4 63 9C 00 01 */ ori r28, r28, 1
lbl_802F3C88:
/* 802F3C88 002EF8E8 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3C8C 002EF8EC 80 03 00 34 */ lwz r0, 0x34(r3)
/* 802F3C90 002EF8F0 2C 00 00 00 */ cmpwi r0, 0
/* 802F3C94 002EF8F4 41 82 00 08 */ beq lbl_802F3C9C
/* 802F3C98 002EF8F8 63 9C 00 02 */ ori r28, r28, 2
lbl_802F3C9C:
/* 802F3C9C 002EF8FC 7F C3 F3 78 */ mr r3, r30
/* 802F3CA0 002EF900 38 80 00 00 */ li r4, 0
/* 802F3CA4 002EF904 38 A0 00 80 */ li r5, 0x80
/* 802F3CA8 002EF908 4B D1 04 5D */ bl memset
/* 802F3CAC 002EF90C 38 00 01 00 */ li r0, 0x100
/* 802F3CB0 002EF910 38 80 00 01 */ li r4, 1
/* 802F3CB4 002EF914 38 E0 00 08 */ li r7, 8
/* 802F3CB8 002EF918 B0 1E 00 00 */ sth r0, 0(r30)
/* 802F3CBC 002EF91C 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3CC0 002EF920 38 1E 00 08 */ addi r0, r30, 8
/* 802F3CC4 002EF924 98 9E 00 02 */ stb r4, 2(r30)
/* 802F3CC8 002EF928 7F A5 EB 78 */ mr r5, r29
/* 802F3CCC 002EF92C 38 86 00 40 */ addi r4, r6, 0x40
/* 802F3CD0 002EF930 38 7E 00 10 */ addi r3, r30, 0x10
/* 802F3CD4 002EF934 98 FE 00 03 */ stb r7, 3(r30)
/* 802F3CD8 002EF938 81 06 00 10 */ lwz r8, 0x10(r6)
/* 802F3CDC 002EF93C 55 07 42 1E */ rlwinm r7, r8, 8, 8, 0xf
/* 802F3CE0 002EF940 55 06 C4 2E */ rlwinm r6, r8, 0x18, 0x10, 0x17
/* 802F3CE4 002EF944 51 07 C0 0E */ rlwimi r7, r8, 0x18, 0, 7
/* 802F3CE8 002EF948 51 06 46 3E */ rlwimi r6, r8, 8, 0x18, 0x1f
/* 802F3CEC 002EF94C 7C E6 33 78 */ or r6, r7, r6
/* 802F3CF0 002EF950 90 DE 00 04 */ stw r6, 4(r30)
/* 802F3CF4 002EF954 7F E0 07 2C */ sthbrx r31, 0, r0
/* 802F3CF8 002EF958 9B BE 00 0A */ stb r29, 0xa(r30)
/* 802F3CFC 002EF95C 4B D1 03 05 */ bl memcpy
/* 802F3D00 002EF960 9B 9E 00 0B */ stb r28, 0xb(r30)
/* 802F3D04 002EF964 38 1E 00 0C */ addi r0, r30, 0xc
/* 802F3D08 002EF968 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3D0C 002EF96C 80 64 00 28 */ lwz r3, 0x28(r4)
/* 802F3D10 002EF970 7C 60 07 2C */ sthbrx r3, 0, r0
/* 802F3D14 002EF974 38 1E 00 0E */ addi r0, r30, 0xe
/* 802F3D18 002EF978 80 64 00 2C */ lwz r3, 0x2c(r4)
/* 802F3D1C 002EF97C 7C 60 07 2C */ sthbrx r3, 0, r0
/* 802F3D20 002EF980 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802F3D24 002EF984 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802F3D28 002EF988 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 802F3D2C 002EF98C 83 81 00 10 */ lwz r28, 0x10(r1)
/* 802F3D30 002EF990 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F3D34 002EF994 7C 08 03 A6 */ mtlr r0
/* 802F3D38 002EF998 38 21 00 20 */ addi r1, r1, 0x20
/* 802F3D3C 002EF99C 4E 80 00 20 */ blr
.global MPiMakeAndChangeBeacon
MPiMakeAndChangeBeacon:
/* 802F3D40 002EF9A0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F3D44 002EF9A4 7C 08 02 A6 */ mflr r0
/* 802F3D48 002EF9A8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F3D4C 002EF9AC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802F3D50 002EF9B0 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3D54 002EF9B4 93 C1 00 08 */ stw r30, 8(r1)
/* 802F3D58 002EF9B8 3B DF 65 DC */ addi r30, r31, 0x65dc
/* 802F3D5C 002EF9BC 7F C3 F3 78 */ mr r3, r30
/* 802F3D60 002EF9C0 4B F7 BB E9 */ bl OSLockMutex
/* 802F3D64 002EF9C4 37 FF 55 60 */ addic. r31, r31, 0x5560
/* 802F3D68 002EF9C8 40 82 00 14 */ bne lbl_802F3D7C
/* 802F3D6C 002EF9CC 7F C3 F3 78 */ mr r3, r30
/* 802F3D70 002EF9D0 4B F7 BC B5 */ bl OSUnlockMutex
/* 802F3D74 002EF9D4 38 60 FF 10 */ li r3, -240
/* 802F3D78 002EF9D8 48 00 00 28 */ b lbl_802F3DA0
lbl_802F3D7C:
/* 802F3D7C 002EF9DC 7F E3 FB 78 */ mr r3, r31
/* 802F3D80 002EF9E0 4B FF FE 99 */ bl MPiMakeGameInfo
/* 802F3D84 002EF9E4 7F E3 FB 78 */ mr r3, r31
/* 802F3D88 002EF9E8 4B FF D2 4D */ bl MPiChangeBeacon
/* 802F3D8C 002EF9EC 7C 7F 1B 78 */ mr r31, r3
/* 802F3D90 002EF9F0 7F C3 F3 78 */ mr r3, r30
/* 802F3D94 002EF9F4 4B F7 BC 91 */ bl OSUnlockMutex
/* 802F3D98 002EF9F8 7F E0 FE 70 */ srawi r0, r31, 0x1f
/* 802F3D9C 002EF9FC 7F E3 00 38 */ and r3, r31, r0
lbl_802F3DA0:
/* 802F3DA0 002EFA00 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F3DA4 002EFA04 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802F3DA8 002EFA08 83 C1 00 08 */ lwz r30, 8(r1)
/* 802F3DAC 002EFA0C 7C 08 03 A6 */ mtlr r0
/* 802F3DB0 002EFA10 38 21 00 10 */ addi r1, r1, 0x10
/* 802F3DB4 002EFA14 4E 80 00 20 */ blr
.global MPiSetCurrentTsf
MPiSetCurrentTsf:
/* 802F3DB8 002EFA18 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 802F3DBC 002EFA1C 7C 08 02 A6 */ mflr r0
/* 802F3DC0 002EFA20 90 01 00 34 */ stw r0, 0x34(r1)
/* 802F3DC4 002EFA24 39 61 00 30 */ addi r11, r1, 0x30
/* 802F3DC8 002EFA28 4B ED 33 59 */ bl _savegpr_25
/* 802F3DCC 002EFA2C 7C 7E 1B 78 */ mr r30, r3
/* 802F3DD0 002EFA30 4B F7 E9 E9 */ bl OSGetTime
/* 802F3DD4 002EFA34 7C 9C 23 78 */ mr r28, r4
/* 802F3DD8 002EFA38 7C 7D 1B 78 */ mr r29, r3
/* 802F3DDC 002EFA3C 4B F7 A9 81 */ bl OSDisableInterrupts
/* 802F3DE0 002EFA40 3C 80 80 00 */ lis r4, 0x800000F8@ha
/* 802F3DE4 002EFA44 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3DE8 002EFA48 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
/* 802F3DEC 002EFA4C 57 A5 18 38 */ slwi r5, r29, 3
/* 802F3DF0 002EFA50 3C 80 43 1C */ lis r4, 0x431BDE83@ha
/* 802F3DF4 002EFA54 83 BF 66 0C */ lwz r29, 0x660c(r31)
/* 802F3DF8 002EFA58 54 00 F0 BE */ srwi r0, r0, 2
/* 802F3DFC 002EFA5C 53 85 1F 7E */ rlwimi r5, r28, 3, 0x1d, 0x1f
/* 802F3E00 002EFA60 38 84 DE 83 */ addi r4, r4, 0x431BDE83@l
/* 802F3E04 002EFA64 7C 79 1B 78 */ mr r25, r3
/* 802F3E08 002EFA68 7C 04 00 16 */ mulhwu r0, r4, r0
/* 802F3E0C 002EFA6C 7C A3 2B 78 */ mr r3, r5
/* 802F3E10 002EFA70 83 7F 66 10 */ lwz r27, 0x6610(r31)
/* 802F3E14 002EFA74 3B 5F 65 F8 */ addi r26, r31, 0x65f8
/* 802F3E18 002EFA78 57 84 18 38 */ slwi r4, r28, 3
/* 802F3E1C 002EFA7C 38 A0 00 00 */ li r5, 0
/* 802F3E20 002EFA80 54 06 8B FE */ srwi r6, r0, 0xf
/* 802F3E24 002EFA84 4B ED 34 55 */ bl __div2i
/* 802F3E28 002EFA88 54 84 D0 3E */ rotlwi r4, r4, 0x1a
/* 802F3E2C 002EFA8C 7C 60 36 70 */ srawi r0, r3, 6
/* 802F3E30 002EFA90 50 64 D0 0A */ rlwimi r4, r3, 0x1a, 0, 5
/* 802F3E34 002EFA94 3B 7B 00 01 */ addi r27, r27, 1
/* 802F3E38 002EFA98 28 1B 00 0A */ cmplwi r27, 0xa
/* 802F3E3C 002EFA9C 57 A0 08 3C */ slwi r0, r29, 1
/* 802F3E40 002EFAA0 7C 64 F0 10 */ subfc r3, r4, r30
/* 802F3E44 002EFAA4 7F BC EB 78 */ mr r28, r29
/* 802F3E48 002EFAA8 7C 7A 03 2E */ sthx r3, r26, r0
/* 802F3E4C 002EFAAC 40 81 00 08 */ ble lbl_802F3E54
/* 802F3E50 002EFAB0 3B 60 00 0A */ li r27, 0xa
lbl_802F3E54:
/* 802F3E54 002EFAB4 3B BD 00 01 */ addi r29, r29, 1
/* 802F3E58 002EFAB8 93 7F 66 10 */ stw r27, 0x6610(r31)
/* 802F3E5C 002EFABC 28 1D 00 0A */ cmplwi r29, 0xa
/* 802F3E60 002EFAC0 41 80 00 08 */ blt lbl_802F3E68
/* 802F3E64 002EFAC4 3B A0 00 00 */ li r29, 0
lbl_802F3E68:
/* 802F3E68 002EFAC8 93 BF 66 0C */ stw r29, 0x660c(r31)
/* 802F3E6C 002EFACC 7F 23 CB 78 */ mr r3, r25
/* 802F3E70 002EFAD0 4B F7 A9 15 */ bl OSRestoreInterrupts
/* 802F3E74 002EFAD4 3C 60 80 00 */ lis r3, 0x7FFFFFFF@ha
/* 802F3E78 002EFAD8 38 C0 FF FF */ li r6, -1
/* 802F3E7C 002EFADC 38 83 FF FF */ addi r4, r3, 0x7FFFFFFF@l
/* 802F3E80 002EFAE0 38 A0 FF FF */ li r5, -1
/* 802F3E84 002EFAE4 7F 69 03 A6 */ mtctr r27
/* 802F3E88 002EFAE8 28 1B 00 00 */ cmplwi r27, 0
/* 802F3E8C 002EFAEC 40 81 00 50 */ ble lbl_802F3EDC
lbl_802F3E90:
/* 802F3E90 002EFAF0 2C 1C 00 00 */ cmpwi r28, 0
/* 802F3E94 002EFAF4 40 80 00 08 */ bge lbl_802F3E9C
/* 802F3E98 002EFAF8 3B 9C 00 0A */ addi r28, r28, 0xa
lbl_802F3E9C:
/* 802F3E9C 002EFAFC 57 80 08 3C */ slwi r0, r28, 1
/* 802F3EA0 002EFB00 7C 7A 02 2E */ lhzx r3, r26, r0
/* 802F3EA4 002EFB04 7C 03 20 00 */ cmpw r3, r4
/* 802F3EA8 002EFB08 40 80 00 08 */ bge lbl_802F3EB0
/* 802F3EAC 002EFB0C 7C 64 1B 78 */ mr r4, r3
lbl_802F3EB0:
/* 802F3EB0 002EFB10 7C 03 28 00 */ cmpw r3, r5
/* 802F3EB4 002EFB14 40 81 00 08 */ ble lbl_802F3EBC
/* 802F3EB8 002EFB18 7C 65 1B 78 */ mr r5, r3
lbl_802F3EBC:
/* 802F3EBC 002EFB1C 3C 63 00 01 */ addis r3, r3, 1
/* 802F3EC0 002EFB20 38 63 80 00 */ addi r3, r3, -32768
/* 802F3EC4 002EFB24 54 60 04 3E */ clrlwi r0, r3, 0x10
/* 802F3EC8 002EFB28 7C 00 30 00 */ cmpw r0, r6
/* 802F3ECC 002EFB2C 40 81 00 08 */ ble lbl_802F3ED4
/* 802F3ED0 002EFB30 7C 06 03 78 */ mr r6, r0
lbl_802F3ED4:
/* 802F3ED4 002EFB34 3B 9C FF FF */ addi r28, r28, -1
/* 802F3ED8 002EFB38 42 00 FF B8 */ bdnz lbl_802F3E90
lbl_802F3EDC:
/* 802F3EDC 002EFB3C 3C 60 00 01 */ lis r3, 0x00008000@ha
/* 802F3EE0 002EFB40 38 06 80 00 */ addi r0, r6, -32768
/* 802F3EE4 002EFB44 7C 84 28 50 */ subf r4, r4, r5
/* 802F3EE8 002EFB48 38 63 80 00 */ addi r3, r3, 0x00008000@l
/* 802F3EEC 002EFB4C 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 802F3EF0 002EFB50 7C 04 18 00 */ cmpw r4, r3
/* 802F3EF4 002EFB54 40 80 00 08 */ bge lbl_802F3EFC
/* 802F3EF8 002EFB58 54 A0 04 3E */ clrlwi r0, r5, 0x10
lbl_802F3EFC:
/* 802F3EFC 002EFB5C 90 1F 65 F4 */ stw r0, 0x65f4(r31)
/* 802F3F00 002EFB60 39 61 00 30 */ addi r11, r1, 0x30
/* 802F3F04 002EFB64 4B ED 32 69 */ bl _restgpr_25
/* 802F3F08 002EFB68 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802F3F0C 002EFB6C 7C 08 03 A6 */ mtlr r0
/* 802F3F10 002EFB70 38 21 00 30 */ addi r1, r1, 0x30
/* 802F3F14 002EFB74 4E 80 00 20 */ blr
.global MPiGetVTsf
MPiGetVTsf:
/* 802F3F18 002EFB78 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802F3F1C 002EFB7C 7C 08 02 A6 */ mflr r0
/* 802F3F20 002EFB80 90 01 00 24 */ stw r0, 0x24(r1)
/* 802F3F24 002EFB84 39 61 00 20 */ addi r11, r1, 0x20
/* 802F3F28 002EFB88 4B ED 31 FD */ bl _savegpr_26
/* 802F3F2C 002EFB8C 3F 40 80 00 */ lis r26, 0x800000F8@ha
/* 802F3F30 002EFB90 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3F34 002EFB94 80 1A 00 F8 */ lwz r0, 0x800000F8@l(r26)
/* 802F3F38 002EFB98 3F 60 43 1C */ lis r27, 0x431BDE83@ha
/* 802F3F3C 002EFB9C 38 7B DE 83 */ addi r3, r27, 0x431BDE83@l
/* 802F3F40 002EFBA0 80 BF 6D DC */ lwz r5, 0x6ddc(r31)
/* 802F3F44 002EFBA4 54 00 F0 BE */ srwi r0, r0, 2
/* 802F3F48 002EFBA8 80 9F 6D D8 */ lwz r4, 0x6dd8(r31)
/* 802F3F4C 002EFBAC 7C 03 00 16 */ mulhwu r0, r3, r0
/* 802F3F50 002EFBB0 3B 80 00 00 */ li r28, 0
/* 802F3F54 002EFBB4 54 00 8B FE */ srwi r0, r0, 0xf
/* 802F3F58 002EFBB8 1C 00 19 64 */ mulli r0, r0, 0x1964
/* 802F3F5C 002EFBBC 54 00 E8 FE */ srwi r0, r0, 3
/* 802F3F60 002EFBC0 7F A0 28 10 */ subfc r29, r0, r5
/* 802F3F64 002EFBC4 7F DC 21 10 */ subfe r30, r28, r4
/* 802F3F68 002EFBC8 4B F7 E8 51 */ bl OSGetTime
/* 802F3F6C 002EFBCC 6C 65 80 00 */ xoris r5, r3, 0x8000
/* 802F3F70 002EFBD0 6F C0 80 00 */ xoris r0, r30, 0x8000
/* 802F3F74 002EFBD4 7C 64 E8 10 */ subfc r3, r4, r29
/* 802F3F78 002EFBD8 7C A5 01 10 */ subfe r5, r5, r0
/* 802F3F7C 002EFBDC 7C A0 01 10 */ subfe r5, r0, r0
/* 802F3F80 002EFBE0 7C A5 00 D1 */ neg. r5, r5
/* 802F3F84 002EFBE4 41 82 00 28 */ beq lbl_802F3FAC
/* 802F3F88 002EFBE8 80 1A 00 F8 */ lwz r0, 0xf8(r26)
/* 802F3F8C 002EFBEC 38 7B DE 83 */ addi r3, r27, -8573
/* 802F3F90 002EFBF0 54 00 F0 BE */ srwi r0, r0, 2
/* 802F3F94 002EFBF4 7C 03 00 16 */ mulhwu r0, r3, r0
/* 802F3F98 002EFBF8 54 00 8B FE */ srwi r0, r0, 0xf
/* 802F3F9C 002EFBFC 1C 00 41 50 */ mulli r0, r0, 0x4150
/* 802F3FA0 002EFC00 54 00 E8 FE */ srwi r0, r0, 3
/* 802F3FA4 002EFC04 7F BD 00 14 */ addc r29, r29, r0
/* 802F3FA8 002EFC08 7F DE E1 14 */ adde r30, r30, r28
lbl_802F3FAC:
/* 802F3FAC 002EFC0C 3C 60 80 00 */ lis r3, 0x800000F8@ha
/* 802F3FB0 002EFC10 3C 80 43 1C */ lis r4, 0x431BDE83@ha
/* 802F3FB4 002EFC14 80 03 00 F8 */ lwz r0, 0x800000F8@l(r3)
/* 802F3FB8 002EFC18 38 A4 DE 83 */ addi r5, r4, 0x431BDE83@l
/* 802F3FBC 002EFC1C 57 C3 18 38 */ slwi r3, r30, 3
/* 802F3FC0 002EFC20 57 A4 18 38 */ slwi r4, r29, 3
/* 802F3FC4 002EFC24 54 00 F0 BE */ srwi r0, r0, 2
/* 802F3FC8 002EFC28 7C 05 00 16 */ mulhwu r0, r5, r0
/* 802F3FCC 002EFC2C 53 A3 1F 7E */ rlwimi r3, r29, 3, 0x1d, 0x1f
/* 802F3FD0 002EFC30 38 A0 00 00 */ li r5, 0
/* 802F3FD4 002EFC34 54 06 8B FE */ srwi r6, r0, 0xf
/* 802F3FD8 002EFC38 4B ED 32 A1 */ bl __div2i
/* 802F3FDC 002EFC3C 80 1F 65 F4 */ lwz r0, 0x65f4(r31)
/* 802F3FE0 002EFC40 54 84 D0 3E */ rotlwi r4, r4, 0x1a
/* 802F3FE4 002EFC44 50 64 D0 0A */ rlwimi r4, r3, 0x1a, 0, 5
/* 802F3FE8 002EFC48 7C 63 36 70 */ srawi r3, r3, 6
/* 802F3FEC 002EFC4C 39 61 00 20 */ addi r11, r1, 0x20
/* 802F3FF0 002EFC50 7C 60 20 14 */ addc r3, r0, r4
/* 802F3FF4 002EFC54 4B ED 31 7D */ bl _restgpr_26
/* 802F3FF8 002EFC58 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F3FFC 002EFC5C 7C 08 03 A6 */ mtlr r0
/* 802F4000 002EFC60 38 21 00 20 */ addi r1, r1, 0x20
/* 802F4004 002EFC64 4E 80 00 20 */ blr
|