summaryrefslogtreecommitdiff
path: root/asm/SDK/NCD/ncdsystem.s
blob: d1a3a7656052fb5f566a780e508c2dadd87572e7 (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
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
.include "macros.inc"

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

.global NCDSetNwc24Permission
NCDSetNwc24Permission:
/* 802ED204 002E8E64  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802ED208 002E8E68  7C 08 02 A6 */	mflr r0
/* 802ED20C 002E8E6C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802ED210 002E8E70  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802ED214 002E8E74  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802ED218 002E8E78  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802ED21C 002E8E7C  7C 7D 1B 78 */	mr r29, r3
/* 802ED220 002E8E80  4B F8 40 D9 */	bl OSGetCurrentThread
/* 802ED224 002E8E84  2C 03 00 00 */	cmpwi r3, 0
/* 802ED228 002E8E88  40 82 00 0C */	bne lbl_802ED234
/* 802ED22C 002E8E8C  38 60 FF FB */	li r3, -5
/* 802ED230 002E8E90  48 00 00 88 */	b lbl_802ED2B8
lbl_802ED234:
/* 802ED234 002E8E94  48 00 0A 39 */	bl LockRight
/* 802ED238 002E8E98  48 01 6B 59 */	bl NWC24iLockSocket
/* 802ED23C 002E8E9C  2C 03 00 00 */	cmpwi r3, 0
/* 802ED240 002E8EA0  40 82 00 48 */	bne lbl_802ED288
/* 802ED244 002E8EA4  3F E0 80 44 */	lis r31, lbl_80445AF0@ha
/* 802ED248 002E8EA8  38 80 00 00 */	li r4, 0
/* 802ED24C 002E8EAC  38 7F 5A F0 */	addi r3, r31, lbl_80445AF0@l
/* 802ED250 002E8EB0  38 A0 00 03 */	li r5, 3
/* 802ED254 002E8EB4  48 00 08 85 */	bl ExecConfigCommand
/* 802ED258 002E8EB8  2C 03 00 00 */	cmpwi r3, 0
/* 802ED25C 002E8EBC  7C 7E 1B 78 */	mr r30, r3
/* 802ED260 002E8EC0  40 82 00 20 */	bne lbl_802ED280
/* 802ED264 002E8EC4  80 CD AF 34 */	lwz r6, lbl_806401F4-_SDA_BASE_(r13)
/* 802ED268 002E8EC8  38 7F 5A F0 */	addi r3, r31, 0x5af0
/* 802ED26C 002E8ECC  38 80 00 00 */	li r4, 0
/* 802ED270 002E8ED0  38 A0 00 04 */	li r5, 4
/* 802ED274 002E8ED4  9B A6 00 05 */	stb r29, 5(r6)
/* 802ED278 002E8ED8  48 00 08 61 */	bl ExecConfigCommand
/* 802ED27C 002E8EDC  7C 7E 1B 78 */	mr r30, r3
lbl_802ED280:
/* 802ED280 002E8EE0  48 01 6B 21 */	bl NWC24iUnlockSocket
/* 802ED284 002E8EE4  48 00 00 24 */	b lbl_802ED2A8
lbl_802ED288:
/* 802ED288 002E8EE8  2C 03 FF EA */	cmpwi r3, -22
/* 802ED28C 002E8EEC  40 82 00 0C */	bne lbl_802ED298
/* 802ED290 002E8EF0  3B C0 FF FC */	li r30, -4
/* 802ED294 002E8EF4  48 00 00 14 */	b lbl_802ED2A8
lbl_802ED298:
/* 802ED298 002E8EF8  2C 03 FF E3 */	cmpwi r3, -29
/* 802ED29C 002E8EFC  3B C0 FF FE */	li r30, -2
/* 802ED2A0 002E8F00  40 82 00 08 */	bne lbl_802ED2A8
/* 802ED2A4 002E8F04  3B C0 FF F8 */	li r30, -8
lbl_802ED2A8:
/* 802ED2A8 002E8F08  3C 60 80 58 */	lis r3, lbl_80579060@ha
/* 802ED2AC 002E8F0C  38 63 90 60 */	addi r3, r3, lbl_80579060@l
/* 802ED2B0 002E8F10  4B F8 27 75 */	bl OSUnlockMutex
/* 802ED2B4 002E8F14  7F C3 F3 78 */	mr r3, r30
lbl_802ED2B8:
/* 802ED2B8 002E8F18  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802ED2BC 002E8F1C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802ED2C0 002E8F20  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802ED2C4 002E8F24  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802ED2C8 002E8F28  7C 08 03 A6 */	mtlr r0
/* 802ED2CC 002E8F2C  38 21 00 20 */	addi r1, r1, 0x20
/* 802ED2D0 002E8F30  4E 80 00 20 */	blr

.global NCDGetCurrentIfConfig
NCDGetCurrentIfConfig:
/* 802ED2D4 002E8F34  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802ED2D8 002E8F38  7C 08 02 A6 */	mflr r0
/* 802ED2DC 002E8F3C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802ED2E0 002E8F40  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802ED2E4 002E8F44  3B E0 00 00 */	li r31, 0
/* 802ED2E8 002E8F48  7C 03 F8 40 */	cmplw r3, r31
/* 802ED2EC 002E8F4C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802ED2F0 002E8F50  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802ED2F4 002E8F54  7C 7D 1B 78 */	mr r29, r3
/* 802ED2F8 002E8F58  40 82 00 0C */	bne lbl_802ED304
/* 802ED2FC 002E8F5C  38 60 FF FD */	li r3, -3
/* 802ED300 002E8F60  48 00 00 B0 */	b lbl_802ED3B0
lbl_802ED304:
/* 802ED304 002E8F64  48 00 09 69 */	bl LockRight
/* 802ED308 002E8F68  3C 60 80 44 */	lis r3, lbl_80445B08@ha
/* 802ED30C 002E8F6C  38 80 00 00 */	li r4, 0
/* 802ED310 002E8F70  38 63 5B 08 */	addi r3, r3, lbl_80445B08@l
/* 802ED314 002E8F74  38 A0 00 03 */	li r5, 3
/* 802ED318 002E8F78  48 00 07 C1 */	bl ExecConfigCommand
/* 802ED31C 002E8F7C  2C 03 00 00 */	cmpwi r3, 0
/* 802ED320 002E8F80  7C 7F 1B 78 */	mr r31, r3
/* 802ED324 002E8F84  40 82 00 7C */	bne lbl_802ED3A0
/* 802ED328 002E8F88  3C 60 80 58 */	lis r3, lbl_80579080@ha
/* 802ED32C 002E8F8C  83 CD AF 34 */	lwz r30, lbl_806401F4-_SDA_BASE_(r13)
/* 802ED330 002E8F90  38 63 90 80 */	addi r3, r3, lbl_80579080@l
/* 802ED334 002E8F94  80 03 00 04 */	lwz r0, 4(r3)
/* 802ED338 002E8F98  2C 00 00 00 */	cmpwi r0, 0
/* 802ED33C 002E8F9C  41 80 00 0C */	blt lbl_802ED348
/* 802ED340 002E8FA0  2C 00 00 03 */	cmpwi r0, 3
/* 802ED344 002E8FA4  41 80 00 0C */	blt lbl_802ED350
lbl_802ED348:
/* 802ED348 002E8FA8  3B E0 FF F9 */	li r31, -7
/* 802ED34C 002E8FAC  48 00 00 54 */	b lbl_802ED3A0
lbl_802ED350:
/* 802ED350 002E8FB0  1C 00 09 1C */	mulli r0, r0, 0x91c
/* 802ED354 002E8FB4  7C 9E 02 14 */	add r4, r30, r0
/* 802ED358 002E8FB8  88 04 00 08 */	lbz r0, 8(r4)
/* 802ED35C 002E8FBC  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802ED360 002E8FC0  41 82 00 20 */	beq lbl_802ED380
/* 802ED364 002E8FC4  38 00 00 02 */	li r0, 2
/* 802ED368 002E8FC8  38 7D 00 02 */	addi r3, r29, 2
/* 802ED36C 002E8FCC  98 1D 00 00 */	stb r0, 0(r29)
/* 802ED370 002E8FD0  38 84 07 C8 */	addi r4, r4, 0x7c8
/* 802ED374 002E8FD4  38 A0 00 04 */	li r5, 4
/* 802ED378 002E8FD8  4B D1 6C 89 */	bl memcpy
/* 802ED37C 002E8FDC  48 00 00 1C */	b lbl_802ED398
lbl_802ED380:
/* 802ED380 002E8FE0  38 00 00 01 */	li r0, 1
/* 802ED384 002E8FE4  38 7D 00 02 */	addi r3, r29, 2
/* 802ED388 002E8FE8  98 1D 00 00 */	stb r0, 0(r29)
/* 802ED38C 002E8FEC  38 84 07 C8 */	addi r4, r4, 0x7c8
/* 802ED390 002E8FF0  38 A0 01 5C */	li r5, 0x15c
/* 802ED394 002E8FF4  4B D1 6C 6D */	bl memcpy
lbl_802ED398:
/* 802ED398 002E8FF8  88 1E 00 06 */	lbz r0, 6(r30)
/* 802ED39C 002E8FFC  98 1D 00 01 */	stb r0, 1(r29)
lbl_802ED3A0:
/* 802ED3A0 002E9000  3C 60 80 58 */	lis r3, lbl_80579060@ha
/* 802ED3A4 002E9004  38 63 90 60 */	addi r3, r3, lbl_80579060@l
/* 802ED3A8 002E9008  4B F8 26 7D */	bl OSUnlockMutex
/* 802ED3AC 002E900C  7F E3 FB 78 */	mr r3, r31
lbl_802ED3B0:
/* 802ED3B0 002E9010  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802ED3B4 002E9014  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802ED3B8 002E9018  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802ED3BC 002E901C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802ED3C0 002E9020  7C 08 03 A6 */	mtlr r0
/* 802ED3C4 002E9024  38 21 00 20 */	addi r1, r1, 0x20
/* 802ED3C8 002E9028  4E 80 00 20 */	blr

.global NCDGetCurrentIpConfig
NCDGetCurrentIpConfig:
/* 802ED3CC 002E902C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802ED3D0 002E9030  7C 08 02 A6 */	mflr r0
/* 802ED3D4 002E9034  90 01 00 24 */	stw r0, 0x24(r1)
/* 802ED3D8 002E9038  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802ED3DC 002E903C  7C 7F 1B 78 */	mr r31, r3
/* 802ED3E0 002E9040  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802ED3E4 002E9044  3B C0 00 00 */	li r30, 0
/* 802ED3E8 002E9048  7C 03 F0 40 */	cmplw r3, r30
/* 802ED3EC 002E904C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802ED3F0 002E9050  93 81 00 10 */	stw r28, 0x10(r1)
/* 802ED3F4 002E9054  40 82 00 0C */	bne lbl_802ED400
/* 802ED3F8 002E9058  38 60 FF FD */	li r3, -3
/* 802ED3FC 002E905C  48 00 01 08 */	b lbl_802ED504
lbl_802ED400:
/* 802ED400 002E9060  48 00 08 6D */	bl LockRight
/* 802ED404 002E9064  3C 60 80 44 */	lis r3, lbl_80445B20@ha
/* 802ED408 002E9068  38 80 00 00 */	li r4, 0
/* 802ED40C 002E906C  38 63 5B 20 */	addi r3, r3, lbl_80445B20@l
/* 802ED410 002E9070  38 A0 00 03 */	li r5, 3
/* 802ED414 002E9074  48 00 06 C5 */	bl ExecConfigCommand
/* 802ED418 002E9078  2C 03 00 00 */	cmpwi r3, 0
/* 802ED41C 002E907C  7C 7E 1B 78 */	mr r30, r3
/* 802ED420 002E9080  40 82 00 D4 */	bne lbl_802ED4F4
/* 802ED424 002E9084  3C 60 80 58 */	lis r3, lbl_80579080@ha
/* 802ED428 002E9088  83 AD AF 34 */	lwz r29, lbl_806401F4-_SDA_BASE_(r13)
/* 802ED42C 002E908C  38 63 90 80 */	addi r3, r3, lbl_80579080@l
/* 802ED430 002E9090  83 83 00 04 */	lwz r28, 4(r3)
/* 802ED434 002E9094  2C 1C 00 00 */	cmpwi r28, 0
/* 802ED438 002E9098  41 80 00 0C */	blt lbl_802ED444
/* 802ED43C 002E909C  2C 1C 00 03 */	cmpwi r28, 3
/* 802ED440 002E90A0  41 80 00 0C */	blt lbl_802ED44C
lbl_802ED444:
/* 802ED444 002E90A4  3B C0 FF F9 */	li r30, -7
/* 802ED448 002E90A8  48 00 00 AC */	b lbl_802ED4F4
lbl_802ED44C:
/* 802ED44C 002E90AC  1C 1C 09 1C */	mulli r0, r28, 0x91c
/* 802ED450 002E90B0  38 7F 00 1C */	addi r3, r31, 0x1c
/* 802ED454 002E90B4  38 A0 00 0C */	li r5, 0xc
/* 802ED458 002E90B8  7C 9D 02 14 */	add r4, r29, r0
/* 802ED45C 002E90BC  38 84 00 20 */	addi r4, r4, 0x20
/* 802ED460 002E90C0  4B D1 6B A1 */	bl memcpy
/* 802ED464 002E90C4  1C 1C 09 1C */	mulli r0, r28, 0x91c
/* 802ED468 002E90C8  7C 9D 02 14 */	add r4, r29, r0
/* 802ED46C 002E90CC  88 04 00 08 */	lbz r0, 8(r4)
/* 802ED470 002E90D0  54 00 07 7D */	rlwinm. r0, r0, 0, 0x1d, 0x1e
/* 802ED474 002E90D4  41 82 00 20 */	beq lbl_802ED494
/* 802ED478 002E90D8  38 00 00 01 */	li r0, 1
/* 802ED47C 002E90DC  38 7F 00 08 */	addi r3, r31, 8
/* 802ED480 002E90E0  90 1F 00 00 */	stw r0, 0(r31)
/* 802ED484 002E90E4  38 84 00 0C */	addi r4, r4, 0xc
/* 802ED488 002E90E8  38 A0 00 14 */	li r5, 0x14
/* 802ED48C 002E90EC  4B D1 6B 75 */	bl memcpy
/* 802ED490 002E90F0  48 00 00 1C */	b lbl_802ED4AC
lbl_802ED494:
/* 802ED494 002E90F4  38 00 00 00 */	li r0, 0
/* 802ED498 002E90F8  38 7F 00 08 */	addi r3, r31, 8
/* 802ED49C 002E90FC  90 1F 00 00 */	stw r0, 0(r31)
/* 802ED4A0 002E9100  38 84 00 0C */	addi r4, r4, 0xc
/* 802ED4A4 002E9104  38 A0 00 14 */	li r5, 0x14
/* 802ED4A8 002E9108  4B D1 6B 59 */	bl memcpy
lbl_802ED4AC:
/* 802ED4AC 002E910C  1C 1C 09 1C */	mulli r0, r28, 0x91c
/* 802ED4B0 002E9110  7C 9D 02 14 */	add r4, r29, r0
/* 802ED4B4 002E9114  88 04 00 08 */	lbz r0, 8(r4)
/* 802ED4B8 002E9118  54 00 06 F7 */	rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 802ED4BC 002E911C  41 82 00 20 */	beq lbl_802ED4DC
/* 802ED4C0 002E9120  38 00 00 01 */	li r0, 1
/* 802ED4C4 002E9124  38 7F 00 28 */	addi r3, r31, 0x28
/* 802ED4C8 002E9128  90 1F 00 04 */	stw r0, 4(r31)
/* 802ED4CC 002E912C  38 84 00 2C */	addi r4, r4, 0x2c
/* 802ED4D0 002E9130  38 A0 07 9C */	li r5, 0x79c
/* 802ED4D4 002E9134  4B D1 6B 2D */	bl memcpy
/* 802ED4D8 002E9138  48 00 00 1C */	b lbl_802ED4F4
lbl_802ED4DC:
/* 802ED4DC 002E913C  38 00 00 00 */	li r0, 0
/* 802ED4E0 002E9140  38 7F 00 28 */	addi r3, r31, 0x28
/* 802ED4E4 002E9144  90 1F 00 04 */	stw r0, 4(r31)
/* 802ED4E8 002E9148  38 80 00 00 */	li r4, 0
/* 802ED4EC 002E914C  38 A0 07 9C */	li r5, 0x79c
/* 802ED4F0 002E9150  4B D1 6C 15 */	bl memset
lbl_802ED4F4:
/* 802ED4F4 002E9154  3C 60 80 58 */	lis r3, lbl_80579060@ha
/* 802ED4F8 002E9158  38 63 90 60 */	addi r3, r3, lbl_80579060@l
/* 802ED4FC 002E915C  4B F8 25 29 */	bl OSUnlockMutex
/* 802ED500 002E9160  7F C3 F3 78 */	mr r3, r30
lbl_802ED504:
/* 802ED504 002E9164  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802ED508 002E9168  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802ED50C 002E916C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802ED510 002E9170  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802ED514 002E9174  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802ED518 002E9178  7C 08 03 A6 */	mtlr r0
/* 802ED51C 002E917C  38 21 00 20 */	addi r1, r1, 0x20
/* 802ED520 002E9180  4E 80 00 20 */	blr

.global NCDGetLinkStatus
NCDGetLinkStatus:
/* 802ED524 002E9184  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802ED528 002E9188  7C 08 02 A6 */	mflr r0
/* 802ED52C 002E918C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802ED530 002E9190  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802ED534 002E9194  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802ED538 002E9198  3F C0 80 58 */	lis r30, lbl_80579060@ha
/* 802ED53C 002E919C  3B DE 90 60 */	addi r30, r30, lbl_80579060@l
/* 802ED540 002E91A0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802ED544 002E91A4  93 81 00 10 */	stw r28, 0x10(r1)
/* 802ED548 002E91A8  4B F8 3D B1 */	bl OSGetCurrentThread
/* 802ED54C 002E91AC  2C 03 00 00 */	cmpwi r3, 0
/* 802ED550 002E91B0  40 82 00 0C */	bne lbl_802ED55C
/* 802ED554 002E91B4  38 60 FF FB */	li r3, -5
/* 802ED558 002E91B8  48 00 00 B0 */	b lbl_802ED608
lbl_802ED55C:
/* 802ED55C 002E91BC  48 00 07 11 */	bl LockRight
/* 802ED560 002E91C0  3C 60 80 44 */	lis r3, lbl_80445B38@ha
/* 802ED564 002E91C4  38 80 00 00 */	li r4, 0
/* 802ED568 002E91C8  38 63 5B 38 */	addi r3, r3, lbl_80445B38@l
/* 802ED56C 002E91CC  4B FB 5B ED */	bl IOS_Open
/* 802ED570 002E91D0  2C 03 00 00 */	cmpwi r3, 0
/* 802ED574 002E91D4  7C 7C 1B 78 */	mr r28, r3
/* 802ED578 002E91D8  40 80 00 1C */	bge lbl_802ED594
/* 802ED57C 002E91DC  2C 03 FF FA */	cmpwi r3, -6
/* 802ED580 002E91E0  40 82 00 0C */	bne lbl_802ED58C
/* 802ED584 002E91E4  3B A0 FF F8 */	li r29, -8
/* 802ED588 002E91E8  48 00 00 74 */	b lbl_802ED5FC
lbl_802ED58C:
/* 802ED58C 002E91EC  3B A0 FF FE */	li r29, -2
/* 802ED590 002E91F0  48 00 00 6C */	b lbl_802ED5FC
lbl_802ED594:
/* 802ED594 002E91F4  3B FE 00 20 */	addi r31, r30, 0x20
/* 802ED598 002E91F8  38 FE 00 40 */	addi r7, r30, 0x40
/* 802ED59C 002E91FC  38 00 00 20 */	li r0, 0x20
/* 802ED5A0 002E9200  93 FE 00 40 */	stw r31, 0x40(r30)
/* 802ED5A4 002E9204  38 80 00 07 */	li r4, 7
/* 802ED5A8 002E9208  38 A0 00 00 */	li r5, 0
/* 802ED5AC 002E920C  90 07 00 04 */	stw r0, 4(r7)
/* 802ED5B0 002E9210  38 C0 00 01 */	li r6, 1
/* 802ED5B4 002E9214  4B FB 68 8D */	bl IOS_Ioctlv
/* 802ED5B8 002E9218  2C 03 00 00 */	cmpwi r3, 0
/* 802ED5BC 002E921C  40 80 00 0C */	bge lbl_802ED5C8
/* 802ED5C0 002E9220  3B A0 FF FE */	li r29, -2
/* 802ED5C4 002E9224  48 00 00 24 */	b lbl_802ED5E8
lbl_802ED5C8:
/* 802ED5C8 002E9228  83 BE 00 20 */	lwz r29, 0x20(r30)
/* 802ED5CC 002E922C  2C 1D 00 00 */	cmpwi r29, 0
/* 802ED5D0 002E9230  40 82 00 18 */	bne lbl_802ED5E8
/* 802ED5D4 002E9234  83 BF 00 04 */	lwz r29, 4(r31)
/* 802ED5D8 002E9238  2C 1D 00 00 */	cmpwi r29, 0
/* 802ED5DC 002E923C  41 80 00 08 */	blt lbl_802ED5E4
/* 802ED5E0 002E9240  48 00 00 08 */	b lbl_802ED5E8
lbl_802ED5E4:
/* 802ED5E4 002E9244  3B A0 FF FF */	li r29, -1
lbl_802ED5E8:
/* 802ED5E8 002E9248  7F 83 E3 78 */	mr r3, r28
/* 802ED5EC 002E924C  4B FB 5D 4D */	bl IOS_Close
/* 802ED5F0 002E9250  2C 03 00 00 */	cmpwi r3, 0
/* 802ED5F4 002E9254  40 80 00 08 */	bge lbl_802ED5FC
/* 802ED5F8 002E9258  3B A0 FF FF */	li r29, -1
lbl_802ED5FC:
/* 802ED5FC 002E925C  38 7E 00 00 */	addi r3, r30, 0
/* 802ED600 002E9260  4B F8 24 25 */	bl OSUnlockMutex
/* 802ED604 002E9264  7F A3 EB 78 */	mr r3, r29
lbl_802ED608:
/* 802ED608 002E9268  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802ED60C 002E926C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802ED610 002E9270  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802ED614 002E9274  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802ED618 002E9278  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802ED61C 002E927C  7C 08 03 A6 */	mtlr r0
/* 802ED620 002E9280  38 21 00 20 */	addi r1, r1, 0x20
/* 802ED624 002E9284  4E 80 00 20 */	blr

.global NCDiGetWirelessMacAddress
NCDiGetWirelessMacAddress:
/* 802ED628 002E9288  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802ED62C 002E928C  7C 08 02 A6 */	mflr r0
/* 802ED630 002E9290  90 01 00 24 */	stw r0, 0x24(r1)
/* 802ED634 002E9294  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802ED638 002E9298  3F E0 80 58 */	lis r31, lbl_80579060@ha
/* 802ED63C 002E929C  3B FF 90 60 */	addi r31, r31, lbl_80579060@l
/* 802ED640 002E92A0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802ED644 002E92A4  3B C0 00 00 */	li r30, 0
/* 802ED648 002E92A8  7C 03 F0 40 */	cmplw r3, r30
/* 802ED64C 002E92AC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802ED650 002E92B0  93 81 00 10 */	stw r28, 0x10(r1)
/* 802ED654 002E92B4  7C 7C 1B 78 */	mr r28, r3
/* 802ED658 002E92B8  40 82 00 0C */	bne lbl_802ED664
/* 802ED65C 002E92BC  38 60 FF FD */	li r3, -3
/* 802ED660 002E92C0  48 00 00 D0 */	b lbl_802ED730
lbl_802ED664:
/* 802ED664 002E92C4  4B F8 3C 95 */	bl OSGetCurrentThread
/* 802ED668 002E92C8  2C 03 00 00 */	cmpwi r3, 0
/* 802ED66C 002E92CC  40 82 00 0C */	bne lbl_802ED678
/* 802ED670 002E92D0  38 60 FF FB */	li r3, -5
/* 802ED674 002E92D4  48 00 00 BC */	b lbl_802ED730
lbl_802ED678:
/* 802ED678 002E92D8  48 00 05 F5 */	bl LockRight
/* 802ED67C 002E92DC  3C 60 80 44 */	lis r3, lbl_80445B38@ha
/* 802ED680 002E92E0  38 80 00 00 */	li r4, 0
/* 802ED684 002E92E4  38 63 5B 38 */	addi r3, r3, lbl_80445B38@l
/* 802ED688 002E92E8  4B FB 5A D1 */	bl IOS_Open
/* 802ED68C 002E92EC  2C 03 00 00 */	cmpwi r3, 0
/* 802ED690 002E92F0  7C 7D 1B 78 */	mr r29, r3
/* 802ED694 002E92F4  40 80 00 1C */	bge lbl_802ED6B0
/* 802ED698 002E92F8  2C 03 FF FA */	cmpwi r3, -6
/* 802ED69C 002E92FC  40 82 00 0C */	bne lbl_802ED6A8
/* 802ED6A0 002E9300  3B C0 FF F8 */	li r30, -8
/* 802ED6A4 002E9304  48 00 00 80 */	b lbl_802ED724
lbl_802ED6A8:
/* 802ED6A8 002E9308  3B C0 FF FE */	li r30, -2
/* 802ED6AC 002E930C  48 00 00 78 */	b lbl_802ED724
lbl_802ED6B0:
/* 802ED6B0 002E9310  81 0D AF 34 */	lwz r8, lbl_806401F4-_SDA_BASE_(r13)
/* 802ED6B4 002E9314  38 FF 00 40 */	addi r7, r31, 0x40
/* 802ED6B8 002E9318  38 9F 00 20 */	addi r4, r31, 0x20
/* 802ED6BC 002E931C  38 A0 00 20 */	li r5, 0x20
/* 802ED6C0 002E9320  38 00 00 06 */	li r0, 6
/* 802ED6C4 002E9324  90 9F 00 40 */	stw r4, 0x40(r31)
/* 802ED6C8 002E9328  38 80 00 08 */	li r4, 8
/* 802ED6CC 002E932C  38 C0 00 02 */	li r6, 2
/* 802ED6D0 002E9330  90 A7 00 04 */	stw r5, 4(r7)
/* 802ED6D4 002E9334  38 A0 00 00 */	li r5, 0
/* 802ED6D8 002E9338  91 07 00 08 */	stw r8, 8(r7)
/* 802ED6DC 002E933C  90 07 00 0C */	stw r0, 0xc(r7)
/* 802ED6E0 002E9340  4B FB 67 61 */	bl IOS_Ioctlv
/* 802ED6E4 002E9344  2C 03 00 00 */	cmpwi r3, 0
/* 802ED6E8 002E9348  40 80 00 0C */	bge lbl_802ED6F4
/* 802ED6EC 002E934C  3B C0 FF FE */	li r30, -2
/* 802ED6F0 002E9350  48 00 00 20 */	b lbl_802ED710
lbl_802ED6F4:
/* 802ED6F4 002E9354  83 DF 00 20 */	lwz r30, 0x20(r31)
/* 802ED6F8 002E9358  2C 1E 00 00 */	cmpwi r30, 0
/* 802ED6FC 002E935C  40 82 00 14 */	bne lbl_802ED710
/* 802ED700 002E9360  80 8D AF 34 */	lwz r4, lbl_806401F4-_SDA_BASE_(r13)
/* 802ED704 002E9364  7F 83 E3 78 */	mr r3, r28
/* 802ED708 002E9368  38 A0 00 06 */	li r5, 6
/* 802ED70C 002E936C  4B D1 68 F5 */	bl memcpy
lbl_802ED710:
/* 802ED710 002E9370  7F A3 EB 78 */	mr r3, r29
/* 802ED714 002E9374  4B FB 5C 25 */	bl IOS_Close
/* 802ED718 002E9378  2C 03 00 00 */	cmpwi r3, 0
/* 802ED71C 002E937C  40 80 00 08 */	bge lbl_802ED724
/* 802ED720 002E9380  3B C0 FF FF */	li r30, -1
lbl_802ED724:
/* 802ED724 002E9384  38 7F 00 00 */	addi r3, r31, 0
/* 802ED728 002E9388  4B F8 22 FD */	bl OSUnlockMutex
/* 802ED72C 002E938C  7F C3 F3 78 */	mr r3, r30
lbl_802ED730:
/* 802ED730 002E9390  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802ED734 002E9394  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802ED738 002E9398  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802ED73C 002E939C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802ED740 002E93A0  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802ED744 002E93A4  7C 08 03 A6 */	mtlr r0
/* 802ED748 002E93A8  38 21 00 20 */	addi r1, r1, 0x20
/* 802ED74C 002E93AC  4E 80 00 20 */	blr

.global NCDLockWirelessDriver
NCDLockWirelessDriver:
/* 802ED750 002E93B0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802ED754 002E93B4  7C 08 02 A6 */	mflr r0
/* 802ED758 002E93B8  90 01 00 24 */	stw r0, 0x24(r1)
/* 802ED75C 002E93BC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802ED760 002E93C0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802ED764 002E93C4  3F C0 80 58 */	lis r30, lbl_80579060@ha
/* 802ED768 002E93C8  3B DE 90 60 */	addi r30, r30, lbl_80579060@l
/* 802ED76C 002E93CC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802ED770 002E93D0  93 81 00 10 */	stw r28, 0x10(r1)
/* 802ED774 002E93D4  4B F8 3B 85 */	bl OSGetCurrentThread
/* 802ED778 002E93D8  2C 03 00 00 */	cmpwi r3, 0
/* 802ED77C 002E93DC  40 82 00 0C */	bne lbl_802ED788
/* 802ED780 002E93E0  38 60 FF FB */	li r3, -5
/* 802ED784 002E93E4  48 00 00 B0 */	b lbl_802ED834
lbl_802ED788:
/* 802ED788 002E93E8  48 00 04 E5 */	bl LockRight
/* 802ED78C 002E93EC  3C 60 80 44 */	lis r3, lbl_80445B38@ha
/* 802ED790 002E93F0  38 80 00 00 */	li r4, 0
/* 802ED794 002E93F4  38 63 5B 38 */	addi r3, r3, lbl_80445B38@l
/* 802ED798 002E93F8  4B FB 59 C1 */	bl IOS_Open
/* 802ED79C 002E93FC  2C 03 00 00 */	cmpwi r3, 0
/* 802ED7A0 002E9400  7C 7C 1B 78 */	mr r28, r3
/* 802ED7A4 002E9404  40 80 00 1C */	bge lbl_802ED7C0
/* 802ED7A8 002E9408  2C 03 FF FA */	cmpwi r3, -6
/* 802ED7AC 002E940C  40 82 00 0C */	bne lbl_802ED7B8
/* 802ED7B0 002E9410  3B A0 FF F8 */	li r29, -8
/* 802ED7B4 002E9414  48 00 00 74 */	b lbl_802ED828
lbl_802ED7B8:
/* 802ED7B8 002E9418  3B A0 FF FE */	li r29, -2
/* 802ED7BC 002E941C  48 00 00 6C */	b lbl_802ED828
lbl_802ED7C0:
/* 802ED7C0 002E9420  3B FE 00 20 */	addi r31, r30, 0x20
/* 802ED7C4 002E9424  38 FE 00 40 */	addi r7, r30, 0x40
/* 802ED7C8 002E9428  38 00 00 20 */	li r0, 0x20
/* 802ED7CC 002E942C  93 FE 00 40 */	stw r31, 0x40(r30)
/* 802ED7D0 002E9430  38 80 00 01 */	li r4, 1
/* 802ED7D4 002E9434  38 A0 00 00 */	li r5, 0
/* 802ED7D8 002E9438  90 07 00 04 */	stw r0, 4(r7)
/* 802ED7DC 002E943C  38 C0 00 01 */	li r6, 1
/* 802ED7E0 002E9440  4B FB 66 61 */	bl IOS_Ioctlv
/* 802ED7E4 002E9444  2C 03 00 00 */	cmpwi r3, 0
/* 802ED7E8 002E9448  40 80 00 0C */	bge lbl_802ED7F4
/* 802ED7EC 002E944C  3B A0 FF FE */	li r29, -2
/* 802ED7F0 002E9450  48 00 00 24 */	b lbl_802ED814
lbl_802ED7F4:
/* 802ED7F4 002E9454  83 BE 00 20 */	lwz r29, 0x20(r30)
/* 802ED7F8 002E9458  2C 1D 00 00 */	cmpwi r29, 0
/* 802ED7FC 002E945C  40 82 00 18 */	bne lbl_802ED814
/* 802ED800 002E9460  83 BF 00 04 */	lwz r29, 4(r31)
/* 802ED804 002E9464  2C 1D 00 00 */	cmpwi r29, 0
/* 802ED808 002E9468  40 81 00 08 */	ble lbl_802ED810
/* 802ED80C 002E946C  48 00 00 08 */	b lbl_802ED814
lbl_802ED810:
/* 802ED810 002E9470  3B A0 FF FF */	li r29, -1
lbl_802ED814:
/* 802ED814 002E9474  7F 83 E3 78 */	mr r3, r28
/* 802ED818 002E9478  4B FB 5B 21 */	bl IOS_Close
/* 802ED81C 002E947C  2C 03 00 00 */	cmpwi r3, 0
/* 802ED820 002E9480  40 80 00 08 */	bge lbl_802ED828
/* 802ED824 002E9484  3B A0 FF FF */	li r29, -1
lbl_802ED828:
/* 802ED828 002E9488  38 7E 00 00 */	addi r3, r30, 0
/* 802ED82C 002E948C  4B F8 21 F9 */	bl OSUnlockMutex
/* 802ED830 002E9490  7F A3 EB 78 */	mr r3, r29
lbl_802ED834:
/* 802ED834 002E9494  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802ED838 002E9498  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802ED83C 002E949C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802ED840 002E94A0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802ED844 002E94A4  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802ED848 002E94A8  7C 08 03 A6 */	mtlr r0
/* 802ED84C 002E94AC  38 21 00 20 */	addi r1, r1, 0x20
/* 802ED850 002E94B0  4E 80 00 20 */	blr

.global NCDUnlockWirelessDriver
NCDUnlockWirelessDriver:
/* 802ED854 002E94B4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802ED858 002E94B8  7C 08 02 A6 */	mflr r0
/* 802ED85C 002E94BC  2C 03 00 00 */	cmpwi r3, 0
/* 802ED860 002E94C0  90 01 00 24 */	stw r0, 0x24(r1)
/* 802ED864 002E94C4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802ED868 002E94C8  3F E0 80 58 */	lis r31, lbl_80579060@ha
/* 802ED86C 002E94CC  3B FF 90 60 */	addi r31, r31, lbl_80579060@l
/* 802ED870 002E94D0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802ED874 002E94D4  7C 7E 1B 78 */	mr r30, r3
/* 802ED878 002E94D8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802ED87C 002E94DC  41 81 00 0C */	bgt lbl_802ED888
/* 802ED880 002E94E0  38 60 FF FD */	li r3, -3
/* 802ED884 002E94E4  48 00 00 BC */	b lbl_802ED940
lbl_802ED888:
/* 802ED888 002E94E8  4B F8 3A 71 */	bl OSGetCurrentThread
/* 802ED88C 002E94EC  2C 03 00 00 */	cmpwi r3, 0
/* 802ED890 002E94F0  40 82 00 0C */	bne lbl_802ED89C
/* 802ED894 002E94F4  38 60 FF FB */	li r3, -5
/* 802ED898 002E94F8  48 00 00 A8 */	b lbl_802ED940
lbl_802ED89C:
/* 802ED89C 002E94FC  48 00 03 D1 */	bl LockRight
/* 802ED8A0 002E9500  3C 60 80 44 */	lis r3, lbl_80445B38@ha
/* 802ED8A4 002E9504  38 80 00 00 */	li r4, 0
/* 802ED8A8 002E9508  38 63 5B 38 */	addi r3, r3, lbl_80445B38@l
/* 802ED8AC 002E950C  4B FB 58 AD */	bl IOS_Open
/* 802ED8B0 002E9510  2C 03 00 00 */	cmpwi r3, 0
/* 802ED8B4 002E9514  7C 7D 1B 78 */	mr r29, r3
/* 802ED8B8 002E9518  40 80 00 1C */	bge lbl_802ED8D4
/* 802ED8BC 002E951C  2C 03 FF FA */	cmpwi r3, -6
/* 802ED8C0 002E9520  40 82 00 0C */	bne lbl_802ED8CC
/* 802ED8C4 002E9524  3B C0 FF F8 */	li r30, -8
/* 802ED8C8 002E9528  48 00 00 6C */	b lbl_802ED934
lbl_802ED8CC:
/* 802ED8CC 002E952C  3B C0 FF FE */	li r30, -2
/* 802ED8D0 002E9530  48 00 00 64 */	b lbl_802ED934
lbl_802ED8D4:
/* 802ED8D4 002E9534  81 2D AF 34 */	lwz r9, lbl_806401F4-_SDA_BASE_(r13)
/* 802ED8D8 002E9538  38 FF 00 40 */	addi r7, r31, 0x40
/* 802ED8DC 002E953C  39 1F 00 20 */	addi r8, r31, 0x20
/* 802ED8E0 002E9540  38 A0 00 04 */	li r5, 4
/* 802ED8E4 002E9544  38 00 00 20 */	li r0, 0x20
/* 802ED8E8 002E9548  90 A7 00 04 */	stw r5, 4(r7)
/* 802ED8EC 002E954C  38 80 00 02 */	li r4, 2
/* 802ED8F0 002E9550  38 A0 00 01 */	li r5, 1
/* 802ED8F4 002E9554  91 3F 00 40 */	stw r9, 0x40(r31)
/* 802ED8F8 002E9558  38 C0 00 01 */	li r6, 1
/* 802ED8FC 002E955C  91 07 00 08 */	stw r8, 8(r7)
/* 802ED900 002E9560  90 07 00 0C */	stw r0, 0xc(r7)
/* 802ED904 002E9564  93 C9 00 00 */	stw r30, 0(r9)
/* 802ED908 002E9568  4B FB 65 39 */	bl IOS_Ioctlv
/* 802ED90C 002E956C  2C 03 00 00 */	cmpwi r3, 0
/* 802ED910 002E9570  40 80 00 0C */	bge lbl_802ED91C
/* 802ED914 002E9574  3B C0 FF FE */	li r30, -2
/* 802ED918 002E9578  48 00 00 08 */	b lbl_802ED920
lbl_802ED91C:
/* 802ED91C 002E957C  83 DF 00 20 */	lwz r30, 0x20(r31)
lbl_802ED920:
/* 802ED920 002E9580  7F A3 EB 78 */	mr r3, r29
/* 802ED924 002E9584  4B FB 5A 15 */	bl IOS_Close
/* 802ED928 002E9588  2C 03 00 00 */	cmpwi r3, 0
/* 802ED92C 002E958C  40 80 00 08 */	bge lbl_802ED934
/* 802ED930 002E9590  3B C0 FF FF */	li r30, -1
lbl_802ED934:
/* 802ED934 002E9594  38 7F 00 00 */	addi r3, r31, 0
/* 802ED938 002E9598  4B F8 20 ED */	bl OSUnlockMutex
/* 802ED93C 002E959C  7F C3 F3 78 */	mr r3, r30
lbl_802ED940:
/* 802ED940 002E95A0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802ED944 002E95A4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802ED948 002E95A8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802ED94C 002E95AC  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802ED950 002E95B0  7C 08 03 A6 */	mtlr r0
/* 802ED954 002E95B4  38 21 00 20 */	addi r1, r1, 0x20
/* 802ED958 002E95B8  4E 80 00 20 */	blr

.global NCDiGetEnabledConfigList
NCDiGetEnabledConfigList:
/* 802ED95C 002E95BC  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802ED960 002E95C0  7C 08 02 A6 */	mflr r0
/* 802ED964 002E95C4  90 01 00 34 */	stw r0, 0x34(r1)
/* 802ED968 002E95C8  39 61 00 30 */	addi r11, r1, 0x30
/* 802ED96C 002E95CC  4B ED 97 B5 */	bl _savegpr_25
/* 802ED970 002E95D0  7C 7D 1B 78 */	mr r29, r3
/* 802ED974 002E95D4  7C 9E 23 78 */	mr r30, r4
/* 802ED978 002E95D8  7C BF 2B 78 */	mr r31, r5
/* 802ED97C 002E95DC  3B 60 00 00 */	li r27, 0
/* 802ED980 002E95E0  3B 40 00 00 */	li r26, 0
/* 802ED984 002E95E4  3B 20 00 00 */	li r25, 0
/* 802ED988 002E95E8  48 00 02 E5 */	bl LockRight
/* 802ED98C 002E95EC  3C 60 80 44 */	lis r3, lbl_80445B4C@ha
/* 802ED990 002E95F0  38 80 00 00 */	li r4, 0
/* 802ED994 002E95F4  38 63 5B 4C */	addi r3, r3, lbl_80445B4C@l
/* 802ED998 002E95F8  38 A0 00 03 */	li r5, 3
/* 802ED99C 002E95FC  48 00 01 3D */	bl ExecConfigCommand
/* 802ED9A0 002E9600  2C 03 00 00 */	cmpwi r3, 0
/* 802ED9A4 002E9604  7C 7C 1B 78 */	mr r28, r3
/* 802ED9A8 002E9608  40 82 00 E4 */	bne lbl_802EDA8C
/* 802ED9AC 002E960C  80 8D AF 34 */	lwz r4, lbl_806401F4-_SDA_BASE_(r13)
/* 802ED9B0 002E9610  38 C0 00 00 */	li r6, 0
/* 802ED9B4 002E9614  38 60 00 01 */	li r3, 1
/* 802ED9B8 002E9618  88 A4 00 08 */	lbz r5, 8(r4)
/* 802ED9BC 002E961C  54 A0 06 31 */	rlwinm. r0, r5, 0, 0x18, 0x18
/* 802ED9C0 002E9620  41 82 00 34 */	beq lbl_802ED9F4
/* 802ED9C4 002E9624  54 A0 07 FF */	clrlwi. r0, r5, 0x1f
/* 802ED9C8 002E9628  41 82 00 0C */	beq lbl_802ED9D4
/* 802ED9CC 002E962C  7C 7B 30 30 */	slw r27, r3, r6
/* 802ED9D0 002E9630  48 00 00 24 */	b lbl_802ED9F4
lbl_802ED9D4:
/* 802ED9D4 002E9634  88 04 07 CA */	lbz r0, 0x7ca(r4)
/* 802ED9D8 002E9638  28 00 00 01 */	cmplwi r0, 1
/* 802ED9DC 002E963C  41 82 00 08 */	beq lbl_802ED9E4
/* 802ED9E0 002E9640  7C 7A 30 30 */	slw r26, r3, r6
lbl_802ED9E4:
/* 802ED9E4 002E9644  88 04 07 CA */	lbz r0, 0x7ca(r4)
/* 802ED9E8 002E9648  28 00 00 01 */	cmplwi r0, 1
/* 802ED9EC 002E964C  40 82 00 08 */	bne lbl_802ED9F4
/* 802ED9F0 002E9650  7C 79 30 30 */	slw r25, r3, r6
lbl_802ED9F4:
/* 802ED9F4 002E9654  88 A4 09 24 */	lbz r5, 0x924(r4)
/* 802ED9F8 002E9658  38 C0 00 01 */	li r6, 1
/* 802ED9FC 002E965C  54 A0 06 31 */	rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EDA00 002E9660  41 82 00 40 */	beq lbl_802EDA40
/* 802EDA04 002E9664  54 A0 07 FF */	clrlwi. r0, r5, 0x1f
/* 802EDA08 002E9668  41 82 00 10 */	beq lbl_802EDA18
/* 802EDA0C 002E966C  7C 60 30 30 */	slw r0, r3, r6
/* 802EDA10 002E9670  7F 7B 03 78 */	or r27, r27, r0
/* 802EDA14 002E9674  48 00 00 2C */	b lbl_802EDA40
lbl_802EDA18:
/* 802EDA18 002E9678  88 04 10 E6 */	lbz r0, 0x10e6(r4)
/* 802EDA1C 002E967C  28 00 00 01 */	cmplwi r0, 1
/* 802EDA20 002E9680  41 82 00 0C */	beq lbl_802EDA2C
/* 802EDA24 002E9684  7C 60 30 30 */	slw r0, r3, r6
/* 802EDA28 002E9688  7F 5A 03 78 */	or r26, r26, r0
lbl_802EDA2C:
/* 802EDA2C 002E968C  88 04 10 E6 */	lbz r0, 0x10e6(r4)
/* 802EDA30 002E9690  28 00 00 01 */	cmplwi r0, 1
/* 802EDA34 002E9694  40 82 00 0C */	bne lbl_802EDA40
/* 802EDA38 002E9698  7C 60 30 30 */	slw r0, r3, r6
/* 802EDA3C 002E969C  7F 39 03 78 */	or r25, r25, r0
lbl_802EDA40:
/* 802EDA40 002E96A0  88 A4 12 40 */	lbz r5, 0x1240(r4)
/* 802EDA44 002E96A4  38 C0 00 02 */	li r6, 2
/* 802EDA48 002E96A8  54 A0 06 31 */	rlwinm. r0, r5, 0, 0x18, 0x18
/* 802EDA4C 002E96AC  41 82 00 40 */	beq lbl_802EDA8C
/* 802EDA50 002E96B0  54 A0 07 FF */	clrlwi. r0, r5, 0x1f
/* 802EDA54 002E96B4  41 82 00 10 */	beq lbl_802EDA64
/* 802EDA58 002E96B8  7C 60 30 30 */	slw r0, r3, r6
/* 802EDA5C 002E96BC  7F 7B 03 78 */	or r27, r27, r0
/* 802EDA60 002E96C0  48 00 00 2C */	b lbl_802EDA8C
lbl_802EDA64:
/* 802EDA64 002E96C4  88 04 1A 02 */	lbz r0, 0x1a02(r4)
/* 802EDA68 002E96C8  28 00 00 01 */	cmplwi r0, 1
/* 802EDA6C 002E96CC  41 82 00 0C */	beq lbl_802EDA78
/* 802EDA70 002E96D0  7C 60 30 30 */	slw r0, r3, r6
/* 802EDA74 002E96D4  7F 5A 03 78 */	or r26, r26, r0
lbl_802EDA78:
/* 802EDA78 002E96D8  88 04 1A 02 */	lbz r0, 0x1a02(r4)
/* 802EDA7C 002E96DC  28 00 00 01 */	cmplwi r0, 1
/* 802EDA80 002E96E0  40 82 00 0C */	bne lbl_802EDA8C
/* 802EDA84 002E96E4  7C 60 30 30 */	slw r0, r3, r6
/* 802EDA88 002E96E8  7F 39 03 78 */	or r25, r25, r0
lbl_802EDA8C:
/* 802EDA8C 002E96EC  3C 60 80 58 */	lis r3, lbl_80579060@ha
/* 802EDA90 002E96F0  38 63 90 60 */	addi r3, r3, lbl_80579060@l
/* 802EDA94 002E96F4  4B F8 1F 91 */	bl OSUnlockMutex
/* 802EDA98 002E96F8  2C 1D 00 00 */	cmpwi r29, 0
/* 802EDA9C 002E96FC  41 82 00 08 */	beq lbl_802EDAA4
/* 802EDAA0 002E9700  93 7D 00 00 */	stw r27, 0(r29)
lbl_802EDAA4:
/* 802EDAA4 002E9704  2C 1E 00 00 */	cmpwi r30, 0
/* 802EDAA8 002E9708  41 82 00 08 */	beq lbl_802EDAB0
/* 802EDAAC 002E970C  93 5E 00 00 */	stw r26, 0(r30)
lbl_802EDAB0:
/* 802EDAB0 002E9710  2C 1F 00 00 */	cmpwi r31, 0
/* 802EDAB4 002E9714  41 82 00 08 */	beq lbl_802EDABC
/* 802EDAB8 002E9718  93 3F 00 00 */	stw r25, 0(r31)
lbl_802EDABC:
/* 802EDABC 002E971C  39 61 00 30 */	addi r11, r1, 0x30
/* 802EDAC0 002E9720  7F 83 E3 78 */	mr r3, r28
/* 802EDAC4 002E9724  4B ED 96 A9 */	bl _restgpr_25
/* 802EDAC8 002E9728  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802EDACC 002E972C  7C 08 03 A6 */	mtlr r0
/* 802EDAD0 002E9730  38 21 00 30 */	addi r1, r1, 0x30
/* 802EDAD4 002E9734  4E 80 00 20 */	blr

.global ExecConfigCommand
ExecConfigCommand:
/* 802EDAD8 002E9738  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802EDADC 002E973C  7C 08 02 A6 */	mflr r0
/* 802EDAE0 002E9740  90 01 00 24 */	stw r0, 0x24(r1)
/* 802EDAE4 002E9744  39 61 00 20 */	addi r11, r1, 0x20
/* 802EDAE8 002E9748  4B ED 96 41 */	bl _savegpr_27
/* 802EDAEC 002E974C  3F E0 80 58 */	lis r31, lbl_80579060@ha
/* 802EDAF0 002E9750  7C 9B 23 78 */	mr r27, r4
/* 802EDAF4 002E9754  7C BC 2B 78 */	mr r28, r5
/* 802EDAF8 002E9758  3B C0 00 00 */	li r30, 0
/* 802EDAFC 002E975C  3B FF 90 60 */	addi r31, r31, lbl_80579060@l
/* 802EDB00 002E9760  4B F8 37 F9 */	bl OSGetCurrentThread
/* 802EDB04 002E9764  2C 03 00 00 */	cmpwi r3, 0
/* 802EDB08 002E9768  40 82 00 0C */	bne lbl_802EDB14
/* 802EDB0C 002E976C  38 60 FF FB */	li r3, -5
/* 802EDB10 002E9770  48 00 01 44 */	b lbl_802EDC54
lbl_802EDB14:
/* 802EDB14 002E9774  48 00 01 59 */	bl LockRight
/* 802EDB18 002E9778  3C 60 80 44 */	lis r3, lbl_80445B38@ha
/* 802EDB1C 002E977C  38 80 00 00 */	li r4, 0
/* 802EDB20 002E9780  38 63 5B 38 */	addi r3, r3, lbl_80445B38@l
/* 802EDB24 002E9784  4B FB 56 35 */	bl IOS_Open
/* 802EDB28 002E9788  2C 03 00 00 */	cmpwi r3, 0
/* 802EDB2C 002E978C  7C 7D 1B 78 */	mr r29, r3
/* 802EDB30 002E9790  40 80 00 1C */	bge lbl_802EDB4C
/* 802EDB34 002E9794  2C 03 FF FA */	cmpwi r3, -6
/* 802EDB38 002E9798  40 82 00 0C */	bne lbl_802EDB44
/* 802EDB3C 002E979C  3B C0 FF F8 */	li r30, -8
/* 802EDB40 002E97A0  48 00 01 08 */	b lbl_802EDC48
lbl_802EDB44:
/* 802EDB44 002E97A4  3B C0 FF FE */	li r30, -2
/* 802EDB48 002E97A8  48 00 01 00 */	b lbl_802EDC48
lbl_802EDB4C:
/* 802EDB4C 002E97AC  80 CD AF 34 */	lwz r6, lbl_806401F4-_SDA_BASE_(r13)
/* 802EDB50 002E97B0  2C 1C 00 05 */	cmpwi r28, 5
/* 802EDB54 002E97B4  38 9F 00 40 */	addi r4, r31, 0x40
/* 802EDB58 002E97B8  38 7F 00 20 */	addi r3, r31, 0x20
/* 802EDB5C 002E97BC  38 A0 1B 5C */	li r5, 0x1b5c
/* 802EDB60 002E97C0  38 00 00 20 */	li r0, 0x20
/* 802EDB64 002E97C4  90 DF 00 40 */	stw r6, 0x40(r31)
/* 802EDB68 002E97C8  90 A4 00 04 */	stw r5, 4(r4)
/* 802EDB6C 002E97CC  90 64 00 08 */	stw r3, 8(r4)
/* 802EDB70 002E97D0  90 04 00 0C */	stw r0, 0xc(r4)
/* 802EDB74 002E97D4  41 82 00 24 */	beq lbl_802EDB98
/* 802EDB78 002E97D8  40 80 00 14 */	bge lbl_802EDB8C
/* 802EDB7C 002E97DC  2C 1C 00 03 */	cmpwi r28, 3
/* 802EDB80 002E97E0  41 82 00 18 */	beq lbl_802EDB98
/* 802EDB84 002E97E4  40 80 00 68 */	bge lbl_802EDBEC
/* 802EDB88 002E97E8  48 00 00 AC */	b lbl_802EDC34
lbl_802EDB8C:
/* 802EDB8C 002E97EC  2C 1C 00 07 */	cmpwi r28, 7
/* 802EDB90 002E97F0  40 80 00 A4 */	bge lbl_802EDC34
/* 802EDB94 002E97F4  48 00 00 58 */	b lbl_802EDBEC
lbl_802EDB98:
/* 802EDB98 002E97F8  7F A3 EB 78 */	mr r3, r29
/* 802EDB9C 002E97FC  7F 84 E3 78 */	mr r4, r28
/* 802EDBA0 002E9800  38 FF 00 40 */	addi r7, r31, 0x40
/* 802EDBA4 002E9804  38 A0 00 00 */	li r5, 0
/* 802EDBA8 002E9808  38 C0 00 02 */	li r6, 2
/* 802EDBAC 002E980C  4B FB 62 95 */	bl IOS_Ioctlv
/* 802EDBB0 002E9810  2C 03 00 00 */	cmpwi r3, 0
/* 802EDBB4 002E9814  40 80 00 0C */	bge lbl_802EDBC0
/* 802EDBB8 002E9818  3B C0 FF FE */	li r30, -2
/* 802EDBBC 002E981C  48 00 00 78 */	b lbl_802EDC34
lbl_802EDBC0:
/* 802EDBC0 002E9820  83 DF 00 20 */	lwz r30, 0x20(r31)
/* 802EDBC4 002E9824  2C 1E 00 00 */	cmpwi r30, 0
/* 802EDBC8 002E9828  40 82 00 6C */	bne lbl_802EDC34
/* 802EDBCC 002E982C  38 00 00 00 */	li r0, 0
/* 802EDBD0 002E9830  7C 1B 00 40 */	cmplw r27, r0
/* 802EDBD4 002E9834  41 82 00 60 */	beq lbl_802EDC34
/* 802EDBD8 002E9838  80 8D AF 34 */	lwz r4, lbl_806401F4-_SDA_BASE_(r13)
/* 802EDBDC 002E983C  7F 63 DB 78 */	mr r3, r27
/* 802EDBE0 002E9840  38 A0 1B 5C */	li r5, 0x1b5c
/* 802EDBE4 002E9844  4B D1 64 1D */	bl memcpy
/* 802EDBE8 002E9848  48 00 00 4C */	b lbl_802EDC34
lbl_802EDBEC:
/* 802EDBEC 002E984C  38 00 00 00 */	li r0, 0
/* 802EDBF0 002E9850  7C 1B 00 40 */	cmplw r27, r0
/* 802EDBF4 002E9854  41 82 00 14 */	beq lbl_802EDC08
/* 802EDBF8 002E9858  80 6D AF 34 */	lwz r3, lbl_806401F4-_SDA_BASE_(r13)
/* 802EDBFC 002E985C  7F 64 DB 78 */	mr r4, r27
/* 802EDC00 002E9860  38 A0 1B 5C */	li r5, 0x1b5c
/* 802EDC04 002E9864  4B D1 63 FD */	bl memcpy
lbl_802EDC08:
/* 802EDC08 002E9868  7F A3 EB 78 */	mr r3, r29
/* 802EDC0C 002E986C  7F 84 E3 78 */	mr r4, r28
/* 802EDC10 002E9870  38 FF 00 40 */	addi r7, r31, 0x40
/* 802EDC14 002E9874  38 A0 00 01 */	li r5, 1
/* 802EDC18 002E9878  38 C0 00 01 */	li r6, 1
/* 802EDC1C 002E987C  4B FB 62 25 */	bl IOS_Ioctlv
/* 802EDC20 002E9880  2C 03 00 00 */	cmpwi r3, 0
/* 802EDC24 002E9884  40 80 00 0C */	bge lbl_802EDC30
/* 802EDC28 002E9888  3B C0 FF FE */	li r30, -2
/* 802EDC2C 002E988C  48 00 00 08 */	b lbl_802EDC34
lbl_802EDC30:
/* 802EDC30 002E9890  83 DF 00 20 */	lwz r30, 0x20(r31)
lbl_802EDC34:
/* 802EDC34 002E9894  7F A3 EB 78 */	mr r3, r29
/* 802EDC38 002E9898  4B FB 57 01 */	bl IOS_Close
/* 802EDC3C 002E989C  2C 03 00 00 */	cmpwi r3, 0
/* 802EDC40 002E98A0  40 80 00 08 */	bge lbl_802EDC48
/* 802EDC44 002E98A4  3B C0 FF FF */	li r30, -1
lbl_802EDC48:
/* 802EDC48 002E98A8  38 7F 00 00 */	addi r3, r31, 0
/* 802EDC4C 002E98AC  4B F8 1D D9 */	bl OSUnlockMutex
/* 802EDC50 002E98B0  7F C3 F3 78 */	mr r3, r30
lbl_802EDC54:
/* 802EDC54 002E98B4  39 61 00 20 */	addi r11, r1, 0x20
/* 802EDC58 002E98B8  4B ED 95 1D */	bl _restgpr_27
/* 802EDC5C 002E98BC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802EDC60 002E98C0  7C 08 03 A6 */	mtlr r0
/* 802EDC64 002E98C4  38 21 00 20 */	addi r1, r1, 0x20
/* 802EDC68 002E98C8  4E 80 00 20 */	blr

.global LockRight
LockRight:
/* 802EDC6C 002E98CC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802EDC70 002E98D0  7C 08 02 A6 */	mflr r0
/* 802EDC74 002E98D4  90 01 00 24 */	stw r0, 0x24(r1)
/* 802EDC78 002E98D8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802EDC7C 002E98DC  3F E0 80 58 */	lis r31, lbl_80579060@ha
/* 802EDC80 002E98E0  3B FF 90 60 */	addi r31, r31, lbl_80579060@l
/* 802EDC84 002E98E4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802EDC88 002E98E8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802EDC8C 002E98EC  4B F8 0A D1 */	bl OSDisableInterrupts
/* 802EDC90 002E98F0  80 0D AF 30 */	lwz r0, lbl_806401F0-_SDA_BASE_(r13)
/* 802EDC94 002E98F4  7C 7E 1B 78 */	mr r30, r3
/* 802EDC98 002E98F8  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802EDC9C 002E98FC  40 82 00 94 */	bne lbl_802EDD30
/* 802EDCA0 002E9900  80 6D 8B E8 */	lwz r3, lbl_8063DEA8-_SDA_BASE_(r13)
/* 802EDCA4 002E9904  4B F7 B9 AD */	bl OSRegisterVersion
/* 802EDCA8 002E9908  38 7F 00 00 */	addi r3, r31, 0
/* 802EDCAC 002E990C  4B F8 1C 65 */	bl OSInitMutex
/* 802EDCB0 002E9910  4B FB 4C 45 */	bl IPCGetBufferLo
/* 802EDCB4 002E9914  38 03 00 1F */	addi r0, r3, 0x1f
/* 802EDCB8 002E9918  54 1D 00 34 */	rlwinm r29, r0, 0, 0, 0x1a
/* 802EDCBC 002E991C  4B FB 4C 31 */	bl IPCGetBufferHi
/* 802EDCC0 002E9920  7C 1D 18 50 */	subf r0, r29, r3
/* 802EDCC4 002E9924  28 00 1B 60 */	cmplwi r0, 0x1b60
/* 802EDCC8 002E9928  40 80 00 20 */	bge lbl_802EDCE8
/* 802EDCCC 002E992C  3C 60 80 44 */	lis r3, lbl_80445B68@ha
/* 802EDCD0 002E9930  3C A0 80 44 */	lis r5, lbl_80445B74@ha
/* 802EDCD4 002E9934  38 63 5B 68 */	addi r3, r3, lbl_80445B68@l
/* 802EDCD8 002E9938  38 80 05 A8 */	li r4, 0x5a8
/* 802EDCDC 002E993C  38 A5 5B 74 */	addi r5, r5, lbl_80445B74@l
/* 802EDCE0 002E9940  4C C6 31 82 */	crclr 6
/* 802EDCE4 002E9944  4B F7 D7 B9 */	bl OSPanic
lbl_802EDCE8:
/* 802EDCE8 002E9948  38 7D 1B 60 */	addi r3, r29, 0x1b60
/* 802EDCEC 002E994C  4B FB 4C 11 */	bl IPCSetBufferLo
/* 802EDCF0 002E9950  93 AD AF 34 */	stw r29, lbl_806401F4-_SDA_BASE_(r13)
/* 802EDCF4 002E9954  7F A3 EB 78 */	mr r3, r29
/* 802EDCF8 002E9958  38 80 00 00 */	li r4, 0
/* 802EDCFC 002E995C  38 A0 1B 60 */	li r5, 0x1b60
/* 802EDD00 002E9960  4B D1 64 05 */	bl memset
/* 802EDD04 002E9964  38 7F 00 20 */	addi r3, r31, 0x20
/* 802EDD08 002E9968  38 80 00 00 */	li r4, 0
/* 802EDD0C 002E996C  38 A0 00 20 */	li r5, 0x20
/* 802EDD10 002E9970  4B D1 63 F5 */	bl memset
/* 802EDD14 002E9974  38 7F 00 40 */	addi r3, r31, 0x40
/* 802EDD18 002E9978  38 80 00 00 */	li r4, 0
/* 802EDD1C 002E997C  38 A0 00 20 */	li r5, 0x20
/* 802EDD20 002E9980  4B D1 63 E5 */	bl memset
/* 802EDD24 002E9984  80 0D AF 30 */	lwz r0, lbl_806401F0-_SDA_BASE_(r13)
/* 802EDD28 002E9988  60 00 00 01 */	ori r0, r0, 1
/* 802EDD2C 002E998C  90 0D AF 30 */	stw r0, lbl_806401F0-_SDA_BASE_(r13)
lbl_802EDD30:
/* 802EDD30 002E9990  7F C3 F3 78 */	mr r3, r30
/* 802EDD34 002E9994  4B F8 0A 51 */	bl OSRestoreInterrupts
/* 802EDD38 002E9998  38 7F 00 00 */	addi r3, r31, 0
/* 802EDD3C 002E999C  4B F8 1C 0D */	bl OSLockMutex
/* 802EDD40 002E99A0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802EDD44 002E99A4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802EDD48 002E99A8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802EDD4C 002E99AC  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802EDD50 002E99B0  7C 08 03 A6 */	mtlr r0
/* 802EDD54 002E99B4  38 21 00 20 */	addi r1, r1, 0x20
/* 802EDD58 002E99B8  4E 80 00 20 */	blr