summaryrefslogtreecommitdiff
path: root/asm/SDK/BTE/btm_pm.s
blob: 1c93b8b2ba92b6400cce44f0656827c8bacf7cdc (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
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
.include "macros.inc"

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

.global BTM_PmRegister
BTM_PmRegister:
/* 802C8DEC 002C4A4C  54 60 07 7B */	rlwinm. r0, r3, 0, 0x1d, 0x1d
/* 802C8DF0 002C4A50  41 82 00 38 */	beq lbl_802C8E28
/* 802C8DF4 002C4A54  88 04 00 00 */	lbz r0, 0(r4)
/* 802C8DF8 002C4A58  28 00 00 02 */	cmplwi r0, 2
/* 802C8DFC 002C4A5C  41 80 00 0C */	blt lbl_802C8E08
/* 802C8E00 002C4A60  38 60 00 05 */	li r3, 5
/* 802C8E04 002C4A64  4E 80 00 20 */	blr
lbl_802C8E08:
/* 802C8E08 002C4A68  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C8E0C 002C4A6C  54 00 1D 78 */	rlwinm r0, r0, 3, 0x15, 0x1c
/* 802C8E10 002C4A70  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C8E14 002C4A74  38 A0 00 00 */	li r5, 0
/* 802C8E18 002C4A78  7C 83 02 14 */	add r4, r3, r0
/* 802C8E1C 002C4A7C  98 A4 05 58 */	stb r5, 0x558(r4)
/* 802C8E20 002C4A80  38 60 00 00 */	li r3, 0
/* 802C8E24 002C4A84  4E 80 00 20 */	blr
lbl_802C8E28:
/* 802C8E28 002C4A88  3C C0 80 57 */	lis r6, lbl_80568B78@ha
/* 802C8E2C 002C4A8C  38 00 00 02 */	li r0, 2
/* 802C8E30 002C4A90  38 C6 8B 78 */	addi r6, r6, lbl_80568B78@l
/* 802C8E34 002C4A94  38 E0 00 00 */	li r7, 0
/* 802C8E38 002C4A98  7C 09 03 A6 */	mtctr r0
lbl_802C8E3C:
/* 802C8E3C 002C4A9C  88 06 05 58 */	lbz r0, 0x558(r6)
/* 802C8E40 002C4AA0  2C 00 00 00 */	cmpwi r0, 0
/* 802C8E44 002C4AA4  40 82 00 50 */	bne lbl_802C8E94
/* 802C8E48 002C4AA8  54 60 07 BD */	rlwinm. r0, r3, 0, 0x1e, 0x1e
/* 802C8E4C 002C4AAC  41 82 00 28 */	beq lbl_802C8E74
/* 802C8E50 002C4AB0  2C 05 00 00 */	cmpwi r5, 0
/* 802C8E54 002C4AB4  40 82 00 0C */	bne lbl_802C8E60
/* 802C8E58 002C4AB8  38 60 00 05 */	li r3, 5
/* 802C8E5C 002C4ABC  4E 80 00 20 */	blr
lbl_802C8E60:
/* 802C8E60 002C4AC0  3C C0 80 57 */	lis r6, lbl_80568B78@ha
/* 802C8E64 002C4AC4  54 E0 18 38 */	slwi r0, r7, 3
/* 802C8E68 002C4AC8  38 C6 8B 78 */	addi r6, r6, lbl_80568B78@l
/* 802C8E6C 002C4ACC  7C C6 02 14 */	add r6, r6, r0
/* 802C8E70 002C4AD0  90 A6 05 54 */	stw r5, 0x554(r6)
lbl_802C8E74:
/* 802C8E74 002C4AD4  3C A0 80 57 */	lis r5, lbl_80568B78@ha
/* 802C8E78 002C4AD8  54 E0 18 38 */	slwi r0, r7, 3
/* 802C8E7C 002C4ADC  38 A5 8B 78 */	addi r5, r5, lbl_80568B78@l
/* 802C8E80 002C4AE0  7C A5 02 14 */	add r5, r5, r0
/* 802C8E84 002C4AE4  98 65 05 58 */	stb r3, 0x558(r5)
/* 802C8E88 002C4AE8  38 60 00 00 */	li r3, 0
/* 802C8E8C 002C4AEC  98 E4 00 00 */	stb r7, 0(r4)
/* 802C8E90 002C4AF0  4E 80 00 20 */	blr
lbl_802C8E94:
/* 802C8E94 002C4AF4  38 C6 00 08 */	addi r6, r6, 8
/* 802C8E98 002C4AF8  38 E7 00 01 */	addi r7, r7, 1
/* 802C8E9C 002C4AFC  42 00 FF A0 */	bdnz lbl_802C8E3C
/* 802C8EA0 002C4B00  38 60 00 03 */	li r3, 3
/* 802C8EA4 002C4B04  4E 80 00 20 */	blr

.global BTM_SetPowerMode
BTM_SetPowerMode:
/* 802C8EA8 002C4B08  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C8EAC 002C4B0C  7C 08 02 A6 */	mflr r0
/* 802C8EB0 002C4B10  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C8EB4 002C4B14  39 61 00 20 */	addi r11, r1, 0x20
/* 802C8EB8 002C4B18  4B EF E2 6D */	bl _savegpr_26
/* 802C8EBC 002C4B1C  28 03 00 02 */	cmplwi r3, 2
/* 802C8EC0 002C4B20  7C 7B 1B 78 */	mr r27, r3
/* 802C8EC4 002C4B24  7C 9A 23 78 */	mr r26, r4
/* 802C8EC8 002C4B28  7C BC 2B 78 */	mr r28, r5
/* 802C8ECC 002C4B2C  41 80 00 08 */	blt lbl_802C8ED4
/* 802C8ED0 002C4B30  3B 60 00 80 */	li r27, 0x80
lbl_802C8ED4:
/* 802C8ED4 002C4B34  2C 05 00 00 */	cmpwi r5, 0
/* 802C8ED8 002C4B38  40 82 00 0C */	bne lbl_802C8EE4
/* 802C8EDC 002C4B3C  38 60 00 05 */	li r3, 5
/* 802C8EE0 002C4B40  48 00 01 80 */	b lbl_802C9060
lbl_802C8EE4:
/* 802C8EE4 002C4B44  88 05 00 08 */	lbz r0, 8(r5)
/* 802C8EE8 002C4B48  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C8EEC 002C4B4C  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C8EF0 002C4B50  3B A0 00 00 */	li r29, 0
/* 802C8EF4 002C4B54  54 1F 07 34 */	rlwinm r31, r0, 0, 0x1c, 0x1a
/* 802C8EF8 002C4B58  3B C3 00 34 */	addi r30, r3, 0x34
lbl_802C8EFC:
/* 802C8EFC 002C4B5C  88 1E 01 19 */	lbz r0, 0x119(r30)
/* 802C8F00 002C4B60  2C 00 00 00 */	cmpwi r0, 0
/* 802C8F04 002C4B64  41 82 00 1C */	beq lbl_802C8F20
/* 802C8F08 002C4B68  7F 44 D3 78 */	mr r4, r26
/* 802C8F0C 002C4B6C  38 7E 00 08 */	addi r3, r30, 8
/* 802C8F10 002C4B70  38 A0 00 06 */	li r5, 6
/* 802C8F14 002C4B74  4B F0 14 85 */	bl memcmp
/* 802C8F18 002C4B78  2C 03 00 00 */	cmpwi r3, 0
/* 802C8F1C 002C4B7C  41 82 00 14 */	beq lbl_802C8F30
lbl_802C8F20:
/* 802C8F20 002C4B80  3B BD 00 01 */	addi r29, r29, 1
/* 802C8F24 002C4B84  3B DE 01 1C */	addi r30, r30, 0x11c
/* 802C8F28 002C4B88  28 1D 00 04 */	cmplwi r29, 4
/* 802C8F2C 002C4B8C  41 80 FF D0 */	blt lbl_802C8EFC
lbl_802C8F30:
/* 802C8F30 002C4B90  57 BE 06 3E */	clrlwi r30, r29, 0x18
/* 802C8F34 002C4B94  2C 1E 00 04 */	cmpwi r30, 4
/* 802C8F38 002C4B98  40 82 00 0C */	bne lbl_802C8F44
/* 802C8F3C 002C4B9C  38 60 00 07 */	li r3, 7
/* 802C8F40 002C4BA0  48 00 01 20 */	b lbl_802C9060
lbl_802C8F44:
/* 802C8F44 002C4BA4  1C 1E 00 22 */	mulli r0, r30, 0x22
/* 802C8F48 002C4BA8  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C8F4C 002C4BAC  57 E3 06 3F */	clrlwi. r3, r31, 0x18
/* 802C8F50 002C4BB0  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C8F54 002C4BB4  7C 84 02 14 */	add r4, r4, r0
/* 802C8F58 002C4BB8  3B A4 04 CC */	addi r29, r4, 0x4cc
/* 802C8F5C 002C4BBC  41 82 00 30 */	beq lbl_802C8F8C
/* 802C8F60 002C4BC0  3B 43 FF FF */	addi r26, r3, -1
/* 802C8F64 002C4BC4  4B FF D9 FD */	bl BTM_ReadLocalFeatures
/* 802C8F68 002C4BC8  38 82 A4 78 */	addi r4, r2, lbl_80642A78-_SDA2_BASE_
/* 802C8F6C 002C4BCC  38 A2 A4 7C */	addi r5, r2, lbl_80642A7C-_SDA2_BASE_
/* 802C8F70 002C4BD0  7C 04 D0 AE */	lbzx r0, r4, r26
/* 802C8F74 002C4BD4  7C 85 D0 AE */	lbzx r4, r5, r26
/* 802C8F78 002C4BD8  7C 03 00 AE */	lbzx r0, r3, r0
/* 802C8F7C 002C4BDC  7C 80 00 39 */	and. r0, r4, r0
/* 802C8F80 002C4BE0  40 82 00 0C */	bne lbl_802C8F8C
/* 802C8F84 002C4BE4  38 60 00 04 */	li r3, 4
/* 802C8F88 002C4BE8  48 00 00 D8 */	b lbl_802C9060
lbl_802C8F8C:
/* 802C8F8C 002C4BEC  88 1D 00 20 */	lbz r0, 0x20(r29)
/* 802C8F90 002C4BF0  57 E3 06 3E */	clrlwi r3, r31, 0x18
/* 802C8F94 002C4BF4  7C 03 00 40 */	cmplw r3, r0
/* 802C8F98 002C4BF8  40 82 00 30 */	bne lbl_802C8FC8
/* 802C8F9C 002C4BFC  2C 03 00 00 */	cmpwi r3, 0
/* 802C8FA0 002C4C00  41 82 00 20 */	beq lbl_802C8FC0
/* 802C8FA4 002C4C04  A0 7D 00 1E */	lhz r3, 0x1e(r29)
/* 802C8FA8 002C4C08  A0 1C 00 00 */	lhz r0, 0(r28)
/* 802C8FAC 002C4C0C  7C 00 18 40 */	cmplw r0, r3
/* 802C8FB0 002C4C10  41 80 00 18 */	blt lbl_802C8FC8
/* 802C8FB4 002C4C14  A0 1C 00 02 */	lhz r0, 2(r28)
/* 802C8FB8 002C4C18  7C 00 18 40 */	cmplw r0, r3
/* 802C8FBC 002C4C1C  41 81 00 0C */	bgt lbl_802C8FC8
lbl_802C8FC0:
/* 802C8FC0 002C4C20  38 60 00 00 */	li r3, 0
/* 802C8FC4 002C4C24  48 00 00 9C */	b lbl_802C9060
lbl_802C8FC8:
/* 802C8FC8 002C4C28  28 1B 00 80 */	cmplwi r27, 0x80
/* 802C8FCC 002C4C2C  41 82 00 54 */	beq lbl_802C9020
/* 802C8FD0 002C4C30  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C8FD4 002C4C34  57 60 1D 78 */	rlwinm r0, r27, 3, 0x15, 0x1c
/* 802C8FD8 002C4C38  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C8FDC 002C4C3C  7C 63 02 14 */	add r3, r3, r0
/* 802C8FE0 002C4C40  88 03 05 58 */	lbz r0, 0x558(r3)
/* 802C8FE4 002C4C44  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802C8FE8 002C4C48  41 82 00 38 */	beq lbl_802C9020
/* 802C8FEC 002C4C4C  A0 9C 00 00 */	lhz r4, 0(r28)
/* 802C8FF0 002C4C50  1C BB 00 0A */	mulli r5, r27, 0xa
/* 802C8FF4 002C4C54  A0 7C 00 02 */	lhz r3, 2(r28)
/* 802C8FF8 002C4C58  38 00 00 01 */	li r0, 1
/* 802C8FFC 002C4C5C  7C 85 EB 6E */	sthux r4, r5, r29
/* 802C9000 002C4C60  B0 65 00 02 */	sth r3, 2(r5)
/* 802C9004 002C4C64  A0 9C 00 04 */	lhz r4, 4(r28)
/* 802C9008 002C4C68  A0 7C 00 06 */	lhz r3, 6(r28)
/* 802C900C 002C4C6C  B0 85 00 04 */	sth r4, 4(r5)
/* 802C9010 002C4C70  B0 65 00 06 */	sth r3, 6(r5)
/* 802C9014 002C4C74  A0 7C 00 08 */	lhz r3, 8(r28)
/* 802C9018 002C4C78  B0 65 00 08 */	sth r3, 8(r5)
/* 802C901C 002C4C7C  98 1D 00 21 */	stb r0, 0x21(r29)
lbl_802C9020:
/* 802C9020 002C4C80  88 1D 00 20 */	lbz r0, 0x20(r29)
/* 802C9024 002C4C84  28 00 00 01 */	cmplwi r0, 1
/* 802C9028 002C4C88  41 82 00 20 */	beq lbl_802C9048
/* 802C902C 002C4C8C  28 00 00 04 */	cmplwi r0, 4
/* 802C9030 002C4C90  41 82 00 18 */	beq lbl_802C9048
/* 802C9034 002C4C94  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C9038 002C4C98  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C903C 002C4C9C  88 03 05 64 */	lbz r0, 0x564(r3)
/* 802C9040 002C4CA0  28 00 00 04 */	cmplwi r0, 4
/* 802C9044 002C4CA4  41 82 00 0C */	beq lbl_802C9050
lbl_802C9048:
/* 802C9048 002C4CA8  38 60 00 0D */	li r3, 0xd
/* 802C904C 002C4CAC  48 00 00 14 */	b lbl_802C9060
lbl_802C9050:
/* 802C9050 002C4CB0  7F 63 DB 78 */	mr r3, r27
/* 802C9054 002C4CB4  7F C4 F3 78 */	mr r4, r30
/* 802C9058 002C4CB8  7F 85 E3 78 */	mr r5, r28
/* 802C905C 002C4CBC  48 00 05 19 */	bl btm_pm_snd_md_req
lbl_802C9060:
/* 802C9060 002C4CC0  39 61 00 20 */	addi r11, r1, 0x20
/* 802C9064 002C4CC4  4B EF E1 0D */	bl _restgpr_26
/* 802C9068 002C4CC8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C906C 002C4CCC  7C 08 03 A6 */	mtlr r0
/* 802C9070 002C4CD0  38 21 00 20 */	addi r1, r1, 0x20
/* 802C9074 002C4CD4  4E 80 00 20 */	blr

.global BTM_ReadPowerMode
BTM_ReadPowerMode:
/* 802C9078 002C4CD8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C907C 002C4CDC  7C 08 02 A6 */	mflr r0
/* 802C9080 002C4CE0  3C A0 80 57 */	lis r5, lbl_80568B78@ha
/* 802C9084 002C4CE4  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C9088 002C4CE8  38 A5 8B 78 */	addi r5, r5, lbl_80568B78@l
/* 802C908C 002C4CEC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802C9090 002C4CF0  3B E0 00 00 */	li r31, 0
/* 802C9094 002C4CF4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802C9098 002C4CF8  3B C5 00 34 */	addi r30, r5, 0x34
/* 802C909C 002C4CFC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802C90A0 002C4D00  7C 9D 23 78 */	mr r29, r4
/* 802C90A4 002C4D04  93 81 00 10 */	stw r28, 0x10(r1)
/* 802C90A8 002C4D08  7C 7C 1B 78 */	mr r28, r3
lbl_802C90AC:
/* 802C90AC 002C4D0C  88 1E 01 19 */	lbz r0, 0x119(r30)
/* 802C90B0 002C4D10  2C 00 00 00 */	cmpwi r0, 0
/* 802C90B4 002C4D14  41 82 00 1C */	beq lbl_802C90D0
/* 802C90B8 002C4D18  7F 84 E3 78 */	mr r4, r28
/* 802C90BC 002C4D1C  38 7E 00 08 */	addi r3, r30, 8
/* 802C90C0 002C4D20  38 A0 00 06 */	li r5, 6
/* 802C90C4 002C4D24  4B F0 12 D5 */	bl memcmp
/* 802C90C8 002C4D28  2C 03 00 00 */	cmpwi r3, 0
/* 802C90CC 002C4D2C  41 82 00 14 */	beq lbl_802C90E0
lbl_802C90D0:
/* 802C90D0 002C4D30  3B FF 00 01 */	addi r31, r31, 1
/* 802C90D4 002C4D34  3B DE 01 1C */	addi r30, r30, 0x11c
/* 802C90D8 002C4D38  28 1F 00 04 */	cmplwi r31, 4
/* 802C90DC 002C4D3C  41 80 FF D0 */	blt lbl_802C90AC
lbl_802C90E0:
/* 802C90E0 002C4D40  57 E0 06 3E */	clrlwi r0, r31, 0x18
/* 802C90E4 002C4D44  2C 00 00 04 */	cmpwi r0, 4
/* 802C90E8 002C4D48  40 82 00 0C */	bne lbl_802C90F4
/* 802C90EC 002C4D4C  38 60 00 07 */	li r3, 7
/* 802C90F0 002C4D50  48 00 00 20 */	b lbl_802C9110
lbl_802C90F4:
/* 802C90F4 002C4D54  1C 00 00 22 */	mulli r0, r0, 0x22
/* 802C90F8 002C4D58  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C90FC 002C4D5C  38 60 00 00 */	li r3, 0
/* 802C9100 002C4D60  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C9104 002C4D64  7C 84 02 14 */	add r4, r4, r0
/* 802C9108 002C4D68  88 04 04 EC */	lbz r0, 0x4ec(r4)
/* 802C910C 002C4D6C  98 1D 00 00 */	stb r0, 0(r29)
lbl_802C9110:
/* 802C9110 002C4D70  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C9114 002C4D74  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802C9118 002C4D78  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802C911C 002C4D7C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802C9120 002C4D80  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802C9124 002C4D84  7C 08 03 A6 */	mtlr r0
/* 802C9128 002C4D88  38 21 00 20 */	addi r1, r1, 0x20
/* 802C912C 002C4D8C  4E 80 00 20 */	blr

.global btm_pm_reset
btm_pm_reset:
/* 802C9130 002C4D90  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C9134 002C4D94  39 80 00 00 */	li r12, 0
/* 802C9138 002C4D98  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C913C 002C4D9C  88 03 05 65 */	lbz r0, 0x565(r3)
/* 802C9140 002C4DA0  28 00 00 80 */	cmplwi r0, 0x80
/* 802C9144 002C4DA4  41 82 00 1C */	beq lbl_802C9160
/* 802C9148 002C4DA8  54 00 1D 78 */	rlwinm r0, r0, 3, 0x15, 0x1c
/* 802C914C 002C4DAC  7C 63 02 14 */	add r3, r3, r0
/* 802C9150 002C4DB0  88 03 05 58 */	lbz r0, 0x558(r3)
/* 802C9154 002C4DB4  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 802C9158 002C4DB8  41 82 00 08 */	beq lbl_802C9160
/* 802C915C 002C4DBC  81 83 05 54 */	lwz r12, 0x554(r3)
lbl_802C9160:
/* 802C9160 002C4DC0  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C9164 002C4DC4  2C 0C 00 00 */	cmpwi r12, 0
/* 802C9168 002C4DC8  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C916C 002C4DCC  38 00 00 00 */	li r0, 0
/* 802C9170 002C4DD0  38 80 00 04 */	li r4, 4
/* 802C9174 002C4DD4  98 03 05 58 */	stb r0, 0x558(r3)
/* 802C9178 002C4DD8  98 83 05 64 */	stb r4, 0x564(r3)
/* 802C917C 002C4DDC  98 03 05 60 */	stb r0, 0x560(r3)
/* 802C9180 002C4DE0  4D 82 00 20 */	beqlr
/* 802C9184 002C4DE4  1C 04 01 1C */	mulli r0, r4, 0x11c
/* 802C9188 002C4DE8  38 80 00 05 */	li r4, 5
/* 802C918C 002C4DEC  38 A0 00 0C */	li r5, 0xc
/* 802C9190 002C4DF0  38 C0 00 00 */	li r6, 0
/* 802C9194 002C4DF4  7C 63 02 14 */	add r3, r3, r0
/* 802C9198 002C4DF8  38 63 00 3C */	addi r3, r3, 0x3c
/* 802C919C 002C4DFC  7D 89 03 A6 */	mtctr r12
/* 802C91A0 002C4E00  4E 80 04 20 */	bctr
/* 802C91A4 002C4E04  4E 80 00 20 */	blr

.global btm_pm_sm_alloc
btm_pm_sm_alloc:
/* 802C91A8 002C4E08  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802C91AC 002C4E0C  7C 08 02 A6 */	mflr r0
/* 802C91B0 002C4E10  38 80 00 00 */	li r4, 0
/* 802C91B4 002C4E14  38 A0 00 22 */	li r5, 0x22
/* 802C91B8 002C4E18  90 01 00 14 */	stw r0, 0x14(r1)
/* 802C91BC 002C4E1C  1C 03 00 22 */	mulli r0, r3, 0x22
/* 802C91C0 002C4E20  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C91C4 002C4E24  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802C91C8 002C4E28  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C91CC 002C4E2C  7C 63 02 14 */	add r3, r3, r0
/* 802C91D0 002C4E30  3B E3 04 CC */	addi r31, r3, 0x4cc
/* 802C91D4 002C4E34  7F E3 FB 78 */	mr r3, r31
/* 802C91D8 002C4E38  4B D3 AF 2D */	bl memset
/* 802C91DC 002C4E3C  38 00 00 00 */	li r0, 0
/* 802C91E0 002C4E40  98 1F 00 20 */	stb r0, 0x20(r31)
/* 802C91E4 002C4E44  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802C91E8 002C4E48  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802C91EC 002C4E4C  7C 08 03 A6 */	mtlr r0
/* 802C91F0 002C4E50  38 21 00 10 */	addi r1, r1, 0x10
/* 802C91F4 002C4E54  4E 80 00 20 */	blr

.global btm_pm_compare_modes
btm_pm_compare_modes:
/* 802C91F8 002C4E58  2C 03 00 00 */	cmpwi r3, 0
/* 802C91FC 002C4E5C  40 82 00 34 */	bne lbl_802C9230
/* 802C9200 002C4E60  A0 C4 00 00 */	lhz r6, 0(r4)
/* 802C9204 002C4E64  7C 83 23 78 */	mr r3, r4
/* 802C9208 002C4E68  A0 04 00 02 */	lhz r0, 2(r4)
/* 802C920C 002C4E6C  B0 C5 00 00 */	sth r6, 0(r5)
/* 802C9210 002C4E70  B0 05 00 02 */	sth r0, 2(r5)
/* 802C9214 002C4E74  A0 C4 00 04 */	lhz r6, 4(r4)
/* 802C9218 002C4E78  A0 04 00 06 */	lhz r0, 6(r4)
/* 802C921C 002C4E7C  B0 C5 00 04 */	sth r6, 4(r5)
/* 802C9220 002C4E80  B0 05 00 06 */	sth r0, 6(r5)
/* 802C9224 002C4E84  A0 04 00 08 */	lhz r0, 8(r4)
/* 802C9228 002C4E88  B0 05 00 08 */	sth r0, 8(r5)
/* 802C922C 002C4E8C  4E 80 00 20 */	blr
lbl_802C9230:
/* 802C9230 002C4E90  89 24 00 08 */	lbz r9, 8(r4)
/* 802C9234 002C4E94  2C 09 00 00 */	cmpwi r9, 0
/* 802C9238 002C4E98  41 82 00 10 */	beq lbl_802C9248
/* 802C923C 002C4E9C  89 03 00 08 */	lbz r8, 8(r3)
/* 802C9240 002C4EA0  2C 08 00 00 */	cmpwi r8, 0
/* 802C9244 002C4EA4  40 82 00 0C */	bne lbl_802C9250
lbl_802C9248:
/* 802C9248 002C4EA8  38 60 00 00 */	li r3, 0
/* 802C924C 002C4EAC  4E 80 00 20 */	blr
lbl_802C9250:
/* 802C9250 002C4EB0  55 00 06 F7 */	rlwinm. r0, r8, 0, 0x1b, 0x1b
/* 802C9254 002C4EB4  41 82 00 40 */	beq lbl_802C9294
/* 802C9258 002C4EB8  A0 83 00 00 */	lhz r4, 0(r3)
/* 802C925C 002C4EBC  A0 03 00 02 */	lhz r0, 2(r3)
/* 802C9260 002C4EC0  B0 85 00 00 */	sth r4, 0(r5)
/* 802C9264 002C4EC4  B0 05 00 02 */	sth r0, 2(r5)
/* 802C9268 002C4EC8  A0 83 00 04 */	lhz r4, 4(r3)
/* 802C926C 002C4ECC  A0 03 00 06 */	lhz r0, 6(r3)
/* 802C9270 002C4ED0  B0 85 00 04 */	sth r4, 4(r5)
/* 802C9274 002C4ED4  B0 05 00 06 */	sth r0, 6(r5)
/* 802C9278 002C4ED8  A0 03 00 08 */	lhz r0, 8(r3)
/* 802C927C 002C4EDC  7C A3 2B 78 */	mr r3, r5
/* 802C9280 002C4EE0  B0 05 00 08 */	sth r0, 8(r5)
/* 802C9284 002C4EE4  88 05 00 08 */	lbz r0, 8(r5)
/* 802C9288 002C4EE8  54 00 07 34 */	rlwinm r0, r0, 0, 0x1c, 0x1a
/* 802C928C 002C4EEC  98 05 00 08 */	stb r0, 8(r5)
/* 802C9290 002C4EF0  4E 80 00 20 */	blr
lbl_802C9294:
/* 802C9294 002C4EF4  55 20 06 F7 */	rlwinm. r0, r9, 0, 0x1b, 0x1b
/* 802C9298 002C4EF8  41 82 00 40 */	beq lbl_802C92D8
/* 802C929C 002C4EFC  A0 C4 00 00 */	lhz r6, 0(r4)
/* 802C92A0 002C4F00  7C A3 2B 78 */	mr r3, r5
/* 802C92A4 002C4F04  A0 04 00 02 */	lhz r0, 2(r4)
/* 802C92A8 002C4F08  B0 C5 00 00 */	sth r6, 0(r5)
/* 802C92AC 002C4F0C  B0 05 00 02 */	sth r0, 2(r5)
/* 802C92B0 002C4F10  A0 C4 00 04 */	lhz r6, 4(r4)
/* 802C92B4 002C4F14  A0 04 00 06 */	lhz r0, 6(r4)
/* 802C92B8 002C4F18  B0 C5 00 04 */	sth r6, 4(r5)
/* 802C92BC 002C4F1C  B0 05 00 06 */	sth r0, 6(r5)
/* 802C92C0 002C4F20  A0 04 00 08 */	lhz r0, 8(r4)
/* 802C92C4 002C4F24  B0 05 00 08 */	sth r0, 8(r5)
/* 802C92C8 002C4F28  88 05 00 08 */	lbz r0, 8(r5)
/* 802C92CC 002C4F2C  54 00 07 34 */	rlwinm r0, r0, 0, 0x1c, 0x1a
/* 802C92D0 002C4F30  98 05 00 08 */	stb r0, 8(r5)
/* 802C92D4 002C4F34  4E 80 00 20 */	blr
lbl_802C92D8:
/* 802C92D8 002C4F38  38 E8 FF FF */	addi r7, r8, -1
/* 802C92DC 002C4F3C  3C C0 80 40 */	lis r6, lbl_803FDDB8@ha
/* 802C92E0 002C4F40  54 E0 10 3A */	slwi r0, r7, 2
/* 802C92E4 002C4F44  7C 07 00 50 */	subf r0, r7, r0
/* 802C92E8 002C4F48  38 C6 DD B8 */	addi r6, r6, lbl_803FDDB8@l
/* 802C92EC 002C4F4C  7C E9 02 14 */	add r7, r9, r0
/* 802C92F0 002C4F50  38 07 FF FF */	addi r0, r7, -1
/* 802C92F4 002C4F54  54 00 06 3E */	clrlwi r0, r0, 0x18
/* 802C92F8 002C4F58  7C 06 00 AE */	lbzx r0, r6, r0
/* 802C92FC 002C4F5C  2C 00 00 02 */	cmpwi r0, 2
/* 802C9300 002C4F60  41 82 00 4C */	beq lbl_802C934C
/* 802C9304 002C4F64  40 80 00 10 */	bge lbl_802C9314
/* 802C9308 002C4F68  2C 00 00 01 */	cmpwi r0, 1
/* 802C930C 002C4F6C  40 80 00 14 */	bge lbl_802C9320
/* 802C9310 002C4F70  48 00 00 FC */	b lbl_802C940C
lbl_802C9314:
/* 802C9314 002C4F74  2C 00 00 04 */	cmpwi r0, 4
/* 802C9318 002C4F78  40 80 00 F4 */	bge lbl_802C940C
/* 802C931C 002C4F7C  48 00 00 60 */	b lbl_802C937C
lbl_802C9320:
/* 802C9320 002C4F80  A0 83 00 00 */	lhz r4, 0(r3)
/* 802C9324 002C4F84  A0 03 00 02 */	lhz r0, 2(r3)
/* 802C9328 002C4F88  B0 85 00 00 */	sth r4, 0(r5)
/* 802C932C 002C4F8C  B0 05 00 02 */	sth r0, 2(r5)
/* 802C9330 002C4F90  A0 83 00 04 */	lhz r4, 4(r3)
/* 802C9334 002C4F94  A0 03 00 06 */	lhz r0, 6(r3)
/* 802C9338 002C4F98  B0 85 00 04 */	sth r4, 4(r5)
/* 802C933C 002C4F9C  B0 05 00 06 */	sth r0, 6(r5)
/* 802C9340 002C4FA0  A0 03 00 08 */	lhz r0, 8(r3)
/* 802C9344 002C4FA4  B0 05 00 08 */	sth r0, 8(r5)
/* 802C9348 002C4FA8  4E 80 00 20 */	blr
lbl_802C934C:
/* 802C934C 002C4FAC  A0 C4 00 00 */	lhz r6, 0(r4)
/* 802C9350 002C4FB0  7C 83 23 78 */	mr r3, r4
/* 802C9354 002C4FB4  A0 04 00 02 */	lhz r0, 2(r4)
/* 802C9358 002C4FB8  B0 C5 00 00 */	sth r6, 0(r5)
/* 802C935C 002C4FBC  B0 05 00 02 */	sth r0, 2(r5)
/* 802C9360 002C4FC0  A0 C4 00 04 */	lhz r6, 4(r4)
/* 802C9364 002C4FC4  A0 04 00 06 */	lhz r0, 6(r4)
/* 802C9368 002C4FC8  B0 C5 00 04 */	sth r6, 4(r5)
/* 802C936C 002C4FCC  B0 05 00 06 */	sth r0, 6(r5)
/* 802C9370 002C4FD0  A0 04 00 08 */	lhz r0, 8(r4)
/* 802C9374 002C4FD4  B0 05 00 08 */	sth r0, 8(r5)
/* 802C9378 002C4FD8  4E 80 00 20 */	blr
lbl_802C937C:
/* 802C937C 002C4FDC  99 05 00 08 */	stb r8, 8(r5)
/* 802C9380 002C4FE0  A0 C4 00 00 */	lhz r6, 0(r4)
/* 802C9384 002C4FE4  A0 03 00 00 */	lhz r0, 0(r3)
/* 802C9388 002C4FE8  7C 00 30 40 */	cmplw r0, r6
/* 802C938C 002C4FEC  40 80 00 08 */	bge lbl_802C9394
/* 802C9390 002C4FF0  7C 06 03 78 */	mr r6, r0
lbl_802C9394:
/* 802C9394 002C4FF4  B0 C5 00 00 */	sth r6, 0(r5)
/* 802C9398 002C4FF8  A0 E4 00 02 */	lhz r7, 2(r4)
/* 802C939C 002C4FFC  A0 03 00 02 */	lhz r0, 2(r3)
/* 802C93A0 002C5000  7C 00 38 40 */	cmplw r0, r7
/* 802C93A4 002C5004  40 81 00 08 */	ble lbl_802C93AC
/* 802C93A8 002C5008  7C 07 03 78 */	mr r7, r0
lbl_802C93AC:
/* 802C93AC 002C500C  A0 C5 00 00 */	lhz r6, 0(r5)
/* 802C93B0 002C5010  54 E0 04 3E */	clrlwi r0, r7, 0x10
/* 802C93B4 002C5014  B0 E5 00 02 */	sth r7, 2(r5)
/* 802C93B8 002C5018  7C 06 00 40 */	cmplw r6, r0
/* 802C93BC 002C501C  40 80 00 0C */	bge lbl_802C93C8
/* 802C93C0 002C5020  38 60 00 00 */	li r3, 0
/* 802C93C4 002C5024  4E 80 00 20 */	blr
lbl_802C93C8:
/* 802C93C8 002C5028  88 05 00 08 */	lbz r0, 8(r5)
/* 802C93CC 002C502C  28 00 00 02 */	cmplwi r0, 2
/* 802C93D0 002C5030  40 82 00 34 */	bne lbl_802C9404
/* 802C93D4 002C5034  A0 C4 00 04 */	lhz r6, 4(r4)
/* 802C93D8 002C5038  A0 03 00 04 */	lhz r0, 4(r3)
/* 802C93DC 002C503C  7C 00 30 40 */	cmplw r0, r6
/* 802C93E0 002C5040  40 81 00 08 */	ble lbl_802C93E8
/* 802C93E4 002C5044  7C 06 03 78 */	mr r6, r0
lbl_802C93E8:
/* 802C93E8 002C5048  B0 C5 00 04 */	sth r6, 4(r5)
/* 802C93EC 002C504C  A0 84 00 06 */	lhz r4, 6(r4)
/* 802C93F0 002C5050  A0 03 00 06 */	lhz r0, 6(r3)
/* 802C93F4 002C5054  7C 00 20 40 */	cmplw r0, r4
/* 802C93F8 002C5058  40 81 00 08 */	ble lbl_802C9400
/* 802C93FC 002C505C  7C 04 03 78 */	mr r4, r0
lbl_802C9400:
/* 802C9400 002C5060  B0 85 00 06 */	sth r4, 6(r5)
lbl_802C9404:
/* 802C9404 002C5064  7C A3 2B 78 */	mr r3, r5
/* 802C9408 002C5068  4E 80 00 20 */	blr
lbl_802C940C:
/* 802C940C 002C506C  38 60 00 00 */	li r3, 0
/* 802C9410 002C5070  4E 80 00 20 */	blr

.global btm_pm_get_set_mode
btm_pm_get_set_mode:
/* 802C9414 002C5074  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C9418 002C5078  7C 08 02 A6 */	mflr r0
/* 802C941C 002C507C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C9420 002C5080  39 61 00 20 */	addi r11, r1, 0x20
/* 802C9424 002C5084  4B EF DD 01 */	bl _savegpr_26
/* 802C9428 002C5088  2C 05 00 00 */	cmpwi r5, 0
/* 802C942C 002C508C  7C 7A 1B 78 */	mr r26, r3
/* 802C9430 002C5090  7C BB 2B 78 */	mr r27, r5
/* 802C9434 002C5094  7C DC 33 78 */	mr r28, r6
/* 802C9438 002C5098  38 E0 00 00 */	li r7, 0
/* 802C943C 002C509C  41 82 00 48 */	beq lbl_802C9484
/* 802C9440 002C50A0  88 05 00 08 */	lbz r0, 8(r5)
/* 802C9444 002C50A4  54 00 06 F7 */	rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 802C9448 002C50A8  41 82 00 3C */	beq lbl_802C9484
/* 802C944C 002C50AC  A0 65 00 00 */	lhz r3, 0(r5)
/* 802C9450 002C50B0  A0 05 00 02 */	lhz r0, 2(r5)
/* 802C9454 002C50B4  B0 66 00 00 */	sth r3, 0(r6)
/* 802C9458 002C50B8  B0 06 00 02 */	sth r0, 2(r6)
/* 802C945C 002C50BC  A0 65 00 04 */	lhz r3, 4(r5)
/* 802C9460 002C50C0  A0 05 00 06 */	lhz r0, 6(r5)
/* 802C9464 002C50C4  B0 66 00 04 */	sth r3, 4(r6)
/* 802C9468 002C50C8  B0 06 00 06 */	sth r0, 6(r6)
/* 802C946C 002C50CC  A0 05 00 08 */	lhz r0, 8(r5)
/* 802C9470 002C50D0  B0 06 00 08 */	sth r0, 8(r6)
/* 802C9474 002C50D4  88 06 00 08 */	lbz r0, 8(r6)
/* 802C9478 002C50D8  54 03 07 34 */	rlwinm r3, r0, 0, 0x1c, 0x1a
/* 802C947C 002C50DC  98 66 00 08 */	stb r3, 8(r6)
/* 802C9480 002C50E0  48 00 00 DC */	b lbl_802C955C
lbl_802C9484:
/* 802C9484 002C50E4  3F E0 80 57 */	lis r31, lbl_80568B78@ha
/* 802C9488 002C50E8  7C 9E 23 78 */	mr r30, r4
/* 802C948C 002C50EC  3B FF 8B 78 */	addi r31, r31, lbl_80568B78@l
/* 802C9490 002C50F0  3B A0 00 00 */	li r29, 0
lbl_802C9494:
/* 802C9494 002C50F4  88 1F 05 58 */	lbz r0, 0x558(r31)
/* 802C9498 002C50F8  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802C949C 002C50FC  41 82 00 3C */	beq lbl_802C94D8
/* 802C94A0 002C5100  88 1E 00 08 */	lbz r0, 8(r30)
/* 802C94A4 002C5104  2C 00 00 00 */	cmpwi r0, 0
/* 802C94A8 002C5108  40 82 00 0C */	bne lbl_802C94B4
/* 802C94AC 002C510C  38 60 00 00 */	li r3, 0
/* 802C94B0 002C5110  48 00 00 AC */	b lbl_802C955C
lbl_802C94B4:
/* 802C94B4 002C5114  7C E3 3B 78 */	mr r3, r7
/* 802C94B8 002C5118  7F C4 F3 78 */	mr r4, r30
/* 802C94BC 002C511C  7F 85 E3 78 */	mr r5, r28
/* 802C94C0 002C5120  4B FF FD 39 */	bl btm_pm_compare_modes
/* 802C94C4 002C5124  2C 03 00 00 */	cmpwi r3, 0
/* 802C94C8 002C5128  40 82 00 0C */	bne lbl_802C94D4
/* 802C94CC 002C512C  38 60 00 00 */	li r3, 0
/* 802C94D0 002C5130  48 00 00 8C */	b lbl_802C955C
lbl_802C94D4:
/* 802C94D4 002C5134  7F 87 E3 78 */	mr r7, r28
lbl_802C94D8:
/* 802C94D8 002C5138  3B BD 00 01 */	addi r29, r29, 1
/* 802C94DC 002C513C  3B DE 00 0A */	addi r30, r30, 0xa
/* 802C94E0 002C5140  2C 1D 00 02 */	cmpwi r29, 2
/* 802C94E4 002C5144  3B FF 00 08 */	addi r31, r31, 8
/* 802C94E8 002C5148  41 80 FF AC */	blt lbl_802C9494
/* 802C94EC 002C514C  2C 07 00 00 */	cmpwi r7, 0
/* 802C94F0 002C5150  40 82 00 40 */	bne lbl_802C9530
/* 802C94F4 002C5154  2C 1B 00 00 */	cmpwi r27, 0
/* 802C94F8 002C5158  41 82 00 30 */	beq lbl_802C9528
/* 802C94FC 002C515C  A0 7B 00 00 */	lhz r3, 0(r27)
/* 802C9500 002C5160  A0 1B 00 02 */	lhz r0, 2(r27)
/* 802C9504 002C5164  B0 7C 00 00 */	sth r3, 0(r28)
/* 802C9508 002C5168  B0 1C 00 02 */	sth r0, 2(r28)
/* 802C950C 002C516C  A0 7B 00 04 */	lhz r3, 4(r27)
/* 802C9510 002C5170  A0 1B 00 06 */	lhz r0, 6(r27)
/* 802C9514 002C5174  B0 7C 00 04 */	sth r3, 4(r28)
/* 802C9518 002C5178  B0 1C 00 06 */	sth r0, 6(r28)
/* 802C951C 002C517C  A0 1B 00 08 */	lhz r0, 8(r27)
/* 802C9520 002C5180  B0 1C 00 08 */	sth r0, 8(r28)
/* 802C9524 002C5184  48 00 00 34 */	b lbl_802C9558
lbl_802C9528:
/* 802C9528 002C5188  38 60 00 00 */	li r3, 0
/* 802C952C 002C518C  48 00 00 30 */	b lbl_802C955C
lbl_802C9530:
/* 802C9530 002C5190  28 1A 00 80 */	cmplwi r26, 0x80
/* 802C9534 002C5194  40 82 00 24 */	bne lbl_802C9558
/* 802C9538 002C5198  7F 63 DB 78 */	mr r3, r27
/* 802C953C 002C519C  7C E4 3B 78 */	mr r4, r7
/* 802C9540 002C51A0  7F 85 E3 78 */	mr r5, r28
/* 802C9544 002C51A4  4B FF FC B5 */	bl btm_pm_compare_modes
/* 802C9548 002C51A8  2C 03 00 00 */	cmpwi r3, 0
/* 802C954C 002C51AC  40 82 00 0C */	bne lbl_802C9558
/* 802C9550 002C51B0  38 60 00 00 */	li r3, 0
/* 802C9554 002C51B4  48 00 00 08 */	b lbl_802C955C
lbl_802C9558:
/* 802C9558 002C51B8  88 7C 00 08 */	lbz r3, 8(r28)
lbl_802C955C:
/* 802C955C 002C51BC  39 61 00 20 */	addi r11, r1, 0x20
/* 802C9560 002C51C0  4B EF DC 11 */	bl _restgpr_26
/* 802C9564 002C51C4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C9568 002C51C8  7C 08 03 A6 */	mtlr r0
/* 802C956C 002C51CC  38 21 00 20 */	addi r1, r1, 0x20
/* 802C9570 002C51D0  4E 80 00 20 */	blr

.global btm_pm_snd_md_req
btm_pm_snd_md_req:
/* 802C9574 002C51D4  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802C9578 002C51D8  7C 08 02 A6 */	mflr r0
/* 802C957C 002C51DC  3C C0 80 57 */	lis r6, lbl_80568B78@ha
/* 802C9580 002C51E0  90 01 00 34 */	stw r0, 0x34(r1)
/* 802C9584 002C51E4  1C 04 00 22 */	mulli r0, r4, 0x22
/* 802C9588 002C51E8  38 C6 8B 78 */	addi r6, r6, lbl_80568B78@l
/* 802C958C 002C51EC  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 802C9590 002C51F0  3B E0 00 00 */	li r31, 0
/* 802C9594 002C51F4  93 C1 00 28 */	stw r30, 0x28(r1)
/* 802C9598 002C51F8  7C 9E 23 78 */	mr r30, r4
/* 802C959C 002C51FC  93 A1 00 24 */	stw r29, 0x24(r1)
/* 802C95A0 002C5200  7C 7D 1B 78 */	mr r29, r3
/* 802C95A4 002C5204  7C 66 02 14 */	add r3, r6, r0
/* 802C95A8 002C5208  38 C1 00 08 */	addi r6, r1, 8
/* 802C95AC 002C520C  93 81 00 20 */	stw r28, 0x20(r1)
/* 802C95B0 002C5210  3B 83 04 CC */	addi r28, r3, 0x4cc
/* 802C95B4 002C5214  7F A3 EB 78 */	mr r3, r29
/* 802C95B8 002C5218  7F 84 E3 78 */	mr r4, r28
/* 802C95BC 002C521C  4B FF FE 59 */	bl btm_pm_get_set_mode
/* 802C95C0 002C5220  88 9C 00 20 */	lbz r4, 0x20(r28)
/* 802C95C4 002C5224  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 802C95C8 002C5228  98 61 00 10 */	stb r3, 0x10(r1)
/* 802C95CC 002C522C  7C 04 00 40 */	cmplw r4, r0
/* 802C95D0 002C5230  40 82 00 34 */	bne lbl_802C9604
/* 802C95D4 002C5234  2C 00 00 00 */	cmpwi r0, 0
/* 802C95D8 002C5238  41 82 00 20 */	beq lbl_802C95F8
/* 802C95DC 002C523C  A0 9C 00 1E */	lhz r4, 0x1e(r28)
/* 802C95E0 002C5240  A0 01 00 08 */	lhz r0, 8(r1)
/* 802C95E4 002C5244  7C 00 20 40 */	cmplw r0, r4
/* 802C95E8 002C5248  41 80 00 18 */	blt lbl_802C9600
/* 802C95EC 002C524C  A0 01 00 0A */	lhz r0, 0xa(r1)
/* 802C95F0 002C5250  7C 00 20 40 */	cmplw r0, r4
/* 802C95F4 002C5254  41 81 00 0C */	bgt lbl_802C9600
lbl_802C95F8:
/* 802C95F8 002C5258  38 60 00 0D */	li r3, 0xd
/* 802C95FC 002C525C  48 00 01 8C */	b lbl_802C9788
lbl_802C9600:
/* 802C9600 002C5260  3B E0 00 01 */	li r31, 1
lbl_802C9604:
/* 802C9604 002C5264  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 802C9608 002C5268  9B FC 00 21 */	stb r31, 0x21(r28)
/* 802C960C 002C526C  41 82 00 18 */	beq lbl_802C9624
/* 802C9610 002C5270  88 1C 00 20 */	lbz r0, 0x20(r28)
/* 802C9614 002C5274  2C 00 00 00 */	cmpwi r0, 0
/* 802C9618 002C5278  41 82 00 0C */	beq lbl_802C9624
/* 802C961C 002C527C  38 00 00 01 */	li r0, 1
/* 802C9620 002C5280  98 1C 00 21 */	stb r0, 0x21(r28)
lbl_802C9624:
/* 802C9624 002C5284  38 60 00 02 */	li r3, 2
/* 802C9628 002C5288  4B FF 06 25 */	bl GKI_getpoolbuf
/* 802C962C 002C528C  2C 03 00 00 */	cmpwi r3, 0
/* 802C9630 002C5290  7C 7F 1B 78 */	mr r31, r3
/* 802C9634 002C5294  40 82 00 0C */	bne lbl_802C9640
/* 802C9638 002C5298  38 60 00 03 */	li r3, 3
/* 802C963C 002C529C  48 00 01 4C */	b lbl_802C9788
lbl_802C9640:
/* 802C9640 002C52A0  88 1C 00 21 */	lbz r0, 0x21(r28)
/* 802C9644 002C52A4  28 00 00 01 */	cmplwi r0, 1
/* 802C9648 002C52A8  40 82 00 0C */	bne lbl_802C9654
/* 802C964C 002C52AC  38 00 00 00 */	li r0, 0
/* 802C9650 002C52B0  98 01 00 10 */	stb r0, 0x10(r1)
lbl_802C9654:
/* 802C9654 002C52B4  88 01 00 10 */	lbz r0, 0x10(r1)
/* 802C9658 002C52B8  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C965C 002C52BC  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C9660 002C52C0  2C 00 00 02 */	cmpwi r0, 2
/* 802C9664 002C52C4  9B C4 05 64 */	stb r30, 0x564(r4)
/* 802C9668 002C52C8  9B A4 05 65 */	stb r29, 0x565(r4)
/* 802C966C 002C52CC  41 82 00 A4 */	beq lbl_802C9710
/* 802C9670 002C52D0  40 80 00 14 */	bge lbl_802C9684
/* 802C9674 002C52D4  2C 00 00 00 */	cmpwi r0, 0
/* 802C9678 002C52D8  41 82 00 18 */	beq lbl_802C9690
/* 802C967C 002C52DC  40 80 00 74 */	bge lbl_802C96F0
/* 802C9680 002C52E0  48 00 00 D8 */	b lbl_802C9758
lbl_802C9684:
/* 802C9684 002C52E4  2C 00 00 04 */	cmpwi r0, 4
/* 802C9688 002C52E8  40 80 00 D0 */	bge lbl_802C9758
/* 802C968C 002C52EC  48 00 00 AC */	b lbl_802C9738
lbl_802C9690:
/* 802C9690 002C52F0  88 1C 00 20 */	lbz r0, 0x20(r28)
/* 802C9694 002C52F4  2C 00 00 03 */	cmpwi r0, 3
/* 802C9698 002C52F8  41 82 00 2C */	beq lbl_802C96C4
/* 802C969C 002C52FC  40 80 00 40 */	bge lbl_802C96DC
/* 802C96A0 002C5300  2C 00 00 02 */	cmpwi r0, 2
/* 802C96A4 002C5304  40 80 00 08 */	bge lbl_802C96AC
/* 802C96A8 002C5308  48 00 00 34 */	b lbl_802C96DC
lbl_802C96AC:
/* 802C96AC 002C530C  1C 1E 01 1C */	mulli r0, r30, 0x11c
/* 802C96B0 002C5310  7F E3 FB 78 */	mr r3, r31
/* 802C96B4 002C5314  7C 84 02 14 */	add r4, r4, r0
/* 802C96B8 002C5318  A0 84 00 34 */	lhz r4, 0x34(r4)
/* 802C96BC 002C531C  48 00 78 B1 */	bl btsnd_hcic_exit_sniff_mode
/* 802C96C0 002C5320  48 00 00 A8 */	b lbl_802C9768
lbl_802C96C4:
/* 802C96C4 002C5324  1C 1E 01 1C */	mulli r0, r30, 0x11c
/* 802C96C8 002C5328  7F E3 FB 78 */	mr r3, r31
/* 802C96CC 002C532C  7C 84 02 14 */	add r4, r4, r0
/* 802C96D0 002C5330  A0 84 00 34 */	lhz r4, 0x34(r4)
/* 802C96D4 002C5334  48 00 79 D1 */	bl btsnd_hcic_exit_park_mode
/* 802C96D8 002C5338  48 00 00 90 */	b lbl_802C9768
lbl_802C96DC:
/* 802C96DC 002C533C  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C96E0 002C5340  38 00 00 04 */	li r0, 4
/* 802C96E4 002C5344  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C96E8 002C5348  98 03 05 64 */	stb r0, 0x564(r3)
/* 802C96EC 002C534C  48 00 00 7C */	b lbl_802C9768
lbl_802C96F0:
/* 802C96F0 002C5350  1C 1E 01 1C */	mulli r0, r30, 0x11c
/* 802C96F4 002C5354  A0 A1 00 08 */	lhz r5, 8(r1)
/* 802C96F8 002C5358  A0 C1 00 0A */	lhz r6, 0xa(r1)
/* 802C96FC 002C535C  7F E3 FB 78 */	mr r3, r31
/* 802C9700 002C5360  7C 84 02 14 */	add r4, r4, r0
/* 802C9704 002C5364  A0 84 00 34 */	lhz r4, 0x34(r4)
/* 802C9708 002C5368  48 00 76 E5 */	bl btsnd_hcic_hold_mode
/* 802C970C 002C536C  48 00 00 5C */	b lbl_802C9768
lbl_802C9710:
/* 802C9710 002C5370  1C 1E 01 1C */	mulli r0, r30, 0x11c
/* 802C9714 002C5374  A0 A1 00 08 */	lhz r5, 8(r1)
/* 802C9718 002C5378  A0 C1 00 0A */	lhz r6, 0xa(r1)
/* 802C971C 002C537C  7F E3 FB 78 */	mr r3, r31
/* 802C9720 002C5380  A0 E1 00 0C */	lhz r7, 0xc(r1)
/* 802C9724 002C5384  7C 84 02 14 */	add r4, r4, r0
/* 802C9728 002C5388  A0 84 00 34 */	lhz r4, 0x34(r4)
/* 802C972C 002C538C  A1 01 00 0E */	lhz r8, 0xe(r1)
/* 802C9730 002C5390  48 00 77 71 */	bl btsnd_hcic_sniff_mode
/* 802C9734 002C5394  48 00 00 34 */	b lbl_802C9768
lbl_802C9738:
/* 802C9738 002C5398  1C 1E 01 1C */	mulli r0, r30, 0x11c
/* 802C973C 002C539C  A0 A1 00 08 */	lhz r5, 8(r1)
/* 802C9740 002C53A0  A0 C1 00 0A */	lhz r6, 0xa(r1)
/* 802C9744 002C53A4  7F E3 FB 78 */	mr r3, r31
/* 802C9748 002C53A8  7C 84 02 14 */	add r4, r4, r0
/* 802C974C 002C53AC  A0 84 00 34 */	lhz r4, 0x34(r4)
/* 802C9750 002C53B0  48 00 78 A1 */	bl btsnd_hcic_park_mode
/* 802C9754 002C53B4  48 00 00 14 */	b lbl_802C9768
lbl_802C9758:
/* 802C9758 002C53B8  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C975C 002C53BC  38 00 00 04 */	li r0, 4
/* 802C9760 002C53C0  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C9764 002C53C4  98 03 05 64 */	stb r0, 0x564(r3)
lbl_802C9768:
/* 802C9768 002C53C8  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C976C 002C53CC  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C9770 002C53D0  88 03 05 64 */	lbz r0, 0x564(r3)
/* 802C9774 002C53D4  28 00 00 04 */	cmplwi r0, 4
/* 802C9778 002C53D8  40 82 00 0C */	bne lbl_802C9784
/* 802C977C 002C53DC  7F E3 FB 78 */	mr r3, r31
/* 802C9780 002C53E0  4B FF 05 B5 */	bl GKI_freebuf
lbl_802C9784:
/* 802C9784 002C53E4  38 60 00 01 */	li r3, 1
lbl_802C9788:
/* 802C9788 002C53E8  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802C978C 002C53EC  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 802C9790 002C53F0  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 802C9794 002C53F4  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 802C9798 002C53F8  83 81 00 20 */	lwz r28, 0x20(r1)
/* 802C979C 002C53FC  7C 08 03 A6 */	mtlr r0
/* 802C97A0 002C5400  38 21 00 30 */	addi r1, r1, 0x30
/* 802C97A4 002C5404  4E 80 00 20 */	blr

.global btm_pm_proc_cmd_status
btm_pm_proc_cmd_status:
/* 802C97A8 002C5408  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802C97AC 002C540C  7C 08 02 A6 */	mflr r0
/* 802C97B0 002C5410  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C97B4 002C5414  90 01 00 14 */	stw r0, 0x14(r1)
/* 802C97B8 002C5418  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C97BC 002C541C  88 04 05 64 */	lbz r0, 0x564(r4)
/* 802C97C0 002C5420  28 00 00 04 */	cmplwi r0, 4
/* 802C97C4 002C5424  40 80 00 84 */	bge lbl_802C9848
/* 802C97C8 002C5428  1C 00 00 22 */	mulli r0, r0, 0x22
/* 802C97CC 002C542C  2C 03 00 00 */	cmpwi r3, 0
/* 802C97D0 002C5430  7C A4 02 14 */	add r5, r4, r0
/* 802C97D4 002C5434  40 82 00 14 */	bne lbl_802C97E8
/* 802C97D8 002C5438  38 00 00 04 */	li r0, 4
/* 802C97DC 002C543C  38 80 00 04 */	li r4, 4
/* 802C97E0 002C5440  98 05 04 EC */	stb r0, 0x4ec(r5)
/* 802C97E4 002C5444  48 00 00 08 */	b lbl_802C97EC
lbl_802C97E8:
/* 802C97E8 002C5448  38 80 00 05 */	li r4, 5
lbl_802C97EC:
/* 802C97EC 002C544C  3C E0 80 57 */	lis r7, lbl_80568B78@ha
/* 802C97F0 002C5450  38 E7 8B 78 */	addi r7, r7, lbl_80568B78@l
/* 802C97F4 002C5454  88 07 05 65 */	lbz r0, 0x565(r7)
/* 802C97F8 002C5458  28 00 00 80 */	cmplwi r0, 0x80
/* 802C97FC 002C545C  41 82 00 3C */	beq lbl_802C9838
/* 802C9800 002C5460  54 00 1D 78 */	rlwinm r0, r0, 3, 0x15, 0x1c
/* 802C9804 002C5464  7C A7 02 14 */	add r5, r7, r0
/* 802C9808 002C5468  88 05 05 58 */	lbz r0, 0x558(r5)
/* 802C980C 002C546C  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 802C9810 002C5470  41 82 00 28 */	beq lbl_802C9838
/* 802C9814 002C5474  88 07 05 64 */	lbz r0, 0x564(r7)
/* 802C9818 002C5478  7C 66 1B 78 */	mr r6, r3
/* 802C981C 002C547C  81 85 05 54 */	lwz r12, 0x554(r5)
/* 802C9820 002C5480  38 A0 00 00 */	li r5, 0
/* 802C9824 002C5484  1C 00 01 1C */	mulli r0, r0, 0x11c
/* 802C9828 002C5488  7C 67 02 14 */	add r3, r7, r0
/* 802C982C 002C548C  38 63 00 3C */	addi r3, r3, 0x3c
/* 802C9830 002C5490  7D 89 03 A6 */	mtctr r12
/* 802C9834 002C5494  4E 80 04 21 */	bctrl
lbl_802C9838:
/* 802C9838 002C5498  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C983C 002C549C  38 00 00 04 */	li r0, 4
/* 802C9840 002C54A0  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C9844 002C54A4  98 03 05 64 */	stb r0, 0x564(r3)
lbl_802C9848:
/* 802C9848 002C54A8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802C984C 002C54AC  7C 08 03 A6 */	mtlr r0
/* 802C9850 002C54B0  38 21 00 10 */	addi r1, r1, 0x10
/* 802C9854 002C54B4  4E 80 00 20 */	blr

.global btm_pm_proc_mode_change
btm_pm_proc_mode_change:
/* 802C9858 002C54B8  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802C985C 002C54BC  7C 08 02 A6 */	mflr r0
/* 802C9860 002C54C0  90 01 00 34 */	stw r0, 0x34(r1)
/* 802C9864 002C54C4  39 61 00 30 */	addi r11, r1, 0x30
/* 802C9868 002C54C8  4B EF D8 B5 */	bl _savegpr_24
/* 802C986C 002C54CC  7C 9A 23 78 */	mr r26, r4
/* 802C9870 002C54D0  7C 79 1B 78 */	mr r25, r3
/* 802C9874 002C54D4  7C BB 2B 78 */	mr r27, r5
/* 802C9878 002C54D8  7C DC 33 78 */	mr r28, r6
/* 802C987C 002C54DC  7F 43 D3 78 */	mr r3, r26
/* 802C9880 002C54E0  4B FF 9B C9 */	bl btm_handle_to_acl_index
/* 802C9884 002C54E4  54 7D 06 3E */	clrlwi r29, r3, 0x18
/* 802C9888 002C54E8  2C 1D 00 04 */	cmpwi r29, 4
/* 802C988C 002C54EC  40 80 01 DC */	bge lbl_802C9A68
/* 802C9890 002C54F0  1F DD 01 1C */	mulli r30, r29, 0x11c
/* 802C9894 002C54F4  3F 00 80 57 */	lis r24, lbl_80568B78@ha
/* 802C9898 002C54F8  2C 1B 00 00 */	cmpwi r27, 0
/* 802C989C 002C54FC  3B 18 8B 78 */	addi r24, r24, lbl_80568B78@l
/* 802C98A0 002C5500  7F F8 F2 14 */	add r31, r24, r30
/* 802C98A4 002C5504  40 82 00 58 */	bne lbl_802C98FC
/* 802C98A8 002C5508  A0 1F 00 38 */	lhz r0, 0x38(r31)
/* 802C98AC 002C550C  2C 00 00 00 */	cmpwi r0, 0
/* 802C98B0 002C5510  41 82 00 4C */	beq lbl_802C98FC
/* 802C98B4 002C5514  48 00 0F 1D */	bl btm_num_sco_links_active
/* 802C98B8 002C5518  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 802C98BC 002C551C  40 82 00 40 */	bne lbl_802C98FC
/* 802C98C0 002C5520  38 00 00 00 */	li r0, 0
/* 802C98C4 002C5524  B0 1F 00 38 */	sth r0, 0x38(r31)
/* 802C98C8 002C5528  88 18 27 C0 */	lbz r0, 0x27c0(r24)
/* 802C98CC 002C552C  28 00 00 05 */	cmplwi r0, 5
/* 802C98D0 002C5530  41 80 00 20 */	blt lbl_802C98F0
/* 802C98D4 002C5534  3C 60 00 0D */	lis r3, 0x000D0004@ha
/* 802C98D8 002C5538  3C 80 80 44 */	lis r4, lbl_80441550@ha
/* 802C98DC 002C553C  A0 DF 00 36 */	lhz r6, 0x36(r31)
/* 802C98E0 002C5540  7F 45 D3 78 */	mr r5, r26
/* 802C98E4 002C5544  38 63 00 04 */	addi r3, r3, 0x000D0004@l
/* 802C98E8 002C5548  38 84 15 50 */	addi r4, r4, lbl_80441550@l
/* 802C98EC 002C554C  4B FF 36 55 */	bl LogMsg_2
lbl_802C98F0:
/* 802C98F0 002C5550  A0 7F 00 34 */	lhz r3, 0x34(r31)
/* 802C98F4 002C5554  A0 9F 00 36 */	lhz r4, 0x36(r31)
/* 802C98F8 002C5558  48 00 6E 2D */	bl btsnd_hcic_change_conn_type
lbl_802C98FC:
/* 802C98FC 002C555C  1C 1D 00 22 */	mulli r0, r29, 0x22
/* 802C9900 002C5560  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C9904 002C5564  2C 1B 00 00 */	cmpwi r27, 0
/* 802C9908 002C5568  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C990C 002C556C  7C 83 02 14 */	add r4, r3, r0
/* 802C9910 002C5570  9B 64 04 EC */	stb r27, 0x4ec(r4)
/* 802C9914 002C5574  38 00 00 00 */	li r0, 0
/* 802C9918 002C5578  B3 84 04 EA */	sth r28, 0x4ea(r4)
/* 802C991C 002C557C  40 82 00 14 */	bne lbl_802C9930
/* 802C9920 002C5580  88 64 04 D4 */	lbz r3, 0x4d4(r4)
/* 802C9924 002C5584  28 03 00 01 */	cmplwi r3, 1
/* 802C9928 002C5588  40 82 00 08 */	bne lbl_802C9930
/* 802C992C 002C558C  98 04 04 D4 */	stb r0, 0x4d4(r4)
lbl_802C9930:
/* 802C9930 002C5590  2C 1B 00 00 */	cmpwi r27, 0
/* 802C9934 002C5594  38 A4 04 D6 */	addi r5, r4, 0x4d6
/* 802C9938 002C5598  40 82 00 14 */	bne lbl_802C994C
/* 802C993C 002C559C  88 65 00 08 */	lbz r3, 8(r5)
/* 802C9940 002C55A0  28 03 00 01 */	cmplwi r3, 1
/* 802C9944 002C55A4  40 82 00 08 */	bne lbl_802C994C
/* 802C9948 002C55A8  98 05 00 08 */	stb r0, 8(r5)
lbl_802C994C:
/* 802C994C 002C55AC  88 04 04 ED */	lbz r0, 0x4ed(r4)
/* 802C9950 002C55B0  28 00 00 01 */	cmplwi r0, 1
/* 802C9954 002C55B4  40 82 00 14 */	bne lbl_802C9968
/* 802C9958 002C55B8  7F A4 EB 78 */	mr r4, r29
/* 802C995C 002C55BC  38 60 00 80 */	li r3, 0x80
/* 802C9960 002C55C0  38 A0 00 00 */	li r5, 0
/* 802C9964 002C55C4  4B FF FC 11 */	bl btm_pm_snd_md_req
lbl_802C9968:
/* 802C9968 002C55C8  3F 00 80 57 */	lis r24, lbl_80568B78@ha
/* 802C996C 002C55CC  3B A0 00 00 */	li r29, 0
/* 802C9970 002C55D0  3B 18 8B 78 */	addi r24, r24, lbl_80568B78@l
lbl_802C9974:
/* 802C9974 002C55D4  88 18 05 58 */	lbz r0, 0x558(r24)
/* 802C9978 002C55D8  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 802C997C 002C55DC  41 82 00 20 */	beq lbl_802C999C
/* 802C9980 002C55E0  81 98 05 54 */	lwz r12, 0x554(r24)
/* 802C9984 002C55E4  7F 64 DB 78 */	mr r4, r27
/* 802C9988 002C55E8  7F 85 E3 78 */	mr r5, r28
/* 802C998C 002C55EC  7F 26 CB 78 */	mr r6, r25
/* 802C9990 002C55F0  38 7F 00 3C */	addi r3, r31, 0x3c
/* 802C9994 002C55F4  7D 89 03 A6 */	mtctr r12
/* 802C9998 002C55F8  4E 80 04 21 */	bctrl
lbl_802C999C:
/* 802C999C 002C55FC  3B BD 00 01 */	addi r29, r29, 1
/* 802C99A0 002C5600  3B 18 00 08 */	addi r24, r24, 8
/* 802C99A4 002C5604  2C 1D 00 02 */	cmpwi r29, 2
/* 802C99A8 002C5608  41 80 FF CC */	blt lbl_802C9974
/* 802C99AC 002C560C  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C99B0 002C5610  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C99B4 002C5614  7F 83 F2 14 */	add r28, r3, r30
/* 802C99B8 002C5618  88 1C 01 4F */	lbz r0, 0x14f(r28)
/* 802C99BC 002C561C  28 00 00 01 */	cmplwi r0, 1
/* 802C99C0 002C5620  40 82 00 A8 */	bne lbl_802C9A68
/* 802C99C4 002C5624  3B 1C 00 3C */	addi r24, r28, 0x3c
/* 802C99C8 002C5628  7F 03 C3 78 */	mr r3, r24
/* 802C99CC 002C562C  4B FF BC 51 */	bl btm_find_dev
/* 802C99D0 002C5630  2C 03 00 00 */	cmpwi r3, 0
/* 802C99D4 002C5634  41 82 00 30 */	beq lbl_802C9A04
/* 802C99D8 002C5638  88 03 00 76 */	lbz r0, 0x76(r3)
/* 802C99DC 002C563C  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 802C99E0 002C5640  41 82 00 24 */	beq lbl_802C9A04
/* 802C99E4 002C5644  7F 43 D3 78 */	mr r3, r26
/* 802C99E8 002C5648  38 80 00 00 */	li r4, 0
/* 802C99EC 002C564C  48 00 6E 45 */	bl btsnd_hcic_set_conn_encrypt
/* 802C99F0 002C5650  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 802C99F4 002C5654  41 82 00 44 */	beq lbl_802C9A38
/* 802C99F8 002C5658  38 00 00 02 */	li r0, 2
/* 802C99FC 002C565C  98 1C 01 4F */	stb r0, 0x14f(r28)
/* 802C9A00 002C5660  48 00 00 68 */	b lbl_802C9A68
lbl_802C9A04:
/* 802C9A04 002C5664  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C9A08 002C5668  7F 03 C3 78 */	mr r3, r24
/* 802C9A0C 002C566C  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C9A10 002C5670  7C 84 F2 14 */	add r4, r4, r30
/* 802C9A14 002C5674  88 04 01 4E */	lbz r0, 0x14e(r4)
/* 802C9A18 002C5678  7C 00 00 34 */	cntlzw r0, r0
/* 802C9A1C 002C567C  54 04 DE 3E */	rlwinm r4, r0, 0x1b, 0x18, 0x1f
/* 802C9A20 002C5680  48 00 77 09 */	bl btsnd_hcic_switch_role
/* 802C9A24 002C5684  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 802C9A28 002C5688  41 82 00 10 */	beq lbl_802C9A38
/* 802C9A2C 002C568C  38 00 00 00 */	li r0, 0
/* 802C9A30 002C5690  98 1C 01 4F */	stb r0, 0x14f(r28)
/* 802C9A34 002C5694  48 00 00 34 */	b lbl_802C9A68
lbl_802C9A38:
/* 802C9A38 002C5698  3B 60 00 00 */	li r27, 0
/* 802C9A3C 002C569C  3F 40 80 57 */	lis r26, lbl_80568B78@ha
/* 802C9A40 002C56A0  9B 7C 01 4F */	stb r27, 0x14f(r28)
/* 802C9A44 002C56A4  3B 5A 8B 78 */	addi r26, r26, lbl_80568B78@l
/* 802C9A48 002C56A8  81 9A 06 2C */	lwz r12, 0x62c(r26)
/* 802C9A4C 002C56AC  2C 0C 00 00 */	cmpwi r12, 0
/* 802C9A50 002C56B0  41 82 00 18 */	beq lbl_802C9A68
/* 802C9A54 002C56B4  9B 3A 06 24 */	stb r25, 0x624(r26)
/* 802C9A58 002C56B8  38 7A 06 24 */	addi r3, r26, 0x624
/* 802C9A5C 002C56BC  7D 89 03 A6 */	mtctr r12
/* 802C9A60 002C56C0  4E 80 04 21 */	bctrl
/* 802C9A64 002C56C4  93 7A 06 2C */	stw r27, 0x62c(r26)
lbl_802C9A68:
/* 802C9A68 002C56C8  39 61 00 30 */	addi r11, r1, 0x30
/* 802C9A6C 002C56CC  4B EF D6 FD */	bl _restgpr_24
/* 802C9A70 002C56D0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802C9A74 002C56D4  7C 08 03 A6 */	mtlr r0
/* 802C9A78 002C56D8  38 21 00 30 */	addi r1, r1, 0x30
/* 802C9A7C 002C56DC  4E 80 00 20 */	blr