summaryrefslogtreecommitdiff
path: root/asm/SDK/MP/mptxrx.s
blob: 53fb8885e18575d54b72b8f70ad3e85c80e772ac (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
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
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
.include "macros.inc"

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

.global MPSendAsync
MPSendAsync:
/* 802F13A0 002ED000  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802F13A4 002ED004  7C 08 02 A6 */	mflr r0
/* 802F13A8 002ED008  90 01 00 14 */	stw r0, 0x14(r1)
/* 802F13AC 002ED00C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802F13B0 002ED010  7C DF 33 78 */	mr r31, r6
/* 802F13B4 002ED014  93 C1 00 08 */	stw r30, 8(r1)
/* 802F13B8 002ED018  7D 3E 4B 78 */	mr r30, r9
/* 802F13BC 002ED01C  80 0D AF 38 */	lwz r0, lbl_806401F8-_SDA_BASE_(r13)
/* 802F13C0 002ED020  2C 00 00 00 */	cmpwi r0, 0
/* 802F13C4 002ED024  40 82 00 0C */	bne lbl_802F13D0
/* 802F13C8 002ED028  38 60 FF 14 */	li r3, -236
/* 802F13CC 002ED02C  48 00 00 A4 */	b lbl_802F1470
lbl_802F13D0:
/* 802F13D0 002ED030  80 0D AF 3C */	lwz r0, lbl_806401FC-_SDA_BASE_(r13)
/* 802F13D4 002ED034  2C 00 00 00 */	cmpwi r0, 0
/* 802F13D8 002ED038  41 82 00 0C */	beq lbl_802F13E4
/* 802F13DC 002ED03C  38 60 FF FF */	li r3, -1
/* 802F13E0 002ED040  48 00 00 90 */	b lbl_802F1470
lbl_802F13E4:
/* 802F13E4 002ED044  54 C0 07 39 */	rlwinm. r0, r6, 0, 0x1c, 0x1c
/* 802F13E8 002ED048  91 09 00 18 */	stw r8, 0x18(r9)
/* 802F13EC 002ED04C  38 00 00 00 */	li r0, 0
/* 802F13F0 002ED050  90 69 00 1C */	stw r3, 0x1c(r9)
/* 802F13F4 002ED054  90 09 00 04 */	stw r0, 4(r9)
/* 802F13F8 002ED058  90 89 00 20 */	stw r4, 0x20(r9)
/* 802F13FC 002ED05C  90 C9 00 24 */	stw r6, 0x24(r9)
/* 802F1400 002ED060  90 A9 00 28 */	stw r5, 0x28(r9)
/* 802F1404 002ED064  90 A9 00 2C */	stw r5, 0x2c(r9)
/* 802F1408 002ED068  90 E9 00 30 */	stw r7, 0x30(r9)
/* 802F140C 002ED06C  41 82 00 2C */	beq lbl_802F1438
/* 802F1410 002ED070  4B F7 D3 4D */	bl OSDisableInterrupts
/* 802F1414 002ED074  80 82 AA 30 */	lwz r4, lbl_80643030-_SDA2_BASE_(r2)
/* 802F1418 002ED078  57 E0 0F 3C */	rlwinm r0, r31, 1, 0x1c, 0x1e
/* 802F141C 002ED07C  7C 84 02 14 */	add r4, r4, r0
/* 802F1420 002ED080  A3 E4 58 D2 */	lhz r31, 0x58d2(r4)
/* 802F1424 002ED084  38 1F 00 01 */	addi r0, r31, 1
/* 802F1428 002ED088  B0 04 58 D2 */	sth r0, 0x58d2(r4)
/* 802F142C 002ED08C  4B F7 D3 59 */	bl OSRestoreInterrupts
/* 802F1430 002ED090  93 FE 00 34 */	stw r31, 0x34(r30)
/* 802F1434 002ED094  48 00 00 08 */	b lbl_802F143C
lbl_802F1438:
/* 802F1438 002ED098  90 09 00 34 */	stw r0, 0x34(r9)
lbl_802F143C:
/* 802F143C 002ED09C  48 00 09 5D */	bl MPGetConnectedAIDs
/* 802F1440 002ED0A0  80 1E 00 2C */	lwz r0, 0x2c(r30)
/* 802F1444 002ED0A4  7F C4 F3 78 */	mr r4, r30
/* 802F1448 002ED0A8  80 C2 AA 30 */	lwz r6, lbl_80643030-_SDA2_BASE_(r2)
/* 802F144C 002ED0AC  38 A0 00 00 */	li r5, 0
/* 802F1450 002ED0B0  7C 00 18 38 */	and r0, r0, r3
/* 802F1454 002ED0B4  90 1E 00 2C */	stw r0, 0x2c(r30)
/* 802F1458 002ED0B8  38 66 6D E4 */	addi r3, r6, 0x6de4
/* 802F145C 002ED0BC  4B FF F5 FD */	bl MPiSendRequest
/* 802F1460 002ED0C0  2C 03 00 00 */	cmpwi r3, 0
/* 802F1464 002ED0C4  40 80 00 08 */	bge lbl_802F146C
/* 802F1468 002ED0C8  48 00 00 08 */	b lbl_802F1470
lbl_802F146C:
/* 802F146C 002ED0CC  38 60 00 00 */	li r3, 0
lbl_802F1470:
/* 802F1470 002ED0D0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802F1474 002ED0D4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802F1478 002ED0D8  83 C1 00 08 */	lwz r30, 8(r1)
/* 802F147C 002ED0DC  7C 08 03 A6 */	mtlr r0
/* 802F1480 002ED0E0  38 21 00 10 */	addi r1, r1, 0x10
/* 802F1484 002ED0E4  4E 80 00 20 */	blr

.global MPiStartupTxRx
MPiStartupTxRx:
/* 802F1488 002ED0E8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802F148C 002ED0EC  7C 08 02 A6 */	mflr r0
/* 802F1490 002ED0F0  38 A0 00 20 */	li r5, 0x20
/* 802F1494 002ED0F4  90 01 00 14 */	stw r0, 0x14(r1)
/* 802F1498 002ED0F8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802F149C 002ED0FC  83 E2 AA 30 */	lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F14A0 002ED100  38 7F 6D E4 */	addi r3, r31, 0x6de4
/* 802F14A4 002ED104  38 9F 6E 04 */	addi r4, r31, 0x6e04
/* 802F14A8 002ED108  4B F7 DA 51 */	bl OSInitMessageQueue
/* 802F14AC 002ED10C  38 7F 6E 88 */	addi r3, r31, 0x6e88
/* 802F14B0 002ED110  38 9F 6E A8 */	addi r4, r31, 0x6ea8
/* 802F14B4 002ED114  38 A0 00 20 */	li r5, 0x20
/* 802F14B8 002ED118  4B F7 DA 41 */	bl OSInitMessageQueue
/* 802F14BC 002ED11C  38 7F 6F 28 */	addi r3, r31, 0x6f28
/* 802F14C0 002ED120  38 9F 6F 48 */	addi r4, r31, 0x6f48
/* 802F14C4 002ED124  38 A0 00 20 */	li r5, 0x20
/* 802F14C8 002ED128  4B F7 DA 31 */	bl OSInitMessageQueue
/* 802F14CC 002ED12C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802F14D0 002ED130  38 60 00 00 */	li r3, 0
/* 802F14D4 002ED134  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802F14D8 002ED138  7C 08 03 A6 */	mtlr r0
/* 802F14DC 002ED13C  38 21 00 10 */	addi r1, r1, 0x10
/* 802F14E0 002ED140  4E 80 00 20 */	blr

.global MPiStartupTxRxLater
MPiStartupTxRxLater:
/* 802F14E4 002ED144  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F14E8 002ED148  7C 08 02 A6 */	mflr r0
/* 802F14EC 002ED14C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F14F0 002ED150  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F14F4 002ED154  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F14F8 002ED158  83 C2 AA 30 */	lwz r30, lbl_80643030-_SDA2_BASE_(r2)
/* 802F14FC 002ED15C  3B FE 6D E4 */	addi r31, r30, 0x6de4
lbl_802F1500:
/* 802F1500 002ED160  7F E3 FB 78 */	mr r3, r31
/* 802F1504 002ED164  38 81 00 10 */	addi r4, r1, 0x10
/* 802F1508 002ED168  38 A0 00 00 */	li r5, 0
/* 802F150C 002ED16C  4B F7 DB 15 */	bl OSReceiveMessage
/* 802F1510 002ED170  2C 03 00 00 */	cmpwi r3, 0
/* 802F1514 002ED174  40 82 FF EC */	bne lbl_802F1500
/* 802F1518 002ED178  3B FE 6E 88 */	addi r31, r30, 0x6e88
lbl_802F151C:
/* 802F151C 002ED17C  7F E3 FB 78 */	mr r3, r31
/* 802F1520 002ED180  38 81 00 0C */	addi r4, r1, 0xc
/* 802F1524 002ED184  38 A0 00 00 */	li r5, 0
/* 802F1528 002ED188  4B F7 DA F9 */	bl OSReceiveMessage
/* 802F152C 002ED18C  2C 03 00 00 */	cmpwi r3, 0
/* 802F1530 002ED190  40 82 FF EC */	bne lbl_802F151C
/* 802F1534 002ED194  3B FE 6F 28 */	addi r31, r30, 0x6f28
lbl_802F1538:
/* 802F1538 002ED198  7F E3 FB 78 */	mr r3, r31
/* 802F153C 002ED19C  38 81 00 08 */	addi r4, r1, 8
/* 802F1540 002ED1A0  38 A0 00 00 */	li r5, 0
/* 802F1544 002ED1A4  4B F7 DA DD */	bl OSReceiveMessage
/* 802F1548 002ED1A8  2C 03 00 00 */	cmpwi r3, 0
/* 802F154C 002ED1AC  40 82 FF EC */	bne lbl_802F1538
/* 802F1550 002ED1B0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F1554 002ED1B4  38 60 00 00 */	li r3, 0
/* 802F1558 002ED1B8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F155C 002ED1BC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F1560 002ED1C0  7C 08 03 A6 */	mtlr r0
/* 802F1564 002ED1C4  38 21 00 20 */	addi r1, r1, 0x20
/* 802F1568 002ED1C8  4E 80 00 20 */	blr

.global MPiCleanupTxRxEarlier
MPiCleanupTxRxEarlier:
/* 802F156C 002ED1CC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F1570 002ED1D0  7C 08 02 A6 */	mflr r0
/* 802F1574 002ED1D4  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F1578 002ED1D8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F157C 002ED1DC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F1580 002ED1E0  83 C2 AA 30 */	lwz r30, lbl_80643030-_SDA2_BASE_(r2)
/* 802F1584 002ED1E4  2C 1E 00 00 */	cmpwi r30, 0
/* 802F1588 002ED1E8  41 82 00 88 */	beq lbl_802F1610
/* 802F158C 002ED1EC  3B FE 6D E4 */	addi r31, r30, 0x6de4
/* 802F1590 002ED1F0  48 00 00 10 */	b lbl_802F15A0
lbl_802F1594:
/* 802F1594 002ED1F4  80 81 00 08 */	lwz r4, 8(r1)
/* 802F1598 002ED1F8  38 60 FF 00 */	li r3, -256
/* 802F159C 002ED1FC  48 00 20 69 */	bl MPiNotifyDataSentToPort
lbl_802F15A0:
/* 802F15A0 002ED200  7F E3 FB 78 */	mr r3, r31
/* 802F15A4 002ED204  38 81 00 08 */	addi r4, r1, 8
/* 802F15A8 002ED208  38 A0 00 00 */	li r5, 0
/* 802F15AC 002ED20C  4B F7 DA 75 */	bl OSReceiveMessage
/* 802F15B0 002ED210  2C 03 00 00 */	cmpwi r3, 0
/* 802F15B4 002ED214  40 82 FF E0 */	bne lbl_802F1594
/* 802F15B8 002ED218  3B FE 6E 88 */	addi r31, r30, 0x6e88
/* 802F15BC 002ED21C  48 00 00 10 */	b lbl_802F15CC
lbl_802F15C0:
/* 802F15C0 002ED220  80 81 00 08 */	lwz r4, 8(r1)
/* 802F15C4 002ED224  38 60 FF 00 */	li r3, -256
/* 802F15C8 002ED228  48 00 20 3D */	bl MPiNotifyDataSentToPort
lbl_802F15CC:
/* 802F15CC 002ED22C  7F E3 FB 78 */	mr r3, r31
/* 802F15D0 002ED230  38 81 00 08 */	addi r4, r1, 8
/* 802F15D4 002ED234  38 A0 00 00 */	li r5, 0
/* 802F15D8 002ED238  4B F7 DA 49 */	bl OSReceiveMessage
/* 802F15DC 002ED23C  2C 03 00 00 */	cmpwi r3, 0
/* 802F15E0 002ED240  40 82 FF E0 */	bne lbl_802F15C0
/* 802F15E4 002ED244  3B FE 6F 28 */	addi r31, r30, 0x6f28
/* 802F15E8 002ED248  48 00 00 10 */	b lbl_802F15F8
lbl_802F15EC:
/* 802F15EC 002ED24C  80 81 00 08 */	lwz r4, 8(r1)
/* 802F15F0 002ED250  38 60 FF 00 */	li r3, -256
/* 802F15F4 002ED254  48 00 20 11 */	bl MPiNotifyDataSentToPort
lbl_802F15F8:
/* 802F15F8 002ED258  7F E3 FB 78 */	mr r3, r31
/* 802F15FC 002ED25C  38 81 00 08 */	addi r4, r1, 8
/* 802F1600 002ED260  38 A0 00 00 */	li r5, 0
/* 802F1604 002ED264  4B F7 DA 1D */	bl OSReceiveMessage
/* 802F1608 002ED268  2C 03 00 00 */	cmpwi r3, 0
/* 802F160C 002ED26C  40 82 FF E0 */	bne lbl_802F15EC
lbl_802F1610:
/* 802F1610 002ED270  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F1614 002ED274  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F1618 002ED278  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F161C 002ED27C  7C 08 03 A6 */	mtlr r0
/* 802F1620 002ED280  38 21 00 20 */	addi r1, r1, 0x20
/* 802F1624 002ED284  4E 80 00 20 */	blr

.global MPiCleanupTxRx
MPiCleanupTxRx:
/* 802F1628 002ED288  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802F162C 002ED28C  7C 08 02 A6 */	mflr r0
/* 802F1630 002ED290  90 01 00 14 */	stw r0, 0x14(r1)
/* 802F1634 002ED294  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802F1638 002ED298  83 E2 AA 30 */	lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F163C 002ED29C  2C 1F 00 00 */	cmpwi r31, 0
/* 802F1640 002ED2A0  41 82 00 34 */	beq lbl_802F1674
/* 802F1644 002ED2A4  38 7F 6E 04 */	addi r3, r31, 0x6e04
/* 802F1648 002ED2A8  38 80 00 00 */	li r4, 0
/* 802F164C 002ED2AC  38 A0 00 80 */	li r5, 0x80
/* 802F1650 002ED2B0  4B D1 2A B5 */	bl memset
/* 802F1654 002ED2B4  38 7F 6E A8 */	addi r3, r31, 0x6ea8
/* 802F1658 002ED2B8  38 80 00 00 */	li r4, 0
/* 802F165C 002ED2BC  38 A0 00 80 */	li r5, 0x80
/* 802F1660 002ED2C0  4B D1 2A A5 */	bl memset
/* 802F1664 002ED2C4  38 7F 6F 48 */	addi r3, r31, 0x6f48
/* 802F1668 002ED2C8  38 80 00 00 */	li r4, 0
/* 802F166C 002ED2CC  38 A0 00 80 */	li r5, 0x80
/* 802F1670 002ED2D0  4B D1 2A 95 */	bl memset
lbl_802F1674:
/* 802F1674 002ED2D4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802F1678 002ED2D8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802F167C 002ED2DC  7C 08 03 A6 */	mtlr r0
/* 802F1680 002ED2E0  38 21 00 10 */	addi r1, r1, 0x10
/* 802F1684 002ED2E4  4E 80 00 20 */	blr

.global MPiParseReceivedFrame
MPiParseReceivedFrame:
/* 802F1688 002ED2E8  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802F168C 002ED2EC  7C 08 02 A6 */	mflr r0
/* 802F1690 002ED2F0  90 01 00 34 */	stw r0, 0x34(r1)
/* 802F1694 002ED2F4  39 61 00 30 */	addi r11, r1, 0x30
/* 802F1698 002ED2F8  4B ED 5A 81 */	bl _savegpr_23
/* 802F169C 002ED2FC  2C 06 00 00 */	cmpwi r6, 0
/* 802F16A0 002ED300  7C 78 1B 78 */	mr r24, r3
/* 802F16A4 002ED304  41 82 01 64 */	beq lbl_802F1808
/* 802F16A8 002ED308  54 C0 07 FF */	clrlwi. r0, r6, 0x1f
/* 802F16AC 002ED30C  40 82 01 5C */	bne lbl_802F1808
/* 802F16B0 002ED310  81 02 AA 30 */	lwz r8, lbl_80643030-_SDA2_BASE_(r2)
/* 802F16B4 002ED314  54 60 08 3C */	slwi r0, r3, 1
/* 802F16B8 002ED318  38 E0 00 01 */	li r7, 1
/* 802F16BC 002ED31C  7C DD 33 78 */	mr r29, r6
/* 802F16C0 002ED320  80 68 57 60 */	lwz r3, 0x5760(r8)
/* 802F16C4 002ED324  7C BA 2B 78 */	mr r26, r5
/* 802F16C8 002ED328  7C 9C 23 78 */	mr r28, r4
/* 802F16CC 002ED32C  7F C8 02 14 */	add r30, r8, r0
/* 802F16D0 002ED330  7C F9 18 30 */	slw r25, r7, r3
/* 802F16D4 002ED334  3B 60 00 01 */	li r27, 1
/* 802F16D8 002ED338  3F E0 00 01 */	lis r31, 1
/* 802F16DC 002ED33C  3A E0 01 00 */	li r23, 0x100
/* 802F16E0 002ED340  48 00 01 20 */	b lbl_802F1800
lbl_802F16E4:
/* 802F16E4 002ED344  2C 1B 00 00 */	cmpwi r27, 0
/* 802F16E8 002ED348  40 82 00 1C */	bne lbl_802F1704
/* 802F16EC 002ED34C  A0 1A 00 00 */	lhz r0, 0(r26)
/* 802F16F0 002ED350  3B 5A 00 02 */	addi r26, r26, 2
/* 802F16F4 002ED354  3B BD FF FE */	addi r29, r29, -2
/* 802F16F8 002ED358  54 1C 44 2E */	rlwinm r28, r0, 8, 0x10, 0x17
/* 802F16FC 002ED35C  50 1C C6 3E */	rlwimi r28, r0, 0x18, 0x18, 0x1f
/* 802F1700 002ED360  48 00 00 08 */	b lbl_802F1708
lbl_802F1704:
/* 802F1704 002ED364  3B 60 00 00 */	li r27, 0
lbl_802F1708:
/* 802F1708 002ED368  57 86 0D FD */	rlwinm. r6, r28, 1, 0x17, 0x1e
/* 802F170C 002ED36C  40 82 00 08 */	bne lbl_802F1714
/* 802F1710 002ED370  38 C0 02 00 */	li r6, 0x200
lbl_802F1714:
/* 802F1714 002ED374  57 89 A7 FE */	rlwinm r9, r28, 0x14, 0x1f, 0x1f
/* 802F1718 002ED378  57 88 AF FE */	rlwinm r8, r28, 0x15, 0x1f, 0x1f
/* 802F171C 002ED37C  7C 09 00 D0 */	neg r0, r9
/* 802F1720 002ED380  57 83 C7 3E */	rlwinm r3, r28, 0x18, 0x1c, 0x1f
/* 802F1724 002ED384  7C 00 4B 78 */	or r0, r0, r9
/* 802F1728 002ED388  7C 88 00 D0 */	neg r4, r8
/* 802F172C 002ED38C  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 802F1730 002ED390  54 84 07 BC */	rlwinm r4, r4, 0, 0x1e, 0x1e
/* 802F1734 002ED394  54 00 07 BC */	rlwinm r0, r0, 0, 0x1e, 0x1e
/* 802F1738 002ED398  7C 00 22 14 */	add r0, r0, r4
/* 802F173C 002ED39C  7C 06 02 14 */	add r0, r6, r0
/* 802F1740 002ED3A0  7C 00 E8 40 */	cmplw r0, r29
/* 802F1744 002ED3A4  41 81 00 C4 */	bgt lbl_802F1808
/* 802F1748 002ED3A8  2C 08 00 00 */	cmpwi r8, 0
/* 802F174C 002ED3AC  7F 45 D3 78 */	mr r5, r26
/* 802F1750 002ED3B0  7F 5A 32 14 */	add r26, r26, r6
/* 802F1754 002ED3B4  7F A6 E8 50 */	subf r29, r6, r29
/* 802F1758 002ED3B8  41 82 00 1C */	beq lbl_802F1774
/* 802F175C 002ED3BC  A0 1A 00 00 */	lhz r0, 0(r26)
/* 802F1760 002ED3C0  3B 5A 00 02 */	addi r26, r26, 2
/* 802F1764 002ED3C4  3B BD FF FE */	addi r29, r29, -2
/* 802F1768 002ED3C8  54 07 44 2E */	rlwinm r7, r0, 8, 0x10, 0x17
/* 802F176C 002ED3CC  50 07 C6 3E */	rlwimi r7, r0, 0x18, 0x18, 0x1f
/* 802F1770 002ED3D0  48 00 00 08 */	b lbl_802F1778
lbl_802F1774:
/* 802F1774 002ED3D4  38 E0 00 00 */	li r7, 0
lbl_802F1778:
/* 802F1778 002ED3D8  2C 09 00 00 */	cmpwi r9, 0
/* 802F177C 002ED3DC  41 82 00 1C */	beq lbl_802F1798
/* 802F1780 002ED3E0  A0 1A 00 00 */	lhz r0, 0(r26)
/* 802F1784 002ED3E4  3B 5A 00 02 */	addi r26, r26, 2
/* 802F1788 002ED3E8  3B BD FF FE */	addi r29, r29, -2
/* 802F178C 002ED3EC  54 04 44 2E */	rlwinm r4, r0, 8, 0x10, 0x17
/* 802F1790 002ED3F0  50 04 C6 3E */	rlwimi r4, r0, 0x18, 0x18, 0x1f
/* 802F1794 002ED3F4  48 00 00 08 */	b lbl_802F179C
lbl_802F1798:
/* 802F1798 002ED3F8  38 9F FF FF */	addi r4, r31, -1
lbl_802F179C:
/* 802F179C 002ED3FC  7C 80 C8 39 */	and. r0, r4, r25
/* 802F17A0 002ED400  41 82 00 60 */	beq lbl_802F1800
/* 802F17A4 002ED404  2C 08 00 00 */	cmpwi r8, 0
/* 802F17A8 002ED408  41 82 00 50 */	beq lbl_802F17F8
/* 802F17AC 002ED40C  54 60 2E 34 */	rlwinm r0, r3, 5, 0x18, 0x1a
/* 802F17B0 002ED410  7D 1E 02 14 */	add r8, r30, r0
/* 802F17B4 002ED414  A0 88 57 D2 */	lhz r4, 0x57d2(r8)
/* 802F17B8 002ED418  54 80 07 FF */	clrlwi. r0, r4, 0x1f
/* 802F17BC 002ED41C  41 82 00 0C */	beq lbl_802F17C8
/* 802F17C0 002ED420  38 00 00 01 */	li r0, 1
/* 802F17C4 002ED424  48 00 00 24 */	b lbl_802F17E8
lbl_802F17C8:
/* 802F17C8 002ED428  54 E0 08 3C */	slwi r0, r7, 1
/* 802F17CC 002ED42C  7C 00 20 50 */	subf r0, r0, r4
/* 802F17D0 002ED430  54 04 04 3E */	clrlwi r4, r0, 0x10
/* 802F17D4 002ED434  38 04 FF 00 */	addi r0, r4, -256
/* 802F17D8 002ED438  7C 84 BB 38 */	orc r4, r4, r23
/* 802F17DC 002ED43C  54 00 F8 7E */	srwi r0, r0, 1
/* 802F17E0 002ED440  7C 00 20 50 */	subf r0, r0, r4
/* 802F17E4 002ED444  54 00 0F FE */	srwi r0, r0, 0x1f
lbl_802F17E8:
/* 802F17E8 002ED448  2C 00 00 00 */	cmpwi r0, 0
/* 802F17EC 002ED44C  41 82 00 14 */	beq lbl_802F1800
/* 802F17F0 002ED450  54 E0 0C 3C */	rlwinm r0, r7, 1, 0x10, 0x1e
/* 802F17F4 002ED454  B0 08 57 D2 */	sth r0, 0x57d2(r8)
lbl_802F17F8:
/* 802F17F8 002ED458  7F 04 C3 78 */	mr r4, r24
/* 802F17FC 002ED45C  48 00 1E 21 */	bl MPiNotifyDataReceivedToPort
lbl_802F1800:
/* 802F1800 002ED460  2C 1D 00 00 */	cmpwi r29, 0
/* 802F1804 002ED464  41 81 FE E0 */	bgt lbl_802F16E4
lbl_802F1808:
/* 802F1808 002ED468  39 61 00 30 */	addi r11, r1, 0x30
/* 802F180C 002ED46C  4B ED 59 59 */	bl _restgpr_23
/* 802F1810 002ED470  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802F1814 002ED474  7C 08 03 A6 */	mtlr r0
/* 802F1818 002ED478  38 21 00 30 */	addi r1, r1, 0x30
/* 802F181C 002ED47C  4E 80 00 20 */	blr

.global MPiProcessDataSentNotification
MPiProcessDataSentNotification:
/* 802F1820 002ED480  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F1824 002ED484  7C 08 02 A6 */	mflr r0
/* 802F1828 002ED488  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F182C 002ED48C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F1830 002ED490  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F1834 002ED494  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F1838 002ED498  93 81 00 10 */	stw r28, 0x10(r1)
/* 802F183C 002ED49C  7C 7C 1B 78 */	mr r28, r3
/* 802F1840 002ED4A0  48 00 05 59 */	bl MPGetConnectedAIDs
/* 802F1844 002ED4A4  80 82 AA 30 */	lwz r4, lbl_80643030-_SDA2_BASE_(r2)
/* 802F1848 002ED4A8  7C 7F E0 78 */	andc r31, r3, r28
/* 802F184C 002ED4AC  3B C4 6E 88 */	addi r30, r4, 0x6e88
/* 802F1850 002ED4B0  3B A4 6F 28 */	addi r29, r4, 0x6f28
/* 802F1854 002ED4B4  48 00 00 70 */	b lbl_802F18C4
lbl_802F1858:
/* 802F1858 002ED4B8  80 61 00 08 */	lwz r3, 8(r1)
/* 802F185C 002ED4BC  80 03 00 2C */	lwz r0, 0x2c(r3)
/* 802F1860 002ED4C0  7F E4 00 38 */	and r4, r31, r0
/* 802F1864 002ED4C4  90 83 00 2C */	stw r4, 0x2c(r3)
/* 802F1868 002ED4C8  83 81 00 08 */	lwz r28, 8(r1)
/* 802F186C 002ED4CC  80 1C 00 24 */	lwz r0, 0x24(r28)
/* 802F1870 002ED4D0  54 00 07 39 */	rlwinm. r0, r0, 0, 0x1c, 0x1c
/* 802F1874 002ED4D4  41 82 00 44 */	beq lbl_802F18B8
/* 802F1878 002ED4D8  2C 04 00 00 */	cmpwi r4, 0
/* 802F187C 002ED4DC  41 82 00 3C */	beq lbl_802F18B8
/* 802F1880 002ED4E0  48 00 05 19 */	bl MPGetConnectedAIDs
/* 802F1884 002ED4E4  80 1C 00 2C */	lwz r0, 0x2c(r28)
/* 802F1888 002ED4E8  7C 00 18 39 */	and. r0, r0, r3
/* 802F188C 002ED4EC  90 1C 00 2C */	stw r0, 0x2c(r28)
/* 802F1890 002ED4F0  41 82 00 18 */	beq lbl_802F18A8
/* 802F1894 002ED4F4  7F C3 F3 78 */	mr r3, r30
/* 802F1898 002ED4F8  7F 84 E3 78 */	mr r4, r28
/* 802F189C 002ED4FC  38 A0 00 00 */	li r5, 0
/* 802F18A0 002ED500  4B F7 D6 B9 */	bl OSSendMessage
/* 802F18A4 002ED504  48 00 00 20 */	b lbl_802F18C4
lbl_802F18A8:
/* 802F18A8 002ED508  7F 84 E3 78 */	mr r4, r28
/* 802F18AC 002ED50C  38 60 00 00 */	li r3, 0
/* 802F18B0 002ED510  48 00 1D 55 */	bl MPiNotifyDataSentToPort
/* 802F18B4 002ED514  48 00 00 10 */	b lbl_802F18C4
lbl_802F18B8:
/* 802F18B8 002ED518  7F 84 E3 78 */	mr r4, r28
/* 802F18BC 002ED51C  38 60 00 00 */	li r3, 0
/* 802F18C0 002ED520  48 00 1D 45 */	bl MPiNotifyDataSentToPort
lbl_802F18C4:
/* 802F18C4 002ED524  7F A3 EB 78 */	mr r3, r29
/* 802F18C8 002ED528  38 81 00 08 */	addi r4, r1, 8
/* 802F18CC 002ED52C  38 A0 00 00 */	li r5, 0
/* 802F18D0 002ED530  4B F7 D7 51 */	bl OSReceiveMessage
/* 802F18D4 002ED534  2C 03 00 01 */	cmpwi r3, 1
/* 802F18D8 002ED538  41 82 FF 80 */	beq lbl_802F1858
/* 802F18DC 002ED53C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F18E0 002ED540  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F18E4 002ED544  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F18E8 002ED548  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F18EC 002ED54C  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802F18F0 002ED550  7C 08 03 A6 */	mtlr r0
/* 802F18F4 002ED554  38 21 00 20 */	addi r1, r1, 0x20
/* 802F18F8 002ED558  4E 80 00 20 */	blr

.global MPiMakeSendFrame
MPiMakeSendFrame:
/* 802F18FC 002ED55C  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 802F1900 002ED560  7C 08 02 A6 */	mflr r0
/* 802F1904 002ED564  90 01 00 44 */	stw r0, 0x44(r1)
/* 802F1908 002ED568  39 61 00 40 */	addi r11, r1, 0x40
/* 802F190C 002ED56C  4B ED 58 01 */	bl _savegpr_20
/* 802F1910 002ED570  83 E2 AA 30 */	lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F1914 002ED574  7C 95 23 78 */	mr r21, r4
/* 802F1918 002ED578  7C B8 2B 78 */	mr r24, r5
/* 802F191C 002ED57C  7C 74 1B 78 */	mr r20, r3
/* 802F1920 002ED580  3A FF 6E 88 */	addi r23, r31, 0x6e88
/* 802F1924 002ED584  7C D6 33 78 */	mr r22, r6
/* 802F1928 002ED588  7E E3 BB 78 */	mr r3, r23
/* 802F192C 002ED58C  38 81 00 08 */	addi r4, r1, 8
/* 802F1930 002ED590  38 A0 00 00 */	li r5, 0
/* 802F1934 002ED594  4B F7 D6 ED */	bl OSReceiveMessage
/* 802F1938 002ED598  2C 03 00 00 */	cmpwi r3, 0
/* 802F193C 002ED59C  40 82 00 14 */	bne lbl_802F1950
/* 802F1940 002ED5A0  38 7F 6D E4 */	addi r3, r31, 0x6de4
/* 802F1944 002ED5A4  38 81 00 08 */	addi r4, r1, 8
/* 802F1948 002ED5A8  38 A0 00 00 */	li r5, 0
/* 802F194C 002ED5AC  4B F7 D6 D5 */	bl OSReceiveMessage
lbl_802F1950:
/* 802F1950 002ED5B0  2C 03 00 00 */	cmpwi r3, 0
/* 802F1954 002ED5B4  7C 7D 1B 78 */	mr r29, r3
/* 802F1958 002ED5B8  41 82 00 AC */	beq lbl_802F1A04
/* 802F195C 002ED5BC  83 C1 00 08 */	lwz r30, 8(r1)
/* 802F1960 002ED5C0  80 1E 00 2C */	lwz r0, 0x2c(r30)
/* 802F1964 002ED5C4  2C 00 00 00 */	cmpwi r0, 0
/* 802F1968 002ED5C8  40 82 00 18 */	bne lbl_802F1980
/* 802F196C 002ED5CC  7F C4 F3 78 */	mr r4, r30
/* 802F1970 002ED5D0  38 60 00 00 */	li r3, 0
/* 802F1974 002ED5D4  48 00 1C 91 */	bl MPiNotifyDataSentToPort
/* 802F1978 002ED5D8  3B A0 00 00 */	li r29, 0
/* 802F197C 002ED5DC  48 00 00 88 */	b lbl_802F1A04
lbl_802F1980:
/* 802F1980 002ED5E0  7C 00 C0 79 */	andc. r0, r0, r24
/* 802F1984 002ED5E4  40 82 00 48 */	bne lbl_802F19CC
/* 802F1988 002ED5E8  83 5E 00 28 */	lwz r26, 0x28(r30)
/* 802F198C 002ED5EC  3C 60 00 01 */	lis r3, 0x0000FFFE@ha
/* 802F1990 002ED5F0  38 03 FF FE */	addi r0, r3, 0x0000FFFE@l
/* 802F1994 002ED5F4  83 9E 00 1C */	lwz r28, 0x1c(r30)
/* 802F1998 002ED5F8  57 44 04 3C */	rlwinm r4, r26, 0, 0x10, 0x1e
/* 802F199C 002ED5FC  83 7E 00 20 */	lwz r27, 0x20(r30)
/* 802F19A0 002ED600  7C 64 00 50 */	subf r3, r4, r0
/* 802F19A4 002ED604  83 3E 00 24 */	lwz r25, 0x24(r30)
/* 802F19A8 002ED608  7C 00 20 50 */	subf r0, r0, r4
/* 802F19AC 002ED60C  83 1E 00 34 */	lwz r24, 0x34(r30)
/* 802F19B0 002ED610  7C 60 03 78 */	or r0, r3, r0
/* 802F19B4 002ED614  7F C4 F3 78 */	mr r4, r30
/* 802F19B8 002ED618  54 17 0F FE */	srwi r23, r0, 0x1f
/* 802F19BC 002ED61C  38 7F 6F 28 */	addi r3, r31, 0x6f28
/* 802F19C0 002ED620  38 A0 00 00 */	li r5, 0
/* 802F19C4 002ED624  4B F7 D5 95 */	bl OSSendMessage
/* 802F19C8 002ED628  48 00 00 3C */	b lbl_802F1A04
lbl_802F19CC:
/* 802F19CC 002ED62C  3B A0 00 00 */	li r29, 0
/* 802F19D0 002ED630  48 00 03 C9 */	bl MPGetConnectedAIDs
/* 802F19D4 002ED634  80 1E 00 2C */	lwz r0, 0x2c(r30)
/* 802F19D8 002ED638  7C 00 18 39 */	and. r0, r0, r3
/* 802F19DC 002ED63C  90 1E 00 2C */	stw r0, 0x2c(r30)
/* 802F19E0 002ED640  41 82 00 18 */	beq lbl_802F19F8
/* 802F19E4 002ED644  7E E3 BB 78 */	mr r3, r23
/* 802F19E8 002ED648  7F C4 F3 78 */	mr r4, r30
/* 802F19EC 002ED64C  38 A0 00 00 */	li r5, 0
/* 802F19F0 002ED650  4B F7 D5 69 */	bl OSSendMessage
/* 802F19F4 002ED654  48 00 00 10 */	b lbl_802F1A04
lbl_802F19F8:
/* 802F19F8 002ED658  7F C4 F3 78 */	mr r4, r30
/* 802F19FC 002ED65C  38 60 00 00 */	li r3, 0
/* 802F1A00 002ED660  48 00 1C 05 */	bl MPiNotifyDataSentToPort
lbl_802F1A04:
/* 802F1A04 002ED664  2C 1D 00 00 */	cmpwi r29, 0
/* 802F1A08 002ED668  40 82 00 20 */	bne lbl_802F1A28
/* 802F1A0C 002ED66C  3C 60 00 01 */	lis r3, 0x0000FFFF@ha
/* 802F1A10 002ED670  3B 80 00 00 */	li r28, 0
/* 802F1A14 002ED674  3B 43 FF FF */	addi r26, r3, 0x0000FFFF@l
/* 802F1A18 002ED678  3B 60 00 00 */	li r27, 0
/* 802F1A1C 002ED67C  3B 20 00 00 */	li r25, 0
/* 802F1A20 002ED680  3B 00 00 00 */	li r24, 0
/* 802F1A24 002ED684  3A E0 00 00 */	li r23, 0
lbl_802F1A28:
/* 802F1A28 002ED688  7C 17 00 D0 */	neg r0, r23
/* 802F1A2C 002ED68C  57 3F EF FE */	rlwinm r31, r25, 0x1d, 0x1f, 0x1f
/* 802F1A30 002ED690  7C 04 BB 78 */	or r4, r0, r23
/* 802F1A34 002ED694  7C 1F 00 D0 */	neg r0, r31
/* 802F1A38 002ED698  7C 83 FE 70 */	srawi r3, r4, 0x1f
/* 802F1A3C 002ED69C  7C 00 FB 78 */	or r0, r0, r31
/* 802F1A40 002ED6A0  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 802F1A44 002ED6A4  54 63 07 BC */	rlwinm r3, r3, 0, 0x1e, 0x1e
/* 802F1A48 002ED6A8  54 00 07 BC */	rlwinm r0, r0, 0, 0x1e, 0x1e
/* 802F1A4C 002ED6AC  7C 1B 02 14 */	add r0, r27, r0
/* 802F1A50 002ED6B0  7C 60 1A 14 */	add r3, r0, r3
/* 802F1A54 002ED6B4  3B A3 00 02 */	addi r29, r3, 2
/* 802F1A58 002ED6B8  7C 1D A8 40 */	cmplw r29, r21
/* 802F1A5C 002ED6BC  40 81 00 0C */	ble lbl_802F1A68
/* 802F1A60 002ED6C0  38 60 FF 01 */	li r3, -255
/* 802F1A64 002ED6C4  48 00 00 90 */	b lbl_802F1AF4
lbl_802F1A68:
/* 802F1A68 002ED6C8  38 DB 00 01 */	addi r6, r27, 1
/* 802F1A6C 002ED6CC  7C 85 FE 70 */	srawi r5, r4, 0x1f
/* 802F1A70 002ED6D0  54 DE FE 3E */	rlwinm r30, r6, 0x1f, 0x18, 0x1f
/* 802F1A74 002ED6D4  7C 84 FE 70 */	srawi r4, r4, 0x1f
/* 802F1A78 002ED6D8  57 20 45 2E */	rlwinm r0, r25, 8, 0x14, 0x17
/* 802F1A7C 002ED6DC  2C 1C 00 00 */	cmpwi r28, 0
/* 802F1A80 002ED6E0  7F C3 F3 78 */	mr r3, r30
/* 802F1A84 002ED6E4  53 23 45 2E */	rlwimi r3, r25, 8, 0x14, 0x17
/* 802F1A88 002ED6E8  50 C0 FE 3E */	rlwimi r0, r6, 0x1f, 0x18, 0x1f
/* 802F1A8C 002ED6EC  50 A0 04 E6 */	rlwimi r0, r5, 0, 0x13, 0x13
/* 802F1A90 002ED6F0  50 83 04 E6 */	rlwimi r3, r4, 0, 0x13, 0x13
/* 802F1A94 002ED6F4  54 00 44 2E */	rlwinm r0, r0, 8, 0x10, 0x17
/* 802F1A98 002ED6F8  50 60 C6 FE */	rlwimi r0, r3, 0x18, 0x1b, 0x1f
/* 802F1A9C 002ED6FC  7C 00 A7 2C */	sthbrx r0, 0, r20
/* 802F1AA0 002ED700  41 82 00 14 */	beq lbl_802F1AB4
/* 802F1AA4 002ED704  7F 84 E3 78 */	mr r4, r28
/* 802F1AA8 002ED708  7F 65 DB 78 */	mr r5, r27
/* 802F1AAC 002ED70C  38 74 00 02 */	addi r3, r20, 2
/* 802F1AB0 002ED710  4B D1 25 51 */	bl memcpy
lbl_802F1AB4:
/* 802F1AB4 002ED714  2C 1F 00 00 */	cmpwi r31, 0
/* 802F1AB8 002ED718  38 7E 00 01 */	addi r3, r30, 1
/* 802F1ABC 002ED71C  41 82 00 10 */	beq lbl_802F1ACC
/* 802F1AC0 002ED720  54 60 08 3C */	slwi r0, r3, 1
/* 802F1AC4 002ED724  38 63 00 01 */	addi r3, r3, 1
/* 802F1AC8 002ED728  7F 14 07 2C */	sthbrx r24, r20, r0
lbl_802F1ACC:
/* 802F1ACC 002ED72C  2C 17 00 00 */	cmpwi r23, 0
/* 802F1AD0 002ED730  41 82 00 0C */	beq lbl_802F1ADC
/* 802F1AD4 002ED734  54 60 08 3C */	slwi r0, r3, 1
/* 802F1AD8 002ED738  7F 54 07 2C */	sthbrx r26, r20, r0
lbl_802F1ADC:
/* 802F1ADC 002ED73C  2C 16 00 00 */	cmpwi r22, 0
/* 802F1AE0 002ED740  41 82 00 10 */	beq lbl_802F1AF0
/* 802F1AE4 002ED744  A0 14 00 00 */	lhz r0, 0(r20)
/* 802F1AE8 002ED748  60 00 80 00 */	ori r0, r0, 0x8000
/* 802F1AEC 002ED74C  B0 14 00 00 */	sth r0, 0(r20)
lbl_802F1AF0:
/* 802F1AF0 002ED750  7F A3 EB 78 */	mr r3, r29
lbl_802F1AF4:
/* 802F1AF4 002ED754  39 61 00 40 */	addi r11, r1, 0x40
/* 802F1AF8 002ED758  4B ED 56 61 */	bl _restgpr_20
/* 802F1AFC 002ED75C  80 01 00 44 */	lwz r0, 0x44(r1)
/* 802F1B00 002ED760  7C 08 03 A6 */	mtlr r0
/* 802F1B04 002ED764  38 21 00 40 */	addi r1, r1, 0x40
/* 802F1B08 002ED768  4E 80 00 20 */	blr

.global MPiClearSendQueue
MPiClearSendQueue:
/* 802F1B0C 002ED76C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F1B10 002ED770  7C 08 02 A6 */	mflr r0
/* 802F1B14 002ED774  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F1B18 002ED778  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F1B1C 002ED77C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F1B20 002ED780  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F1B24 002ED784  93 81 00 10 */	stw r28, 0x10(r1)
/* 802F1B28 002ED788  7C 7C 1B 78 */	mr r28, r3
/* 802F1B2C 002ED78C  48 00 02 6D */	bl MPGetConnectedAIDs
/* 802F1B30 002ED790  80 82 AA 30 */	lwz r4, lbl_80643030-_SDA2_BASE_(r2)
/* 802F1B34 002ED794  7C 7F 1B 78 */	mr r31, r3
/* 802F1B38 002ED798  3B C4 6E 88 */	addi r30, r4, 0x6e88
/* 802F1B3C 002ED79C  3B A4 6D E4 */	addi r29, r4, 0x6de4
/* 802F1B40 002ED7A0  48 00 00 28 */	b lbl_802F1B68
lbl_802F1B44:
/* 802F1B44 002ED7A4  80 81 00 08 */	lwz r4, 8(r1)
/* 802F1B48 002ED7A8  38 60 00 00 */	li r3, 0
/* 802F1B4C 002ED7AC  80 04 00 2C */	lwz r0, 0x2c(r4)
/* 802F1B50 002ED7B0  7C 00 F8 38 */	and r0, r0, r31
/* 802F1B54 002ED7B4  90 04 00 2C */	stw r0, 0x2c(r4)
/* 802F1B58 002ED7B8  80 81 00 08 */	lwz r4, 8(r1)
/* 802F1B5C 002ED7BC  48 00 1A A9 */	bl MPiNotifyDataSentToPort
/* 802F1B60 002ED7C0  37 9C FF FF */	addic. r28, r28, -1
/* 802F1B64 002ED7C4  40 81 00 34 */	ble lbl_802F1B98
lbl_802F1B68:
/* 802F1B68 002ED7C8  7F C3 F3 78 */	mr r3, r30
/* 802F1B6C 002ED7CC  38 81 00 08 */	addi r4, r1, 8
/* 802F1B70 002ED7D0  38 A0 00 00 */	li r5, 0
/* 802F1B74 002ED7D4  4B F7 D4 AD */	bl OSReceiveMessage
/* 802F1B78 002ED7D8  2C 03 00 00 */	cmpwi r3, 0
/* 802F1B7C 002ED7DC  40 82 00 14 */	bne lbl_802F1B90
/* 802F1B80 002ED7E0  7F A3 EB 78 */	mr r3, r29
/* 802F1B84 002ED7E4  38 81 00 08 */	addi r4, r1, 8
/* 802F1B88 002ED7E8  38 A0 00 00 */	li r5, 0
/* 802F1B8C 002ED7EC  4B F7 D4 95 */	bl OSReceiveMessage
lbl_802F1B90:
/* 802F1B90 002ED7F0  2C 03 00 00 */	cmpwi r3, 0
/* 802F1B94 002ED7F4  40 82 FF B0 */	bne lbl_802F1B44
lbl_802F1B98:
/* 802F1B98 002ED7F8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F1B9C 002ED7FC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F1BA0 002ED800  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F1BA4 002ED804  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F1BA8 002ED808  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802F1BAC 002ED80C  7C 08 03 A6 */	mtlr r0
/* 802F1BB0 002ED810  38 21 00 20 */	addi r1, r1, 0x20
/* 802F1BB4 002ED814  4E 80 00 20 */	blr