summaryrefslogtreecommitdiff
path: root/asm/SDK/MP/mpport.s
blob: a47435e854859031e4fbd6d18d43e4a9619079fc (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
.include "macros.inc"

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

.global MPiStartupPort
MPiStartupPort:
/* 802F3320 002EEF80  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802F3324 002EEF84  7C 08 02 A6 */	mflr r0
/* 802F3328 002EEF88  90 01 00 14 */	stw r0, 0x14(r1)
/* 802F332C 002EEF8C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802F3330 002EEF90  83 E2 AA 30 */	lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3334 002EEF94  38 7F 72 E0 */	addi r3, r31, 0x72e0
/* 802F3338 002EEF98  4B F7 C5 D9 */	bl OSInitMutex
/* 802F333C 002EEF9C  38 7F 58 D2 */	addi r3, r31, 0x58d2
/* 802F3340 002EEFA0  38 80 00 00 */	li r4, 0
/* 802F3344 002EEFA4  38 A0 00 10 */	li r5, 0x10
/* 802F3348 002EEFA8  4B D1 0D BD */	bl memset
/* 802F334C 002EEFAC  38 7F 57 D2 */	addi r3, r31, 0x57d2
/* 802F3350 002EEFB0  38 80 00 00 */	li r4, 0
/* 802F3354 002EEFB4  38 A0 01 00 */	li r5, 0x100
/* 802F3358 002EEFB8  4B D1 0D AD */	bl memset
/* 802F335C 002EEFBC  38 00 00 04 */	li r0, 4
/* 802F3360 002EEFC0  38 80 00 00 */	li r4, 0
/* 802F3364 002EEFC4  38 60 00 01 */	li r3, 1
/* 802F3368 002EEFC8  7C 09 03 A6 */	mtctr r0
lbl_802F336C:
/* 802F336C 002EEFCC  7C BF 22 14 */	add r5, r31, r4
/* 802F3370 002EEFD0  38 84 00 02 */	addi r4, r4, 2
/* 802F3374 002EEFD4  B0 65 57 D2 */	sth r3, 0x57d2(r5)
/* 802F3378 002EEFD8  B0 65 57 F2 */	sth r3, 0x57f2(r5)
/* 802F337C 002EEFDC  B0 65 58 12 */	sth r3, 0x5812(r5)
/* 802F3380 002EEFE0  B0 65 58 32 */	sth r3, 0x5832(r5)
/* 802F3384 002EEFE4  B0 65 58 52 */	sth r3, 0x5852(r5)
/* 802F3388 002EEFE8  B0 65 58 72 */	sth r3, 0x5872(r5)
/* 802F338C 002EEFEC  B0 65 58 92 */	sth r3, 0x5892(r5)
/* 802F3390 002EEFF0  B0 65 58 B2 */	sth r3, 0x58b2(r5)
/* 802F3394 002EEFF4  7C BF 22 14 */	add r5, r31, r4
/* 802F3398 002EEFF8  38 84 00 02 */	addi r4, r4, 2
/* 802F339C 002EEFFC  B0 65 57 D2 */	sth r3, 0x57d2(r5)
/* 802F33A0 002EF000  B0 65 57 F2 */	sth r3, 0x57f2(r5)
/* 802F33A4 002EF004  B0 65 58 12 */	sth r3, 0x5812(r5)
/* 802F33A8 002EF008  B0 65 58 32 */	sth r3, 0x5832(r5)
/* 802F33AC 002EF00C  B0 65 58 52 */	sth r3, 0x5852(r5)
/* 802F33B0 002EF010  B0 65 58 72 */	sth r3, 0x5872(r5)
/* 802F33B4 002EF014  B0 65 58 92 */	sth r3, 0x5892(r5)
/* 802F33B8 002EF018  B0 65 58 B2 */	sth r3, 0x58b2(r5)
/* 802F33BC 002EF01C  7C BF 22 14 */	add r5, r31, r4
/* 802F33C0 002EF020  38 84 00 02 */	addi r4, r4, 2
/* 802F33C4 002EF024  B0 65 57 D2 */	sth r3, 0x57d2(r5)
/* 802F33C8 002EF028  B0 65 57 F2 */	sth r3, 0x57f2(r5)
/* 802F33CC 002EF02C  B0 65 58 12 */	sth r3, 0x5812(r5)
/* 802F33D0 002EF030  B0 65 58 32 */	sth r3, 0x5832(r5)
/* 802F33D4 002EF034  B0 65 58 52 */	sth r3, 0x5852(r5)
/* 802F33D8 002EF038  B0 65 58 72 */	sth r3, 0x5872(r5)
/* 802F33DC 002EF03C  B0 65 58 92 */	sth r3, 0x5892(r5)
/* 802F33E0 002EF040  B0 65 58 B2 */	sth r3, 0x58b2(r5)
/* 802F33E4 002EF044  7C BF 22 14 */	add r5, r31, r4
/* 802F33E8 002EF048  38 84 00 02 */	addi r4, r4, 2
/* 802F33EC 002EF04C  B0 65 57 D2 */	sth r3, 0x57d2(r5)
/* 802F33F0 002EF050  B0 65 57 F2 */	sth r3, 0x57f2(r5)
/* 802F33F4 002EF054  B0 65 58 12 */	sth r3, 0x5812(r5)
/* 802F33F8 002EF058  B0 65 58 32 */	sth r3, 0x5832(r5)
/* 802F33FC 002EF05C  B0 65 58 52 */	sth r3, 0x5852(r5)
/* 802F3400 002EF060  B0 65 58 72 */	sth r3, 0x5872(r5)
/* 802F3404 002EF064  B0 65 58 92 */	sth r3, 0x5892(r5)
/* 802F3408 002EF068  B0 65 58 B2 */	sth r3, 0x58b2(r5)
/* 802F340C 002EF06C  42 00 FF 60 */	bdnz lbl_802F336C
/* 802F3410 002EF070  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802F3414 002EF074  38 60 00 00 */	li r3, 0
/* 802F3418 002EF078  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802F341C 002EF07C  7C 08 03 A6 */	mtlr r0
/* 802F3420 002EF080  38 21 00 10 */	addi r1, r1, 0x10
/* 802F3424 002EF084  4E 80 00 20 */	blr

.global MPiStartupPortLater
MPiStartupPortLater:
/* 802F3428 002EF088  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F342C 002EF08C  7C 08 02 A6 */	mflr r0
/* 802F3430 002EF090  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F3434 002EF094  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F3438 002EF098  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F343C 002EF09C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F3440 002EF0A0  83 A2 AA 30 */	lwz r29, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3444 002EF0A4  93 81 00 10 */	stw r28, 0x10(r1)
/* 802F3448 002EF0A8  3B DD 72 E0 */	addi r30, r29, 0x72e0
/* 802F344C 002EF0AC  7F C3 F3 78 */	mr r3, r30
/* 802F3450 002EF0B0  4B F7 C4 F9 */	bl OSLockMutex
/* 802F3454 002EF0B4  3B 9D 72 F8 */	addi r28, r29, 0x72f8
/* 802F3458 002EF0B8  38 80 00 00 */	li r4, 0
/* 802F345C 002EF0BC  7F 83 E3 78 */	mr r3, r28
/* 802F3460 002EF0C0  38 A0 00 40 */	li r5, 0x40
/* 802F3464 002EF0C4  4B D1 0C A1 */	bl memset
/* 802F3468 002EF0C8  2C 1C 00 00 */	cmpwi r28, 0
/* 802F346C 002EF0CC  41 82 00 58 */	beq lbl_802F34C4
/* 802F3470 002EF0D0  38 60 00 00 */	li r3, 0
/* 802F3474 002EF0D4  38 00 00 01 */	li r0, 1
/* 802F3478 002EF0D8  90 7C 00 00 */	stw r3, 0(r28)
/* 802F347C 002EF0DC  3B E0 00 00 */	li r31, 0
/* 802F3480 002EF0E0  90 1C 00 04 */	stw r0, 4(r28)
lbl_802F3484:
/* 802F3484 002EF0E4  93 FC 00 08 */	stw r31, 8(r28)
/* 802F3488 002EF0E8  81 9D 00 B4 */	lwz r12, 0xb4(r29)
/* 802F348C 002EF0EC  2C 0C 00 00 */	cmpwi r12, 0
/* 802F3490 002EF0F0  41 82 00 14 */	beq lbl_802F34A4
/* 802F3494 002EF0F4  7F 84 E3 78 */	mr r4, r28
/* 802F3498 002EF0F8  38 60 00 01 */	li r3, 1
/* 802F349C 002EF0FC  7D 89 03 A6 */	mtctr r12
/* 802F34A0 002EF100  4E 80 04 21 */	bctrl
lbl_802F34A4:
/* 802F34A4 002EF104  3B FF 00 01 */	addi r31, r31, 1
/* 802F34A8 002EF108  3B BD 00 08 */	addi r29, r29, 8
/* 802F34AC 002EF10C  28 1F 00 10 */	cmplwi r31, 0x10
/* 802F34B0 002EF110  41 80 FF D4 */	blt lbl_802F3484
/* 802F34B4 002EF114  7F C3 F3 78 */	mr r3, r30
/* 802F34B8 002EF118  3B A0 00 00 */	li r29, 0
/* 802F34BC 002EF11C  4B F7 C5 69 */	bl OSUnlockMutex
/* 802F34C0 002EF120  48 00 00 08 */	b lbl_802F34C8
lbl_802F34C4:
/* 802F34C4 002EF124  3B A0 FF FF */	li r29, -1
lbl_802F34C8:
/* 802F34C8 002EF128  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F34CC 002EF12C  7F A3 EB 78 */	mr r3, r29
/* 802F34D0 002EF130  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F34D4 002EF134  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F34D8 002EF138  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802F34DC 002EF13C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F34E0 002EF140  7C 08 03 A6 */	mtlr r0
/* 802F34E4 002EF144  38 21 00 20 */	addi r1, r1, 0x20
/* 802F34E8 002EF148  4E 80 00 20 */	blr

.global MPiCleanupPort
MPiCleanupPort:
/* 802F34EC 002EF14C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F34F0 002EF150  7C 08 02 A6 */	mflr r0
/* 802F34F4 002EF154  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F34F8 002EF158  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F34FC 002EF15C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F3500 002EF160  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F3504 002EF164  83 A2 AA 30 */	lwz r29, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3508 002EF168  93 81 00 10 */	stw r28, 0x10(r1)
/* 802F350C 002EF16C  2C 1D 00 00 */	cmpwi r29, 0
/* 802F3510 002EF170  41 82 00 9C */	beq lbl_802F35AC
/* 802F3514 002EF174  3B DD 72 E0 */	addi r30, r29, 0x72e0
/* 802F3518 002EF178  7F C3 F3 78 */	mr r3, r30
/* 802F351C 002EF17C  4B F7 C4 2D */	bl OSLockMutex
/* 802F3520 002EF180  3B 9D 72 F8 */	addi r28, r29, 0x72f8
/* 802F3524 002EF184  38 80 00 00 */	li r4, 0
/* 802F3528 002EF188  7F 83 E3 78 */	mr r3, r28
/* 802F352C 002EF18C  38 A0 00 40 */	li r5, 0x40
/* 802F3530 002EF190  4B D1 0B D5 */	bl memset
/* 802F3534 002EF194  2C 1C 00 00 */	cmpwi r28, 0
/* 802F3538 002EF198  41 82 00 50 */	beq lbl_802F3588
/* 802F353C 002EF19C  38 60 00 00 */	li r3, 0
/* 802F3540 002EF1A0  38 00 00 02 */	li r0, 2
/* 802F3544 002EF1A4  90 7C 00 00 */	stw r3, 0(r28)
/* 802F3548 002EF1A8  3B E0 00 00 */	li r31, 0
/* 802F354C 002EF1AC  90 1C 00 04 */	stw r0, 4(r28)
lbl_802F3550:
/* 802F3550 002EF1B0  93 FC 00 08 */	stw r31, 8(r28)
/* 802F3554 002EF1B4  81 9D 00 B4 */	lwz r12, 0xb4(r29)
/* 802F3558 002EF1B8  2C 0C 00 00 */	cmpwi r12, 0
/* 802F355C 002EF1BC  41 82 00 14 */	beq lbl_802F3570
/* 802F3560 002EF1C0  7F 84 E3 78 */	mr r4, r28
/* 802F3564 002EF1C4  38 60 00 02 */	li r3, 2
/* 802F3568 002EF1C8  7D 89 03 A6 */	mtctr r12
/* 802F356C 002EF1CC  4E 80 04 21 */	bctrl
lbl_802F3570:
/* 802F3570 002EF1D0  3B FF 00 01 */	addi r31, r31, 1
/* 802F3574 002EF1D4  3B BD 00 08 */	addi r29, r29, 8
/* 802F3578 002EF1D8  28 1F 00 10 */	cmplwi r31, 0x10
/* 802F357C 002EF1DC  41 80 FF D4 */	blt lbl_802F3550
/* 802F3580 002EF1E0  7F C3 F3 78 */	mr r3, r30
/* 802F3584 002EF1E4  4B F7 C4 A1 */	bl OSUnlockMutex
lbl_802F3588:
/* 802F3588 002EF1E8  83 A2 AA 30 */	lwz r29, lbl_80643030-_SDA2_BASE_(r2)
/* 802F358C 002EF1EC  38 80 00 00 */	li r4, 0
/* 802F3590 002EF1F0  38 A0 00 10 */	li r5, 0x10
/* 802F3594 002EF1F4  38 7D 58 D2 */	addi r3, r29, 0x58d2
/* 802F3598 002EF1F8  4B D1 0B 6D */	bl memset
/* 802F359C 002EF1FC  38 7D 57 D2 */	addi r3, r29, 0x57d2
/* 802F35A0 002EF200  38 80 00 00 */	li r4, 0
/* 802F35A4 002EF204  38 A0 01 00 */	li r5, 0x100
/* 802F35A8 002EF208  4B D1 0B 5D */	bl memset
lbl_802F35AC:
/* 802F35AC 002EF20C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F35B0 002EF210  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F35B4 002EF214  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F35B8 002EF218  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F35BC 002EF21C  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802F35C0 002EF220  7C 08 03 A6 */	mtlr r0
/* 802F35C4 002EF224  38 21 00 20 */	addi r1, r1, 0x20
/* 802F35C8 002EF228  4E 80 00 20 */	blr

.global MPiResetPortByAid
MPiResetPortByAid:
/* 802F35CC 002EF22C  80 82 AA 30 */	lwz r4, lbl_80643030-_SDA2_BASE_(r2)
/* 802F35D0 002EF230  54 63 08 3C */	slwi r3, r3, 1
/* 802F35D4 002EF234  38 00 00 01 */	li r0, 1
/* 802F35D8 002EF238  38 84 57 D2 */	addi r4, r4, 0x57d2
/* 802F35DC 002EF23C  7C 04 1B 2E */	sthx r0, r4, r3
/* 802F35E0 002EF240  7C 64 1A 14 */	add r3, r4, r3
/* 802F35E4 002EF244  B0 03 00 20 */	sth r0, 0x20(r3)
/* 802F35E8 002EF248  B0 03 00 40 */	sth r0, 0x40(r3)
/* 802F35EC 002EF24C  B0 03 00 60 */	sth r0, 0x60(r3)
/* 802F35F0 002EF250  B0 03 00 80 */	sth r0, 0x80(r3)
/* 802F35F4 002EF254  B0 03 00 A0 */	sth r0, 0xa0(r3)
/* 802F35F8 002EF258  B0 03 00 C0 */	sth r0, 0xc0(r3)
/* 802F35FC 002EF25C  B0 03 00 E0 */	sth r0, 0xe0(r3)
/* 802F3600 002EF260  4E 80 00 20 */	blr

.global MPiNotifyDataSentToPort
MPiNotifyDataSentToPort:
/* 802F3604 002EF264  80 A4 00 30 */	lwz r5, 0x30(r4)
/* 802F3608 002EF268  2C 05 00 00 */	cmpwi r5, 0
/* 802F360C 002EF26C  41 82 00 0C */	beq lbl_802F3618
/* 802F3610 002EF270  80 04 00 2C */	lwz r0, 0x2c(r4)
/* 802F3614 002EF274  90 05 00 00 */	stw r0, 0(r5)
lbl_802F3618:
/* 802F3618 002EF278  4B FF D4 D8 */	b MPiRespondToWaitingRequest

.global MPiNotifyDataReceivedToPort
MPiNotifyDataReceivedToPort:
/* 802F361C 002EF27C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802F3620 002EF280  7C 08 02 A6 */	mflr r0
/* 802F3624 002EF284  90 01 00 34 */	stw r0, 0x34(r1)
/* 802F3628 002EF288  39 61 00 30 */	addi r11, r1, 0x30
/* 802F362C 002EF28C  4B ED 3A F1 */	bl _savegpr_24
/* 802F3630 002EF290  2C 06 00 00 */	cmpwi r6, 0
/* 802F3634 002EF294  7C 78 1B 78 */	mr r24, r3
/* 802F3638 002EF298  7C 99 23 78 */	mr r25, r4
/* 802F363C 002EF29C  7C BA 2B 78 */	mr r26, r5
/* 802F3640 002EF2A0  7C DB 33 78 */	mr r27, r6
/* 802F3644 002EF2A4  7C FC 3B 78 */	mr r28, r7
/* 802F3648 002EF2A8  41 82 00 9C */	beq lbl_802F36E4
/* 802F364C 002EF2AC  28 03 00 10 */	cmplwi r3, 0x10
/* 802F3650 002EF2B0  40 80 00 94 */	bge lbl_802F36E4
/* 802F3654 002EF2B4  28 06 02 04 */	cmplwi r6, 0x204
/* 802F3658 002EF2B8  40 80 00 8C */	bge lbl_802F36E4
/* 802F365C 002EF2BC  83 A2 AA 30 */	lwz r29, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3660 002EF2C0  3B DD 72 E0 */	addi r30, r29, 0x72e0
/* 802F3664 002EF2C4  7F C3 F3 78 */	mr r3, r30
/* 802F3668 002EF2C8  4B F7 C2 E1 */	bl OSLockMutex
/* 802F366C 002EF2CC  3B FD 72 F8 */	addi r31, r29, 0x72f8
/* 802F3670 002EF2D0  38 80 00 00 */	li r4, 0
/* 802F3674 002EF2D4  7F E3 FB 78 */	mr r3, r31
/* 802F3678 002EF2D8  38 A0 00 40 */	li r5, 0x40
/* 802F367C 002EF2DC  4B D1 0A 89 */	bl memset
/* 802F3680 002EF2E0  2C 1F 00 00 */	cmpwi r31, 0
/* 802F3684 002EF2E4  41 82 00 60 */	beq lbl_802F36E4
/* 802F3688 002EF2E8  38 00 00 00 */	li r0, 0
/* 802F368C 002EF2EC  28 18 00 10 */	cmplwi r24, 0x10
/* 802F3690 002EF2F0  90 1F 00 00 */	stw r0, 0(r31)
/* 802F3694 002EF2F4  93 3F 00 10 */	stw r25, 0x10(r31)
/* 802F3698 002EF2F8  93 5F 00 14 */	stw r26, 0x14(r31)
/* 802F369C 002EF2FC  93 7F 00 18 */	stw r27, 0x18(r31)
/* 802F36A0 002EF300  93 9F 00 1C */	stw r28, 0x1c(r31)
/* 802F36A4 002EF304  40 80 00 38 */	bge lbl_802F36DC
/* 802F36A8 002EF308  90 1F 00 00 */	stw r0, 0(r31)
/* 802F36AC 002EF30C  57 00 18 38 */	slwi r0, r24, 3
/* 802F36B0 002EF310  38 80 00 03 */	li r4, 3
/* 802F36B4 002EF314  93 1F 00 08 */	stw r24, 8(r31)
/* 802F36B8 002EF318  7C 7D 02 14 */	add r3, r29, r0
/* 802F36BC 002EF31C  90 9F 00 04 */	stw r4, 4(r31)
/* 802F36C0 002EF320  81 83 00 B4 */	lwz r12, 0xb4(r3)
/* 802F36C4 002EF324  2C 0C 00 00 */	cmpwi r12, 0
/* 802F36C8 002EF328  41 82 00 14 */	beq lbl_802F36DC
/* 802F36CC 002EF32C  7F E4 FB 78 */	mr r4, r31
/* 802F36D0 002EF330  38 60 00 03 */	li r3, 3
/* 802F36D4 002EF334  7D 89 03 A6 */	mtctr r12
/* 802F36D8 002EF338  4E 80 04 21 */	bctrl
lbl_802F36DC:
/* 802F36DC 002EF33C  7F C3 F3 78 */	mr r3, r30
/* 802F36E0 002EF340  4B F7 C3 45 */	bl OSUnlockMutex
lbl_802F36E4:
/* 802F36E4 002EF344  39 61 00 30 */	addi r11, r1, 0x30
/* 802F36E8 002EF348  4B ED 3A 81 */	bl _restgpr_24
/* 802F36EC 002EF34C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802F36F0 002EF350  7C 08 03 A6 */	mtlr r0
/* 802F36F4 002EF354  38 21 00 30 */	addi r1, r1, 0x30
/* 802F36F8 002EF358  4E 80 00 20 */	blr

.global MPiNotifyConnectedToPort
MPiNotifyConnectedToPort:
/* 802F36FC 002EF35C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802F3700 002EF360  7C 08 02 A6 */	mflr r0
/* 802F3704 002EF364  90 01 00 34 */	stw r0, 0x34(r1)
/* 802F3708 002EF368  39 61 00 30 */	addi r11, r1, 0x30
/* 802F370C 002EF36C  4B ED 3A 11 */	bl _savegpr_24
/* 802F3710 002EF370  83 A2 AA 30 */	lwz r29, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3714 002EF374  7C 78 1B 78 */	mr r24, r3
/* 802F3718 002EF378  7C 99 23 78 */	mr r25, r4
/* 802F371C 002EF37C  7C BA 2B 78 */	mr r26, r5
/* 802F3720 002EF380  3B DD 72 E0 */	addi r30, r29, 0x72e0
/* 802F3724 002EF384  7C DB 33 78 */	mr r27, r6
/* 802F3728 002EF388  7F C3 F3 78 */	mr r3, r30
/* 802F372C 002EF38C  4B F7 C2 1D */	bl OSLockMutex
/* 802F3730 002EF390  3B 9D 72 F8 */	addi r28, r29, 0x72f8
/* 802F3734 002EF394  38 80 00 00 */	li r4, 0
/* 802F3738 002EF398  7F 83 E3 78 */	mr r3, r28
/* 802F373C 002EF39C  38 A0 00 40 */	li r5, 0x40
/* 802F3740 002EF3A0  4B D1 09 C5 */	bl memset
/* 802F3744 002EF3A4  2C 1C 00 00 */	cmpwi r28, 0
/* 802F3748 002EF3A8  41 82 00 7C */	beq lbl_802F37C4
/* 802F374C 002EF3AC  3B E0 00 00 */	li r31, 0
/* 802F3750 002EF3B0  7F 24 CB 78 */	mr r4, r25
/* 802F3754 002EF3B4  93 FC 00 00 */	stw r31, 0(r28)
/* 802F3758 002EF3B8  38 7C 00 18 */	addi r3, r28, 0x18
/* 802F375C 002EF3BC  38 A0 00 06 */	li r5, 6
/* 802F3760 002EF3C0  93 1C 00 10 */	stw r24, 0x10(r28)
/* 802F3764 002EF3C4  93 7C 00 14 */	stw r27, 0x14(r28)
/* 802F3768 002EF3C8  4B D1 08 99 */	bl memcpy
/* 802F376C 002EF3CC  7F 44 D3 78 */	mr r4, r26
/* 802F3770 002EF3D0  38 7C 00 1E */	addi r3, r28, 0x1e
/* 802F3774 002EF3D4  38 A0 00 20 */	li r5, 0x20
/* 802F3778 002EF3D8  4B D1 08 89 */	bl memcpy
/* 802F377C 002EF3DC  93 FC 00 00 */	stw r31, 0(r28)
/* 802F3780 002EF3E0  38 00 00 04 */	li r0, 4
/* 802F3784 002EF3E4  3B E0 00 00 */	li r31, 0
/* 802F3788 002EF3E8  90 1C 00 04 */	stw r0, 4(r28)
lbl_802F378C:
/* 802F378C 002EF3EC  93 FC 00 08 */	stw r31, 8(r28)
/* 802F3790 002EF3F0  81 9D 00 B4 */	lwz r12, 0xb4(r29)
/* 802F3794 002EF3F4  2C 0C 00 00 */	cmpwi r12, 0
/* 802F3798 002EF3F8  41 82 00 14 */	beq lbl_802F37AC
/* 802F379C 002EF3FC  7F 84 E3 78 */	mr r4, r28
/* 802F37A0 002EF400  38 60 00 04 */	li r3, 4
/* 802F37A4 002EF404  7D 89 03 A6 */	mtctr r12
/* 802F37A8 002EF408  4E 80 04 21 */	bctrl
lbl_802F37AC:
/* 802F37AC 002EF40C  3B FF 00 01 */	addi r31, r31, 1
/* 802F37B0 002EF410  3B BD 00 08 */	addi r29, r29, 8
/* 802F37B4 002EF414  28 1F 00 10 */	cmplwi r31, 0x10
/* 802F37B8 002EF418  41 80 FF D4 */	blt lbl_802F378C
/* 802F37BC 002EF41C  7F C3 F3 78 */	mr r3, r30
/* 802F37C0 002EF420  4B F7 C2 65 */	bl OSUnlockMutex
lbl_802F37C4:
/* 802F37C4 002EF424  39 61 00 30 */	addi r11, r1, 0x30
/* 802F37C8 002EF428  4B ED 39 A1 */	bl _restgpr_24
/* 802F37CC 002EF42C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802F37D0 002EF430  7C 08 03 A6 */	mtlr r0
/* 802F37D4 002EF434  38 21 00 30 */	addi r1, r1, 0x30
/* 802F37D8 002EF438  4E 80 00 20 */	blr

.global MPiNotifyDisconnectedToPort
MPiNotifyDisconnectedToPort:
/* 802F37DC 002EF43C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802F37E0 002EF440  7C 08 02 A6 */	mflr r0
/* 802F37E4 002EF444  90 01 00 34 */	stw r0, 0x34(r1)
/* 802F37E8 002EF448  39 61 00 30 */	addi r11, r1, 0x30
/* 802F37EC 002EF44C  4B ED 39 35 */	bl _savegpr_25
/* 802F37F0 002EF450  83 A2 AA 30 */	lwz r29, lbl_80643030-_SDA2_BASE_(r2)
/* 802F37F4 002EF454  7C 79 1B 78 */	mr r25, r3
/* 802F37F8 002EF458  7C 9A 23 78 */	mr r26, r4
/* 802F37FC 002EF45C  7C BB 2B 78 */	mr r27, r5
/* 802F3800 002EF460  3B DD 72 E0 */	addi r30, r29, 0x72e0
/* 802F3804 002EF464  7F C3 F3 78 */	mr r3, r30
/* 802F3808 002EF468  4B F7 C1 41 */	bl OSLockMutex
/* 802F380C 002EF46C  3B 9D 72 F8 */	addi r28, r29, 0x72f8
/* 802F3810 002EF470  38 80 00 00 */	li r4, 0
/* 802F3814 002EF474  7F 83 E3 78 */	mr r3, r28
/* 802F3818 002EF478  38 A0 00 40 */	li r5, 0x40
/* 802F381C 002EF47C  4B D1 08 E9 */	bl memset
/* 802F3820 002EF480  2C 1C 00 00 */	cmpwi r28, 0
/* 802F3824 002EF484  41 82 00 6C */	beq lbl_802F3890
/* 802F3828 002EF488  3B E0 00 00 */	li r31, 0
/* 802F382C 002EF48C  7F 64 DB 78 */	mr r4, r27
/* 802F3830 002EF490  93 FC 00 00 */	stw r31, 0(r28)
/* 802F3834 002EF494  38 7C 00 18 */	addi r3, r28, 0x18
/* 802F3838 002EF498  38 A0 00 06 */	li r5, 6
/* 802F383C 002EF49C  93 3C 00 10 */	stw r25, 0x10(r28)
/* 802F3840 002EF4A0  93 5C 00 14 */	stw r26, 0x14(r28)
/* 802F3844 002EF4A4  4B D1 07 BD */	bl memcpy
/* 802F3848 002EF4A8  93 FC 00 00 */	stw r31, 0(r28)
/* 802F384C 002EF4AC  38 00 00 05 */	li r0, 5
/* 802F3850 002EF4B0  3B E0 00 00 */	li r31, 0
/* 802F3854 002EF4B4  90 1C 00 04 */	stw r0, 4(r28)
lbl_802F3858:
/* 802F3858 002EF4B8  93 FC 00 08 */	stw r31, 8(r28)
/* 802F385C 002EF4BC  81 9D 00 B4 */	lwz r12, 0xb4(r29)
/* 802F3860 002EF4C0  2C 0C 00 00 */	cmpwi r12, 0
/* 802F3864 002EF4C4  41 82 00 14 */	beq lbl_802F3878
/* 802F3868 002EF4C8  7F 84 E3 78 */	mr r4, r28
/* 802F386C 002EF4CC  38 60 00 05 */	li r3, 5
/* 802F3870 002EF4D0  7D 89 03 A6 */	mtctr r12
/* 802F3874 002EF4D4  4E 80 04 21 */	bctrl
lbl_802F3878:
/* 802F3878 002EF4D8  3B FF 00 01 */	addi r31, r31, 1
/* 802F387C 002EF4DC  3B BD 00 08 */	addi r29, r29, 8
/* 802F3880 002EF4E0  28 1F 00 10 */	cmplwi r31, 0x10
/* 802F3884 002EF4E4  41 80 FF D4 */	blt lbl_802F3858
/* 802F3888 002EF4E8  7F C3 F3 78 */	mr r3, r30
/* 802F388C 002EF4EC  4B F7 C1 99 */	bl OSUnlockMutex
lbl_802F3890:
/* 802F3890 002EF4F0  39 61 00 30 */	addi r11, r1, 0x30
/* 802F3894 002EF4F4  4B ED 38 D9 */	bl _restgpr_25
/* 802F3898 002EF4F8  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802F389C 002EF4FC  7C 08 03 A6 */	mtlr r0
/* 802F38A0 002EF500  38 21 00 30 */	addi r1, r1, 0x30
/* 802F38A4 002EF504  4E 80 00 20 */	blr