summaryrefslogtreecommitdiff
path: root/asm/SDK/SI/SIBios.s
blob: 60b41dd1e05bd4fa782440fd2bb34f8771849a32 (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
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
.include "macros.inc"

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

.global CompleteTransfer
CompleteTransfer:
/* 802762AC 00271F0C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802762B0 00271F10  7C 08 02 A6 */	mflr r0
/* 802762B4 00271F14  90 01 00 24 */	stw r0, 0x24(r1)
/* 802762B8 00271F18  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802762BC 00271F1C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802762C0 00271F20  3F C0 80 43 */	lis r30, lbl_80433FB8@ha
/* 802762C4 00271F24  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802762C8 00271F28  3F A0 CD 00 */	lis r29, 0xCD006438@ha
/* 802762CC 00271F2C  83 FD 64 38 */	lwz r31, 0xCD006438@l(r29)
/* 802762D0 00271F30  80 1D 64 34 */	lwz r0, 0x6434(r29)
/* 802762D4 00271F34  64 00 80 00 */	oris r0, r0, 0x8000
/* 802762D8 00271F38  54 00 00 3C */	rlwinm r0, r0, 0, 0, 0x1e
/* 802762DC 00271F3C  90 1D 64 34 */	stw r0, 0x6434(r29)
/* 802762E0 00271F40  80 1E 3F B8 */	lwz r0, lbl_80433FB8@l(r30)
/* 802762E4 00271F44  2C 00 FF FF */	cmpwi r0, -1
/* 802762E8 00271F48  41 82 02 98 */	beq lbl_80276580
/* 802762EC 00271F4C  4B FF C4 ED */	bl __OSGetSystemTime
/* 802762F0 00271F50  80 FE 3F B8 */	lwz r7, 0x3fb8(r30)
/* 802762F4 00271F54  3C C0 80 51 */	lis r6, lbl_80515600@ha
/* 802762F8 00271F58  38 BE 3F B8 */	addi r5, r30, 0x3fb8
/* 802762FC 00271F5C  54 E7 18 38 */	slwi r7, r7, 3
/* 80276300 00271F60  38 C6 56 00 */	addi r6, r6, lbl_80515600@l
/* 80276304 00271F64  80 05 00 08 */	lwz r0, 8(r5)
/* 80276308 00271F68  7C C6 3A 14 */	add r6, r6, r7
/* 8027630C 00271F6C  90 86 00 04 */	stw r4, 4(r6)
/* 80276310 00271F70  38 E0 00 00 */	li r7, 0
/* 80276314 00271F74  54 08 F0 BF */	rlwinm. r8, r0, 0x1e, 2, 0x1f
/* 80276318 00271F78  80 A5 00 0C */	lwz r5, 0xc(r5)
/* 8027631C 00271F7C  90 66 00 00 */	stw r3, 0(r6)
/* 80276320 00271F80  41 82 00 B0 */	beq lbl_802763D0
/* 80276324 00271F84  28 08 00 08 */	cmplwi r8, 8
/* 80276328 00271F88  38 68 FF F8 */	addi r3, r8, -8
/* 8027632C 00271F8C  40 81 00 6C */	ble lbl_80276398
/* 80276330 00271F90  38 03 00 07 */	addi r0, r3, 7
/* 80276334 00271F94  38 9D 64 00 */	addi r4, r29, 0x6400
/* 80276338 00271F98  54 00 E8 FE */	srwi r0, r0, 3
/* 8027633C 00271F9C  7C 09 03 A6 */	mtctr r0
/* 80276340 00271FA0  28 03 00 00 */	cmplwi r3, 0
/* 80276344 00271FA4  40 81 00 54 */	ble lbl_80276398
lbl_80276348:
/* 80276348 00271FA8  80 04 00 80 */	lwz r0, 0x80(r4)
/* 8027634C 00271FAC  38 E7 00 08 */	addi r7, r7, 8
/* 80276350 00271FB0  90 05 00 00 */	stw r0, 0(r5)
/* 80276354 00271FB4  80 04 00 84 */	lwz r0, 0x84(r4)
/* 80276358 00271FB8  90 05 00 04 */	stw r0, 4(r5)
/* 8027635C 00271FBC  80 04 00 88 */	lwz r0, 0x88(r4)
/* 80276360 00271FC0  90 05 00 08 */	stw r0, 8(r5)
/* 80276364 00271FC4  80 04 00 8C */	lwz r0, 0x8c(r4)
/* 80276368 00271FC8  90 05 00 0C */	stw r0, 0xc(r5)
/* 8027636C 00271FCC  80 04 00 90 */	lwz r0, 0x90(r4)
/* 80276370 00271FD0  90 05 00 10 */	stw r0, 0x10(r5)
/* 80276374 00271FD4  80 04 00 94 */	lwz r0, 0x94(r4)
/* 80276378 00271FD8  90 05 00 14 */	stw r0, 0x14(r5)
/* 8027637C 00271FDC  80 04 00 98 */	lwz r0, 0x98(r4)
/* 80276380 00271FE0  90 05 00 18 */	stw r0, 0x18(r5)
/* 80276384 00271FE4  80 04 00 9C */	lwz r0, 0x9c(r4)
/* 80276388 00271FE8  38 84 00 20 */	addi r4, r4, 0x20
/* 8027638C 00271FEC  90 05 00 1C */	stw r0, 0x1c(r5)
/* 80276390 00271FF0  38 A5 00 20 */	addi r5, r5, 0x20
/* 80276394 00271FF4  42 00 FF B4 */	bdnz lbl_80276348
lbl_80276398:
/* 80276398 00271FF8  54 E3 10 3A */	slwi r3, r7, 2
/* 8027639C 00271FFC  3C 00 CD 00 */	lis r0, 0xcd00
/* 802763A0 00272000  7C 60 1A 14 */	add r3, r0, r3
/* 802763A4 00272004  7C 07 40 50 */	subf r0, r7, r8
/* 802763A8 00272008  38 63 64 00 */	addi r3, r3, 0x6400
/* 802763AC 0027200C  7C 09 03 A6 */	mtctr r0
/* 802763B0 00272010  7C 07 40 40 */	cmplw r7, r8
/* 802763B4 00272014  40 80 00 1C */	bge lbl_802763D0
lbl_802763B8:
/* 802763B8 00272018  80 03 00 80 */	lwz r0, 0x80(r3)
/* 802763BC 0027201C  38 63 00 04 */	addi r3, r3, 4
/* 802763C0 00272020  38 E7 00 01 */	addi r7, r7, 1
/* 802763C4 00272024  90 05 00 00 */	stw r0, 0(r5)
/* 802763C8 00272028  38 A5 00 04 */	addi r5, r5, 4
/* 802763CC 0027202C  42 00 FF EC */	bdnz lbl_802763B8
lbl_802763D0:
/* 802763D0 00272030  3C 60 80 43 */	lis r3, lbl_80433FB8@ha
/* 802763D4 00272034  38 63 3F B8 */	addi r3, r3, lbl_80433FB8@l
/* 802763D8 00272038  80 03 00 08 */	lwz r0, 8(r3)
/* 802763DC 0027203C  54 03 07 BF */	clrlwi. r3, r0, 0x1e
/* 802763E0 00272040  41 82 01 0C */	beq lbl_802764EC
/* 802763E4 00272044  54 E0 10 3A */	slwi r0, r7, 2
/* 802763E8 00272048  3C 80 CD 00 */	lis r4, 0xcd00
/* 802763EC 0027204C  7C C4 02 14 */	add r6, r4, r0
/* 802763F0 00272050  80 06 64 80 */	lwz r0, 0x6480(r6)
/* 802763F4 00272054  38 80 00 00 */	li r4, 0
/* 802763F8 00272058  41 82 00 F4 */	beq lbl_802764EC
/* 802763FC 0027205C  28 03 00 08 */	cmplwi r3, 8
/* 80276400 00272060  38 E3 FF F8 */	addi r7, r3, -8
/* 80276404 00272064  40 81 00 BC */	ble lbl_802764C0
/* 80276408 00272068  38 C7 00 07 */	addi r6, r7, 7
/* 8027640C 0027206C  54 C6 E8 FE */	srwi r6, r6, 3
/* 80276410 00272070  7C C9 03 A6 */	mtctr r6
/* 80276414 00272074  28 07 00 00 */	cmplwi r7, 0
/* 80276418 00272078  40 81 00 A8 */	ble lbl_802764C0
lbl_8027641C:
/* 8027641C 0027207C  20 C4 00 03 */	subfic r6, r4, 3
/* 80276420 00272080  38 E4 00 01 */	addi r7, r4, 1
/* 80276424 00272084  54 C8 18 38 */	slwi r8, r6, 3
/* 80276428 00272088  7C 09 44 30 */	srw r9, r0, r8
/* 8027642C 0027208C  20 E7 00 03 */	subfic r7, r7, 3
/* 80276430 00272090  54 E8 18 38 */	slwi r8, r7, 3
/* 80276434 00272094  99 25 00 00 */	stb r9, 0(r5)
/* 80276438 00272098  38 E4 00 02 */	addi r7, r4, 2
/* 8027643C 0027209C  7C C4 00 D0 */	neg r6, r4
/* 80276440 002720A0  7C 09 44 30 */	srw r9, r0, r8
/* 80276444 002720A4  54 C8 18 38 */	slwi r8, r6, 3
/* 80276448 002720A8  20 E7 00 03 */	subfic r7, r7, 3
/* 8027644C 002720AC  54 E6 18 38 */	slwi r6, r7, 3
/* 80276450 002720B0  99 25 00 01 */	stb r9, 1(r5)
/* 80276454 002720B4  7C 09 34 30 */	srw r9, r0, r6
/* 80276458 002720B8  7C 08 44 30 */	srw r8, r0, r8
/* 8027645C 002720BC  38 C4 00 04 */	addi r6, r4, 4
/* 80276460 002720C0  99 25 00 02 */	stb r9, 2(r5)
/* 80276464 002720C4  20 E6 00 03 */	subfic r7, r6, 3
/* 80276468 002720C8  38 C4 00 05 */	addi r6, r4, 5
/* 8027646C 002720CC  99 05 00 03 */	stb r8, 3(r5)
/* 80276470 002720D0  54 E7 18 38 */	slwi r7, r7, 3
/* 80276474 002720D4  7C 09 3C 30 */	srw r9, r0, r7
/* 80276478 002720D8  20 C6 00 03 */	subfic r6, r6, 3
/* 8027647C 002720DC  54 C8 18 38 */	slwi r8, r6, 3
/* 80276480 002720E0  99 25 00 04 */	stb r9, 4(r5)
/* 80276484 002720E4  38 C4 00 06 */	addi r6, r4, 6
/* 80276488 002720E8  20 E6 00 03 */	subfic r7, r6, 3
/* 8027648C 002720EC  7C 08 44 30 */	srw r8, r0, r8
/* 80276490 002720F0  38 C4 00 07 */	addi r6, r4, 7
/* 80276494 002720F4  99 05 00 05 */	stb r8, 5(r5)
/* 80276498 002720F8  54 E7 18 38 */	slwi r7, r7, 3
/* 8027649C 002720FC  38 84 00 08 */	addi r4, r4, 8
/* 802764A0 00272100  20 C6 00 03 */	subfic r6, r6, 3
/* 802764A4 00272104  7C 07 3C 30 */	srw r7, r0, r7
/* 802764A8 00272108  54 C6 18 38 */	slwi r6, r6, 3
/* 802764AC 0027210C  98 E5 00 06 */	stb r7, 6(r5)
/* 802764B0 00272110  7C 06 34 30 */	srw r6, r0, r6
/* 802764B4 00272114  98 C5 00 07 */	stb r6, 7(r5)
/* 802764B8 00272118  38 A5 00 08 */	addi r5, r5, 8
/* 802764BC 0027211C  42 00 FF 60 */	bdnz lbl_8027641C
lbl_802764C0:
/* 802764C0 00272120  7C C4 18 50 */	subf r6, r4, r3
/* 802764C4 00272124  7C C9 03 A6 */	mtctr r6
/* 802764C8 00272128  7C 04 18 40 */	cmplw r4, r3
/* 802764CC 0027212C  40 80 00 20 */	bge lbl_802764EC
lbl_802764D0:
/* 802764D0 00272130  20 64 00 03 */	subfic r3, r4, 3
/* 802764D4 00272134  38 84 00 01 */	addi r4, r4, 1
/* 802764D8 00272138  54 63 18 38 */	slwi r3, r3, 3
/* 802764DC 0027213C  7C 03 1C 30 */	srw r3, r0, r3
/* 802764E0 00272140  98 65 00 00 */	stb r3, 0(r5)
/* 802764E4 00272144  38 A5 00 01 */	addi r5, r5, 1
/* 802764E8 00272148  42 00 FF E8 */	bdnz lbl_802764D0
lbl_802764EC:
/* 802764EC 0027214C  3C 60 CD 00 */	lis r3, 0xCD006434@ha
/* 802764F0 00272150  80 03 64 34 */	lwz r0, 0xCD006434@l(r3)
/* 802764F4 00272154  54 00 00 85 */	rlwinm. r0, r0, 0, 2, 2
/* 802764F8 00272158  41 82 00 54 */	beq lbl_8027654C
/* 802764FC 0027215C  3C 60 80 43 */	lis r3, lbl_80433FB8@ha
/* 80276500 00272160  80 83 3F B8 */	lwz r4, lbl_80433FB8@l(r3)
/* 80276504 00272164  20 04 00 03 */	subfic r0, r4, 3
/* 80276508 00272168  54 00 18 38 */	slwi r0, r0, 3
/* 8027650C 0027216C  7F FF 04 30 */	srw r31, r31, r0
/* 80276510 00272170  57 FF 07 3E */	clrlwi r31, r31, 0x1c
/* 80276514 00272174  57 E0 07 39 */	rlwinm. r0, r31, 0, 0x1c, 0x1c
/* 80276518 00272178  41 82 00 24 */	beq lbl_8027653C
/* 8027651C 0027217C  3C 60 80 43 */	lis r3, lbl_80433FD0@ha
/* 80276520 00272180  54 84 10 3A */	slwi r4, r4, 2
/* 80276524 00272184  38 63 3F D0 */	addi r3, r3, lbl_80433FD0@l
/* 80276528 00272188  7C 03 20 2E */	lwzx r0, r3, r4
/* 8027652C 0027218C  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 80276530 00272190  40 82 00 0C */	bne lbl_8027653C
/* 80276534 00272194  38 00 00 08 */	li r0, 8
/* 80276538 00272198  7C 03 21 2E */	stwx r0, r3, r4
lbl_8027653C:
/* 8027653C 0027219C  2C 1F 00 00 */	cmpwi r31, 0
/* 80276540 002721A0  40 82 00 34 */	bne lbl_80276574
/* 80276544 002721A4  3B E0 00 04 */	li r31, 4
/* 80276548 002721A8  48 00 00 2C */	b lbl_80276574
lbl_8027654C:
/* 8027654C 002721AC  4B FF C2 8D */	bl __OSGetSystemTime
/* 80276550 002721B0  3C C0 80 43 */	lis r6, lbl_80433FB8@ha
/* 80276554 002721B4  3C A0 80 51 */	lis r5, lbl_80515620@ha
/* 80276558 002721B8  80 06 3F B8 */	lwz r0, lbl_80433FB8@l(r6)
/* 8027655C 002721BC  38 A5 56 20 */	addi r5, r5, lbl_80515620@l
/* 80276560 002721C0  3B E0 00 00 */	li r31, 0
/* 80276564 002721C4  54 00 18 38 */	slwi r0, r0, 3
/* 80276568 002721C8  7C A5 02 14 */	add r5, r5, r0
/* 8027656C 002721CC  90 85 00 04 */	stw r4, 4(r5)
/* 80276570 002721D0  90 65 00 00 */	stw r3, 0(r5)
lbl_80276574:
/* 80276574 002721D4  38 00 FF FF */	li r0, -1
/* 80276578 002721D8  3C 60 80 43 */	lis r3, lbl_80433FB8@ha
/* 8027657C 002721DC  90 03 3F B8 */	stw r0, lbl_80433FB8@l(r3)
lbl_80276580:
/* 80276580 002721E0  7F E3 FB 78 */	mr r3, r31
/* 80276584 002721E4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80276588 002721E8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8027658C 002721EC  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80276590 002721F0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80276594 002721F4  7C 08 03 A6 */	mtlr r0
/* 80276598 002721F8  38 21 00 20 */	addi r1, r1, 0x20
/* 8027659C 002721FC  4E 80 00 20 */	blr

.global SIInterruptHandler
SIInterruptHandler:
/* 802765A0 00272200  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 802765A4 00272204  7C 08 02 A6 */	mflr r0
/* 802765A8 00272208  90 01 00 54 */	stw r0, 0x54(r1)
/* 802765AC 0027220C  39 61 00 50 */	addi r11, r1, 0x50
/* 802765B0 00272210  4B F5 0B 51 */	bl _savegpr_17
/* 802765B4 00272214  3C A0 CD 00 */	lis r5, 0xCD006434@ha
/* 802765B8 00272218  3F 60 80 51 */	lis r27, lbl_80515580@ha
/* 802765BC 0027221C  82 A5 64 34 */	lwz r21, 0xCD006434@l(r5)
/* 802765C0 00272220  7C 7E 1B 78 */	mr r30, r3
/* 802765C4 00272224  7C 9F 23 78 */	mr r31, r4
/* 802765C8 00272228  3B 7B 55 80 */	addi r27, r27, lbl_80515580@l
/* 802765CC 0027222C  56 A3 00 02 */	rlwinm r3, r21, 0, 0, 1
/* 802765D0 00272230  3C 03 40 00 */	addis r0, r3, 0x4000
/* 802765D4 00272234  28 00 00 00 */	cmplwi r0, 0
/* 802765D8 00272238  40 82 01 A4 */	bne lbl_8027677C
/* 802765DC 0027223C  3E 20 80 43 */	lis r17, lbl_80433FB8@ha
/* 802765E0 00272240  82 D1 3F B8 */	lwz r22, lbl_80433FB8@l(r17)
/* 802765E4 00272244  4B FF FC C9 */	bl CompleteTransfer
/* 802765E8 00272248  38 91 3F B8 */	addi r4, r17, 0x3fb8
/* 802765EC 0027224C  38 00 00 00 */	li r0, 0
/* 802765F0 00272250  83 04 00 10 */	lwz r24, 0x10(r4)
/* 802765F4 00272254  7C 77 1B 78 */	mr r23, r3
/* 802765F8 00272258  7E DC B3 78 */	mr r28, r22
/* 802765FC 0027225C  3A 3B 00 00 */	addi r17, r27, 0
/* 80276600 00272260  90 04 00 10 */	stw r0, 0x10(r4)
/* 80276604 00272264  3B 40 00 00 */	li r26, 0
lbl_80276608:
/* 80276608 00272268  3B 9C 00 01 */	addi r28, r28, 1
/* 8027660C 0027226C  57 80 F0 02 */	slwi r0, r28, 0x1e
/* 80276610 00272270  57 83 0F FE */	srwi r3, r28, 0x1f
/* 80276614 00272274  7C 03 00 50 */	subf r0, r3, r0
/* 80276618 00272278  54 00 10 3E */	rotlwi r0, r0, 2
/* 8027661C 0027227C  7F 80 1A 14 */	add r28, r0, r3
/* 80276620 00272280  57 80 28 34 */	slwi r0, r28, 5
/* 80276624 00272284  7F B1 02 14 */	add r29, r17, r0
/* 80276628 00272288  7C 11 00 2E */	lwzx r0, r17, r0
/* 8027662C 0027228C  2C 00 FF FF */	cmpwi r0, -1
/* 80276630 00272290  41 82 00 6C */	beq lbl_8027669C
/* 80276634 00272294  4B FF C1 A5 */	bl __OSGetSystemTime
/* 80276638 00272298  80 BD 00 18 */	lwz r5, 0x18(r29)
/* 8027663C 0027229C  6C 60 80 00 */	xoris r0, r3, 0x8000
/* 80276640 002722A0  80 7D 00 1C */	lwz r3, 0x1c(r29)
/* 80276644 002722A4  6C A5 80 00 */	xoris r5, r5, 0x8000
/* 80276648 002722A8  7C 63 20 10 */	subfc r3, r3, r4
/* 8027664C 002722AC  7C A5 01 10 */	subfe r5, r5, r0
/* 80276650 002722B0  7C A0 01 10 */	subfe r5, r0, r0
/* 80276654 002722B4  7C A5 00 D1 */	neg. r5, r5
/* 80276658 002722B8  40 82 00 44 */	bne lbl_8027669C
/* 8027665C 002722BC  80 7D 00 00 */	lwz r3, 0(r29)
/* 80276660 002722C0  80 9D 00 04 */	lwz r4, 4(r29)
/* 80276664 002722C4  80 BD 00 08 */	lwz r5, 8(r29)
/* 80276668 002722C8  80 DD 00 0C */	lwz r6, 0xc(r29)
/* 8027666C 002722CC  80 FD 00 10 */	lwz r7, 0x10(r29)
/* 80276670 002722D0  81 1D 00 14 */	lwz r8, 0x14(r29)
/* 80276674 002722D4  48 00 03 D9 */	bl __SITransfer
/* 80276678 002722D8  2C 03 00 00 */	cmpwi r3, 0
/* 8027667C 002722DC  41 82 00 2C */	beq lbl_802766A8
/* 80276680 002722E0  1C 7C 00 30 */	mulli r3, r28, 0x30
/* 80276684 002722E4  38 1B 00 C0 */	addi r0, r27, 0xc0
/* 80276688 002722E8  7C 60 1A 14 */	add r3, r0, r3
/* 8027668C 002722EC  4B FF 33 ED */	bl OSCancelAlarm
/* 80276690 002722F0  38 00 FF FF */	li r0, -1
/* 80276694 002722F4  90 1D 00 00 */	stw r0, 0(r29)
/* 80276698 002722F8  48 00 00 10 */	b lbl_802766A8
lbl_8027669C:
/* 8027669C 002722FC  3B 5A 00 01 */	addi r26, r26, 1
/* 802766A0 00272300  2C 1A 00 04 */	cmpwi r26, 4
/* 802766A4 00272304  41 80 FF 64 */	blt lbl_80276608
lbl_802766A8:
/* 802766A8 00272308  2C 18 00 00 */	cmpwi r24, 0
/* 802766AC 0027230C  41 82 00 1C */	beq lbl_802766C8
/* 802766B0 00272310  7F 0C C3 78 */	mr r12, r24
/* 802766B4 00272314  7E C3 B3 78 */	mr r3, r22
/* 802766B8 00272318  7E E4 BB 78 */	mr r4, r23
/* 802766BC 0027231C  7F E5 FB 78 */	mr r5, r31
/* 802766C0 00272320  7D 89 03 A6 */	mtctr r12
/* 802766C4 00272324  4E 80 04 21 */	bctrl
lbl_802766C8:
/* 802766C8 00272328  3C A0 CD 00 */	lis r5, 0xCD006438@ha
/* 802766CC 0027232C  3C 60 80 43 */	lis r3, lbl_80433FD0@ha
/* 802766D0 00272330  56 C0 18 38 */	slwi r0, r22, 3
/* 802766D4 00272334  3C 80 0F 00 */	lis r4, 0xf00
/* 802766D8 00272338  7C 84 06 30 */	sraw r4, r4, r0
/* 802766DC 0027233C  80 C5 64 38 */	lwz r6, 0xCD006438@l(r5)
/* 802766E0 00272340  56 C0 10 3A */	slwi r0, r22, 2
/* 802766E4 00272344  38 63 3F D0 */	addi r3, r3, lbl_80433FD0@l
/* 802766E8 00272348  7C C6 20 38 */	and r6, r6, r4
/* 802766EC 0027234C  90 C5 64 38 */	stw r6, 0x6438(r5)
/* 802766F0 00272350  7C C3 02 14 */	add r6, r3, r0
/* 802766F4 00272354  7C 03 00 2E */	lwzx r0, r3, r0
/* 802766F8 00272358  28 00 00 80 */	cmplwi r0, 0x80
/* 802766FC 0027235C  40 82 00 80 */	bne lbl_8027677C
/* 80276700 00272360  56 C0 28 34 */	slwi r0, r22, 5
/* 80276704 00272364  38 7B 00 00 */	addi r3, r27, 0
/* 80276708 00272368  7C 03 00 2E */	lwzx r0, r3, r0
/* 8027670C 0027236C  38 80 00 00 */	li r4, 0
/* 80276710 00272370  2C 00 FF FF */	cmpwi r0, -1
/* 80276714 00272374  40 82 00 14 */	bne lbl_80276728
/* 80276718 00272378  3C 60 80 43 */	lis r3, lbl_80433FB8@ha
/* 8027671C 0027237C  80 03 3F B8 */	lwz r0, lbl_80433FB8@l(r3)
/* 80276720 00272380  7C 00 B0 00 */	cmpw r0, r22
/* 80276724 00272384  40 82 00 08 */	bne lbl_8027672C
lbl_80276728:
/* 80276728 00272388  38 80 00 01 */	li r4, 1
lbl_8027672C:
/* 8027672C 0027238C  2C 04 00 00 */	cmpwi r4, 0
/* 80276730 00272390  40 82 00 4C */	bne lbl_8027677C
/* 80276734 00272394  3C 80 80 00 */	lis r4, 0x800000F8@ha
/* 80276738 00272398  3D 00 80 27 */	lis r8, GetTypeCallback@ha
/* 8027673C 0027239C  80 04 00 F8 */	lwz r0, 0x800000F8@l(r4)
/* 80276740 002723A0  3C 60 43 1C */	lis r3, 0x431BDE83@ha
/* 80276744 002723A4  38 83 DE 83 */	addi r4, r3, 0x431BDE83@l
/* 80276748 002723A8  39 08 6E 50 */	addi r8, r8, GetTypeCallback@l
/* 8027674C 002723AC  54 00 F0 BE */	srwi r0, r0, 2
/* 80276750 002723B0  7E C3 B3 78 */	mr r3, r22
/* 80276754 002723B4  7C 04 00 16 */	mulhwu r0, r4, r0
/* 80276758 002723B8  38 8D A8 A0 */	addi r4, r13, lbl_8063FB60-_SDA_BASE_
/* 8027675C 002723BC  38 A0 00 01 */	li r5, 1
/* 80276760 002723C0  38 E0 00 03 */	li r7, 3
/* 80276764 002723C4  39 20 00 00 */	li r9, 0
/* 80276768 002723C8  54 0A 8B FE */	srwi r10, r0, 0xf
/* 8027676C 002723CC  54 00 BA 72 */	rlwinm r0, r0, 0x17, 9, 0x19
/* 80276770 002723D0  7C 00 52 14 */	add r0, r0, r10
/* 80276774 002723D4  54 0A E8 FE */	srwi r10, r0, 3
/* 80276778 002723D8  48 00 05 6D */	bl SITransfer
lbl_8027677C:
/* 8027677C 002723DC  56 A3 00 C8 */	rlwinm r3, r21, 0, 3, 4
/* 80276780 002723E0  3C 03 E8 00 */	addis r0, r3, 0xe800
/* 80276784 002723E4  28 00 00 00 */	cmplwi r0, 0
/* 80276788 002723E8  40 82 01 EC */	bne lbl_80276974
/* 8027678C 002723EC  48 00 31 B9 */	bl VIGetCurrentLine
/* 80276790 002723F0  3C 80 80 43 */	lis r4, lbl_80433FB8@ha
/* 80276794 002723F4  3F 20 80 43 */	lis r25, lbl_80433FD0@ha
/* 80276798 002723F8  38 84 3F B8 */	addi r4, r4, lbl_80433FB8@l
/* 8027679C 002723FC  3F 80 CD 00 */	lis r28, 0xCD006400@ha
/* 802767A0 00272400  80 04 00 04 */	lwz r0, 4(r4)
/* 802767A4 00272404  3A 63 00 01 */	addi r19, r3, 1
/* 802767A8 00272408  3B 39 3F D0 */	addi r25, r25, lbl_80433FD0@l
/* 802767AC 0027240C  3B 1C 64 00 */	addi r24, r28, 0xCD006400@l
/* 802767B0 00272410  54 12 85 BE */	rlwinm r18, r0, 0x10, 0x16, 0x1f
/* 802767B4 00272414  3A FB 01 80 */	addi r23, r27, 0x180
/* 802767B8 00272418  3A DB 01 A0 */	addi r22, r27, 0x1a0
/* 802767BC 0027241C  3A BB 01 B0 */	addi r21, r27, 0x1b0
/* 802767C0 00272420  3A 80 00 00 */	li r20, 0
/* 802767C4 00272424  3B A0 00 08 */	li r29, 8
/* 802767C8 00272428  3A 20 00 01 */	li r17, 1
lbl_802767CC:
/* 802767CC 0027242C  4B FF 7F 91 */	bl OSDisableInterrupts
/* 802767D0 00272430  20 14 00 03 */	subfic r0, r20, 3
/* 802767D4 00272434  83 5C 64 38 */	lwz r26, 0x6438(r28)
/* 802767D8 00272438  54 00 18 38 */	slwi r0, r0, 3
/* 802767DC 0027243C  7F 5A 04 30 */	srw r26, r26, r0
/* 802767E0 00272440  57 40 07 39 */	rlwinm. r0, r26, 0, 0x1c, 0x1c
/* 802767E4 00272444  41 82 00 14 */	beq lbl_802767F8
/* 802767E8 00272448  80 19 00 00 */	lwz r0, 0(r25)
/* 802767EC 0027244C  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802767F0 00272450  40 82 00 08 */	bne lbl_802767F8
/* 802767F4 00272454  93 B9 00 00 */	stw r29, 0(r25)
lbl_802767F8:
/* 802767F8 00272458  4B FF 7F 8D */	bl OSRestoreInterrupts
/* 802767FC 0027245C  57 40 06 B5 */	rlwinm. r0, r26, 0, 0x1a, 0x1a
/* 80276800 00272460  41 82 00 20 */	beq lbl_80276820
/* 80276804 00272464  80 18 00 04 */	lwz r0, 4(r24)
/* 80276808 00272468  38 60 00 01 */	li r3, 1
/* 8027680C 0027246C  90 17 00 00 */	stw r0, 0(r23)
/* 80276810 00272470  80 18 00 08 */	lwz r0, 8(r24)
/* 80276814 00272474  90 17 00 04 */	stw r0, 4(r23)
/* 80276818 00272478  92 36 00 00 */	stw r17, 0(r22)
/* 8027681C 0027247C  48 00 00 08 */	b lbl_80276824
lbl_80276820:
/* 80276820 00272480  38 60 00 00 */	li r3, 0
lbl_80276824:
/* 80276824 00272484  2C 03 00 00 */	cmpwi r3, 0
/* 80276828 00272488  41 82 00 08 */	beq lbl_80276830
/* 8027682C 0027248C  92 75 00 00 */	stw r19, 0(r21)
lbl_80276830:
/* 80276830 00272490  3A 94 00 01 */	addi r20, r20, 1
/* 80276834 00272494  3B 18 00 0C */	addi r24, r24, 0xc
/* 80276838 00272498  2C 14 00 04 */	cmpwi r20, 4
/* 8027683C 0027249C  3A F7 00 08 */	addi r23, r23, 8
/* 80276840 002724A0  3A D6 00 04 */	addi r22, r22, 4
/* 80276844 002724A4  3A B5 00 04 */	addi r21, r21, 4
/* 80276848 002724A8  3B 39 00 04 */	addi r25, r25, 4
/* 8027684C 002724AC  41 80 FF 80 */	blt lbl_802767CC
/* 80276850 002724B0  3C 80 80 43 */	lis r4, lbl_80433FB8@ha
/* 80276854 002724B4  3C 60 80 00 */	lis r3, 0x8000
/* 80276858 002724B8  38 84 3F B8 */	addi r4, r4, lbl_80433FB8@l
/* 8027685C 002724BC  38 00 00 18 */	li r0, 0x18
/* 80276860 002724C0  80 A4 00 04 */	lwz r5, 4(r4)
/* 80276864 002724C4  7C 60 04 30 */	srw r0, r3, r0
/* 80276868 002724C8  38 9B 01 B0 */	addi r4, r27, 0x1b0
/* 8027686C 002724CC  56 46 F8 7E */	srwi r6, r18, 1
/* 80276870 002724D0  7C A0 00 39 */	and. r0, r5, r0
/* 80276874 002724D4  41 82 00 24 */	beq lbl_80276898
/* 80276878 002724D8  80 04 00 00 */	lwz r0, 0(r4)
/* 8027687C 002724DC  2C 00 00 00 */	cmpwi r0, 0
/* 80276880 002724E0  41 82 00 F4 */	beq lbl_80276974
/* 80276884 002724E4  80 04 00 00 */	lwz r0, 0(r4)
/* 80276888 002724E8  7C 06 02 14 */	add r0, r6, r0
/* 8027688C 002724EC  7C 00 98 40 */	cmplw r0, r19
/* 80276890 002724F0  40 80 00 08 */	bge lbl_80276898
/* 80276894 002724F4  48 00 00 E0 */	b lbl_80276974
lbl_80276898:
/* 80276898 002724F8  38 00 00 19 */	li r0, 0x19
/* 8027689C 002724FC  7C 60 04 30 */	srw r0, r3, r0
/* 802768A0 00272500  7C A0 00 39 */	and. r0, r5, r0
/* 802768A4 00272504  41 82 00 24 */	beq lbl_802768C8
/* 802768A8 00272508  80 04 00 04 */	lwz r0, 4(r4)
/* 802768AC 0027250C  2C 00 00 00 */	cmpwi r0, 0
/* 802768B0 00272510  41 82 00 C4 */	beq lbl_80276974
/* 802768B4 00272514  80 04 00 04 */	lwz r0, 4(r4)
/* 802768B8 00272518  7C 06 02 14 */	add r0, r6, r0
/* 802768BC 0027251C  7C 00 98 40 */	cmplw r0, r19
/* 802768C0 00272520  40 80 00 08 */	bge lbl_802768C8
/* 802768C4 00272524  48 00 00 B0 */	b lbl_80276974
lbl_802768C8:
/* 802768C8 00272528  38 00 00 1A */	li r0, 0x1a
/* 802768CC 0027252C  7C 60 04 30 */	srw r0, r3, r0
/* 802768D0 00272530  7C A0 00 39 */	and. r0, r5, r0
/* 802768D4 00272534  41 82 00 24 */	beq lbl_802768F8
/* 802768D8 00272538  80 04 00 08 */	lwz r0, 8(r4)
/* 802768DC 0027253C  2C 00 00 00 */	cmpwi r0, 0
/* 802768E0 00272540  41 82 00 94 */	beq lbl_80276974
/* 802768E4 00272544  80 04 00 08 */	lwz r0, 8(r4)
/* 802768E8 00272548  7C 06 02 14 */	add r0, r6, r0
/* 802768EC 0027254C  7C 00 98 40 */	cmplw r0, r19
/* 802768F0 00272550  40 80 00 08 */	bge lbl_802768F8
/* 802768F4 00272554  48 00 00 80 */	b lbl_80276974
lbl_802768F8:
/* 802768F8 00272558  38 00 00 1B */	li r0, 0x1b
/* 802768FC 0027255C  7C 60 04 30 */	srw r0, r3, r0
/* 80276900 00272560  7C A0 00 39 */	and. r0, r5, r0
/* 80276904 00272564  41 82 00 24 */	beq lbl_80276928
/* 80276908 00272568  80 04 00 0C */	lwz r0, 0xc(r4)
/* 8027690C 0027256C  2C 00 00 00 */	cmpwi r0, 0
/* 80276910 00272570  41 82 00 64 */	beq lbl_80276974
/* 80276914 00272574  80 04 00 0C */	lwz r0, 0xc(r4)
/* 80276918 00272578  7C 06 02 14 */	add r0, r6, r0
/* 8027691C 0027257C  7C 00 98 40 */	cmplw r0, r19
/* 80276920 00272580  40 80 00 08 */	bge lbl_80276928
/* 80276924 00272584  48 00 00 50 */	b lbl_80276974
lbl_80276928:
/* 80276928 00272588  38 00 00 00 */	li r0, 0
/* 8027692C 0027258C  38 7B 01 B0 */	addi r3, r27, 0x1b0
/* 80276930 00272590  90 03 00 00 */	stw r0, 0(r3)
/* 80276934 00272594  3A 3B 01 C0 */	addi r17, r27, 0x1c0
/* 80276938 00272598  3A 40 00 00 */	li r18, 0
/* 8027693C 0027259C  90 03 00 04 */	stw r0, 4(r3)
/* 80276940 002725A0  90 03 00 08 */	stw r0, 8(r3)
/* 80276944 002725A4  90 03 00 0C */	stw r0, 0xc(r3)
lbl_80276948:
/* 80276948 002725A8  81 91 00 00 */	lwz r12, 0(r17)
/* 8027694C 002725AC  2C 0C 00 00 */	cmpwi r12, 0
/* 80276950 002725B0  41 82 00 14 */	beq lbl_80276964
/* 80276954 002725B4  7F C3 F3 78 */	mr r3, r30
/* 80276958 002725B8  7F E4 FB 78 */	mr r4, r31
/* 8027695C 002725BC  7D 89 03 A6 */	mtctr r12
/* 80276960 002725C0  4E 80 04 21 */	bctrl
lbl_80276964:
/* 80276964 002725C4  3A 52 00 01 */	addi r18, r18, 1
/* 80276968 002725C8  3A 31 00 04 */	addi r17, r17, 4
/* 8027696C 002725CC  2C 12 00 04 */	cmpwi r18, 4
/* 80276970 002725D0  41 80 FF D8 */	blt lbl_80276948
lbl_80276974:
/* 80276974 002725D4  39 61 00 50 */	addi r11, r1, 0x50
/* 80276978 002725D8  4B F5 07 D5 */	bl _restgpr_17
/* 8027697C 002725DC  80 01 00 54 */	lwz r0, 0x54(r1)
/* 80276980 002725E0  7C 08 03 A6 */	mtlr r0
/* 80276984 002725E4  38 21 00 50 */	addi r1, r1, 0x50
/* 80276988 002725E8  4E 80 00 20 */	blr

.global SIInit
SIInit:
/* 8027698C 002725EC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80276990 002725F0  7C 08 02 A6 */	mflr r0
/* 80276994 002725F4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80276998 002725F8  80 0D A8 A4 */	lwz r0, lbl_8063FB64-_SDA_BASE_(r13)
/* 8027699C 002725FC  2C 00 00 00 */	cmpwi r0, 0
/* 802769A0 00272600  40 82 00 9C */	bne lbl_80276A3C
/* 802769A4 00272604  80 6D 88 00 */	lwz r3, lbl_8063DAC0-_SDA_BASE_(r13)
/* 802769A8 00272608  4B FF 2C A9 */	bl OSRegisterVersion
/* 802769AC 0027260C  3C C0 80 51 */	lis r6, lbl_80515580@ha
/* 802769B0 00272610  3C 80 80 43 */	lis r4, lbl_80433FB8@ha
/* 802769B4 00272614  38 E0 FF FF */	li r7, -1
/* 802769B8 00272618  38 00 00 00 */	li r0, 0
/* 802769BC 0027261C  38 A6 55 80 */	addi r5, r6, lbl_80515580@l
/* 802769C0 00272620  38 84 3F B8 */	addi r4, r4, lbl_80433FB8@l
/* 802769C4 00272624  90 E5 00 60 */	stw r7, 0x60(r5)
/* 802769C8 00272628  38 60 00 00 */	li r3, 0
/* 802769CC 0027262C  90 E5 00 40 */	stw r7, 0x40(r5)
/* 802769D0 00272630  90 E5 00 20 */	stw r7, 0x20(r5)
/* 802769D4 00272634  90 E6 55 80 */	stw r7, 0x5580(r6)
/* 802769D8 00272638  90 04 00 04 */	stw r0, 4(r4)
/* 802769DC 0027263C  48 00 08 D9 */	bl SISetSamplingRate
/* 802769E0 00272640  3C 60 CD 00 */	lis r3, 0xCD006434@ha
lbl_802769E4:
/* 802769E4 00272644  80 03 64 34 */	lwz r0, 0xCD006434@l(r3)
/* 802769E8 00272648  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802769EC 0027264C  40 82 FF F8 */	bne lbl_802769E4
/* 802769F0 00272650  3C 00 80 00 */	lis r0, 0x8000
/* 802769F4 00272654  3C 60 CD 00 */	lis r3, 0xCD006434@ha
/* 802769F8 00272658  3C 80 80 27 */	lis r4, SIInterruptHandler@ha
/* 802769FC 0027265C  90 03 64 34 */	stw r0, 0xCD006434@l(r3)
/* 80276A00 00272660  38 84 65 A0 */	addi r4, r4, SIInterruptHandler@l
/* 80276A04 00272664  38 60 00 14 */	li r3, 0x14
/* 80276A08 00272668  4B FF 7D A1 */	bl __OSSetInterruptHandler
/* 80276A0C 0027266C  38 60 08 00 */	li r3, 0x800
/* 80276A10 00272670  4B FF 81 5D */	bl __OSUnmaskInterrupts
/* 80276A14 00272674  38 60 00 00 */	li r3, 0
/* 80276A18 00272678  48 00 06 E9 */	bl SIGetType
/* 80276A1C 0027267C  38 60 00 01 */	li r3, 1
/* 80276A20 00272680  48 00 06 E1 */	bl SIGetType
/* 80276A24 00272684  38 60 00 02 */	li r3, 2
/* 80276A28 00272688  48 00 06 D9 */	bl SIGetType
/* 80276A2C 0027268C  38 60 00 03 */	li r3, 3
/* 80276A30 00272690  48 00 06 D1 */	bl SIGetType
/* 80276A34 00272694  38 00 00 01 */	li r0, 1
/* 80276A38 00272698  90 0D A8 A4 */	stw r0, lbl_8063FB64-_SDA_BASE_(r13)
lbl_80276A3C:
/* 80276A3C 0027269C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80276A40 002726A0  7C 08 03 A6 */	mtlr r0
/* 80276A44 002726A4  38 21 00 10 */	addi r1, r1, 0x10
/* 80276A48 002726A8  4E 80 00 20 */	blr

.global __SITransfer
__SITransfer:
/* 80276A4C 002726AC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80276A50 002726B0  7C 08 02 A6 */	mflr r0
/* 80276A54 002726B4  90 01 00 24 */	stw r0, 0x24(r1)
/* 80276A58 002726B8  39 61 00 20 */	addi r11, r1, 0x20
/* 80276A5C 002726BC  4B F5 06 C9 */	bl _savegpr_26
/* 80276A60 002726C0  7C 7B 1B 78 */	mr r27, r3
/* 80276A64 002726C4  7C 9C 23 78 */	mr r28, r4
/* 80276A68 002726C8  7C BD 2B 78 */	mr r29, r5
/* 80276A6C 002726CC  7C DA 33 78 */	mr r26, r6
/* 80276A70 002726D0  7C FE 3B 78 */	mr r30, r7
/* 80276A74 002726D4  7D 1F 43 78 */	mr r31, r8
/* 80276A78 002726D8  4B FF 7C E5 */	bl OSDisableInterrupts
/* 80276A7C 002726DC  3D 00 80 43 */	lis r8, lbl_80433FB8@ha
/* 80276A80 002726E0  80 08 3F B8 */	lwz r0, lbl_80433FB8@l(r8)
/* 80276A84 002726E4  2C 00 FF FF */	cmpwi r0, -1
/* 80276A88 002726E8  41 82 00 10 */	beq lbl_80276A98
/* 80276A8C 002726EC  4B FF 7C F9 */	bl OSRestoreInterrupts
/* 80276A90 002726F0  38 60 00 00 */	li r3, 0
/* 80276A94 002726F4  48 00 01 50 */	b lbl_80276BE4
lbl_80276A98:
/* 80276A98 002726F8  3C E0 CD 00 */	lis r7, 0xCD006438@ha
/* 80276A9C 002726FC  57 64 18 38 */	slwi r4, r27, 3
/* 80276AA0 00272700  3C A0 0F 00 */	lis r5, 0xf00
/* 80276AA4 00272704  81 27 64 38 */	lwz r9, 0xCD006438@l(r7)
/* 80276AA8 00272708  7C A5 26 30 */	sraw r5, r5, r4
/* 80276AAC 0027270C  38 1D 00 03 */	addi r0, r29, 3
/* 80276AB0 00272710  7D 29 28 38 */	and r9, r9, r5
/* 80276AB4 00272714  38 C8 3F B8 */	addi r6, r8, 0x3fb8
/* 80276AB8 00272718  91 27 64 38 */	stw r9, 0x6438(r7)
/* 80276ABC 0027271C  54 04 F0 BF */	rlwinm. r4, r0, 0x1e, 2, 0x1f
/* 80276AC0 00272720  38 A0 00 00 */	li r5, 0
/* 80276AC4 00272724  93 68 3F B8 */	stw r27, 0x3fb8(r8)
/* 80276AC8 00272728  93 E6 00 10 */	stw r31, 0x10(r6)
/* 80276ACC 0027272C  93 C6 00 08 */	stw r30, 8(r6)
/* 80276AD0 00272730  93 46 00 0C */	stw r26, 0xc(r6)
/* 80276AD4 00272734  41 82 00 B4 */	beq lbl_80276B88
/* 80276AD8 00272738  28 04 00 08 */	cmplwi r4, 8
/* 80276ADC 0027273C  38 C4 FF F8 */	addi r6, r4, -8
/* 80276AE0 00272740  40 81 00 70 */	ble lbl_80276B50
/* 80276AE4 00272744  38 06 00 07 */	addi r0, r6, 7
/* 80276AE8 00272748  7F 88 E3 78 */	mr r8, r28
/* 80276AEC 0027274C  54 00 E8 FE */	srwi r0, r0, 3
/* 80276AF0 00272750  38 E7 64 00 */	addi r7, r7, 0x6400
/* 80276AF4 00272754  7C 09 03 A6 */	mtctr r0
/* 80276AF8 00272758  28 06 00 00 */	cmplwi r6, 0
/* 80276AFC 0027275C  40 81 00 54 */	ble lbl_80276B50
lbl_80276B00:
/* 80276B00 00272760  80 08 00 00 */	lwz r0, 0(r8)
/* 80276B04 00272764  38 A5 00 08 */	addi r5, r5, 8
/* 80276B08 00272768  90 07 00 80 */	stw r0, 0x80(r7)
/* 80276B0C 0027276C  80 08 00 04 */	lwz r0, 4(r8)
/* 80276B10 00272770  90 07 00 84 */	stw r0, 0x84(r7)
/* 80276B14 00272774  80 08 00 08 */	lwz r0, 8(r8)
/* 80276B18 00272778  90 07 00 88 */	stw r0, 0x88(r7)
/* 80276B1C 0027277C  80 08 00 0C */	lwz r0, 0xc(r8)
/* 80276B20 00272780  90 07 00 8C */	stw r0, 0x8c(r7)
/* 80276B24 00272784  80 08 00 10 */	lwz r0, 0x10(r8)
/* 80276B28 00272788  90 07 00 90 */	stw r0, 0x90(r7)
/* 80276B2C 0027278C  80 08 00 14 */	lwz r0, 0x14(r8)
/* 80276B30 00272790  90 07 00 94 */	stw r0, 0x94(r7)
/* 80276B34 00272794  80 08 00 18 */	lwz r0, 0x18(r8)
/* 80276B38 00272798  90 07 00 98 */	stw r0, 0x98(r7)
/* 80276B3C 0027279C  80 08 00 1C */	lwz r0, 0x1c(r8)
/* 80276B40 002727A0  39 08 00 20 */	addi r8, r8, 0x20
/* 80276B44 002727A4  90 07 00 9C */	stw r0, 0x9c(r7)
/* 80276B48 002727A8  38 E7 00 20 */	addi r7, r7, 0x20
/* 80276B4C 002727AC  42 00 FF B4 */	bdnz lbl_80276B00
lbl_80276B50:
/* 80276B50 002727B0  54 A7 10 3A */	slwi r7, r5, 2
/* 80276B54 002727B4  3C 00 CD 00 */	lis r0, 0xcd00
/* 80276B58 002727B8  7C C0 3A 14 */	add r6, r0, r7
/* 80276B5C 002727BC  7C 05 20 50 */	subf r0, r5, r4
/* 80276B60 002727C0  7C FC 3A 14 */	add r7, r28, r7
/* 80276B64 002727C4  38 C6 64 00 */	addi r6, r6, 0x6400
/* 80276B68 002727C8  7C 09 03 A6 */	mtctr r0
/* 80276B6C 002727CC  7C 05 20 40 */	cmplw r5, r4
/* 80276B70 002727D0  40 80 00 18 */	bge lbl_80276B88
lbl_80276B74:
/* 80276B74 002727D4  80 07 00 00 */	lwz r0, 0(r7)
/* 80276B78 002727D8  38 E7 00 04 */	addi r7, r7, 4
/* 80276B7C 002727DC  90 06 00 80 */	stw r0, 0x80(r6)
/* 80276B80 002727E0  38 C6 00 04 */	addi r6, r6, 4
/* 80276B84 002727E4  42 00 FF F0 */	bdnz lbl_80276B74
lbl_80276B88:
/* 80276B88 002727E8  38 9D FF 80 */	addi r4, r29, -128
/* 80276B8C 002727EC  20 1D 00 80 */	subfic r0, r29, 0x80
/* 80276B90 002727F0  7C 80 00 F8 */	nor r0, r4, r0
/* 80276B94 002727F4  3D 20 CD 00 */	lis r9, 0xCD006434@ha
/* 80276B98 002727F8  7C 05 FE 70 */	srawi r5, r0, 0x1f
/* 80276B9C 002727FC  7C DF 00 D0 */	neg r6, r31
/* 80276BA0 00272800  38 9E FF 80 */	addi r4, r30, -128
/* 80276BA4 00272804  20 1E 00 80 */	subfic r0, r30, 0x80
/* 80276BA8 00272808  7C 80 00 F8 */	nor r0, r4, r0
/* 80276BAC 0027280C  81 09 64 34 */	lwz r8, 0xCD006434@l(r9)
/* 80276BB0 00272810  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 80276BB4 00272814  7C C7 FB 78 */	or r7, r6, r31
/* 80276BB8 00272818  7F A4 28 78 */	andc r4, r29, r5
/* 80276BBC 0027281C  65 06 80 00 */	oris r6, r8, 0x8000
/* 80276BC0 00272820  50 E6 F8 42 */	rlwimi r6, r7, 0x1f, 1, 1
/* 80276BC4 00272824  7F C0 00 78 */	andc r0, r30, r0
/* 80276BC8 00272828  50 86 82 5E */	rlwimi r6, r4, 0x10, 9, 0xf
/* 80276BCC 0027282C  50 06 44 6E */	rlwimi r6, r0, 8, 0x11, 0x17
/* 80276BD0 00272830  53 66 0F 7C */	rlwimi r6, r27, 1, 0x1d, 0x1e
/* 80276BD4 00272834  60 C0 00 01 */	ori r0, r6, 1
/* 80276BD8 00272838  90 09 64 34 */	stw r0, 0x6434(r9)
/* 80276BDC 0027283C  4B FF 7B A9 */	bl OSRestoreInterrupts
/* 80276BE0 00272840  38 60 00 01 */	li r3, 1
lbl_80276BE4:
/* 80276BE4 00272844  39 61 00 20 */	addi r11, r1, 0x20
/* 80276BE8 00272848  4B F5 05 89 */	bl _restgpr_26
/* 80276BEC 0027284C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80276BF0 00272850  7C 08 03 A6 */	mtlr r0
/* 80276BF4 00272854  38 21 00 20 */	addi r1, r1, 0x20
/* 80276BF8 00272858  4E 80 00 20 */	blr

.global SISetXY
SISetXY:
/* 80276BFC 0027285C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80276C00 00272860  7C 08 02 A6 */	mflr r0
/* 80276C04 00272864  90 01 00 14 */	stw r0, 0x14(r1)
/* 80276C08 00272868  54 80 40 2E */	slwi r0, r4, 8
/* 80276C0C 0027286C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80276C10 00272870  54 7F 80 1E */	slwi r31, r3, 0x10
/* 80276C14 00272874  7F FF 03 78 */	or r31, r31, r0
/* 80276C18 00272878  4B FF 7B 45 */	bl OSDisableInterrupts
/* 80276C1C 0027287C  3C A0 80 43 */	lis r5, lbl_80433FB8@ha
/* 80276C20 00272880  3C 80 CD 00 */	lis r4, 0xCD006430@ha
/* 80276C24 00272884  38 A5 3F B8 */	addi r5, r5, lbl_80433FB8@l
/* 80276C28 00272888  80 05 00 04 */	lwz r0, 4(r5)
/* 80276C2C 0027288C  54 00 06 0A */	rlwinm r0, r0, 0, 0x18, 5
/* 80276C30 00272890  7C 1F FB 78 */	or r31, r0, r31
/* 80276C34 00272894  93 E5 00 04 */	stw r31, 4(r5)
/* 80276C38 00272898  93 E4 64 30 */	stw r31, 0xCD006430@l(r4)
/* 80276C3C 0027289C  4B FF 7B 49 */	bl OSRestoreInterrupts
/* 80276C40 002728A0  7F E3 FB 78 */	mr r3, r31
/* 80276C44 002728A4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80276C48 002728A8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80276C4C 002728AC  7C 08 03 A6 */	mtlr r0
/* 80276C50 002728B0  38 21 00 10 */	addi r1, r1, 0x10
/* 80276C54 002728B4  4E 80 00 20 */	blr

.global AlarmHandler
AlarmHandler:
/* 80276C58 002728B8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80276C5C 002728BC  7C 08 02 A6 */	mflr r0
/* 80276C60 002728C0  3C C0 80 51 */	lis r6, lbl_80515640@ha
/* 80276C64 002728C4  3C A0 2A AB */	lis r5, 0x2AAAAAAB@ha
/* 80276C68 002728C8  90 01 00 14 */	stw r0, 0x14(r1)
/* 80276C6C 002728CC  38 C6 56 40 */	addi r6, r6, lbl_80515640@l
/* 80276C70 002728D0  7C 06 18 50 */	subf r0, r6, r3
/* 80276C74 002728D4  38 65 AA AB */	addi r3, r5, 0x2AAAAAAB@l
/* 80276C78 002728D8  7C 03 00 96 */	mulhw r0, r3, r0
/* 80276C7C 002728DC  3C 80 80 51 */	lis r4, lbl_80515580@ha
/* 80276C80 002728E0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80276C84 002728E4  38 84 55 80 */	addi r4, r4, lbl_80515580@l
/* 80276C88 002728E8  7C 00 1E 70 */	srawi r0, r0, 3
/* 80276C8C 002728EC  54 03 0F FE */	srwi r3, r0, 0x1f
/* 80276C90 002728F0  7C 00 1A 14 */	add r0, r0, r3
/* 80276C94 002728F4  54 00 28 34 */	slwi r0, r0, 5
/* 80276C98 002728F8  7C 64 00 2E */	lwzx r3, r4, r0
/* 80276C9C 002728FC  7F E4 02 14 */	add r31, r4, r0
/* 80276CA0 00272900  2C 03 FF FF */	cmpwi r3, -1
/* 80276CA4 00272904  41 82 00 2C */	beq lbl_80276CD0
/* 80276CA8 00272908  80 9F 00 04 */	lwz r4, 4(r31)
/* 80276CAC 0027290C  80 BF 00 08 */	lwz r5, 8(r31)
/* 80276CB0 00272910  80 DF 00 0C */	lwz r6, 0xc(r31)
/* 80276CB4 00272914  80 FF 00 10 */	lwz r7, 0x10(r31)
/* 80276CB8 00272918  81 1F 00 14 */	lwz r8, 0x14(r31)
/* 80276CBC 0027291C  4B FF FD 91 */	bl __SITransfer
/* 80276CC0 00272920  2C 03 00 00 */	cmpwi r3, 0
/* 80276CC4 00272924  41 82 00 0C */	beq lbl_80276CD0
/* 80276CC8 00272928  38 00 FF FF */	li r0, -1
/* 80276CCC 0027292C  90 1F 00 00 */	stw r0, 0(r31)
lbl_80276CD0:
/* 80276CD0 00272930  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80276CD4 00272934  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80276CD8 00272938  7C 08 03 A6 */	mtlr r0
/* 80276CDC 0027293C  38 21 00 10 */	addi r1, r1, 0x10
/* 80276CE0 00272940  4E 80 00 20 */	blr

.global SITransfer
SITransfer:
/* 80276CE4 00272944  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 80276CE8 00272948  7C 08 02 A6 */	mflr r0
/* 80276CEC 0027294C  90 01 00 44 */	stw r0, 0x44(r1)
/* 80276CF0 00272950  39 61 00 40 */	addi r11, r1, 0x40
/* 80276CF4 00272954  4B F5 04 1D */	bl _savegpr_21
/* 80276CF8 00272958  3F E0 80 51 */	lis r31, lbl_80515580@ha
/* 80276CFC 0027295C  54 6B 28 34 */	slwi r11, r3, 5
/* 80276D00 00272960  3B FF 55 80 */	addi r31, r31, lbl_80515580@l
/* 80276D04 00272964  7C 75 1B 78 */	mr r21, r3
/* 80276D08 00272968  38 1F 00 00 */	addi r0, r31, 0
/* 80276D0C 0027296C  7C 96 23 78 */	mr r22, r4
/* 80276D10 00272970  7C B7 2B 78 */	mr r23, r5
/* 80276D14 00272974  7C D8 33 78 */	mr r24, r6
/* 80276D18 00272978  7C F9 3B 78 */	mr r25, r7
/* 80276D1C 0027297C  7D 1A 43 78 */	mr r26, r8
/* 80276D20 00272980  7D 3B 4B 78 */	mr r27, r9
/* 80276D24 00272984  7D 5C 53 78 */	mr r28, r10
/* 80276D28 00272988  7F A0 5A 14 */	add r29, r0, r11
/* 80276D2C 0027298C  4B FF 7A 31 */	bl OSDisableInterrupts
/* 80276D30 00272990  80 1D 00 00 */	lwz r0, 0(r29)
/* 80276D34 00272994  7C 7E 1B 78 */	mr r30, r3
/* 80276D38 00272998  2C 00 FF FF */	cmpwi r0, -1
/* 80276D3C 0027299C  40 82 00 14 */	bne lbl_80276D50
/* 80276D40 002729A0  3C 60 80 43 */	lis r3, lbl_80433FB8@ha
/* 80276D44 002729A4  80 03 3F B8 */	lwz r0, lbl_80433FB8@l(r3)
/* 80276D48 002729A8  7C 00 A8 00 */	cmpw r0, r21
/* 80276D4C 002729AC  40 82 00 14 */	bne lbl_80276D60
lbl_80276D50:
/* 80276D50 002729B0  7F C3 F3 78 */	mr r3, r30
/* 80276D54 002729B4  4B FF 7A 31 */	bl OSRestoreInterrupts
/* 80276D58 002729B8  38 60 00 00 */	li r3, 0
/* 80276D5C 002729BC  48 00 00 DC */	b lbl_80276E38
lbl_80276D60:
/* 80276D60 002729C0  4B FF BA 79 */	bl __OSGetSystemTime
/* 80276D64 002729C4  7F 80 DB 79 */	or. r0, r28, r27
/* 80276D68 002729C8  7C 68 1B 78 */	mr r8, r3
/* 80276D6C 002729CC  40 82 00 10 */	bne lbl_80276D7C
/* 80276D70 002729D0  7C 9C 23 78 */	mr r28, r4
/* 80276D74 002729D4  7D 1B 43 78 */	mr r27, r8
/* 80276D78 002729D8  48 00 00 20 */	b lbl_80276D98
lbl_80276D7C:
/* 80276D7C 002729DC  56 A5 18 38 */	slwi r5, r21, 3
/* 80276D80 002729E0  38 1F 00 80 */	addi r0, r31, 0x80
/* 80276D84 002729E4  7C C0 2A 14 */	add r6, r0, r5
/* 80276D88 002729E8  80 A6 00 04 */	lwz r5, 4(r6)
/* 80276D8C 002729EC  80 06 00 00 */	lwz r0, 0(r6)
/* 80276D90 002729F0  7F 9C 28 14 */	addc r28, r28, r5
/* 80276D94 002729F4  7F 7B 01 14 */	adde r27, r27, r0
lbl_80276D98:
/* 80276D98 002729F8  6C 60 80 00 */	xoris r0, r3, 0x8000
/* 80276D9C 002729FC  6F 65 80 00 */	xoris r5, r27, 0x8000
/* 80276DA0 00272A00  7C 7C 20 10 */	subfc r3, r28, r4
/* 80276DA4 00272A04  7C A5 01 10 */	subfe r5, r5, r0
/* 80276DA8 00272A08  7C A0 01 10 */	subfe r5, r0, r0
/* 80276DAC 00272A0C  7C A5 00 D1 */	neg. r5, r5
/* 80276DB0 00272A10  41 82 00 28 */	beq lbl_80276DD8
/* 80276DB4 00272A14  1C 75 00 30 */	mulli r3, r21, 0x30
/* 80276DB8 00272A18  38 1F 00 C0 */	addi r0, r31, 0xc0
/* 80276DBC 00272A1C  7C C4 E0 10 */	subfc r6, r4, r28
/* 80276DC0 00272A20  3C E0 80 27 */	lis r7, AlarmHandler@ha
/* 80276DC4 00272A24  7C 60 1A 14 */	add r3, r0, r3
/* 80276DC8 00272A28  7C A8 D9 10 */	subfe r5, r8, r27
/* 80276DCC 00272A2C  38 E7 6C 58 */	addi r7, r7, AlarmHandler@l
/* 80276DD0 00272A30  4B FF 2B B5 */	bl OSSetAlarm
/* 80276DD4 00272A34  48 00 00 38 */	b lbl_80276E0C
lbl_80276DD8:
/* 80276DD8 00272A38  7E A3 AB 78 */	mr r3, r21
/* 80276DDC 00272A3C  7E C4 B3 78 */	mr r4, r22
/* 80276DE0 00272A40  7E E5 BB 78 */	mr r5, r23
/* 80276DE4 00272A44  7F 06 C3 78 */	mr r6, r24
/* 80276DE8 00272A48  7F 27 CB 78 */	mr r7, r25
/* 80276DEC 00272A4C  7F 48 D3 78 */	mr r8, r26
/* 80276DF0 00272A50  4B FF FC 5D */	bl __SITransfer
/* 80276DF4 00272A54  2C 03 00 00 */	cmpwi r3, 0
/* 80276DF8 00272A58  41 82 00 14 */	beq lbl_80276E0C
/* 80276DFC 00272A5C  7F C3 F3 78 */	mr r3, r30
/* 80276E00 00272A60  4B FF 79 85 */	bl OSRestoreInterrupts
/* 80276E04 00272A64  38 60 00 01 */	li r3, 1
/* 80276E08 00272A68  48 00 00 30 */	b lbl_80276E38
lbl_80276E0C:
/* 80276E0C 00272A6C  92 BD 00 00 */	stw r21, 0(r29)
/* 80276E10 00272A70  7F C3 F3 78 */	mr r3, r30
/* 80276E14 00272A74  92 DD 00 04 */	stw r22, 4(r29)
/* 80276E18 00272A78  92 FD 00 08 */	stw r23, 8(r29)
/* 80276E1C 00272A7C  93 1D 00 0C */	stw r24, 0xc(r29)
/* 80276E20 00272A80  93 3D 00 10 */	stw r25, 0x10(r29)
/* 80276E24 00272A84  93 5D 00 14 */	stw r26, 0x14(r29)
/* 80276E28 00272A88  93 9D 00 1C */	stw r28, 0x1c(r29)
/* 80276E2C 00272A8C  93 7D 00 18 */	stw r27, 0x18(r29)
/* 80276E30 00272A90  4B FF 79 55 */	bl OSRestoreInterrupts
/* 80276E34 00272A94  38 60 00 01 */	li r3, 1
lbl_80276E38:
/* 80276E38 00272A98  39 61 00 40 */	addi r11, r1, 0x40
/* 80276E3C 00272A9C  4B F5 03 21 */	bl _restgpr_21
/* 80276E40 00272AA0  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80276E44 00272AA4  7C 08 03 A6 */	mtlr r0
/* 80276E48 00272AA8  38 21 00 40 */	addi r1, r1, 0x40
/* 80276E4C 00272AAC  4E 80 00 20 */	blr

.global GetTypeCallback
GetTypeCallback:
/* 80276E50 00272AB0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80276E54 00272AB4  7C 08 02 A6 */	mflr r0
/* 80276E58 00272AB8  90 01 00 24 */	stw r0, 0x24(r1)
/* 80276E5C 00272ABC  39 61 00 20 */	addi r11, r1, 0x20
/* 80276E60 00272AC0  4B F5 02 C5 */	bl _savegpr_26
/* 80276E64 00272AC4  3F E0 80 43 */	lis r31, lbl_80433FD0@ha
/* 80276E68 00272AC8  3F C0 80 51 */	lis r30, lbl_80515580@ha
/* 80276E6C 00272ACC  54 7D 10 3A */	slwi r29, r3, 2
/* 80276E70 00272AD0  7C 7A 1B 78 */	mr r26, r3
/* 80276E74 00272AD4  3B FF 3F D0 */	addi r31, r31, lbl_80433FD0@l
/* 80276E78 00272AD8  7C 9B 23 78 */	mr r27, r4
/* 80276E7C 00272ADC  7C 1F E8 2E */	lwzx r0, r31, r29
/* 80276E80 00272AE0  3B DE 55 80 */	addi r30, r30, lbl_80515580@l
/* 80276E84 00272AE4  54 00 06 6E */	rlwinm r0, r0, 0, 0x19, 0x17
/* 80276E88 00272AE8  7C 00 23 78 */	or r0, r0, r4
/* 80276E8C 00272AEC  7C 1F E9 2E */	stwx r0, r31, r29
/* 80276E90 00272AF0  4B FF B9 49 */	bl __OSGetSystemTime
/* 80276E94 00272AF4  57 45 18 38 */	slwi r5, r26, 3
/* 80276E98 00272AF8  38 1E 00 A0 */	addi r0, r30, 0xa0
/* 80276E9C 00272AFC  7C C0 2A 14 */	add r6, r0, r5
/* 80276EA0 00272B00  7F 9F E8 2E */	lwzx r28, r31, r29
/* 80276EA4 00272B04  90 86 00 04 */	stw r4, 4(r6)
/* 80276EA8 00272B08  3C A0 80 00 */	lis r5, 0x8000
/* 80276EAC 00272B0C  57 60 07 3F */	clrlwi. r0, r27, 0x1c
/* 80276EB0 00272B10  80 8D A8 AC */	lwz r4, lbl_8063FB6C-_SDA_BASE_(r13)
/* 80276EB4 00272B14  7C A5 D4 30 */	srw r5, r5, r26
/* 80276EB8 00272B18  90 66 00 00 */	stw r3, 0(r6)
/* 80276EBC 00272B1C  7C 80 28 78 */	andc r0, r4, r5
/* 80276EC0 00272B20  90 0D A8 AC */	stw r0, lbl_8063FB6C-_SDA_BASE_(r13)
/* 80276EC4 00272B24  7C 9B 28 38 */	and r27, r4, r5
/* 80276EC8 00272B28  40 82 00 24 */	bne lbl_80276EEC
/* 80276ECC 00272B2C  57 83 00 C8 */	rlwinm r3, r28, 0, 3, 4
/* 80276ED0 00272B30  3C 03 F8 00 */	addis r0, r3, 0xf800
/* 80276ED4 00272B34  28 00 00 00 */	cmplwi r0, 0
/* 80276ED8 00272B38  40 82 00 14 */	bne lbl_80276EEC
/* 80276EDC 00272B3C  57 80 00 01 */	rlwinm. r0, r28, 0, 0, 0
/* 80276EE0 00272B40  41 82 00 0C */	beq lbl_80276EEC
/* 80276EE4 00272B44  57 80 01 4B */	rlwinm. r0, r28, 0, 5, 5
/* 80276EE8 00272B48  41 82 00 5C */	beq lbl_80276F44
lbl_80276EEC:
/* 80276EEC 00272B4C  7F 43 D3 78 */	mr r3, r26
/* 80276EF0 00272B50  38 80 00 00 */	li r4, 0
/* 80276EF4 00272B54  4B FF 9C AD */	bl OSSetWirelessID
/* 80276EF8 00272B58  7F 9F E8 2E */	lwzx r28, r31, r29
/* 80276EFC 00272B5C  57 43 20 36 */	slwi r3, r26, 4
/* 80276F00 00272B60  38 1E 01 E0 */	addi r0, r30, 0x1e0
/* 80276F04 00272B64  3B A0 00 00 */	li r29, 0
/* 80276F08 00272B68  7F C0 1A 14 */	add r30, r0, r3
/* 80276F0C 00272B6C  3B 60 00 00 */	li r27, 0
lbl_80276F10:
/* 80276F10 00272B70  81 9E 00 00 */	lwz r12, 0(r30)
/* 80276F14 00272B74  2C 0C 00 00 */	cmpwi r12, 0
/* 80276F18 00272B78  41 82 00 18 */	beq lbl_80276F30
/* 80276F1C 00272B7C  7F 43 D3 78 */	mr r3, r26
/* 80276F20 00272B80  7F 84 E3 78 */	mr r4, r28
/* 80276F24 00272B84  93 7E 00 00 */	stw r27, 0(r30)
/* 80276F28 00272B88  7D 89 03 A6 */	mtctr r12
/* 80276F2C 00272B8C  4E 80 04 21 */	bctrl
lbl_80276F30:
/* 80276F30 00272B90  3B BD 00 01 */	addi r29, r29, 1
/* 80276F34 00272B94  3B DE 00 04 */	addi r30, r30, 4
/* 80276F38 00272B98  2C 1D 00 04 */	cmpwi r29, 4
/* 80276F3C 00272B9C  41 80 FF D4 */	blt lbl_80276F10
/* 80276F40 00272BA0  48 00 01 A8 */	b lbl_802770E8
lbl_80276F44:
/* 80276F44 00272BA4  7F 43 D3 78 */	mr r3, r26
/* 80276F48 00272BA8  4B FF 9B E1 */	bl OSGetWirelessID
/* 80276F4C 00272BAC  2C 1B 00 00 */	cmpwi r27, 0
/* 80276F50 00272BB0  54 7B 42 2E */	rlwinm r27, r3, 8, 8, 0x17
/* 80276F54 00272BB4  41 82 00 54 */	beq lbl_80276FA8
/* 80276F58 00272BB8  57 60 02 D7 */	rlwinm. r0, r27, 0, 0xb, 0xb
/* 80276F5C 00272BBC  41 82 00 4C */	beq lbl_80276FA8
/* 80276F60 00272BC0  3C 60 00 D0 */	lis r3, 0x00CFFF00@ha
/* 80276F64 00272BC4  3D 00 80 27 */	lis r8, GetTypeCallback@ha
/* 80276F68 00272BC8  38 03 FF 00 */	addi r0, r3, 0x00CFFF00@l
/* 80276F6C 00272BCC  38 9E 01 D0 */	addi r4, r30, 0x1d0
/* 80276F70 00272BD0  7F 60 00 38 */	and r0, r27, r0
/* 80276F74 00272BD4  7C DF EA 14 */	add r6, r31, r29
/* 80276F78 00272BD8  64 03 4E 10 */	oris r3, r0, 0x4e10
/* 80276F7C 00272BDC  39 08 6E 50 */	addi r8, r8, GetTypeCallback@l
/* 80276F80 00272BE0  38 00 00 80 */	li r0, 0x80
/* 80276F84 00272BE4  7C 64 E9 6E */	stwux r3, r4, r29
/* 80276F88 00272BE8  7F 43 D3 78 */	mr r3, r26
/* 80276F8C 00272BEC  38 A0 00 03 */	li r5, 3
/* 80276F90 00272BF0  7C 1F E9 2E */	stwx r0, r31, r29
/* 80276F94 00272BF4  38 E0 00 03 */	li r7, 3
/* 80276F98 00272BF8  39 40 00 00 */	li r10, 0
/* 80276F9C 00272BFC  39 20 00 00 */	li r9, 0
/* 80276FA0 00272C00  4B FF FD 45 */	bl SITransfer
/* 80276FA4 00272C04  48 00 01 44 */	b lbl_802770E8
lbl_80276FA8:
/* 80276FA8 00272C08  57 80 02 D7 */	rlwinm. r0, r28, 0, 0xb, 0xb
/* 80276FAC 00272C0C  41 82 00 7C */	beq lbl_80277028
/* 80276FB0 00272C10  3C 60 00 D0 */	lis r3, 0x00CFFF00@ha
/* 80276FB4 00272C14  38 03 FF 00 */	addi r0, r3, 0x00CFFF00@l
/* 80276FB8 00272C18  7F 83 00 38 */	and r3, r28, r0
/* 80276FBC 00272C1C  7F 60 00 38 */	and r0, r27, r0
/* 80276FC0 00272C20  7C 00 18 40 */	cmplw r0, r3
/* 80276FC4 00272C24  41 82 00 DC */	beq lbl_802770A0
/* 80276FC8 00272C28  57 60 02 D7 */	rlwinm. r0, r27, 0, 0xb, 0xb
/* 80276FCC 00272C2C  40 82 00 14 */	bne lbl_80276FE0
/* 80276FD0 00272C30  64 7B 00 10 */	oris r27, r3, 0x10
/* 80276FD4 00272C34  7F 43 D3 78 */	mr r3, r26
/* 80276FD8 00272C38  57 64 C4 3E */	rlwinm r4, r27, 0x18, 0x10, 0x1f
/* 80276FDC 00272C3C  4B FF 9B C5 */	bl OSSetWirelessID
lbl_80276FE0:
/* 80276FE0 00272C40  3C 60 80 43 */	lis r3, lbl_80433FD0@ha
/* 80276FE4 00272C44  38 1E 01 D0 */	addi r0, r30, 0x1d0
/* 80276FE8 00272C48  38 63 3F D0 */	addi r3, r3, lbl_80433FD0@l
/* 80276FEC 00272C4C  3D 00 80 27 */	lis r8, GetTypeCallback@ha
/* 80276FF0 00272C50  7C 80 EA 14 */	add r4, r0, r29
/* 80276FF4 00272C54  67 65 4E 00 */	oris r5, r27, 0x4e00
/* 80276FF8 00272C58  7C C3 EA 14 */	add r6, r3, r29
/* 80276FFC 00272C5C  38 00 00 80 */	li r0, 0x80
/* 80277000 00272C60  90 A4 00 00 */	stw r5, 0(r4)
/* 80277004 00272C64  7F 43 D3 78 */	mr r3, r26
/* 80277008 00272C68  39 08 6E 50 */	addi r8, r8, GetTypeCallback@l
/* 8027700C 00272C6C  38 A0 00 03 */	li r5, 3
/* 80277010 00272C70  90 06 00 00 */	stw r0, 0(r6)
/* 80277014 00272C74  38 E0 00 03 */	li r7, 3
/* 80277018 00272C78  39 40 00 00 */	li r10, 0
/* 8027701C 00272C7C  39 20 00 00 */	li r9, 0
/* 80277020 00272C80  4B FF FC C5 */	bl SITransfer
/* 80277024 00272C84  48 00 00 C4 */	b lbl_802770E8
lbl_80277028:
/* 80277028 00272C88  57 80 00 43 */	rlwinm. r0, r28, 0, 1, 1
/* 8027702C 00272C8C  41 82 00 68 */	beq lbl_80277094
/* 80277030 00272C90  3C 80 00 D0 */	lis r4, 0x00CFFF00@ha
/* 80277034 00272C94  7F 43 D3 78 */	mr r3, r26
/* 80277038 00272C98  38 04 FF 00 */	addi r0, r4, 0x00CFFF00@l
/* 8027703C 00272C9C  7F 9B 00 38 */	and r27, r28, r0
/* 80277040 00272CA0  67 7B 00 10 */	oris r27, r27, 0x10
/* 80277044 00272CA4  57 64 C4 3E */	rlwinm r4, r27, 0x18, 0x10, 0x1f
/* 80277048 00272CA8  4B FF 9B 59 */	bl OSSetWirelessID
/* 8027704C 00272CAC  3C 60 80 43 */	lis r3, lbl_80433FD0@ha
/* 80277050 00272CB0  38 1E 01 D0 */	addi r0, r30, 0x1d0
/* 80277054 00272CB4  38 63 3F D0 */	addi r3, r3, lbl_80433FD0@l
/* 80277058 00272CB8  3D 00 80 27 */	lis r8, GetTypeCallback@ha
/* 8027705C 00272CBC  7C 80 EA 14 */	add r4, r0, r29
/* 80277060 00272CC0  67 65 4E 00 */	oris r5, r27, 0x4e00
/* 80277064 00272CC4  7C C3 EA 14 */	add r6, r3, r29
/* 80277068 00272CC8  38 00 00 80 */	li r0, 0x80
/* 8027706C 00272CCC  90 A4 00 00 */	stw r5, 0(r4)
/* 80277070 00272CD0  7F 43 D3 78 */	mr r3, r26
/* 80277074 00272CD4  39 08 6E 50 */	addi r8, r8, GetTypeCallback@l
/* 80277078 00272CD8  38 A0 00 03 */	li r5, 3
/* 8027707C 00272CDC  90 06 00 00 */	stw r0, 0(r6)
/* 80277080 00272CE0  38 E0 00 03 */	li r7, 3
/* 80277084 00272CE4  39 40 00 00 */	li r10, 0
/* 80277088 00272CE8  39 20 00 00 */	li r9, 0
/* 8027708C 00272CEC  4B FF FC 59 */	bl SITransfer
/* 80277090 00272CF0  48 00 00 58 */	b lbl_802770E8
lbl_80277094:
/* 80277094 00272CF4  7F 43 D3 78 */	mr r3, r26
/* 80277098 00272CF8  38 80 00 00 */	li r4, 0
/* 8027709C 00272CFC  4B FF 9B 05 */	bl OSSetWirelessID
lbl_802770A0:
/* 802770A0 00272D00  7F 9F E8 2E */	lwzx r28, r31, r29
/* 802770A4 00272D04  57 43 20 36 */	slwi r3, r26, 4
/* 802770A8 00272D08  38 1E 01 E0 */	addi r0, r30, 0x1e0
/* 802770AC 00272D0C  3B A0 00 00 */	li r29, 0
/* 802770B0 00272D10  7F C0 1A 14 */	add r30, r0, r3
/* 802770B4 00272D14  3B 60 00 00 */	li r27, 0
lbl_802770B8:
/* 802770B8 00272D18  81 9E 00 00 */	lwz r12, 0(r30)
/* 802770BC 00272D1C  2C 0C 00 00 */	cmpwi r12, 0
/* 802770C0 00272D20  41 82 00 18 */	beq lbl_802770D8
/* 802770C4 00272D24  7F 43 D3 78 */	mr r3, r26
/* 802770C8 00272D28  7F 84 E3 78 */	mr r4, r28
/* 802770CC 00272D2C  93 7E 00 00 */	stw r27, 0(r30)
/* 802770D0 00272D30  7D 89 03 A6 */	mtctr r12
/* 802770D4 00272D34  4E 80 04 21 */	bctrl
lbl_802770D8:
/* 802770D8 00272D38  3B BD 00 01 */	addi r29, r29, 1
/* 802770DC 00272D3C  3B DE 00 04 */	addi r30, r30, 4
/* 802770E0 00272D40  2C 1D 00 04 */	cmpwi r29, 4
/* 802770E4 00272D44  41 80 FF D4 */	blt lbl_802770B8
lbl_802770E8:
/* 802770E8 00272D48  39 61 00 20 */	addi r11, r1, 0x20
/* 802770EC 00272D4C  4B F5 00 85 */	bl _restgpr_26
/* 802770F0 00272D50  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802770F4 00272D54  7C 08 03 A6 */	mtlr r0
/* 802770F8 00272D58  38 21 00 20 */	addi r1, r1, 0x20
/* 802770FC 00272D5C  4E 80 00 20 */	blr

.global SIGetType
SIGetType:
/* 80277100 00272D60  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80277104 00272D64  7C 08 02 A6 */	mflr r0
/* 80277108 00272D68  90 01 00 24 */	stw r0, 0x24(r1)
/* 8027710C 00272D6C  39 61 00 20 */	addi r11, r1, 0x20
/* 80277110 00272D70  4B F5 00 19 */	bl _savegpr_27
/* 80277114 00272D74  7C 7B 1B 78 */	mr r27, r3
/* 80277118 00272D78  4B FF 76 45 */	bl OSDisableInterrupts
/* 8027711C 00272D7C  3C A0 80 43 */	lis r5, lbl_80433FD0@ha
/* 80277120 00272D80  3C 80 80 51 */	lis r4, lbl_80515620@ha
/* 80277124 00272D84  57 66 10 3A */	slwi r6, r27, 2
/* 80277128 00272D88  57 60 18 38 */	slwi r0, r27, 3
/* 8027712C 00272D8C  38 A5 3F D0 */	addi r5, r5, lbl_80433FD0@l
/* 80277130 00272D90  38 84 56 20 */	addi r4, r4, lbl_80515620@l
/* 80277134 00272D94  7F 85 30 2E */	lwzx r28, r5, r6
/* 80277138 00272D98  7F C5 32 14 */	add r30, r5, r6
/* 8027713C 00272D9C  7C 7D 1B 78 */	mr r29, r3
/* 80277140 00272DA0  7F E4 02 14 */	add r31, r4, r0
/* 80277144 00272DA4  4B FF B6 95 */	bl __OSGetSystemTime
/* 80277148 00272DA8  80 DF 00 04 */	lwz r6, 4(r31)
/* 8027714C 00272DAC  3C A0 80 43 */	lis r5, lbl_80433FB8@ha
/* 80277150 00272DB0  80 1F 00 00 */	lwz r0, 0(r31)
/* 80277154 00272DB4  38 A5 3F B8 */	addi r5, r5, lbl_80433FB8@l
/* 80277158 00272DB8  7D 06 20 10 */	subfc r8, r6, r4
/* 8027715C 00272DBC  80 85 00 04 */	lwz r4, 4(r5)
/* 80277160 00272DC0  7C E0 19 10 */	subfe r7, r0, r3
/* 80277164 00272DC4  38 60 00 80 */	li r3, 0x80
/* 80277168 00272DC8  7C 60 DE 30 */	sraw r0, r3, r27
/* 8027716C 00272DCC  7C 80 00 39 */	and. r0, r4, r0
/* 80277170 00272DD0  41 82 00 34 */	beq lbl_802771A4
/* 80277174 00272DD4  28 1C 00 08 */	cmplwi r28, 8
/* 80277178 00272DD8  41 82 00 20 */	beq lbl_80277198
/* 8027717C 00272DDC  4B FF B6 5D */	bl __OSGetSystemTime
/* 80277180 00272DE0  90 9F 00 04 */	stw r4, 4(r31)
/* 80277184 00272DE4  90 7F 00 00 */	stw r3, 0(r31)
/* 80277188 00272DE8  7F A3 EB 78 */	mr r3, r29
/* 8027718C 00272DEC  4B FF 75 F9 */	bl OSRestoreInterrupts
/* 80277190 00272DF0  7F 83 E3 78 */	mr r3, r28
/* 80277194 00272DF4  48 00 01 08 */	b lbl_8027729C
lbl_80277198:
/* 80277198 00272DF8  90 7E 00 00 */	stw r3, 0(r30)
/* 8027719C 00272DFC  3B 80 00 80 */	li r28, 0x80
/* 802771A0 00272E00  48 00 00 98 */	b lbl_80277238
lbl_802771A4:
/* 802771A4 00272E04  3C 80 80 00 */	lis r4, 0x800000F8@ha
/* 802771A8 00272E08  3C 60 10 62 */	lis r3, 0x10624DD3@ha
/* 802771AC 00272E0C  80 A4 00 F8 */	lwz r5, 0x800000F8@l(r4)
/* 802771B0 00272E10  38 C3 4D D3 */	addi r6, r3, 0x10624DD3@l
/* 802771B4 00272E14  38 00 00 00 */	li r0, 0
/* 802771B8 00272E18  6C E4 80 00 */	xoris r4, r7, 0x8000
/* 802771BC 00272E1C  54 A3 F0 BE */	srwi r3, r5, 2
/* 802771C0 00272E20  7C 66 18 16 */	mulhwu r3, r6, r3
/* 802771C4 00272E24  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 802771C8 00272E28  54 65 D1 BE */	srwi r5, r3, 6
/* 802771CC 00272E2C  1C 65 00 32 */	mulli r3, r5, 0x32
/* 802771D0 00272E30  7C 68 18 10 */	subfc r3, r8, r3
/* 802771D4 00272E34  7C 84 01 10 */	subfe r4, r4, r0
/* 802771D8 00272E38  7C 80 01 10 */	subfe r4, r0, r0
/* 802771DC 00272E3C  7C 84 00 D1 */	neg. r4, r4
/* 802771E0 00272E40  40 82 00 1C */	bne lbl_802771FC
/* 802771E4 00272E44  28 1C 00 08 */	cmplwi r28, 8
/* 802771E8 00272E48  41 82 00 14 */	beq lbl_802771FC
/* 802771EC 00272E4C  7F A3 EB 78 */	mr r3, r29
/* 802771F0 00272E50  4B FF 75 95 */	bl OSRestoreInterrupts
/* 802771F4 00272E54  7F 83 E3 78 */	mr r3, r28
/* 802771F8 00272E58  48 00 00 A4 */	b lbl_8027729C
lbl_802771FC:
/* 802771FC 00272E5C  1C 65 00 4B */	mulli r3, r5, 0x4b
/* 80277200 00272E60  38 00 00 00 */	li r0, 0
/* 80277204 00272E64  6C E4 80 00 */	xoris r4, r7, 0x8000
/* 80277208 00272E68  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 8027720C 00272E6C  7C 68 18 10 */	subfc r3, r8, r3
/* 80277210 00272E70  7C 84 01 10 */	subfe r4, r4, r0
/* 80277214 00272E74  7C 80 01 10 */	subfe r4, r0, r0
/* 80277218 00272E78  7C 84 00 D1 */	neg. r4, r4
/* 8027721C 00272E7C  40 82 00 10 */	bne lbl_8027722C
/* 80277220 00272E80  38 00 00 80 */	li r0, 0x80
/* 80277224 00272E84  90 1E 00 00 */	stw r0, 0(r30)
/* 80277228 00272E88  48 00 00 10 */	b lbl_80277238
lbl_8027722C:
/* 8027722C 00272E8C  38 00 00 80 */	li r0, 0x80
/* 80277230 00272E90  3B 80 00 80 */	li r28, 0x80
/* 80277234 00272E94  90 1E 00 00 */	stw r0, 0(r30)
lbl_80277238:
/* 80277238 00272E98  4B FF B5 A1 */	bl __OSGetSystemTime
/* 8027723C 00272E9C  90 9F 00 04 */	stw r4, 4(r31)
/* 80277240 00272EA0  3C 80 43 1C */	lis r4, 0x431BDE83@ha
/* 80277244 00272EA4  39 24 DE 83 */	addi r9, r4, 0x431BDE83@l
/* 80277248 00272EA8  3D 00 80 27 */	lis r8, GetTypeCallback@ha
/* 8027724C 00272EAC  90 7F 00 00 */	stw r3, 0(r31)
/* 80277250 00272EB0  3C A0 80 00 */	lis r5, 0x800000F8@ha
/* 80277254 00272EB4  7F 63 DB 78 */	mr r3, r27
/* 80277258 00272EB8  7F C6 F3 78 */	mr r6, r30
/* 8027725C 00272EBC  80 05 00 F8 */	lwz r0, 0x800000F8@l(r5)
/* 80277260 00272EC0  39 08 6E 50 */	addi r8, r8, GetTypeCallback@l
/* 80277264 00272EC4  38 8D A8 A8 */	addi r4, r13, lbl_8063FB68-_SDA_BASE_
/* 80277268 00272EC8  38 A0 00 01 */	li r5, 1
/* 8027726C 00272ECC  54 00 F0 BE */	srwi r0, r0, 2
/* 80277270 00272ED0  38 E0 00 03 */	li r7, 3
/* 80277274 00272ED4  7C 09 00 16 */	mulhwu r0, r9, r0
/* 80277278 00272ED8  39 20 00 00 */	li r9, 0
/* 8027727C 00272EDC  54 0A 8B FE */	srwi r10, r0, 0xf
/* 80277280 00272EE0  54 00 BA 72 */	rlwinm r0, r0, 0x17, 9, 0x19
/* 80277284 00272EE4  7C 00 52 14 */	add r0, r0, r10
/* 80277288 00272EE8  54 0A E8 FE */	srwi r10, r0, 3
/* 8027728C 00272EEC  4B FF FA 59 */	bl SITransfer
/* 80277290 00272EF0  7F A3 EB 78 */	mr r3, r29
/* 80277294 00272EF4  4B FF 74 F1 */	bl OSRestoreInterrupts
/* 80277298 00272EF8  7F 83 E3 78 */	mr r3, r28
lbl_8027729C:
/* 8027729C 00272EFC  39 61 00 20 */	addi r11, r1, 0x20
/* 802772A0 00272F00  4B F4 FE D5 */	bl _restgpr_27
/* 802772A4 00272F04  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802772A8 00272F08  7C 08 03 A6 */	mtlr r0
/* 802772AC 00272F0C  38 21 00 20 */	addi r1, r1, 0x20
/* 802772B0 00272F10  4E 80 00 20 */	blr