summaryrefslogtreecommitdiff
path: root/asm/SDK/GX/GXMisc.s
blob: 197662d436232d9cd64f022597c7a28359146b31 (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
.include "macros.inc"

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

.global GXSetMisc
GXSetMisc:
/* 80280618 0027C278  2C 03 00 02 */	cmpwi r3, 2
/* 8028061C 0027C27C  41 82 00 58 */	beq lbl_80280674
/* 80280620 0027C280  40 80 00 14 */	bge lbl_80280634
/* 80280624 0027C284  2C 03 00 00 */	cmpwi r3, 0
/* 80280628 0027C288  4D 82 00 20 */	beqlr
/* 8028062C 0027C28C  40 80 00 14 */	bge lbl_80280640
/* 80280630 0027C290  4E 80 00 20 */	blr
lbl_80280634:
/* 80280634 0027C294  2C 03 00 04 */	cmpwi r3, 4
/* 80280638 0027C298  4C 80 00 20 */	bgelr
/* 8028063C 0027C29C  48 00 00 50 */	b lbl_8028068C
lbl_80280640:
/* 80280640 0027C2A0  54 80 04 3F */	clrlwi. r0, r4, 0x10
/* 80280644 0027C2A4  80 A2 A0 D0 */	lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
/* 80280648 0027C2A8  B0 85 00 04 */	sth r4, 4(r5)
/* 8028064C 0027C2AC  7C 03 00 34 */	cntlzw r3, r0
/* 80280650 0027C2B0  38 00 00 01 */	li r0, 1
/* 80280654 0027C2B4  54 63 DC 3E */	rlwinm r3, r3, 0x1b, 0x10, 0x1f
/* 80280658 0027C2B8  B0 65 00 00 */	sth r3, 0(r5)
/* 8028065C 0027C2BC  B0 05 00 02 */	sth r0, 2(r5)
/* 80280660 0027C2C0  4D 82 00 20 */	beqlr
/* 80280664 0027C2C4  80 05 05 FC */	lwz r0, 0x5fc(r5)
/* 80280668 0027C2C8  60 00 00 08 */	ori r0, r0, 8
/* 8028066C 0027C2CC  90 05 05 FC */	stw r0, 0x5fc(r5)
/* 80280670 0027C2D0  4E 80 00 20 */	blr
lbl_80280674:
/* 80280674 0027C2D4  7C 04 00 D0 */	neg r0, r4
/* 80280678 0027C2D8  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028067C 0027C2DC  7C 00 23 78 */	or r0, r0, r4
/* 80280680 0027C2E0  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80280684 0027C2E4  98 03 05 F9 */	stb r0, 0x5f9(r3)
/* 80280688 0027C2E8  4E 80 00 20 */	blr
lbl_8028068C:
/* 8028068C 0027C2EC  7C 04 00 D0 */	neg r0, r4
/* 80280690 0027C2F0  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 80280694 0027C2F4  7C 00 23 78 */	or r0, r0, r4
/* 80280698 0027C2F8  54 00 0F FE */	srwi r0, r0, 0x1f
/* 8028069C 0027C2FC  98 03 05 FA */	stb r0, 0x5fa(r3)
/* 802806A0 0027C300  4E 80 00 20 */	blr

.global GXFlush
GXFlush:
/* 802806A4 0027C304  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802806A8 0027C308  7C 08 02 A6 */	mflr r0
/* 802806AC 0027C30C  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 802806B0 0027C310  90 01 00 14 */	stw r0, 0x14(r1)
/* 802806B4 0027C314  80 03 05 FC */	lwz r0, 0x5fc(r3)
/* 802806B8 0027C318  2C 00 00 00 */	cmpwi r0, 0
/* 802806BC 0027C31C  41 82 00 08 */	beq lbl_802806C4
/* 802806C0 0027C320  48 00 08 11 */	bl __GXSetDirtyState
lbl_802806C4:
/* 802806C4 0027C324  38 00 00 00 */	li r0, 0
/* 802806C8 0027C328  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 802806CC 0027C32C  90 03 80 00 */	stw r0, 0xCC008000@l(r3)
/* 802806D0 0027C330  90 03 80 00 */	stw r0, -0x8000(r3)
/* 802806D4 0027C334  90 03 80 00 */	stw r0, -0x8000(r3)
/* 802806D8 0027C338  90 03 80 00 */	stw r0, -0x8000(r3)
/* 802806DC 0027C33C  90 03 80 00 */	stw r0, -0x8000(r3)
/* 802806E0 0027C340  90 03 80 00 */	stw r0, -0x8000(r3)
/* 802806E4 0027C344  90 03 80 00 */	stw r0, -0x8000(r3)
/* 802806E8 0027C348  90 03 80 00 */	stw r0, -0x8000(r3)
/* 802806EC 0027C34C  4B FE 7B 75 */	bl PPCSync
/* 802806F0 0027C350  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802806F4 0027C354  7C 08 03 A6 */	mtlr r0
/* 802806F8 0027C358  38 21 00 10 */	addi r1, r1, 0x10
/* 802806FC 0027C35C  4E 80 00 20 */	blr

.global GXResetWriteGatherPipe
GXResetWriteGatherPipe:
/* 80280700 0027C360  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80280704 0027C364  7C 08 02 A6 */	mflr r0
/* 80280708 0027C368  90 01 00 14 */	stw r0, 0x14(r1)
lbl_8028070C:
/* 8028070C 0027C36C  4B FE 7B F9 */	bl PPCMfwpar
/* 80280710 0027C370  54 60 07 FF */	clrlwi. r0, r3, 0x1f
/* 80280714 0027C374  40 82 FF F8 */	bne lbl_8028070C
/* 80280718 0027C378  3C 60 0C 01 */	lis r3, 0x0C008000@ha
/* 8028071C 0027C37C  38 63 80 00 */	addi r3, r3, 0x0C008000@l
/* 80280720 0027C380  4B FE 7B F1 */	bl PPCMtwpar
/* 80280724 0027C384  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80280728 0027C388  7C 08 03 A6 */	mtlr r0
/* 8028072C 0027C38C  38 21 00 10 */	addi r1, r1, 0x10
/* 80280730 0027C390  4E 80 00 20 */	blr

.global __GXAbort
__GXAbort:
/* 80280734 0027C394  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80280738 0027C398  7C 08 02 A6 */	mflr r0
/* 8028073C 0027C39C  90 01 00 24 */	stw r0, 0x24(r1)
/* 80280740 0027C3A0  39 61 00 20 */	addi r11, r1, 0x20
/* 80280744 0027C3A4  4B F4 69 E5 */	bl _savegpr_27
/* 80280748 0027C3A8  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028074C 0027C3AC  88 03 05 FA */	lbz r0, 0x5fa(r3)
/* 80280750 0027C3B0  2C 00 00 00 */	cmpwi r0, 0
/* 80280754 0027C3B4  41 82 00 A0 */	beq lbl_802807F4
/* 80280758 0027C3B8  4B FF E8 E9 */	bl __GXIsGPFifoReady
/* 8028075C 0027C3BC  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 80280760 0027C3C0  41 82 00 94 */	beq lbl_802807F4
/* 80280764 0027C3C4  80 AD A9 9C */	lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
/* 80280768 0027C3C8  A0 05 00 4E */	lhz r0, 0x4e(r5)
lbl_8028076C:
/* 8028076C 0027C3CC  7C 03 03 78 */	mr r3, r0
/* 80280770 0027C3D0  A0 85 00 50 */	lhz r4, 0x50(r5)
/* 80280774 0027C3D4  A0 05 00 4E */	lhz r0, 0x4e(r5)
/* 80280778 0027C3D8  7C 00 18 40 */	cmplw r0, r3
/* 8028077C 0027C3DC  40 82 FF F0 */	bne lbl_8028076C
/* 80280780 0027C3E0  54 03 80 1E */	slwi r3, r0, 0x10
/* 80280784 0027C3E4  38 00 00 00 */	li r0, 0
/* 80280788 0027C3E8  7C 7B 23 78 */	or r27, r3, r4
/* 8028078C 0027C3EC  3B A0 00 08 */	li r29, 8
/* 80280790 0027C3F0  6C 1C 80 00 */	xoris r28, r0, 0x8000
lbl_80280794:
/* 80280794 0027C3F4  4B FF 20 25 */	bl OSGetTime
/* 80280798 0027C3F8  7C 9F 23 78 */	mr r31, r4
/* 8028079C 0027C3FC  7C 7E 1B 78 */	mr r30, r3
lbl_802807A0:
/* 802807A0 0027C400  4B FF 20 19 */	bl OSGetTime
/* 802807A4 0027C404  7C 9F 20 10 */	subfc r4, r31, r4
/* 802807A8 0027C408  7C 1E 19 10 */	subfe r0, r30, r3
/* 802807AC 0027C40C  6C 03 80 00 */	xoris r3, r0, 0x8000
/* 802807B0 0027C410  7C 04 E8 10 */	subfc r0, r4, r29
/* 802807B4 0027C414  7C 63 E1 10 */	subfe r3, r3, r28
/* 802807B8 0027C418  7C 7C E1 10 */	subfe r3, r28, r28
/* 802807BC 0027C41C  7C 63 00 D1 */	neg. r3, r3
/* 802807C0 0027C420  41 82 FF E0 */	beq lbl_802807A0
/* 802807C4 0027C424  80 AD A9 9C */	lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
/* 802807C8 0027C428  A0 05 00 4E */	lhz r0, 0x4e(r5)
lbl_802807CC:
/* 802807CC 0027C42C  7C 03 03 78 */	mr r3, r0
/* 802807D0 0027C430  A0 85 00 50 */	lhz r4, 0x50(r5)
/* 802807D4 0027C434  A0 05 00 4E */	lhz r0, 0x4e(r5)
/* 802807D8 0027C438  7C 00 18 40 */	cmplw r0, r3
/* 802807DC 0027C43C  40 82 FF F0 */	bne lbl_802807CC
/* 802807E0 0027C440  54 00 80 1E */	slwi r0, r0, 0x10
/* 802807E4 0027C444  7C 00 23 78 */	or r0, r0, r4
/* 802807E8 0027C448  7C 00 D8 40 */	cmplw r0, r27
/* 802807EC 0027C44C  7C 1B 03 78 */	mr r27, r0
/* 802807F0 0027C450  40 82 FF A4 */	bne lbl_80280794
lbl_802807F4:
/* 802807F4 0027C454  38 00 00 01 */	li r0, 1
/* 802807F8 0027C458  3C 60 CC 00 */	lis r3, 0xCC003018@ha
/* 802807FC 0027C45C  90 03 30 18 */	stw r0, 0xCC003018@l(r3)
/* 80280800 0027C460  4B FF 1F B9 */	bl OSGetTime
/* 80280804 0027C464  38 00 00 00 */	li r0, 0
/* 80280808 0027C468  7C 9F 23 78 */	mr r31, r4
/* 8028080C 0027C46C  7C 7E 1B 78 */	mr r30, r3
/* 80280810 0027C470  3B A0 00 32 */	li r29, 0x32
/* 80280814 0027C474  6C 1C 80 00 */	xoris r28, r0, 0x8000
lbl_80280818:
/* 80280818 0027C478  4B FF 1F A1 */	bl OSGetTime
/* 8028081C 0027C47C  7C 9F 20 10 */	subfc r4, r31, r4
/* 80280820 0027C480  7C 1E 19 10 */	subfe r0, r30, r3
/* 80280824 0027C484  6C 03 80 00 */	xoris r3, r0, 0x8000
/* 80280828 0027C488  7C 04 E8 10 */	subfc r0, r4, r29
/* 8028082C 0027C48C  7C 63 E1 10 */	subfe r3, r3, r28
/* 80280830 0027C490  7C 7C E1 10 */	subfe r3, r28, r28
/* 80280834 0027C494  7C 63 00 D1 */	neg. r3, r3
/* 80280838 0027C498  41 82 FF E0 */	beq lbl_80280818
/* 8028083C 0027C49C  3B C0 00 00 */	li r30, 0
/* 80280840 0027C4A0  3C 60 CC 00 */	lis r3, 0xCC003018@ha
/* 80280844 0027C4A4  93 C3 30 18 */	stw r30, 0xCC003018@l(r3)
/* 80280848 0027C4A8  4B FF 1F 71 */	bl OSGetTime
/* 8028084C 0027C4AC  6F DF 80 00 */	xoris r31, r30, 0x8000
/* 80280850 0027C4B0  7C 9C 23 78 */	mr r28, r4
/* 80280854 0027C4B4  7C 7D 1B 78 */	mr r29, r3
/* 80280858 0027C4B8  3B C0 00 05 */	li r30, 5
lbl_8028085C:
/* 8028085C 0027C4BC  4B FF 1F 5D */	bl OSGetTime
/* 80280860 0027C4C0  7C 9C 20 10 */	subfc r4, r28, r4
/* 80280864 0027C4C4  7C 1D 19 10 */	subfe r0, r29, r3
/* 80280868 0027C4C8  6C 03 80 00 */	xoris r3, r0, 0x8000
/* 8028086C 0027C4CC  7C 04 F0 10 */	subfc r0, r4, r30
/* 80280870 0027C4D0  7C 63 F9 10 */	subfe r3, r3, r31
/* 80280874 0027C4D4  7C 7F F9 10 */	subfe r3, r31, r31
/* 80280878 0027C4D8  7C 63 00 D1 */	neg. r3, r3
/* 8028087C 0027C4DC  41 82 FF E0 */	beq lbl_8028085C
/* 80280880 0027C4E0  39 61 00 20 */	addi r11, r1, 0x20
/* 80280884 0027C4E4  4B F4 68 F1 */	bl _restgpr_27
/* 80280888 0027C4E8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8028088C 0027C4EC  7C 08 03 A6 */	mtlr r0
/* 80280890 0027C4F0  38 21 00 20 */	addi r1, r1, 0x20
/* 80280894 0027C4F4  4E 80 00 20 */	blr

.global GXAbortFrame
GXAbortFrame:
/* 80280898 0027C4F8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8028089C 0027C4FC  7C 08 02 A6 */	mflr r0
/* 802808A0 0027C500  90 01 00 24 */	stw r0, 0x24(r1)
/* 802808A4 0027C504  39 61 00 20 */	addi r11, r1, 0x20
/* 802808A8 0027C508  4B F4 68 7D */	bl _savegpr_26
/* 802808AC 0027C50C  83 E2 A0 D0 */	lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
/* 802808B0 0027C510  88 1F 05 FA */	lbz r0, 0x5fa(r31)
/* 802808B4 0027C514  2C 00 00 00 */	cmpwi r0, 0
/* 802808B8 0027C518  41 82 00 A0 */	beq lbl_80280958
/* 802808BC 0027C51C  4B FF E7 85 */	bl __GXIsGPFifoReady
/* 802808C0 0027C520  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 802808C4 0027C524  41 82 00 94 */	beq lbl_80280958
/* 802808C8 0027C528  80 AD A9 9C */	lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
/* 802808CC 0027C52C  A0 65 00 4E */	lhz r3, 0x4e(r5)
lbl_802808D0:
/* 802808D0 0027C530  7C 60 1B 78 */	mr r0, r3
/* 802808D4 0027C534  A0 85 00 50 */	lhz r4, 0x50(r5)
/* 802808D8 0027C538  A0 65 00 4E */	lhz r3, 0x4e(r5)
/* 802808DC 0027C53C  7C 03 00 40 */	cmplw r3, r0
/* 802808E0 0027C540  40 82 FF F0 */	bne lbl_802808D0
/* 802808E4 0027C544  54 63 80 1E */	slwi r3, r3, 0x10
/* 802808E8 0027C548  38 00 00 00 */	li r0, 0
/* 802808EC 0027C54C  7C 7A 23 78 */	or r26, r3, r4
/* 802808F0 0027C550  3B 80 00 08 */	li r28, 8
/* 802808F4 0027C554  6C 1B 80 00 */	xoris r27, r0, 0x8000
lbl_802808F8:
/* 802808F8 0027C558  4B FF 1E C1 */	bl OSGetTime
/* 802808FC 0027C55C  7C 9E 23 78 */	mr r30, r4
/* 80280900 0027C560  7C 7D 1B 78 */	mr r29, r3
lbl_80280904:
/* 80280904 0027C564  4B FF 1E B5 */	bl OSGetTime
/* 80280908 0027C568  7C 9E 20 10 */	subfc r4, r30, r4
/* 8028090C 0027C56C  7C 1D 19 10 */	subfe r0, r29, r3
/* 80280910 0027C570  6C 03 80 00 */	xoris r3, r0, 0x8000
/* 80280914 0027C574  7C 04 E0 10 */	subfc r0, r4, r28
/* 80280918 0027C578  7C 63 D9 10 */	subfe r3, r3, r27
/* 8028091C 0027C57C  7C 7B D9 10 */	subfe r3, r27, r27
/* 80280920 0027C580  7C 63 00 D1 */	neg. r3, r3
/* 80280924 0027C584  41 82 FF E0 */	beq lbl_80280904
/* 80280928 0027C588  80 AD A9 9C */	lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
/* 8028092C 0027C58C  A0 85 00 4E */	lhz r4, 0x4e(r5)
lbl_80280930:
/* 80280930 0027C590  7C 80 23 78 */	mr r0, r4
/* 80280934 0027C594  A0 65 00 50 */	lhz r3, 0x50(r5)
/* 80280938 0027C598  A0 85 00 4E */	lhz r4, 0x4e(r5)
/* 8028093C 0027C59C  7C 04 00 40 */	cmplw r4, r0
/* 80280940 0027C5A0  40 82 FF F0 */	bne lbl_80280930
/* 80280944 0027C5A4  54 80 80 1E */	slwi r0, r4, 0x10
/* 80280948 0027C5A8  7C 00 1B 78 */	or r0, r0, r3
/* 8028094C 0027C5AC  7C 00 D0 40 */	cmplw r0, r26
/* 80280950 0027C5B0  7C 1A 03 78 */	mr r26, r0
/* 80280954 0027C5B4  40 82 FF A4 */	bne lbl_802808F8
lbl_80280958:
/* 80280958 0027C5B8  38 00 00 01 */	li r0, 1
/* 8028095C 0027C5BC  3C 60 CC 00 */	lis r3, 0xCC003018@ha
/* 80280960 0027C5C0  90 03 30 18 */	stw r0, 0xCC003018@l(r3)
/* 80280964 0027C5C4  4B FF 1E 55 */	bl OSGetTime
/* 80280968 0027C5C8  38 00 00 00 */	li r0, 0
/* 8028096C 0027C5CC  7C 9E 23 78 */	mr r30, r4
/* 80280970 0027C5D0  7C 7D 1B 78 */	mr r29, r3
/* 80280974 0027C5D4  3B 80 00 32 */	li r28, 0x32
/* 80280978 0027C5D8  6C 1B 80 00 */	xoris r27, r0, 0x8000
lbl_8028097C:
/* 8028097C 0027C5DC  4B FF 1E 3D */	bl OSGetTime
/* 80280980 0027C5E0  7C 9E 20 10 */	subfc r4, r30, r4
/* 80280984 0027C5E4  7C 1D 19 10 */	subfe r0, r29, r3
/* 80280988 0027C5E8  6C 03 80 00 */	xoris r3, r0, 0x8000
/* 8028098C 0027C5EC  7C 04 E0 10 */	subfc r0, r4, r28
/* 80280990 0027C5F0  7C 63 D9 10 */	subfe r3, r3, r27
/* 80280994 0027C5F4  7C 7B D9 10 */	subfe r3, r27, r27
/* 80280998 0027C5F8  7C 63 00 D1 */	neg. r3, r3
/* 8028099C 0027C5FC  41 82 FF E0 */	beq lbl_8028097C
/* 802809A0 0027C600  3B A0 00 00 */	li r29, 0
/* 802809A4 0027C604  3C 60 CC 00 */	lis r3, 0xCC003018@ha
/* 802809A8 0027C608  93 A3 30 18 */	stw r29, 0xCC003018@l(r3)
/* 802809AC 0027C60C  4B FF 1E 0D */	bl OSGetTime
/* 802809B0 0027C610  6F BE 80 00 */	xoris r30, r29, 0x8000
/* 802809B4 0027C614  7C 9B 23 78 */	mr r27, r4
/* 802809B8 0027C618  7C 7C 1B 78 */	mr r28, r3
/* 802809BC 0027C61C  3B A0 00 05 */	li r29, 5
lbl_802809C0:
/* 802809C0 0027C620  4B FF 1D F9 */	bl OSGetTime
/* 802809C4 0027C624  7C 9B 20 10 */	subfc r4, r27, r4
/* 802809C8 0027C628  7C 1C 19 10 */	subfe r0, r28, r3
/* 802809CC 0027C62C  6C 03 80 00 */	xoris r3, r0, 0x8000
/* 802809D0 0027C630  7C 04 E8 10 */	subfc r0, r4, r29
/* 802809D4 0027C634  7C 63 F1 10 */	subfe r3, r3, r30
/* 802809D8 0027C638  7C 7E F1 10 */	subfe r3, r30, r30
/* 802809DC 0027C63C  7C 63 00 D1 */	neg. r3, r3
/* 802809E0 0027C640  41 82 FF E0 */	beq lbl_802809C0
/* 802809E4 0027C644  4B FF E6 5D */	bl __GXIsGPFifoReady
/* 802809E8 0027C648  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 802809EC 0027C64C  41 82 00 48 */	beq lbl_80280A34
/* 802809F0 0027C650  4B FF E8 65 */	bl __GXCleanGPFifo
/* 802809F4 0027C654  4B FF CE B5 */	bl __GXInitRevisionBits
/* 802809F8 0027C658  38 00 00 00 */	li r0, 0
/* 802809FC 0027C65C  90 1F 05 FC */	stw r0, 0x5fc(r31)
/* 80280A00 0027C660  48 00 00 08 */	b lbl_80280A08
/* 80280A04 0027C664  48 00 04 CD */	bl __GXSetDirtyState
lbl_80280A08:
/* 80280A08 0027C668  38 00 00 00 */	li r0, 0
/* 80280A0C 0027C66C  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80280A10 0027C670  90 03 80 00 */	stw r0, 0xCC008000@l(r3)
/* 80280A14 0027C674  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280A18 0027C678  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280A1C 0027C67C  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280A20 0027C680  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280A24 0027C684  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280A28 0027C688  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280A2C 0027C68C  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280A30 0027C690  4B FE 78 31 */	bl PPCSync
lbl_80280A34:
/* 80280A34 0027C694  39 61 00 20 */	addi r11, r1, 0x20
/* 80280A38 0027C698  4B F4 67 39 */	bl _restgpr_26
/* 80280A3C 0027C69C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80280A40 0027C6A0  7C 08 03 A6 */	mtlr r0
/* 80280A44 0027C6A4  38 21 00 20 */	addi r1, r1, 0x20
/* 80280A48 0027C6A8  4E 80 00 20 */	blr

.global GXSetDrawSync
GXSetDrawSync:
/* 80280A4C 0027C6AC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80280A50 0027C6B0  7C 08 02 A6 */	mflr r0
/* 80280A54 0027C6B4  90 01 00 24 */	stw r0, 0x24(r1)
/* 80280A58 0027C6B8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80280A5C 0027C6BC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80280A60 0027C6C0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80280A64 0027C6C4  7C 7D 1B 78 */	mr r29, r3
/* 80280A68 0027C6C8  4B FE DC F5 */	bl OSDisableInterrupts
/* 80280A6C 0027C6CC  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80280A70 0027C6D0  38 A0 00 61 */	li r5, 0x61
/* 80280A74 0027C6D4  98 A4 80 00 */	stb r5, 0xCC008000@l(r4)
/* 80280A78 0027C6D8  67 A6 48 00 */	oris r6, r29, 0x4800
/* 80280A7C 0027C6DC  38 00 00 47 */	li r0, 0x47
/* 80280A80 0027C6E0  83 C2 A0 D0 */	lwz r30, lbl_806426D0-_SDA2_BASE_(r2)
/* 80280A84 0027C6E4  90 C4 80 00 */	stw r6, -0x8000(r4)
/* 80280A88 0027C6E8  53 A6 04 3E */	rlwimi r6, r29, 0, 0x10, 0x1f
/* 80280A8C 0027C6EC  50 06 C0 0E */	rlwimi r6, r0, 0x18, 0, 7
/* 80280A90 0027C6F0  7C 7D 1B 78 */	mr r29, r3
/* 80280A94 0027C6F4  98 A4 80 00 */	stb r5, -0x8000(r4)
/* 80280A98 0027C6F8  90 C4 80 00 */	stw r6, -0x8000(r4)
/* 80280A9C 0027C6FC  80 1E 05 FC */	lwz r0, 0x5fc(r30)
/* 80280AA0 0027C700  2C 00 00 00 */	cmpwi r0, 0
/* 80280AA4 0027C704  41 82 00 08 */	beq lbl_80280AAC
/* 80280AA8 0027C708  48 00 04 29 */	bl __GXSetDirtyState
lbl_80280AAC:
/* 80280AAC 0027C70C  3B E0 00 00 */	li r31, 0
/* 80280AB0 0027C710  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80280AB4 0027C714  93 E3 80 00 */	stw r31, 0xCC008000@l(r3)
/* 80280AB8 0027C718  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280ABC 0027C71C  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280AC0 0027C720  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280AC4 0027C724  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280AC8 0027C728  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280ACC 0027C72C  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280AD0 0027C730  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280AD4 0027C734  4B FE 77 8D */	bl PPCSync
/* 80280AD8 0027C738  7F A3 EB 78 */	mr r3, r29
/* 80280ADC 0027C73C  4B FE DC A9 */	bl OSRestoreInterrupts
/* 80280AE0 0027C740  B3 FE 00 02 */	sth r31, 2(r30)
/* 80280AE4 0027C744  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80280AE8 0027C748  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80280AEC 0027C74C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80280AF0 0027C750  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80280AF4 0027C754  7C 08 03 A6 */	mtlr r0
/* 80280AF8 0027C758  38 21 00 20 */	addi r1, r1, 0x20
/* 80280AFC 0027C75C  4E 80 00 20 */	blr

.global GXReadDrawSync
GXReadDrawSync:
/* 80280B00 0027C760  80 6D A9 98 */	lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280B04 0027C764  A0 63 00 0E */	lhz r3, 0xe(r3)
/* 80280B08 0027C768  4E 80 00 20 */	blr

.global GXSetDrawDone
GXSetDrawDone:
/* 80280B0C 0027C76C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80280B10 0027C770  7C 08 02 A6 */	mflr r0
/* 80280B14 0027C774  90 01 00 14 */	stw r0, 0x14(r1)
/* 80280B18 0027C778  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80280B1C 0027C77C  93 C1 00 08 */	stw r30, 8(r1)
/* 80280B20 0027C780  4B FE DC 3D */	bl OSDisableInterrupts
/* 80280B24 0027C784  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 80280B28 0027C788  38 00 00 61 */	li r0, 0x61
/* 80280B2C 0027C78C  3C 80 45 00 */	lis r4, 0x45000002@ha
/* 80280B30 0027C790  98 05 80 00 */	stb r0, 0xCC008000@l(r5)
/* 80280B34 0027C794  38 04 00 02 */	addi r0, r4, 0x45000002@l
/* 80280B38 0027C798  80 82 A0 D0 */	lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
/* 80280B3C 0027C79C  90 05 80 00 */	stw r0, -0x8000(r5)
/* 80280B40 0027C7A0  7C 7E 1B 78 */	mr r30, r3
/* 80280B44 0027C7A4  80 04 05 FC */	lwz r0, 0x5fc(r4)
/* 80280B48 0027C7A8  2C 00 00 00 */	cmpwi r0, 0
/* 80280B4C 0027C7AC  41 82 00 08 */	beq lbl_80280B54
/* 80280B50 0027C7B0  48 00 03 81 */	bl __GXSetDirtyState
lbl_80280B54:
/* 80280B54 0027C7B4  3B E0 00 00 */	li r31, 0
/* 80280B58 0027C7B8  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80280B5C 0027C7BC  93 E3 80 00 */	stw r31, 0xCC008000@l(r3)
/* 80280B60 0027C7C0  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280B64 0027C7C4  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280B68 0027C7C8  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280B6C 0027C7CC  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280B70 0027C7D0  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280B74 0027C7D4  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280B78 0027C7D8  93 E3 80 00 */	stw r31, -0x8000(r3)
/* 80280B7C 0027C7DC  4B FE 76 E5 */	bl PPCSync
/* 80280B80 0027C7E0  9B ED A9 E0 */	stb r31, lbl_8063FCA0-_SDA_BASE_(r13)
/* 80280B84 0027C7E4  7F C3 F3 78 */	mr r3, r30
/* 80280B88 0027C7E8  4B FE DB FD */	bl OSRestoreInterrupts
/* 80280B8C 0027C7EC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80280B90 0027C7F0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80280B94 0027C7F4  83 C1 00 08 */	lwz r30, 8(r1)
/* 80280B98 0027C7F8  7C 08 03 A6 */	mtlr r0
/* 80280B9C 0027C7FC  38 21 00 10 */	addi r1, r1, 0x10
/* 80280BA0 0027C800  4E 80 00 20 */	blr

.global GXPixModeSync
GXPixModeSync:
/* 80280BA4 0027C804  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80280BA8 0027C808  38 00 00 61 */	li r0, 0x61
/* 80280BAC 0027C80C  98 04 80 00 */	stb r0, 0xCC008000@l(r4)
/* 80280BB0 0027C810  38 00 00 00 */	li r0, 0
/* 80280BB4 0027C814  80 A2 A0 D0 */	lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
/* 80280BB8 0027C818  80 65 02 2C */	lwz r3, 0x22c(r5)
/* 80280BBC 0027C81C  90 64 80 00 */	stw r3, -0x8000(r4)
/* 80280BC0 0027C820  B0 05 00 02 */	sth r0, 2(r5)
/* 80280BC4 0027C824  4E 80 00 20 */	blr

.global GXTexModeSync
GXTexModeSync:
/* 80280BC8 0027C828  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 80280BCC 0027C82C  38 00 00 61 */	li r0, 0x61
/* 80280BD0 0027C830  98 05 80 00 */	stb r0, 0xCC008000@l(r5)
/* 80280BD4 0027C834  3C 80 63 00 */	lis r4, 0x6300
/* 80280BD8 0027C838  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 80280BDC 0027C83C  38 00 00 00 */	li r0, 0
/* 80280BE0 0027C840  90 85 80 00 */	stw r4, -0x8000(r5)
/* 80280BE4 0027C844  B0 03 00 02 */	sth r0, 2(r3)
/* 80280BE8 0027C848  4E 80 00 20 */	blr

.global GXPokeAlphaMode
GXPokeAlphaMode:
/* 80280BEC 0027C84C  80 AD A9 98 */	lwz r5, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280BF0 0027C850  50 64 40 2E */	rlwimi r4, r3, 8, 0, 0x17
/* 80280BF4 0027C854  B0 85 00 06 */	sth r4, 6(r5)
/* 80280BF8 0027C858  4E 80 00 20 */	blr

.global GXPokeAlphaRead
GXPokeAlphaRead:
/* 80280BFC 0027C85C  38 00 00 00 */	li r0, 0
/* 80280C00 0027C860  80 8D A9 98 */	lwz r4, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280C04 0027C864  50 60 07 BE */	rlwimi r0, r3, 0, 0x1e, 0x1f
/* 80280C08 0027C868  60 00 00 04 */	ori r0, r0, 4
/* 80280C0C 0027C86C  B0 04 00 08 */	sth r0, 8(r4)
/* 80280C10 0027C870  4E 80 00 20 */	blr

.global GXPokeAlphaUpdate
GXPokeAlphaUpdate:
/* 80280C14 0027C874  80 8D A9 98 */	lwz r4, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280C18 0027C878  A0 04 00 02 */	lhz r0, 2(r4)
/* 80280C1C 0027C87C  50 60 26 F6 */	rlwimi r0, r3, 4, 0x1b, 0x1b
/* 80280C20 0027C880  B0 04 00 02 */	sth r0, 2(r4)
/* 80280C24 0027C884  4E 80 00 20 */	blr

.global GXPokeBlendMode
GXPokeBlendMode:
/* 80280C28 0027C888  80 ED A9 98 */	lwz r7, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280C2C 0027C88C  2C 03 00 01 */	cmpwi r3, 1
/* 80280C30 0027C890  38 00 00 00 */	li r0, 0
/* 80280C34 0027C894  A1 27 00 02 */	lhz r9, 2(r7)
/* 80280C38 0027C898  41 82 00 0C */	beq lbl_80280C44
/* 80280C3C 0027C89C  2C 03 00 03 */	cmpwi r3, 3
/* 80280C40 0027C8A0  40 82 00 08 */	bne lbl_80280C48
lbl_80280C44:
/* 80280C44 0027C8A4  38 00 00 01 */	li r0, 1
lbl_80280C48:
/* 80280C48 0027C8A8  38 E3 FF FD */	addi r7, r3, -3
/* 80280C4C 0027C8AC  50 09 07 FE */	rlwimi r9, r0, 0, 0x1f, 0x1f
/* 80280C50 0027C8B0  38 03 FF FE */	addi r0, r3, -2
/* 80280C54 0027C8B4  80 6D A9 98 */	lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280C58 0027C8B8  7C E8 00 34 */	cntlzw r8, r7
/* 80280C5C 0027C8BC  7C 07 00 34 */	cntlzw r7, r0
/* 80280C60 0027C8C0  38 00 00 41 */	li r0, 0x41
/* 80280C64 0027C8C4  51 09 35 28 */	rlwimi r9, r8, 6, 0x14, 0x14
/* 80280C68 0027C8C8  50 E9 E7 BC */	rlwimi r9, r7, 0x1c, 0x1e, 0x1e
/* 80280C6C 0027C8CC  50 C9 64 26 */	rlwimi r9, r6, 0xc, 0x10, 0x13
/* 80280C70 0027C8D0  50 89 45 6E */	rlwimi r9, r4, 8, 0x15, 0x17
/* 80280C74 0027C8D4  50 A9 2E 34 */	rlwimi r9, r5, 5, 0x18, 0x1a
/* 80280C78 0027C8D8  50 09 C0 0E */	rlwimi r9, r0, 0x18, 0, 7
/* 80280C7C 0027C8DC  B1 23 00 02 */	sth r9, 2(r3)
/* 80280C80 0027C8E0  4E 80 00 20 */	blr

.global GXPokeColorUpdate
GXPokeColorUpdate:
/* 80280C84 0027C8E4  80 8D A9 98 */	lwz r4, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280C88 0027C8E8  A0 04 00 02 */	lhz r0, 2(r4)
/* 80280C8C 0027C8EC  50 60 1F 38 */	rlwimi r0, r3, 3, 0x1c, 0x1c
/* 80280C90 0027C8F0  B0 04 00 02 */	sth r0, 2(r4)
/* 80280C94 0027C8F4  4E 80 00 20 */	blr

.global GXPokeDstAlpha
GXPokeDstAlpha:
/* 80280C98 0027C8F8  80 AD A9 98 */	lwz r5, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280C9C 0027C8FC  38 00 00 00 */	li r0, 0
/* 80280CA0 0027C900  50 80 06 3E */	rlwimi r0, r4, 0, 0x18, 0x1f
/* 80280CA4 0027C904  50 60 45 EE */	rlwimi r0, r3, 8, 0x17, 0x17
/* 80280CA8 0027C908  B0 05 00 04 */	sth r0, 4(r5)
/* 80280CAC 0027C90C  4E 80 00 20 */	blr

.global GXPokeDither
GXPokeDither:
/* 80280CB0 0027C910  80 8D A9 98 */	lwz r4, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280CB4 0027C914  A0 04 00 02 */	lhz r0, 2(r4)
/* 80280CB8 0027C918  50 60 17 7A */	rlwimi r0, r3, 2, 0x1d, 0x1d
/* 80280CBC 0027C91C  B0 04 00 02 */	sth r0, 2(r4)
/* 80280CC0 0027C920  4E 80 00 20 */	blr

.global GXPokeZMode
GXPokeZMode:
/* 80280CC4 0027C924  80 CD A9 98 */	lwz r6, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280CC8 0027C928  38 00 00 00 */	li r0, 0
/* 80280CCC 0027C92C  50 60 07 FE */	rlwimi r0, r3, 0, 0x1f, 0x1f
/* 80280CD0 0027C930  50 80 0F 3C */	rlwimi r0, r4, 1, 0x1c, 0x1e
/* 80280CD4 0027C934  50 A0 26 F6 */	rlwimi r0, r5, 4, 0x1b, 0x1b
/* 80280CD8 0027C938  B0 06 00 00 */	sth r0, 0(r6)
/* 80280CDC 0027C93C  4E 80 00 20 */	blr

.global GXSetDrawSyncCallback
GXSetDrawSyncCallback:
/* 80280CE0 0027C940  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80280CE4 0027C944  7C 08 02 A6 */	mflr r0
/* 80280CE8 0027C948  90 01 00 14 */	stw r0, 0x14(r1)
/* 80280CEC 0027C94C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80280CF0 0027C950  93 C1 00 08 */	stw r30, 8(r1)
/* 80280CF4 0027C954  7C 7E 1B 78 */	mr r30, r3
/* 80280CF8 0027C958  83 ED A9 E8 */	lwz r31, lbl_8063FCA8-_SDA_BASE_(r13)
/* 80280CFC 0027C95C  4B FE DA 61 */	bl OSDisableInterrupts
/* 80280D00 0027C960  93 CD A9 E8 */	stw r30, lbl_8063FCA8-_SDA_BASE_(r13)
/* 80280D04 0027C964  4B FE DA 81 */	bl OSRestoreInterrupts
/* 80280D08 0027C968  7F E3 FB 78 */	mr r3, r31
/* 80280D0C 0027C96C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80280D10 0027C970  83 C1 00 08 */	lwz r30, 8(r1)
/* 80280D14 0027C974  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80280D18 0027C978  7C 08 03 A6 */	mtlr r0
/* 80280D1C 0027C97C  38 21 00 10 */	addi r1, r1, 0x10
/* 80280D20 0027C980  4E 80 00 20 */	blr

.global GXTokenInterruptHandler
GXTokenInterruptHandler:
/* 80280D24 0027C984  94 21 FD 20 */	stwu r1, -0x2e0(r1)
/* 80280D28 0027C988  7C 08 02 A6 */	mflr r0
/* 80280D2C 0027C98C  90 01 02 E4 */	stw r0, 0x2e4(r1)
/* 80280D30 0027C990  93 E1 02 DC */	stw r31, 0x2dc(r1)
/* 80280D34 0027C994  93 C1 02 D8 */	stw r30, 0x2d8(r1)
/* 80280D38 0027C998  7C 9E 23 78 */	mr r30, r4
/* 80280D3C 0027C99C  80 0D A9 E8 */	lwz r0, lbl_8063FCA8-_SDA_BASE_(r13)
/* 80280D40 0027C9A0  80 6D A9 98 */	lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280D44 0027C9A4  2C 00 00 00 */	cmpwi r0, 0
/* 80280D48 0027C9A8  A3 E3 00 0E */	lhz r31, 0xe(r3)
/* 80280D4C 0027C9AC  41 82 00 34 */	beq lbl_80280D80
/* 80280D50 0027C9B0  38 61 00 08 */	addi r3, r1, 8
/* 80280D54 0027C9B4  4B FE A3 3D */	bl OSClearContext
/* 80280D58 0027C9B8  38 61 00 08 */	addi r3, r1, 8
/* 80280D5C 0027C9BC  4B FE A1 0D */	bl OSSetCurrentContext
/* 80280D60 0027C9C0  81 8D A9 E8 */	lwz r12, lbl_8063FCA8-_SDA_BASE_(r13)
/* 80280D64 0027C9C4  7F E3 FB 78 */	mr r3, r31
/* 80280D68 0027C9C8  7D 89 03 A6 */	mtctr r12
/* 80280D6C 0027C9CC  4E 80 04 21 */	bctrl
/* 80280D70 0027C9D0  38 61 00 08 */	addi r3, r1, 8
/* 80280D74 0027C9D4  4B FE A3 1D */	bl OSClearContext
/* 80280D78 0027C9D8  7F C3 F3 78 */	mr r3, r30
/* 80280D7C 0027C9DC  4B FE A0 ED */	bl OSSetCurrentContext
lbl_80280D80:
/* 80280D80 0027C9E0  80 6D A9 98 */	lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280D84 0027C9E4  A0 03 00 0A */	lhz r0, 0xa(r3)
/* 80280D88 0027C9E8  60 00 00 04 */	ori r0, r0, 4
/* 80280D8C 0027C9EC  B0 03 00 0A */	sth r0, 0xa(r3)
/* 80280D90 0027C9F0  80 01 02 E4 */	lwz r0, 0x2e4(r1)
/* 80280D94 0027C9F4  83 E1 02 DC */	lwz r31, 0x2dc(r1)
/* 80280D98 0027C9F8  83 C1 02 D8 */	lwz r30, 0x2d8(r1)
/* 80280D9C 0027C9FC  7C 08 03 A6 */	mtlr r0
/* 80280DA0 0027CA00  38 21 02 E0 */	addi r1, r1, 0x2e0
/* 80280DA4 0027CA04  4E 80 00 20 */	blr

.global GXSetDrawDoneCallback
GXSetDrawDoneCallback:
/* 80280DA8 0027CA08  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80280DAC 0027CA0C  7C 08 02 A6 */	mflr r0
/* 80280DB0 0027CA10  90 01 00 14 */	stw r0, 0x14(r1)
/* 80280DB4 0027CA14  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80280DB8 0027CA18  93 C1 00 08 */	stw r30, 8(r1)
/* 80280DBC 0027CA1C  7C 7E 1B 78 */	mr r30, r3
/* 80280DC0 0027CA20  83 ED A9 E4 */	lwz r31, lbl_8063FCA4-_SDA_BASE_(r13)
/* 80280DC4 0027CA24  4B FE D9 99 */	bl OSDisableInterrupts
/* 80280DC8 0027CA28  93 CD A9 E4 */	stw r30, lbl_8063FCA4-_SDA_BASE_(r13)
/* 80280DCC 0027CA2C  4B FE D9 B9 */	bl OSRestoreInterrupts
/* 80280DD0 0027CA30  7F E3 FB 78 */	mr r3, r31
/* 80280DD4 0027CA34  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80280DD8 0027CA38  83 C1 00 08 */	lwz r30, 8(r1)
/* 80280DDC 0027CA3C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80280DE0 0027CA40  7C 08 03 A6 */	mtlr r0
/* 80280DE4 0027CA44  38 21 00 10 */	addi r1, r1, 0x10
/* 80280DE8 0027CA48  4E 80 00 20 */	blr

GXFinishInterruptHandler:
/* 80280DEC 0027CA4C  94 21 FD 20 */	stwu r1, -0x2e0(r1)
/* 80280DF0 0027CA50  7C 08 02 A6 */	mflr r0
/* 80280DF4 0027CA54  38 60 00 01 */	li r3, 1
/* 80280DF8 0027CA58  90 01 02 E4 */	stw r0, 0x2e4(r1)
/* 80280DFC 0027CA5C  93 E1 02 DC */	stw r31, 0x2dc(r1)
/* 80280E00 0027CA60  7C 9F 23 78 */	mr r31, r4
/* 80280E04 0027CA64  80 AD A9 98 */	lwz r5, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280E08 0027CA68  A0 05 00 0A */	lhz r0, 0xa(r5)
/* 80280E0C 0027CA6C  60 00 00 08 */	ori r0, r0, 8
/* 80280E10 0027CA70  B0 05 00 0A */	sth r0, 0xa(r5)
/* 80280E14 0027CA74  80 0D A9 E4 */	lwz r0, lbl_8063FCA4-_SDA_BASE_(r13)
/* 80280E18 0027CA78  98 6D A9 E0 */	stb r3, lbl_8063FCA0-_SDA_BASE_(r13)
/* 80280E1C 0027CA7C  2C 00 00 00 */	cmpwi r0, 0
/* 80280E20 0027CA80  41 82 00 30 */	beq lbl_80280E50
/* 80280E24 0027CA84  38 61 00 08 */	addi r3, r1, 8
/* 80280E28 0027CA88  4B FE A2 69 */	bl OSClearContext
/* 80280E2C 0027CA8C  38 61 00 08 */	addi r3, r1, 8
/* 80280E30 0027CA90  4B FE A0 39 */	bl OSSetCurrentContext
/* 80280E34 0027CA94  81 8D A9 E4 */	lwz r12, lbl_8063FCA4-_SDA_BASE_(r13)
/* 80280E38 0027CA98  7D 89 03 A6 */	mtctr r12
/* 80280E3C 0027CA9C  4E 80 04 21 */	bctrl
/* 80280E40 0027CAA0  38 61 00 08 */	addi r3, r1, 8
/* 80280E44 0027CAA4  4B FE A2 4D */	bl OSClearContext
/* 80280E48 0027CAA8  7F E3 FB 78 */	mr r3, r31
/* 80280E4C 0027CAAC  4B FE A0 1D */	bl OSSetCurrentContext
lbl_80280E50:
/* 80280E50 0027CAB0  38 6D A9 D8 */	addi r3, r13, lbl_8063FC98-_SDA_BASE_
/* 80280E54 0027CAB4  4B FF 16 0D */	bl OSWakeupThread
/* 80280E58 0027CAB8  80 01 02 E4 */	lwz r0, 0x2e4(r1)
/* 80280E5C 0027CABC  83 E1 02 DC */	lwz r31, 0x2dc(r1)
/* 80280E60 0027CAC0  7C 08 03 A6 */	mtlr r0
/* 80280E64 0027CAC4  38 21 02 E0 */	addi r1, r1, 0x2e0
/* 80280E68 0027CAC8  4E 80 00 20 */	blr

.global __GXPEInit
__GXPEInit:
/* 80280E6C 0027CACC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80280E70 0027CAD0  7C 08 02 A6 */	mflr r0
/* 80280E74 0027CAD4  3C 80 80 28 */	lis r4, GXTokenInterruptHandler@ha
/* 80280E78 0027CAD8  38 60 00 12 */	li r3, 0x12
/* 80280E7C 0027CADC  90 01 00 14 */	stw r0, 0x14(r1)
/* 80280E80 0027CAE0  38 84 0D 24 */	addi r4, r4, GXTokenInterruptHandler@l
/* 80280E84 0027CAE4  4B FE D9 25 */	bl __OSSetInterruptHandler
/* 80280E88 0027CAE8  3C 80 80 28 */	lis r4, GXFinishInterruptHandler@ha
/* 80280E8C 0027CAEC  38 60 00 13 */	li r3, 0x13
/* 80280E90 0027CAF0  38 84 0D EC */	addi r4, r4, GXFinishInterruptHandler@l
/* 80280E94 0027CAF4  4B FE D9 15 */	bl __OSSetInterruptHandler
/* 80280E98 0027CAF8  38 6D A9 D8 */	addi r3, r13, lbl_8063FC98-_SDA_BASE_
/* 80280E9C 0027CAFC  4B FF 04 4D */	bl OSInitThreadQueue
/* 80280EA0 0027CB00  38 60 20 00 */	li r3, 0x2000
/* 80280EA4 0027CB04  4B FE DC C9 */	bl __OSUnmaskInterrupts
/* 80280EA8 0027CB08  38 60 10 00 */	li r3, 0x1000
/* 80280EAC 0027CB0C  4B FE DC C1 */	bl __OSUnmaskInterrupts
/* 80280EB0 0027CB10  80 6D A9 98 */	lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
/* 80280EB4 0027CB14  A0 03 00 0A */	lhz r0, 0xa(r3)
/* 80280EB8 0027CB18  60 00 00 0F */	ori r0, r0, 0xf
/* 80280EBC 0027CB1C  B0 03 00 0A */	sth r0, 0xa(r3)
/* 80280EC0 0027CB20  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80280EC4 0027CB24  7C 08 03 A6 */	mtlr r0
/* 80280EC8 0027CB28  38 21 00 10 */	addi r1, r1, 0x10
/* 80280ECC 0027CB2C  4E 80 00 20 */	blr