prime/asm/Dolphin/GBA/GBA.s

1426 lines
66 KiB
ArmAsm

.include "macros.inc"
.section .bss
.balign 8
.global lbl_8056A0A0
lbl_8056A0A0:
.skip 0x100
.global __GBA
__GBA:
.skip 0x400
.section .sbss, "wa"
.balign 8
.global __GBAReset
__GBAReset:
.skip 0x4
.section .data, "wa"
.balign 8
lbl_803F7160:
.4byte OnReset
.4byte 127
.4byte 0
.4byte 0
lbl_803F7170:
.byte 0x18
.byte 0xFC
.byte 0xC0
.byte 0x80
.byte 0x7f
.byte 0x40
.byte 0x3f
.byte 0x01
.byte 0x00
.asciz "// Coded by Kawasedo"
.byte 0x00
.byte 0x02
.byte 0x03
.byte 0x04
.byte 0x05
.byte 0x06
.byte 0x07
.byte 0x08
.byte 0xac
.byte 0xc4
.byte 0xf8
.byte 0x08
.byte 0x10
.byte 0xbf
.byte 0x18
.byte 0x00
.byte 0x00
.byte 0x00
.section .text, "ax"
.global ShortCommandProc
ShortCommandProc:
/* 803C95F8 003C6558 3C 80 80 57 */ lis r4, __GBA@ha
/* 803C95FC 003C655C 54 63 40 2E */ slwi r3, r3, 8
/* 803C9600 003C6560 38 04 A1 A0 */ addi r0, r4, __GBA@l
/* 803C9604 003C6564 7C 60 1A 14 */ add r3, r0, r3
/* 803C9608 003C6568 80 03 00 20 */ lwz r0, 0x20(r3)
/* 803C960C 003C656C 2C 00 00 00 */ cmpwi r0, 0
/* 803C9610 003C6570 4C 82 00 20 */ bnelr
/* 803C9614 003C6574 88 03 00 05 */ lbz r0, 5(r3)
/* 803C9618 003C6578 28 00 00 00 */ cmplwi r0, 0
/* 803C961C 003C657C 40 82 00 10 */ bne lbl_803C962C
/* 803C9620 003C6580 88 03 00 06 */ lbz r0, 6(r3)
/* 803C9624 003C6584 28 00 00 04 */ cmplwi r0, 4
/* 803C9628 003C6588 41 82 00 10 */ beq lbl_803C9638
lbl_803C962C:
/* 803C962C 003C658C 38 00 00 01 */ li r0, 1
/* 803C9630 003C6590 90 03 00 20 */ stw r0, 0x20(r3)
/* 803C9634 003C6594 4E 80 00 20 */ blr
lbl_803C9638:
/* 803C9638 003C6598 88 03 00 07 */ lbz r0, 7(r3)
/* 803C963C 003C659C 80 63 00 14 */ lwz r3, 0x14(r3)
/* 803C9640 003C65A0 70 00 00 3A */ andi. r0, r0, 0x3a
/* 803C9644 003C65A4 98 03 00 00 */ stb r0, 0(r3)
/* 803C9648 003C65A8 4E 80 00 20 */ blr
.global GBAInit
GBAInit:
/* 803C964C 003C65AC 7C 08 02 A6 */ mflr r0
/* 803C9650 003C65B0 3C 60 80 00 */ lis r3, 0x800000F8@ha
/* 803C9654 003C65B4 90 01 00 04 */ stw r0, 4(r1)
/* 803C9658 003C65B8 3C 80 80 57 */ lis r4, __GBA@ha
/* 803C965C 003C65BC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803C9660 003C65C0 BF 61 00 0C */ stmw r27, 0xc(r1)
/* 803C9664 003C65C4 3B A4 A1 A0 */ addi r29, r4, __GBA@l
/* 803C9668 003C65C8 3B 60 00 00 */ li r27, 0
/* 803C966C 003C65CC 3B E0 00 00 */ li r31, 0
/* 803C9670 003C65D0 80 03 00 F8 */ lwz r0, 0x800000F8@l(r3)
/* 803C9674 003C65D4 3C 60 43 1C */ lis r3, 0x431BDE83@ha
/* 803C9678 003C65D8 38 63 DE 83 */ addi r3, r3, 0x431BDE83@l
/* 803C967C 003C65DC 54 00 F0 BE */ srwi r0, r0, 2
/* 803C9680 003C65E0 7C 03 00 16 */ mulhwu r0, r3, r0
/* 803C9684 003C65E4 54 00 8B FE */ srwi r0, r0, 0xf
/* 803C9688 003C65E8 1C 00 00 3C */ mulli r0, r0, 0x3c
/* 803C968C 003C65EC 3C 60 80 57 */ lis r3, lbl_8056A0A0@ha
/* 803C9690 003C65F0 3B 83 A0 A0 */ addi r28, r3, lbl_8056A0A0@l
/* 803C9694 003C65F4 54 1E E8 FE */ srwi r30, r0, 3
lbl_803C9698:
/* 803C9698 003C65F8 93 DD 00 34 */ stw r30, 0x34(r29)
/* 803C969C 003C65FC 38 7D 00 24 */ addi r3, r29, 0x24
/* 803C96A0 003C6600 93 FD 00 30 */ stw r31, 0x30(r29)
/* 803C96A4 003C6604 4B FB AF 21 */ bl OSInitThreadQueue
/* 803C96A8 003C6608 3B 7B 00 01 */ addi r27, r27, 1
/* 803C96AC 003C660C 93 9D 00 F8 */ stw r28, 0xf8(r29)
/* 803C96B0 003C6610 2C 1B 00 04 */ cmpwi r27, 4
/* 803C96B4 003C6614 3B BD 01 00 */ addi r29, r29, 0x100
/* 803C96B8 003C6618 3B 9C 00 40 */ addi r28, r28, 0x40
/* 803C96BC 003C661C 41 80 FF DC */ blt lbl_803C9698
/* 803C96C0 003C6620 4B FB 49 A5 */ bl OSInitAlarm
/* 803C96C4 003C6624 4B FA 63 41 */ bl DSPInit
/* 803C96C8 003C6628 38 00 00 00 */ li r0, 0
/* 803C96CC 003C662C 3C 60 80 3F */ lis r3, lbl_803F7160@ha
/* 803C96D0 003C6630 90 0D B1 58 */ stw r0, __GBAReset@sda21(r13)
/* 803C96D4 003C6634 38 63 71 60 */ addi r3, r3, lbl_803F7160@l
/* 803C96D8 003C6638 4B FB 99 55 */ bl OSRegisterResetFunction
/* 803C96DC 003C663C BB 61 00 0C */ lmw r27, 0xc(r1)
/* 803C96E0 003C6640 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803C96E4 003C6644 38 21 00 20 */ addi r1, r1, 0x20
/* 803C96E8 003C6648 7C 08 03 A6 */ mtlr r0
/* 803C96EC 003C664C 4E 80 00 20 */ blr
.global GBAGetStatusAsync
GBAGetStatusAsync:
/* 803C96F0 003C6650 7C 08 02 A6 */ mflr r0
/* 803C96F4 003C6654 3C C0 80 57 */ lis r6, __GBA@ha
/* 803C96F8 003C6658 90 01 00 04 */ stw r0, 4(r1)
/* 803C96FC 003C665C 54 67 40 2E */ slwi r7, r3, 8
/* 803C9700 003C6660 38 06 A1 A0 */ addi r0, r6, __GBA@l
/* 803C9704 003C6664 94 21 FF F8 */ stwu r1, -8(r1)
/* 803C9708 003C6668 7C E0 3A 14 */ add r7, r0, r7
/* 803C970C 003C666C 80 07 00 1C */ lwz r0, 0x1c(r7)
/* 803C9710 003C6670 28 00 00 00 */ cmplwi r0, 0
/* 803C9714 003C6674 41 82 00 0C */ beq lbl_803C9720
/* 803C9718 003C6678 38 60 00 02 */ li r3, 2
/* 803C971C 003C667C 48 00 00 28 */ b lbl_803C9744
lbl_803C9720:
/* 803C9720 003C6680 38 00 00 00 */ li r0, 0
/* 803C9724 003C6684 98 07 00 00 */ stb r0, 0(r7)
/* 803C9728 003C6688 3C C0 80 3D */ lis r6, ShortCommandProc@ha
/* 803C972C 003C668C 38 C6 95 F8 */ addi r6, r6, ShortCommandProc@l
/* 803C9730 003C6690 90 87 00 14 */ stw r4, 0x14(r7)
/* 803C9734 003C6694 38 80 00 01 */ li r4, 1
/* 803C9738 003C6698 90 A7 00 1C */ stw r5, 0x1c(r7)
/* 803C973C 003C669C 38 A0 00 03 */ li r5, 3
/* 803C9740 003C66A0 48 00 17 69 */ bl __GBATransfer
lbl_803C9744:
/* 803C9744 003C66A4 80 01 00 0C */ lwz r0, 0xc(r1)
/* 803C9748 003C66A8 38 21 00 08 */ addi r1, r1, 8
/* 803C974C 003C66AC 7C 08 03 A6 */ mtlr r0
/* 803C9750 003C66B0 4E 80 00 20 */ blr
.global GBAGetStatus
GBAGetStatus:
/* 803C9754 003C66B4 7C 08 02 A6 */ mflr r0
/* 803C9758 003C66B8 90 01 00 04 */ stw r0, 4(r1)
/* 803C975C 003C66BC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803C9760 003C66C0 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803C9764 003C66C4 3B E3 00 00 */ addi r31, r3, 0
/* 803C9768 003C66C8 3C 60 80 57 */ lis r3, __GBA@ha
/* 803C976C 003C66CC 57 E5 40 2E */ slwi r5, r31, 8
/* 803C9770 003C66D0 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803C9774 003C66D4 7C E0 2A 14 */ add r7, r0, r5
/* 803C9778 003C66D8 80 07 00 1C */ lwz r0, 0x1c(r7)
/* 803C977C 003C66DC 28 00 00 00 */ cmplwi r0, 0
/* 803C9780 003C66E0 41 82 00 0C */ beq lbl_803C978C
/* 803C9784 003C66E4 38 60 00 02 */ li r3, 2
/* 803C9788 003C66E8 48 00 00 34 */ b lbl_803C97BC
lbl_803C978C:
/* 803C978C 003C66EC 38 00 00 00 */ li r0, 0
/* 803C9790 003C66F0 98 07 00 00 */ stb r0, 0(r7)
/* 803C9794 003C66F4 3C A0 80 3D */ lis r5, __GBASyncCallback@ha
/* 803C9798 003C66F8 38 05 AC E4 */ addi r0, r5, __GBASyncCallback@l
/* 803C979C 003C66FC 90 87 00 14 */ stw r4, 0x14(r7)
/* 803C97A0 003C6700 3C 60 80 3D */ lis r3, ShortCommandProc@ha
/* 803C97A4 003C6704 38 C3 95 F8 */ addi r6, r3, ShortCommandProc@l
/* 803C97A8 003C6708 90 07 00 1C */ stw r0, 0x1c(r7)
/* 803C97AC 003C670C 38 7F 00 00 */ addi r3, r31, 0
/* 803C97B0 003C6710 38 80 00 01 */ li r4, 1
/* 803C97B4 003C6714 38 A0 00 03 */ li r5, 3
/* 803C97B8 003C6718 48 00 16 F1 */ bl __GBATransfer
lbl_803C97BC:
/* 803C97BC 003C671C 2C 03 00 00 */ cmpwi r3, 0
/* 803C97C0 003C6720 41 82 00 08 */ beq lbl_803C97C8
/* 803C97C4 003C6724 48 00 00 0C */ b lbl_803C97D0
lbl_803C97C8:
/* 803C97C8 003C6728 7F E3 FB 78 */ mr r3, r31
/* 803C97CC 003C672C 48 00 15 4D */ bl __GBASync
lbl_803C97D0:
/* 803C97D0 003C6730 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803C97D4 003C6734 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803C97D8 003C6738 38 21 00 20 */ addi r1, r1, 0x20
/* 803C97DC 003C673C 7C 08 03 A6 */ mtlr r0
/* 803C97E0 003C6740 4E 80 00 20 */ blr
.global GBAResetAsync
GBAResetAsync:
/* 803C97E4 003C6744 7C 08 02 A6 */ mflr r0
/* 803C97E8 003C6748 3C C0 80 57 */ lis r6, __GBA@ha
/* 803C97EC 003C674C 90 01 00 04 */ stw r0, 4(r1)
/* 803C97F0 003C6750 54 67 40 2E */ slwi r7, r3, 8
/* 803C97F4 003C6754 38 06 A1 A0 */ addi r0, r6, __GBA@l
/* 803C97F8 003C6758 94 21 FF F8 */ stwu r1, -8(r1)
/* 803C97FC 003C675C 7C E0 3A 14 */ add r7, r0, r7
/* 803C9800 003C6760 80 07 00 1C */ lwz r0, 0x1c(r7)
/* 803C9804 003C6764 28 00 00 00 */ cmplwi r0, 0
/* 803C9808 003C6768 41 82 00 0C */ beq lbl_803C9814
/* 803C980C 003C676C 38 60 00 02 */ li r3, 2
/* 803C9810 003C6770 48 00 00 28 */ b lbl_803C9838
lbl_803C9814:
/* 803C9814 003C6774 38 00 00 FF */ li r0, 0xff
/* 803C9818 003C6778 98 07 00 00 */ stb r0, 0(r7)
/* 803C981C 003C677C 3C C0 80 3D */ lis r6, ShortCommandProc@ha
/* 803C9820 003C6780 38 C6 95 F8 */ addi r6, r6, ShortCommandProc@l
/* 803C9824 003C6784 90 87 00 14 */ stw r4, 0x14(r7)
/* 803C9828 003C6788 38 80 00 01 */ li r4, 1
/* 803C982C 003C678C 90 A7 00 1C */ stw r5, 0x1c(r7)
/* 803C9830 003C6790 38 A0 00 03 */ li r5, 3
/* 803C9834 003C6794 48 00 16 75 */ bl __GBATransfer
lbl_803C9838:
/* 803C9838 003C6798 80 01 00 0C */ lwz r0, 0xc(r1)
/* 803C983C 003C679C 38 21 00 08 */ addi r1, r1, 8
/* 803C9840 003C67A0 7C 08 03 A6 */ mtlr r0
/* 803C9844 003C67A4 4E 80 00 20 */ blr
.global GBAReset
GBAReset:
/* 803C9848 003C67A8 7C 08 02 A6 */ mflr r0
/* 803C984C 003C67AC 90 01 00 04 */ stw r0, 4(r1)
/* 803C9850 003C67B0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803C9854 003C67B4 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803C9858 003C67B8 3B E3 00 00 */ addi r31, r3, 0
/* 803C985C 003C67BC 3C 60 80 57 */ lis r3, __GBA@ha
/* 803C9860 003C67C0 57 E5 40 2E */ slwi r5, r31, 8
/* 803C9864 003C67C4 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803C9868 003C67C8 7C E0 2A 14 */ add r7, r0, r5
/* 803C986C 003C67CC 80 07 00 1C */ lwz r0, 0x1c(r7)
/* 803C9870 003C67D0 28 00 00 00 */ cmplwi r0, 0
/* 803C9874 003C67D4 41 82 00 0C */ beq lbl_803C9880
/* 803C9878 003C67D8 38 60 00 02 */ li r3, 2
/* 803C987C 003C67DC 48 00 00 34 */ b lbl_803C98B0
lbl_803C9880:
/* 803C9880 003C67E0 38 00 00 FF */ li r0, 0xff
/* 803C9884 003C67E4 98 07 00 00 */ stb r0, 0(r7)
/* 803C9888 003C67E8 3C A0 80 3D */ lis r5, __GBASyncCallback@ha
/* 803C988C 003C67EC 38 05 AC E4 */ addi r0, r5, __GBASyncCallback@l
/* 803C9890 003C67F0 90 87 00 14 */ stw r4, 0x14(r7)
/* 803C9894 003C67F4 3C 60 80 3D */ lis r3, ShortCommandProc@ha
/* 803C9898 003C67F8 38 C3 95 F8 */ addi r6, r3, ShortCommandProc@l
/* 803C989C 003C67FC 90 07 00 1C */ stw r0, 0x1c(r7)
/* 803C98A0 003C6800 38 7F 00 00 */ addi r3, r31, 0
/* 803C98A4 003C6804 38 80 00 01 */ li r4, 1
/* 803C98A8 003C6808 38 A0 00 03 */ li r5, 3
/* 803C98AC 003C680C 48 00 15 FD */ bl __GBATransfer
lbl_803C98B0:
/* 803C98B0 003C6810 2C 03 00 00 */ cmpwi r3, 0
/* 803C98B4 003C6814 41 82 00 08 */ beq lbl_803C98BC
/* 803C98B8 003C6818 48 00 00 0C */ b lbl_803C98C4
lbl_803C98BC:
/* 803C98BC 003C681C 7F E3 FB 78 */ mr r3, r31
/* 803C98C0 003C6820 48 00 14 59 */ bl __GBASync
lbl_803C98C4:
/* 803C98C4 003C6824 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803C98C8 003C6828 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803C98CC 003C682C 38 21 00 20 */ addi r1, r1, 0x20
/* 803C98D0 003C6830 7C 08 03 A6 */ mtlr r0
/* 803C98D4 003C6834 4E 80 00 20 */ blr
OnReset:
/* 803C98D8 003C6838 38 00 00 01 */ li r0, 1
/* 803C98DC 003C683C 90 0D B1 58 */ stw r0, __GBAReset@sda21(r13)
/* 803C98E0 003C6840 38 60 00 01 */ li r3, 1
/* 803C98E4 003C6844 4E 80 00 20 */ blr
.global GBAGetProcessStatus
GBAGetProcessStatus:
/* 803C98E8 003C6848 7C 08 02 A6 */ mflr r0
/* 803C98EC 003C684C 3C A0 80 57 */ lis r5, __GBA@ha
/* 803C98F0 003C6850 90 01 00 04 */ stw r0, 4(r1)
/* 803C98F4 003C6854 54 63 40 2E */ slwi r3, r3, 8
/* 803C98F8 003C6858 38 05 A1 A0 */ addi r0, r5, __GBA@l
/* 803C98FC 003C685C 94 21 FF C8 */ stwu r1, -0x38(r1)
/* 803C9900 003C6860 BE E1 00 14 */ stmw r23, 0x14(r1)
/* 803C9904 003C6864 7E E0 1A 14 */ add r23, r0, r3
/* 803C9908 003C6868 3B 04 00 00 */ addi r24, r4, 0
/* 803C990C 003C686C 3B F7 00 40 */ addi r31, r23, 0x40
/* 803C9910 003C6870 4B FB 7D 51 */ bl OSDisableInterrupts
/* 803C9914 003C6874 80 1F 00 14 */ lwz r0, 0x14(r31)
/* 803C9918 003C6878 3B A3 00 00 */ addi r29, r3, 0
/* 803C991C 003C687C 28 00 00 00 */ cmplwi r0, 0
/* 803C9920 003C6880 41 82 01 04 */ beq lbl_803C9A24
/* 803C9924 003C6884 80 7F 00 34 */ lwz r3, 0x34(r31)
/* 803C9928 003C6888 3B C0 00 00 */ li r30, 0
/* 803C992C 003C688C 80 1F 00 28 */ lwz r0, 0x28(r31)
/* 803C9930 003C6890 3B 80 00 02 */ li r28, 2
/* 803C9934 003C6894 1C A3 00 64 */ mulli r5, r3, 0x64
/* 803C9938 003C6898 80 9F 00 64 */ lwz r4, 0x64(r31)
/* 803C993C 003C689C 80 7F 00 2C */ lwz r3, 0x2c(r31)
/* 803C9940 003C68A0 7C 85 23 D6 */ divw r4, r5, r4
/* 803C9944 003C68A4 7C 63 F2 78 */ xor r3, r3, r30
/* 803C9948 003C68A8 7C 00 F2 78 */ xor r0, r0, r30
/* 803C994C 003C68AC 7C 60 03 79 */ or. r0, r3, r0
/* 803C9950 003C68B0 54 9B 06 3E */ clrlwi r27, r4, 0x18
/* 803C9954 003C68B4 41 82 00 C0 */ beq lbl_803C9A14
/* 803C9958 003C68B8 4B FB BA 51 */ bl OSGetTime
/* 803C995C 003C68BC 3E E0 80 00 */ lis r23, 0x800000F8@ha
/* 803C9960 003C68C0 80 DF 00 2C */ lwz r6, 0x2c(r31)
/* 803C9964 003C68C4 80 17 00 F8 */ lwz r0, 0x800000F8@l(r23)
/* 803C9968 003C68C8 3C A0 10 62 */ lis r5, 0x10624DD3@ha
/* 803C996C 003C68CC 7F 26 20 10 */ subfc r25, r6, r4
/* 803C9970 003C68D0 80 9F 00 28 */ lwz r4, 0x28(r31)
/* 803C9974 003C68D4 3B E5 4D D3 */ addi r31, r5, 0x10624DD3@l
/* 803C9978 003C68D8 54 00 F0 BE */ srwi r0, r0, 2
/* 803C997C 003C68DC 7C 1F 00 16 */ mulhwu r0, r31, r0
/* 803C9980 003C68E0 7F 44 19 10 */ subfe r26, r4, r3
/* 803C9984 003C68E4 54 06 D1 BE */ srwi r6, r0, 6
/* 803C9988 003C68E8 38 7A 00 00 */ addi r3, r26, 0
/* 803C998C 003C68EC 38 99 00 00 */ addi r4, r25, 0
/* 803C9990 003C68F0 38 A0 00 00 */ li r5, 0
/* 803C9994 003C68F4 4B FC 02 39 */ bl __div2i
/* 803C9998 003C68F8 38 E0 15 7C */ li r7, 0x157c
/* 803C999C 003C68FC 6C 65 80 00 */ xoris r5, r3, 0x8000
/* 803C99A0 003C6900 6F C3 80 00 */ xoris r3, r30, 0x8000
/* 803C99A4 003C6904 7C 07 20 10 */ subfc r0, r7, r4
/* 803C99A8 003C6908 7C 63 29 10 */ subfe r3, r3, r5
/* 803C99AC 003C690C 7C 65 29 10 */ subfe r3, r5, r5
/* 803C99B0 003C6910 7C 63 00 D1 */ neg. r3, r3
/* 803C99B4 003C6914 41 82 00 50 */ beq lbl_803C9A04
/* 803C99B8 003C6918 80 77 00 F8 */ lwz r3, 0xf8(r23)
/* 803C99BC 003C691C 7C BE 39 D6 */ mullw r5, r30, r7
/* 803C99C0 003C6920 54 63 F0 BE */ srwi r3, r3, 2
/* 803C99C4 003C6924 7C 7F 18 16 */ mulhwu r3, r31, r3
/* 803C99C8 003C6928 54 66 D1 BE */ srwi r6, r3, 6
/* 803C99CC 003C692C 7C 66 38 16 */ mulhwu r3, r6, r7
/* 803C99D0 003C6930 7C A5 1A 14 */ add r5, r5, r3
/* 803C99D4 003C6934 7C 66 F1 D6 */ mullw r3, r6, r30
/* 803C99D8 003C6938 7F 60 FE 70 */ srawi r0, r27, 0x1f
/* 803C99DC 003C693C 7C A5 1A 14 */ add r5, r5, r3
/* 803C99E0 003C6940 7C 60 C9 D6 */ mullw r3, r0, r25
/* 803C99E4 003C6944 7C 1B C8 16 */ mulhwu r0, r27, r25
/* 803C99E8 003C6948 7C 63 02 14 */ add r3, r3, r0
/* 803C99EC 003C694C 7C 1B D1 D6 */ mullw r0, r27, r26
/* 803C99F0 003C6950 7C 9B C9 D6 */ mullw r4, r27, r25
/* 803C99F4 003C6954 7C C6 39 D6 */ mullw r6, r6, r7
/* 803C99F8 003C6958 7C 63 02 14 */ add r3, r3, r0
/* 803C99FC 003C695C 4B FC 01 D1 */ bl __div2i
/* 803C9A00 003C6960 7C 9B 23 78 */ mr r27, r4
lbl_803C9A04:
/* 803C9A04 003C6964 57 60 06 3E */ clrlwi r0, r27, 0x18
/* 803C9A08 003C6968 28 00 00 64 */ cmplwi r0, 0x64
/* 803C9A0C 003C696C 41 80 00 08 */ blt lbl_803C9A14
/* 803C9A10 003C6970 3B 60 00 64 */ li r27, 0x64
lbl_803C9A14:
/* 803C9A14 003C6974 28 18 00 00 */ cmplwi r24, 0
/* 803C9A18 003C6978 41 82 00 24 */ beq lbl_803C9A3C
/* 803C9A1C 003C697C 9B 78 00 00 */ stb r27, 0(r24)
/* 803C9A20 003C6980 48 00 00 1C */ b lbl_803C9A3C
lbl_803C9A24:
/* 803C9A24 003C6984 80 17 00 1C */ lwz r0, 0x1c(r23)
/* 803C9A28 003C6988 28 00 00 00 */ cmplwi r0, 0
/* 803C9A2C 003C698C 41 82 00 0C */ beq lbl_803C9A38
/* 803C9A30 003C6990 3B 80 00 02 */ li r28, 2
/* 803C9A34 003C6994 48 00 00 08 */ b lbl_803C9A3C
lbl_803C9A38:
/* 803C9A38 003C6998 3B 80 00 00 */ li r28, 0
lbl_803C9A3C:
/* 803C9A3C 003C699C 7F A3 EB 78 */ mr r3, r29
/* 803C9A40 003C69A0 4B FB 7C 49 */ bl OSRestoreInterrupts
/* 803C9A44 003C69A4 7F 83 E3 78 */ mr r3, r28
/* 803C9A48 003C69A8 BA E1 00 14 */ lmw r23, 0x14(r1)
/* 803C9A4C 003C69AC 80 01 00 3C */ lwz r0, 0x3c(r1)
/* 803C9A50 003C69B0 38 21 00 38 */ addi r1, r1, 0x38
/* 803C9A54 003C69B4 7C 08 03 A6 */ mtlr r0
/* 803C9A58 003C69B8 4E 80 00 20 */ blr
.global GBAJoyBootAsync
GBAJoyBootAsync:
/* 803C9A5C 003C69BC 7C 08 02 A6 */ mflr r0
/* 803C9A60 003C69C0 90 01 00 04 */ stw r0, 4(r1)
/* 803C9A64 003C69C4 54 60 00 3B */ rlwinm. r0, r3, 0, 0, 0x1d
/* 803C9A68 003C69C8 94 21 FF B8 */ stwu r1, -0x48(r1)
/* 803C9A6C 003C69CC BF 01 00 28 */ stmw r24, 0x28(r1)
/* 803C9A70 003C69D0 3B 03 00 00 */ addi r24, r3, 0
/* 803C9A74 003C69D4 3C 60 80 57 */ lis r3, __GBA@ha
/* 803C9A78 003C69D8 57 0A 40 2E */ slwi r10, r24, 8
/* 803C9A7C 003C69DC 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803C9A80 003C69E0 7C 60 52 14 */ add r3, r0, r10
/* 803C9A84 003C69E4 3B 24 00 00 */ addi r25, r4, 0
/* 803C9A88 003C69E8 3B 45 00 00 */ addi r26, r5, 0
/* 803C9A8C 003C69EC 3B 66 00 00 */ addi r27, r6, 0
/* 803C9A90 003C69F0 3B 87 00 00 */ addi r28, r7, 0
/* 803C9A94 003C69F4 3B A8 00 00 */ addi r29, r8, 0
/* 803C9A98 003C69F8 3B C9 00 00 */ addi r30, r9, 0
/* 803C9A9C 003C69FC 3B E3 00 40 */ addi r31, r3, 0x40
/* 803C9AA0 003C6A00 41 82 00 0C */ beq lbl_803C9AAC
/* 803C9AA4 003C6A04 38 60 00 04 */ li r3, 4
/* 803C9AA8 003C6A08 48 00 00 DC */ b lbl_803C9B84
lbl_803C9AAC:
/* 803C9AAC 003C6A0C 2C 1C 00 00 */ cmpwi r28, 0
/* 803C9AB0 003C6A10 41 82 00 10 */ beq lbl_803C9AC0
/* 803C9AB4 003C6A14 3C 00 00 04 */ lis r0, 4
/* 803C9AB8 003C6A18 7C 00 E0 00 */ cmpw r0, r28
/* 803C9ABC 003C6A1C 40 80 00 0C */ bge lbl_803C9AC8
lbl_803C9AC0:
/* 803C9AC0 003C6A20 38 60 00 04 */ li r3, 4
/* 803C9AC4 003C6A24 48 00 00 C0 */ b lbl_803C9B84
lbl_803C9AC8:
/* 803C9AC8 003C6A28 2C 1A FF FC */ cmpwi r26, -4
/* 803C9ACC 003C6A2C 41 80 00 0C */ blt lbl_803C9AD8
/* 803C9AD0 003C6A30 2C 1A 00 04 */ cmpwi r26, 4
/* 803C9AD4 003C6A34 40 81 00 0C */ ble lbl_803C9AE0
lbl_803C9AD8:
/* 803C9AD8 003C6A38 38 60 00 04 */ li r3, 4
/* 803C9ADC 003C6A3C 48 00 00 A8 */ b lbl_803C9B84
lbl_803C9AE0:
/* 803C9AE0 003C6A40 2C 19 00 00 */ cmpwi r25, 0
/* 803C9AE4 003C6A44 41 80 00 0C */ blt lbl_803C9AF0
/* 803C9AE8 003C6A48 2C 19 00 06 */ cmpwi r25, 6
/* 803C9AEC 003C6A4C 40 81 00 0C */ ble lbl_803C9AF8
lbl_803C9AF0:
/* 803C9AF0 003C6A50 38 60 00 04 */ li r3, 4
/* 803C9AF4 003C6A54 48 00 00 90 */ b lbl_803C9B84
lbl_803C9AF8:
/* 803C9AF8 003C6A58 88 7B 00 AC */ lbz r3, 0xac(r27)
/* 803C9AFC 003C6A5C 88 1B 00 AD */ lbz r0, 0xad(r27)
/* 803C9B00 003C6A60 88 9B 00 AE */ lbz r4, 0xae(r27)
/* 803C9B04 003C6A64 7C 03 01 D6 */ mullw r0, r3, r0
/* 803C9B08 003C6A68 88 7B 00 AF */ lbz r3, 0xaf(r27)
/* 803C9B0C 003C6A6C 7C 04 01 D6 */ mullw r0, r4, r0
/* 803C9B10 003C6A70 7C 03 01 D7 */ mullw. r0, r3, r0
/* 803C9B14 003C6A74 40 82 00 0C */ bne lbl_803C9B20
/* 803C9B18 003C6A78 38 60 00 04 */ li r3, 4
/* 803C9B1C 003C6A7C 48 00 00 68 */ b lbl_803C9B84
lbl_803C9B20:
/* 803C9B20 003C6A80 38 78 00 00 */ addi r3, r24, 0
/* 803C9B24 003C6A84 38 81 00 24 */ addi r4, r1, 0x24
/* 803C9B28 003C6A88 4B FF FD C1 */ bl GBAGetProcessStatus
/* 803C9B2C 003C6A8C 2C 03 00 00 */ cmpwi r3, 0
/* 803C9B30 003C6A90 41 82 00 08 */ beq lbl_803C9B38
/* 803C9B34 003C6A94 48 00 00 50 */ b lbl_803C9B84
lbl_803C9B38:
/* 803C9B38 003C6A98 93 3F 00 00 */ stw r25, 0(r31)
/* 803C9B3C 003C6A9C 3C 80 80 3F */ lis r4, lbl_803F7170@ha
/* 803C9B40 003C6AA0 3C 60 80 3D */ lis r3, _F23@ha
/* 803C9B44 003C6AA4 93 5F 00 04 */ stw r26, 4(r31)
/* 803C9B48 003C6AA8 38 A3 9B 98 */ addi r5, r3, _F23@l
/* 803C9B4C 003C6AAC 38 84 71 70 */ addi r4, r4, lbl_803F7170@l
/* 803C9B50 003C6AB0 93 7F 00 08 */ stw r27, 8(r31)
/* 803C9B54 003C6AB4 7F 03 C3 78 */ mr r3, r24
/* 803C9B58 003C6AB8 93 9F 00 0C */ stw r28, 0xc(r31)
/* 803C9B5C 003C6ABC 93 BF 00 10 */ stw r29, 0x10(r31)
/* 803C9B60 003C6AC0 93 DF 00 14 */ stw r30, 0x14(r31)
/* 803C9B64 003C6AC4 88 04 00 08 */ lbz r0, 8(r4)
/* 803C9B68 003C6AC8 90 1F 00 34 */ stw r0, 0x34(r31)
/* 803C9B6C 003C6ACC 80 9F 00 10 */ lwz r4, 0x10(r31)
/* 803C9B70 003C6AD0 4B FF FB 81 */ bl GBAGetStatusAsync
/* 803C9B74 003C6AD4 2C 03 00 00 */ cmpwi r3, 0
/* 803C9B78 003C6AD8 41 82 00 0C */ beq lbl_803C9B84
/* 803C9B7C 003C6ADC 38 00 00 00 */ li r0, 0
/* 803C9B80 003C6AE0 90 1F 00 14 */ stw r0, 0x14(r31)
lbl_803C9B84:
/* 803C9B84 003C6AE4 BB 01 00 28 */ lmw r24, 0x28(r1)
/* 803C9B88 003C6AE8 80 01 00 4C */ lwz r0, 0x4c(r1)
/* 803C9B8C 003C6AEC 38 21 00 48 */ addi r1, r1, 0x48
/* 803C9B90 003C6AF0 7C 08 03 A6 */ mtlr r0
/* 803C9B94 003C6AF4 4E 80 00 20 */ blr
.global _F23
_F23:
/* 803C9B98 003C6AF8 7C 08 02 A6 */ mflr r0
/* 803C9B9C 003C6AFC 90 01 00 04 */ stw r0, 4(r1)
/* 803C9BA0 003C6B00 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803C9BA4 003C6B04 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803C9BA8 003C6B08 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803C9BAC 003C6B0C 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803C9BB0 003C6B10 7C 9D 23 79 */ or. r29, r4, r4
/* 803C9BB4 003C6B14 93 81 00 18 */ stw r28, 0x18(r1)
/* 803C9BB8 003C6B18 3B 83 00 00 */ addi r28, r3, 0
/* 803C9BBC 003C6B1C 3C 60 80 57 */ lis r3, __GBA@ha
/* 803C9BC0 003C6B20 57 84 40 2E */ slwi r4, r28, 8
/* 803C9BC4 003C6B24 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803C9BC8 003C6B28 7F E0 22 14 */ add r31, r0, r4
/* 803C9BCC 003C6B2C 3B DF 00 40 */ addi r30, r31, 0x40
/* 803C9BD0 003C6B30 40 82 00 20 */ bne lbl_803C9BF0
/* 803C9BD4 003C6B34 3C 60 80 3D */ lis r3, _F25@ha
/* 803C9BD8 003C6B38 80 9E 00 10 */ lwz r4, 0x10(r30)
/* 803C9BDC 003C6B3C 38 A3 9C 40 */ addi r5, r3, _F25@l
/* 803C9BE0 003C6B40 38 7C 00 00 */ addi r3, r28, 0
/* 803C9BE4 003C6B44 4B FF FC 01 */ bl GBAResetAsync
/* 803C9BE8 003C6B48 7C 7D 1B 79 */ or. r29, r3, r3
/* 803C9BEC 003C6B4C 41 82 00 30 */ beq lbl_803C9C1C
lbl_803C9BF0:
/* 803C9BF0 003C6B50 38 00 00 00 */ li r0, 0
/* 803C9BF4 003C6B54 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 803C9BF8 003C6B58 90 1E 00 28 */ stw r0, 0x28(r30)
/* 803C9BFC 003C6B5C 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 803C9C00 003C6B60 28 0C 00 00 */ cmplwi r12, 0
/* 803C9C04 003C6B64 41 82 00 18 */ beq lbl_803C9C1C
/* 803C9C08 003C6B68 90 1E 00 14 */ stw r0, 0x14(r30)
/* 803C9C0C 003C6B6C 7D 88 03 A6 */ mtlr r12
/* 803C9C10 003C6B70 38 7C 00 00 */ addi r3, r28, 0
/* 803C9C14 003C6B74 38 9D 00 00 */ addi r4, r29, 0
/* 803C9C18 003C6B78 4E 80 00 21 */ blrl
lbl_803C9C1C:
/* 803C9C1C 003C6B7C 93 BF 00 20 */ stw r29, 0x20(r31)
/* 803C9C20 003C6B80 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803C9C24 003C6B84 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803C9C28 003C6B88 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803C9C2C 003C6B8C 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803C9C30 003C6B90 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803C9C34 003C6B94 38 21 00 28 */ addi r1, r1, 0x28
/* 803C9C38 003C6B98 7C 08 03 A6 */ mtlr r0
/* 803C9C3C 003C6B9C 4E 80 00 20 */ blr
.global _F25
_F25:
/* 803C9C40 003C6BA0 7C 08 02 A6 */ mflr r0
/* 803C9C44 003C6BA4 90 01 00 04 */ stw r0, 4(r1)
/* 803C9C48 003C6BA8 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803C9C4C 003C6BAC 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803C9C50 003C6BB0 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803C9C54 003C6BB4 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803C9C58 003C6BB8 7C 9D 23 79 */ or. r29, r4, r4
/* 803C9C5C 003C6BBC 93 81 00 18 */ stw r28, 0x18(r1)
/* 803C9C60 003C6BC0 3B 83 00 00 */ addi r28, r3, 0
/* 803C9C64 003C6BC4 3C 60 80 57 */ lis r3, __GBA@ha
/* 803C9C68 003C6BC8 57 84 40 2E */ slwi r4, r28, 8
/* 803C9C6C 003C6BCC 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803C9C70 003C6BD0 7F E0 22 14 */ add r31, r0, r4
/* 803C9C74 003C6BD4 3B DF 00 40 */ addi r30, r31, 0x40
/* 803C9C78 003C6BD8 40 82 00 24 */ bne lbl_803C9C9C
/* 803C9C7C 003C6BDC 80 9E 00 10 */ lwz r4, 0x10(r30)
/* 803C9C80 003C6BE0 3C 60 80 3F */ lis r3, lbl_803F7170@ha
/* 803C9C84 003C6BE4 38 63 71 70 */ addi r3, r3, lbl_803F7170@l
/* 803C9C88 003C6BE8 88 84 00 00 */ lbz r4, 0(r4)
/* 803C9C8C 003C6BEC 88 03 00 25 */ lbz r0, 0x25(r3)
/* 803C9C90 003C6BF0 7C 04 00 40 */ cmplw r4, r0
/* 803C9C94 003C6BF4 41 82 00 08 */ beq lbl_803C9C9C
/* 803C9C98 003C6BF8 3B A0 00 03 */ li r29, 3
lbl_803C9C9C:
/* 803C9C9C 003C6BFC 2C 1D 00 00 */ cmpwi r29, 0
/* 803C9CA0 003C6C00 40 82 00 20 */ bne lbl_803C9CC0
/* 803C9CA4 003C6C04 3C 60 80 3D */ lis r3, _F27@ha
/* 803C9CA8 003C6C08 80 9E 00 10 */ lwz r4, 0x10(r30)
/* 803C9CAC 003C6C0C 38 A3 9D 10 */ addi r5, r3, _F27@l
/* 803C9CB0 003C6C10 38 7C 00 00 */ addi r3, r28, 0
/* 803C9CB4 003C6C14 4B FF FA 3D */ bl GBAGetStatusAsync
/* 803C9CB8 003C6C18 7C 7D 1B 79 */ or. r29, r3, r3
/* 803C9CBC 003C6C1C 41 82 00 30 */ beq lbl_803C9CEC
lbl_803C9CC0:
/* 803C9CC0 003C6C20 38 00 00 00 */ li r0, 0
/* 803C9CC4 003C6C24 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 803C9CC8 003C6C28 90 1E 00 28 */ stw r0, 0x28(r30)
/* 803C9CCC 003C6C2C 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 803C9CD0 003C6C30 28 0C 00 00 */ cmplwi r12, 0
/* 803C9CD4 003C6C34 41 82 00 18 */ beq lbl_803C9CEC
/* 803C9CD8 003C6C38 90 1E 00 14 */ stw r0, 0x14(r30)
/* 803C9CDC 003C6C3C 7D 88 03 A6 */ mtlr r12
/* 803C9CE0 003C6C40 38 7C 00 00 */ addi r3, r28, 0
/* 803C9CE4 003C6C44 38 9D 00 00 */ addi r4, r29, 0
/* 803C9CE8 003C6C48 4E 80 00 21 */ blrl
lbl_803C9CEC:
/* 803C9CEC 003C6C4C 93 BF 00 20 */ stw r29, 0x20(r31)
/* 803C9CF0 003C6C50 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803C9CF4 003C6C54 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803C9CF8 003C6C58 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803C9CFC 003C6C5C 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803C9D00 003C6C60 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803C9D04 003C6C64 38 21 00 28 */ addi r1, r1, 0x28
/* 803C9D08 003C6C68 7C 08 03 A6 */ mtlr r0
/* 803C9D0C 003C6C6C 4E 80 00 20 */ blr
.global _F27
_F27:
/* 803C9D10 003C6C70 7C 08 02 A6 */ mflr r0
/* 803C9D14 003C6C74 90 01 00 04 */ stw r0, 4(r1)
/* 803C9D18 003C6C78 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803C9D1C 003C6C7C 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803C9D20 003C6C80 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803C9D24 003C6C84 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803C9D28 003C6C88 7C 9D 23 79 */ or. r29, r4, r4
/* 803C9D2C 003C6C8C 93 81 00 18 */ stw r28, 0x18(r1)
/* 803C9D30 003C6C90 3B 83 00 00 */ addi r28, r3, 0
/* 803C9D34 003C6C94 3C 60 80 57 */ lis r3, __GBA@ha
/* 803C9D38 003C6C98 57 84 40 2E */ slwi r4, r28, 8
/* 803C9D3C 003C6C9C 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803C9D40 003C6CA0 7F E0 22 14 */ add r31, r0, r4
/* 803C9D44 003C6CA4 3B DF 00 40 */ addi r30, r31, 0x40
/* 803C9D48 003C6CA8 40 82 00 20 */ bne lbl_803C9D68
/* 803C9D4C 003C6CAC 80 9E 00 10 */ lwz r4, 0x10(r30)
/* 803C9D50 003C6CB0 3C 60 80 3F */ lis r3, lbl_803F7170@ha
/* 803C9D54 003C6CB4 88 03 71 70 */ lbz r0, lbl_803F7170@l(r3)
/* 803C9D58 003C6CB8 88 84 00 00 */ lbz r4, 0(r4)
/* 803C9D5C 003C6CBC 7C 04 00 40 */ cmplw r4, r0
/* 803C9D60 003C6CC0 41 82 00 08 */ beq lbl_803C9D68
/* 803C9D64 003C6CC4 3B A0 00 03 */ li r29, 3
lbl_803C9D68:
/* 803C9D68 003C6CC8 2C 1D 00 00 */ cmpwi r29, 0
/* 803C9D6C 003C6CCC 40 82 00 24 */ bne lbl_803C9D90
/* 803C9D70 003C6CD0 3C 60 80 3D */ lis r3, _F29@ha
/* 803C9D74 003C6CD4 80 BE 00 10 */ lwz r5, 0x10(r30)
/* 803C9D78 003C6CD8 38 C3 9D E0 */ addi r6, r3, _F29@l
/* 803C9D7C 003C6CDC 38 7C 00 00 */ addi r3, r28, 0
/* 803C9D80 003C6CE0 38 9E 00 18 */ addi r4, r30, 0x18
/* 803C9D84 003C6CE4 48 00 0B FD */ bl GBAReadAsync
/* 803C9D88 003C6CE8 7C 7D 1B 79 */ or. r29, r3, r3
/* 803C9D8C 003C6CEC 41 82 00 30 */ beq lbl_803C9DBC
lbl_803C9D90:
/* 803C9D90 003C6CF0 38 00 00 00 */ li r0, 0
/* 803C9D94 003C6CF4 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 803C9D98 003C6CF8 90 1E 00 28 */ stw r0, 0x28(r30)
/* 803C9D9C 003C6CFC 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 803C9DA0 003C6D00 28 0C 00 00 */ cmplwi r12, 0
/* 803C9DA4 003C6D04 41 82 00 18 */ beq lbl_803C9DBC
/* 803C9DA8 003C6D08 90 1E 00 14 */ stw r0, 0x14(r30)
/* 803C9DAC 003C6D0C 7D 88 03 A6 */ mtlr r12
/* 803C9DB0 003C6D10 38 7C 00 00 */ addi r3, r28, 0
/* 803C9DB4 003C6D14 38 9D 00 00 */ addi r4, r29, 0
/* 803C9DB8 003C6D18 4E 80 00 21 */ blrl
lbl_803C9DBC:
/* 803C9DBC 003C6D1C 93 BF 00 20 */ stw r29, 0x20(r31)
/* 803C9DC0 003C6D20 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803C9DC4 003C6D24 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803C9DC8 003C6D28 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803C9DCC 003C6D2C 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803C9DD0 003C6D30 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803C9DD4 003C6D34 38 21 00 28 */ addi r1, r1, 0x28
/* 803C9DD8 003C6D38 7C 08 03 A6 */ mtlr r0
/* 803C9DDC 003C6D3C 4E 80 00 20 */ blr
.global _F29
_F29:
/* 803C9DE0 003C6D40 7C 08 02 A6 */ mflr r0
/* 803C9DE4 003C6D44 54 65 40 2E */ slwi r5, r3, 8
/* 803C9DE8 003C6D48 90 01 00 04 */ stw r0, 4(r1)
/* 803C9DEC 003C6D4C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803C9DF0 003C6D50 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803C9DF4 003C6D54 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803C9DF8 003C6D58 7C 9E 23 79 */ or. r30, r4, r4
/* 803C9DFC 003C6D5C 3C 80 80 57 */ lis r4, __GBA@ha
/* 803C9E00 003C6D60 38 04 A1 A0 */ addi r0, r4, __GBA@l
/* 803C9E04 003C6D64 7F E0 2A 14 */ add r31, r0, r5
/* 803C9E08 003C6D68 38 9F 00 40 */ addi r4, r31, 0x40
/* 803C9E0C 003C6D6C 40 82 00 10 */ bne lbl_803C9E1C
/* 803C9E10 003C6D70 38 84 00 18 */ addi r4, r4, 0x18
/* 803C9E14 003C6D74 48 00 12 B1 */ bl __GBAX02
/* 803C9E18 003C6D78 48 00 00 2C */ b lbl_803C9E44
lbl_803C9E1C:
/* 803C9E1C 003C6D7C 38 00 00 00 */ li r0, 0
/* 803C9E20 003C6D80 90 04 00 2C */ stw r0, 0x2c(r4)
/* 803C9E24 003C6D84 90 04 00 28 */ stw r0, 0x28(r4)
/* 803C9E28 003C6D88 81 84 00 14 */ lwz r12, 0x14(r4)
/* 803C9E2C 003C6D8C 28 0C 00 00 */ cmplwi r12, 0
/* 803C9E30 003C6D90 41 82 00 14 */ beq lbl_803C9E44
/* 803C9E34 003C6D94 90 04 00 14 */ stw r0, 0x14(r4)
/* 803C9E38 003C6D98 7D 88 03 A6 */ mtlr r12
/* 803C9E3C 003C6D9C 38 9E 00 00 */ addi r4, r30, 0
/* 803C9E40 003C6DA0 4E 80 00 21 */ blrl
lbl_803C9E44:
/* 803C9E44 003C6DA4 93 DF 00 20 */ stw r30, 0x20(r31)
/* 803C9E48 003C6DA8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803C9E4C 003C6DAC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803C9E50 003C6DB0 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803C9E54 003C6DB4 38 21 00 20 */ addi r1, r1, 0x20
/* 803C9E58 003C6DB8 7C 08 03 A6 */ mtlr r0
/* 803C9E5C 003C6DBC 4E 80 00 20 */ blr
.global __GBAX01
__GBAX01:
/* 803C9E60 003C6DC0 7C 08 02 A6 */ mflr r0
/* 803C9E64 003C6DC4 3C A0 80 3F */ lis r5, lbl_803F7170@ha
/* 803C9E68 003C6DC8 90 01 00 04 */ stw r0, 4(r1)
/* 803C9E6C 003C6DCC 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803C9E70 003C6DD0 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803C9E74 003C6DD4 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803C9E78 003C6DD8 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803C9E7C 003C6DDC 3B A3 00 00 */ addi r29, r3, 0
/* 803C9E80 003C6DE0 3C 60 80 57 */ lis r3, __GBA@ha
/* 803C9E84 003C6DE4 93 81 00 18 */ stw r28, 0x18(r1)
/* 803C9E88 003C6DE8 7C 9C 23 79 */ or. r28, r4, r4
/* 803C9E8C 003C6DEC 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803C9E90 003C6DF0 57 A4 40 2E */ slwi r4, r29, 8
/* 803C9E94 003C6DF4 7F E0 22 14 */ add r31, r0, r4
/* 803C9E98 003C6DF8 38 65 71 70 */ addi r3, r5, lbl_803F7170@l
/* 803C9E9C 003C6DFC 3B DF 00 40 */ addi r30, r31, 0x40
/* 803C9EA0 003C6E00 40 82 01 44 */ bne lbl_803C9FE4
/* 803C9EA4 003C6E04 80 9F 00 F8 */ lwz r4, 0xf8(r31)
/* 803C9EA8 003C6E08 80 04 00 20 */ lwz r0, 0x20(r4)
/* 803C9EAC 003C6E0C 90 1E 00 58 */ stw r0, 0x58(r30)
/* 803C9EB0 003C6E10 80 9F 00 F8 */ lwz r4, 0xf8(r31)
/* 803C9EB4 003C6E14 80 04 00 24 */ lwz r0, 0x24(r4)
/* 803C9EB8 003C6E18 90 1E 00 5C */ stw r0, 0x5c(r30)
/* 803C9EBC 003C6E1C 88 1E 00 1B */ lbz r0, 0x1b(r30)
/* 803C9EC0 003C6E20 28 00 00 00 */ cmplwi r0, 0
/* 803C9EC4 003C6E24 41 82 00 44 */ beq lbl_803C9F08
/* 803C9EC8 003C6E28 88 1E 00 1A */ lbz r0, 0x1a(r30)
/* 803C9ECC 003C6E2C 28 00 00 00 */ cmplwi r0, 0
/* 803C9ED0 003C6E30 41 82 00 38 */ beq lbl_803C9F08
/* 803C9ED4 003C6E34 88 03 00 05 */ lbz r0, 5(r3)
/* 803C9ED8 003C6E38 80 9E 00 58 */ lwz r4, 0x58(r30)
/* 803C9EDC 003C6E3C 54 00 48 2C */ slwi r0, r0, 9
/* 803C9EE0 003C6E40 7C 80 00 39 */ and. r0, r4, r0
/* 803C9EE4 003C6E44 41 82 00 24 */ beq lbl_803C9F08
/* 803C9EE8 003C6E48 88 1E 00 19 */ lbz r0, 0x19(r30)
/* 803C9EEC 003C6E4C 28 00 00 00 */ cmplwi r0, 0
/* 803C9EF0 003C6E50 41 82 00 18 */ beq lbl_803C9F08
/* 803C9EF4 003C6E54 54 80 8B FF */ rlwinm. r0, r4, 0x11, 0xf, 0x1f
/* 803C9EF8 003C6E58 41 82 00 10 */ beq lbl_803C9F08
/* 803C9EFC 003C6E5C 88 1E 00 18 */ lbz r0, 0x18(r30)
/* 803C9F00 003C6E60 28 00 00 00 */ cmplwi r0, 0
/* 803C9F04 003C6E64 40 82 00 0C */ bne lbl_803C9F10
lbl_803C9F08:
/* 803C9F08 003C6E68 3B 80 00 03 */ li r28, 3
/* 803C9F0C 003C6E6C 48 00 00 D8 */ b lbl_803C9FE4
lbl_803C9F10:
/* 803C9F10 003C6E70 88 A3 00 24 */ lbz r5, 0x24(r3)
/* 803C9F14 003C6E74 80 9E 00 0C */ lwz r4, 0xc(r30)
/* 803C9F18 003C6E78 88 03 00 24 */ lbz r0, 0x24(r3)
/* 803C9F1C 003C6E7C 7C A5 28 F8 */ nor r5, r5, r5
/* 803C9F20 003C6E80 7C 04 02 14 */ add r0, r4, r0
/* 803C9F24 003C6E84 7C A0 00 38 */ and r0, r5, r0
/* 803C9F28 003C6E88 90 1E 00 20 */ stw r0, 0x20(r30)
/* 803C9F2C 003C6E8C 88 A3 00 14 */ lbz r5, 0x14(r3)
/* 803C9F30 003C6E90 88 83 00 21 */ lbz r4, 0x21(r3)
/* 803C9F34 003C6E94 80 1E 00 20 */ lwz r0, 0x20(r30)
/* 803C9F38 003C6E98 7C A4 20 30 */ slw r4, r5, r4
/* 803C9F3C 003C6E9C 7C 00 20 00 */ cmpw r0, r4
/* 803C9F40 003C6EA0 40 80 00 08 */ bge lbl_803C9F48
/* 803C9F44 003C6EA4 90 9E 00 20 */ stw r4, 0x20(r30)
lbl_803C9F48:
/* 803C9F48 003C6EA8 80 1E 00 20 */ lwz r0, 0x20(r30)
/* 803C9F4C 003C6EAC 90 1E 00 64 */ stw r0, 0x64(r30)
/* 803C9F50 003C6EB0 80 1E 00 20 */ lwz r0, 0x20(r30)
/* 803C9F54 003C6EB4 7C 04 00 50 */ subf r0, r4, r0
/* 803C9F58 003C6EB8 90 1E 00 20 */ stw r0, 0x20(r30)
/* 803C9F5C 003C6EBC 80 9E 00 20 */ lwz r4, 0x20(r30)
/* 803C9F60 003C6EC0 88 03 00 20 */ lbz r0, 0x20(r3)
/* 803C9F64 003C6EC4 7C 80 06 30 */ sraw r0, r4, r0
/* 803C9F68 003C6EC8 90 1E 00 20 */ stw r0, 0x20(r30)
/* 803C9F6C 003C6ECC 80 1E 00 5C */ lwz r0, 0x5c(r30)
/* 803C9F70 003C6ED0 98 1E 00 1C */ stb r0, 0x1c(r30)
/* 803C9F74 003C6ED4 80 1E 00 5C */ lwz r0, 0x5c(r30)
/* 803C9F78 003C6ED8 7C 00 46 70 */ srawi r0, r0, 8
/* 803C9F7C 003C6EDC 98 1E 00 1D */ stb r0, 0x1d(r30)
/* 803C9F80 003C6EE0 80 1E 00 5C */ lwz r0, 0x5c(r30)
/* 803C9F84 003C6EE4 7C 00 C6 70 */ srawi r0, r0, 0x18
/* 803C9F88 003C6EE8 98 1E 00 1F */ stb r0, 0x1f(r30)
/* 803C9F8C 003C6EEC 80 1E 00 5C */ lwz r0, 0x5c(r30)
/* 803C9F90 003C6EF0 7C 00 86 70 */ srawi r0, r0, 0x10
/* 803C9F94 003C6EF4 98 1E 00 1E */ stb r0, 0x1e(r30)
/* 803C9F98 003C6EF8 88 83 00 26 */ lbz r4, 0x26(r3)
/* 803C9F9C 003C6EFC 88 03 00 22 */ lbz r0, 0x22(r3)
/* 803C9FA0 003C6F00 38 84 00 01 */ addi r4, r4, 1
/* 803C9FA4 003C6F04 7C 80 00 30 */ slw r0, r4, r0
/* 803C9FA8 003C6F08 90 1E 00 38 */ stw r0, 0x38(r30)
/* 803C9FAC 003C6F0C 88 03 00 08 */ lbz r0, 8(r3)
/* 803C9FB0 003C6F10 90 1E 00 34 */ stw r0, 0x34(r30)
/* 803C9FB4 003C6F14 4B FB B3 F5 */ bl OSGetTime
/* 803C9FB8 003C6F18 90 9E 00 2C */ stw r4, 0x2c(r30)
/* 803C9FBC 003C6F1C 3C 80 80 3D */ lis r4, _F31@ha
/* 803C9FC0 003C6F20 38 C4 A0 3C */ addi r6, r4, _F31@l
/* 803C9FC4 003C6F24 90 7E 00 28 */ stw r3, 0x28(r30)
/* 803C9FC8 003C6F28 38 00 00 01 */ li r0, 1
/* 803C9FCC 003C6F2C 38 7D 00 00 */ addi r3, r29, 0
/* 803C9FD0 003C6F30 90 1E 00 30 */ stw r0, 0x30(r30)
/* 803C9FD4 003C6F34 38 9E 00 1C */ addi r4, r30, 0x1c
/* 803C9FD8 003C6F38 80 BE 00 10 */ lwz r5, 0x10(r30)
/* 803C9FDC 003C6F3C 48 00 0A D5 */ bl GBAWriteAsync
/* 803C9FE0 003C6F40 7C 7C 1B 78 */ mr r28, r3
lbl_803C9FE4:
/* 803C9FE4 003C6F44 2C 1C 00 00 */ cmpwi r28, 0
/* 803C9FE8 003C6F48 41 82 00 30 */ beq lbl_803CA018
/* 803C9FEC 003C6F4C 38 00 00 00 */ li r0, 0
/* 803C9FF0 003C6F50 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 803C9FF4 003C6F54 90 1E 00 28 */ stw r0, 0x28(r30)
/* 803C9FF8 003C6F58 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 803C9FFC 003C6F5C 28 0C 00 00 */ cmplwi r12, 0
/* 803CA000 003C6F60 41 82 00 18 */ beq lbl_803CA018
/* 803CA004 003C6F64 90 1E 00 14 */ stw r0, 0x14(r30)
/* 803CA008 003C6F68 7D 88 03 A6 */ mtlr r12
/* 803CA00C 003C6F6C 38 7D 00 00 */ addi r3, r29, 0
/* 803CA010 003C6F70 38 9C 00 00 */ addi r4, r28, 0
/* 803CA014 003C6F74 4E 80 00 21 */ blrl
lbl_803CA018:
/* 803CA018 003C6F78 93 9F 00 20 */ stw r28, 0x20(r31)
/* 803CA01C 003C6F7C 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803CA020 003C6F80 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803CA024 003C6F84 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803CA028 003C6F88 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803CA02C 003C6F8C 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803CA030 003C6F90 38 21 00 28 */ addi r1, r1, 0x28
/* 803CA034 003C6F94 7C 08 03 A6 */ mtlr r0
/* 803CA038 003C6F98 4E 80 00 20 */ blr
.global _F31
_F31:
/* 803CA03C 003C6F9C 7C 08 02 A6 */ mflr r0
/* 803CA040 003C6FA0 3C A0 80 3F */ lis r5, lbl_803F7170@ha
/* 803CA044 003C6FA4 90 01 00 04 */ stw r0, 4(r1)
/* 803CA048 003C6FA8 94 21 FF C8 */ stwu r1, -0x38(r1)
/* 803CA04C 003C6FAC 93 E1 00 34 */ stw r31, 0x34(r1)
/* 803CA050 003C6FB0 93 C1 00 30 */ stw r30, 0x30(r1)
/* 803CA054 003C6FB4 93 A1 00 2C */ stw r29, 0x2c(r1)
/* 803CA058 003C6FB8 3B A3 00 00 */ addi r29, r3, 0
/* 803CA05C 003C6FBC 3C 60 80 57 */ lis r3, __GBA@ha
/* 803CA060 003C6FC0 93 81 00 28 */ stw r28, 0x28(r1)
/* 803CA064 003C6FC4 7C 9C 23 79 */ or. r28, r4, r4
/* 803CA068 003C6FC8 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803CA06C 003C6FCC 57 A4 40 2E */ slwi r4, r29, 8
/* 803CA070 003C6FD0 7F E0 22 14 */ add r31, r0, r4
/* 803CA074 003C6FD4 38 65 71 70 */ addi r3, r5, lbl_803F7170@l
/* 803CA078 003C6FD8 3B DF 00 40 */ addi r30, r31, 0x40
/* 803CA07C 003C6FDC 40 82 04 00 */ bne lbl_803CA47C
/* 803CA080 003C6FE0 80 1E 00 30 */ lwz r0, 0x30(r30)
/* 803CA084 003C6FE4 2C 00 00 00 */ cmpwi r0, 0
/* 803CA088 003C6FE8 41 82 00 10 */ beq lbl_803CA098
/* 803CA08C 003C6FEC 38 00 00 00 */ li r0, 0
/* 803CA090 003C6FF0 90 1E 00 30 */ stw r0, 0x30(r30)
/* 803CA094 003C6FF4 48 00 00 60 */ b lbl_803CA0F4
lbl_803CA098:
/* 803CA098 003C6FF8 80 9E 00 10 */ lwz r4, 0x10(r30)
/* 803CA09C 003C6FFC 88 03 00 14 */ lbz r0, 0x14(r3)
/* 803CA0A0 003C7000 88 A4 00 00 */ lbz r5, 0(r4)
/* 803CA0A4 003C7004 7C A0 00 39 */ and. r0, r5, r0
/* 803CA0A8 003C7008 41 82 00 30 */ beq lbl_803CA0D8
/* 803CA0AC 003C700C 88 83 00 2A */ lbz r4, 0x2a(r3)
/* 803CA0B0 003C7010 88 03 00 21 */ lbz r0, 0x21(r3)
/* 803CA0B4 003C7014 7C A6 20 38 */ and r6, r5, r4
/* 803CA0B8 003C7018 80 BE 00 34 */ lwz r5, 0x34(r30)
/* 803CA0BC 003C701C 88 83 00 21 */ lbz r4, 0x21(r3)
/* 803CA0C0 003C7020 7C C6 06 30 */ sraw r6, r6, r0
/* 803CA0C4 003C7024 88 03 00 1F */ lbz r0, 0x1f(r3)
/* 803CA0C8 003C7028 7C A4 20 38 */ and r4, r5, r4
/* 803CA0CC 003C702C 7C 80 06 30 */ sraw r0, r4, r0
/* 803CA0D0 003C7030 7C 06 00 00 */ cmpw r6, r0
/* 803CA0D4 003C7034 41 82 00 0C */ beq lbl_803CA0E0
lbl_803CA0D8:
/* 803CA0D8 003C7038 3B 80 00 03 */ li r28, 3
/* 803CA0DC 003C703C 48 00 03 A0 */ b lbl_803CA47C
lbl_803CA0E0:
/* 803CA0E0 003C7040 88 83 00 17 */ lbz r4, 0x17(r3)
/* 803CA0E4 003C7044 88 03 00 19 */ lbz r0, 0x19(r3)
/* 803CA0E8 003C7048 7C 04 00 50 */ subf r0, r4, r0
/* 803CA0EC 003C704C 7C 00 28 50 */ subf r0, r0, r5
/* 803CA0F0 003C7050 90 1E 00 34 */ stw r0, 0x34(r30)
lbl_803CA0F4:
/* 803CA0F4 003C7054 80 BE 00 34 */ lwz r5, 0x34(r30)
/* 803CA0F8 003C7058 80 1E 00 64 */ lwz r0, 0x64(r30)
/* 803CA0FC 003C705C 7C 05 00 00 */ cmpw r5, r0
/* 803CA100 003C7060 41 81 03 58 */ bgt lbl_803CA458
/* 803CA104 003C7064 40 80 01 68 */ bge lbl_803CA26C
/* 803CA108 003C7068 38 83 00 1D */ addi r4, r3, 0x1d
/* 803CA10C 003C706C 88 03 00 1D */ lbz r0, 0x1d(r3)
/* 803CA110 003C7070 88 84 00 00 */ lbz r4, 0(r4)
/* 803CA114 003C7074 90 9E 00 20 */ stw r4, 0x20(r30)
/* 803CA118 003C7078 48 00 00 48 */ b lbl_803CA160
lbl_803CA11C:
/* 803CA11C 003C707C 80 9E 00 0C */ lwz r4, 0xc(r30)
/* 803CA120 003C7080 2C 04 00 00 */ cmpwi r4, 0
/* 803CA124 003C7084 41 82 00 30 */ beq lbl_803CA154
/* 803CA128 003C7088 80 DE 00 08 */ lwz r6, 8(r30)
/* 803CA12C 003C708C 38 86 00 01 */ addi r4, r6, 1
/* 803CA130 003C7090 90 9E 00 08 */ stw r4, 8(r30)
/* 803CA134 003C7094 88 A3 00 25 */ lbz r5, 0x25(r3)
/* 803CA138 003C7098 80 9E 00 0C */ lwz r4, 0xc(r30)
/* 803CA13C 003C709C 7C A7 29 D6 */ mullw r5, r7, r5
/* 803CA140 003C70A0 88 C6 00 00 */ lbz r6, 0(r6)
/* 803CA144 003C70A4 38 84 FF FF */ addi r4, r4, -1
/* 803CA148 003C70A8 7C C5 28 30 */ slw r5, r6, r5
/* 803CA14C 003C70AC 90 9E 00 0C */ stw r4, 0xc(r30)
/* 803CA150 003C70B0 7C 00 2B 78 */ or r0, r0, r5
lbl_803CA154:
/* 803CA154 003C70B4 80 9E 00 20 */ lwz r4, 0x20(r30)
/* 803CA158 003C70B8 38 84 00 01 */ addi r4, r4, 1
/* 803CA15C 003C70BC 90 9E 00 20 */ stw r4, 0x20(r30)
lbl_803CA160:
/* 803CA160 003C70C0 80 FE 00 20 */ lwz r7, 0x20(r30)
/* 803CA164 003C70C4 88 83 00 21 */ lbz r4, 0x21(r3)
/* 803CA168 003C70C8 7C 07 20 00 */ cmpw r7, r4
/* 803CA16C 003C70CC 41 80 FF B0 */ blt lbl_803CA11C
/* 803CA170 003C70D0 38 C3 00 26 */ addi r6, r3, 0x26
/* 803CA174 003C70D4 80 BE 00 34 */ lwz r5, 0x34(r30)
/* 803CA178 003C70D8 88 83 00 26 */ lbz r4, 0x26(r3)
/* 803CA17C 003C70DC 7C 05 20 00 */ cmpw r5, r4
/* 803CA180 003C70E0 40 82 00 0C */ bne lbl_803CA18C
/* 803CA184 003C70E4 90 1E 00 60 */ stw r0, 0x60(r30)
/* 803CA188 003C70E8 48 00 00 18 */ b lbl_803CA1A0
lbl_803CA18C:
/* 803CA18C 003C70EC 88 83 00 27 */ lbz r4, 0x27(r3)
/* 803CA190 003C70F0 7C 05 20 00 */ cmpw r5, r4
/* 803CA194 003C70F4 40 82 00 0C */ bne lbl_803CA1A0
/* 803CA198 003C70F8 88 03 00 25 */ lbz r0, 0x25(r3)
/* 803CA19C 003C70FC 7F A0 00 30 */ slw r0, r29, r0
lbl_803CA1A0:
/* 803CA1A0 003C7100 80 BE 00 34 */ lwz r5, 0x34(r30)
/* 803CA1A4 003C7104 88 83 00 02 */ lbz r4, 2(r3)
/* 803CA1A8 003C7108 7C 05 20 00 */ cmpw r5, r4
/* 803CA1AC 003C710C 41 80 00 78 */ blt lbl_803CA224
/* 803CA1B0 003C7110 38 83 00 2B */ addi r4, r3, 0x2b
/* 803CA1B4 003C7114 88 C6 00 00 */ lbz r6, 0(r6)
/* 803CA1B8 003C7118 88 A3 00 2B */ lbz r5, 0x2b(r3)
/* 803CA1BC 003C711C 7C 09 03 78 */ mr r9, r0
/* 803CA1C0 003C7120 88 84 00 00 */ lbz r4, 0(r4)
/* 803CA1C4 003C7124 54 C7 40 2E */ slwi r7, r6, 8
/* 803CA1C8 003C7128 54 A5 20 36 */ slwi r5, r5, 4
/* 803CA1CC 003C712C 88 C3 00 28 */ lbz r6, 0x28(r3)
/* 803CA1D0 003C7130 7C 85 20 50 */ subf r4, r5, r4
/* 803CA1D4 003C7134 88 A3 00 23 */ lbz r5, 0x23(r3)
/* 803CA1D8 003C7138 7C 86 22 14 */ add r4, r6, r4
/* 803CA1DC 003C713C 81 1E 00 38 */ lwz r8, 0x38(r30)
/* 803CA1E0 003C7140 7C 85 20 50 */ subf r4, r5, r4
/* 803CA1E4 003C7144 88 C3 00 14 */ lbz r6, 0x14(r3)
/* 803CA1E8 003C7148 7C A7 22 14 */ add r5, r7, r4
/* 803CA1EC 003C714C 48 00 00 28 */ b lbl_803CA214
lbl_803CA1F0:
/* 803CA1F0 003C7150 7D 24 42 78 */ xor r4, r9, r8
/* 803CA1F4 003C7154 54 84 07 FF */ clrlwi. r4, r4, 0x1f
/* 803CA1F8 003C7158 41 82 00 10 */ beq lbl_803CA208
/* 803CA1FC 003C715C 55 08 F8 7E */ srwi r8, r8, 1
/* 803CA200 003C7160 7D 08 2A 78 */ xor r8, r8, r5
/* 803CA204 003C7164 48 00 00 08 */ b lbl_803CA20C
lbl_803CA208:
/* 803CA208 003C7168 55 08 F8 7E */ srwi r8, r8, 1
lbl_803CA20C:
/* 803CA20C 003C716C 55 29 F8 7E */ srwi r9, r9, 1
/* 803CA210 003C7170 38 C6 FF FF */ addi r6, r6, -1
lbl_803CA214:
/* 803CA214 003C7174 88 83 00 1E */ lbz r4, 0x1e(r3)
/* 803CA218 003C7178 7C 06 20 00 */ cmpw r6, r4
/* 803CA21C 003C717C 41 81 FF D4 */ bgt lbl_803CA1F0
/* 803CA220 003C7180 91 1E 00 38 */ stw r8, 0x38(r30)
lbl_803CA224:
/* 803CA224 003C7184 88 83 00 28 */ lbz r4, 0x28(r3)
/* 803CA228 003C7188 80 BE 00 34 */ lwz r5, 0x34(r30)
/* 803CA22C 003C718C 38 84 01 00 */ addi r4, r4, 0x100
/* 803CA230 003C7190 7C 05 20 00 */ cmpw r5, r4
/* 803CA234 003C7194 40 82 00 0C */ bne lbl_803CA240
/* 803CA238 003C7198 90 1E 00 3C */ stw r0, 0x3c(r30)
/* 803CA23C 003C719C 48 00 00 3C */ b lbl_803CA278
lbl_803CA240:
/* 803CA240 003C71A0 88 83 00 01 */ lbz r4, 1(r3)
/* 803CA244 003C71A4 38 84 01 00 */ addi r4, r4, 0x100
/* 803CA248 003C71A8 7C 05 20 00 */ cmpw r5, r4
/* 803CA24C 003C71AC 40 82 00 2C */ bne lbl_803CA278
/* 803CA250 003C71B0 88 83 00 07 */ lbz r4, 7(r3)
/* 803CA254 003C71B4 90 9E 00 20 */ stw r4, 0x20(r30)
/* 803CA258 003C71B8 80 9E 00 20 */ lwz r4, 0x20(r30)
/* 803CA25C 003C71BC 54 84 10 3A */ slwi r4, r4, 2
/* 803CA260 003C71C0 7C 9E 22 14 */ add r4, r30, r4
/* 803CA264 003C71C4 90 04 00 3C */ stw r0, 0x3c(r4)
/* 803CA268 003C71C8 48 00 00 10 */ b lbl_803CA278
lbl_803CA26C:
/* 803CA26C 003C71CC 80 9E 00 38 */ lwz r4, 0x38(r30)
/* 803CA270 003C71D0 54 A0 80 1E */ slwi r0, r5, 0x10
/* 803CA274 003C71D4 7C 80 03 78 */ or r0, r4, r0
lbl_803CA278:
/* 803CA278 003C71D8 80 BE 00 34 */ lwz r5, 0x34(r30)
/* 803CA27C 003C71DC 88 83 00 2B */ lbz r4, 0x2b(r3)
/* 803CA280 003C71E0 7C 05 20 00 */ cmpw r5, r4
/* 803CA284 003C71E4 40 81 00 98 */ ble lbl_803CA31C
/* 803CA288 003C71E8 88 A3 00 25 */ lbz r5, 0x25(r3)
/* 803CA28C 003C71EC 38 83 00 0B */ addi r4, r3, 0xb
/* 803CA290 003C71F0 88 C3 00 18 */ lbz r6, 0x18(r3)
/* 803CA294 003C71F4 89 03 00 15 */ lbz r8, 0x15(r3)
/* 803CA298 003C71F8 7C C7 28 30 */ slw r7, r6, r5
/* 803CA29C 003C71FC 88 C3 00 18 */ lbz r6, 0x18(r3)
/* 803CA2A0 003C7200 88 A3 00 2C */ lbz r5, 0x2c(r3)
/* 803CA2A4 003C7204 7D 07 3B 78 */ or r7, r8, r7
/* 803CA2A8 003C7208 89 23 00 17 */ lbz r9, 0x17(r3)
/* 803CA2AC 003C720C 7C C5 28 30 */ slw r5, r6, r5
/* 803CA2B0 003C7210 89 03 00 2A */ lbz r8, 0x2a(r3)
/* 803CA2B4 003C7214 7C E5 2B 78 */ or r5, r7, r5
/* 803CA2B8 003C7218 81 5E 00 58 */ lwz r10, 0x58(r30)
/* 803CA2BC 003C721C 7D 26 40 30 */ slw r6, r9, r8
/* 803CA2C0 003C7220 88 E3 00 1A */ lbz r7, 0x1a(r3)
/* 803CA2C4 003C7224 7C C5 2B 78 */ or r5, r6, r5
/* 803CA2C8 003C7228 88 C3 00 1B */ lbz r6, 0x1b(r3)
/* 803CA2CC 003C722C 7C AA 29 D6 */ mullw r5, r10, r5
/* 803CA2D0 003C7230 7C C7 30 50 */ subf r6, r7, r6
/* 803CA2D4 003C7234 7C A6 28 50 */ subf r5, r6, r5
/* 803CA2D8 003C7238 90 BE 00 58 */ stw r5, 0x58(r30)
/* 803CA2DC 003C723C 88 E3 00 0B */ lbz r7, 0xb(r3)
/* 803CA2E0 003C7240 81 3E 00 58 */ lwz r9, 0x58(r30)
/* 803CA2E4 003C7244 81 1E 00 34 */ lwz r8, 0x34(r30)
/* 803CA2E8 003C7248 54 E7 A0 16 */ slwi r7, r7, 0x14
/* 803CA2EC 003C724C 88 A3 00 0B */ lbz r5, 0xb(r3)
/* 803CA2F0 003C7250 7C 00 4A 78 */ xor r0, r0, r9
/* 803CA2F4 003C7254 7D 08 3A 14 */ add r8, r8, r7
/* 803CA2F8 003C7258 88 84 00 00 */ lbz r4, 0(r4)
/* 803CA2FC 003C725C 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
/* 803CA300 003C7260 88 C3 00 13 */ lbz r6, 0x13(r3)
/* 803CA304 003C7264 7C A8 00 D0 */ neg r5, r8
/* 803CA308 003C7268 88 E3 00 12 */ lbz r7, 0x12(r3)
/* 803CA30C 003C726C 50 C4 82 1E */ rlwimi r4, r6, 0x10, 8, 0xf
/* 803CA310 003C7270 7C 00 2A 78 */ xor r0, r0, r5
/* 803CA314 003C7274 50 E4 44 2E */ rlwimi r4, r7, 8, 0x10, 0x17
/* 803CA318 003C7278 7C 00 22 78 */ xor r0, r0, r4
lbl_803CA31C:
/* 803CA31C 003C727C 88 83 00 00 */ lbz r4, 0(r3)
/* 803CA320 003C7280 7C 04 24 30 */ srw r4, r0, r4
/* 803CA324 003C7284 98 9E 00 1F */ stb r4, 0x1f(r30)
/* 803CA328 003C7288 88 83 00 1E */ lbz r4, 0x1e(r3)
/* 803CA32C 003C728C 7C 04 24 30 */ srw r4, r0, r4
/* 803CA330 003C7290 98 9E 00 1C */ stb r4, 0x1c(r30)
/* 803CA334 003C7294 88 83 00 29 */ lbz r4, 0x29(r3)
/* 803CA338 003C7298 7C 04 24 30 */ srw r4, r0, r4
/* 803CA33C 003C729C 98 9E 00 1D */ stb r4, 0x1d(r30)
/* 803CA340 003C72A0 88 83 00 2A */ lbz r4, 0x2a(r3)
/* 803CA344 003C72A4 7C 04 24 30 */ srw r4, r0, r4
/* 803CA348 003C72A8 98 9E 00 1E */ stb r4, 0x1e(r30)
/* 803CA34C 003C72AC 88 A3 00 01 */ lbz r5, 1(r3)
/* 803CA350 003C72B0 88 83 00 01 */ lbz r4, 1(r3)
/* 803CA354 003C72B4 80 DE 00 34 */ lwz r6, 0x34(r30)
/* 803CA358 003C72B8 7C 85 22 14 */ add r4, r5, r4
/* 803CA35C 003C72BC 7C 06 20 00 */ cmpw r6, r4
/* 803CA360 003C72C0 40 82 00 08 */ bne lbl_803CA368
/* 803CA364 003C72C4 90 1E 00 44 */ stw r0, 0x44(r30)
lbl_803CA368:
/* 803CA368 003C72C8 80 9E 00 20 */ lwz r4, 0x20(r30)
/* 803CA36C 003C72CC 88 63 00 21 */ lbz r3, 0x21(r3)
/* 803CA370 003C72D0 7C 04 18 00 */ cmpw r4, r3
/* 803CA374 003C72D4 40 80 00 C4 */ bge lbl_803CA438
/* 803CA378 003C72D8 20 64 00 01 */ subfic r3, r4, 1
/* 803CA37C 003C72DC 20 63 00 03 */ subfic r3, r3, 3
/* 803CA380 003C72E0 54 63 10 3A */ slwi r3, r3, 2
/* 803CA384 003C72E4 7C 7E 1A 14 */ add r3, r30, r3
/* 803CA388 003C72E8 90 03 00 3C */ stw r0, 0x3c(r3)
/* 803CA38C 003C72EC 80 BE 00 20 */ lwz r5, 0x20(r30)
/* 803CA390 003C72F0 20 05 00 01 */ subfic r0, r5, 1
/* 803CA394 003C72F4 20 60 00 02 */ subfic r3, r0, 2
/* 803CA398 003C72F8 20 05 00 04 */ subfic r0, r5, 4
/* 803CA39C 003C72FC 54 63 10 3A */ slwi r3, r3, 2
/* 803CA3A0 003C7300 54 00 10 3A */ slwi r0, r0, 2
/* 803CA3A4 003C7304 7C 9E 1A 14 */ add r4, r30, r3
/* 803CA3A8 003C7308 7C 7E 02 14 */ add r3, r30, r0
/* 803CA3AC 003C730C 80 84 00 3C */ lwz r4, 0x3c(r4)
/* 803CA3B0 003C7310 80 63 00 3C */ lwz r3, 0x3c(r3)
/* 803CA3B4 003C7314 20 05 00 05 */ subfic r0, r5, 5
/* 803CA3B8 003C7318 54 00 10 3A */ slwi r0, r0, 2
/* 803CA3BC 003C731C 7C 84 19 D6 */ mullw r4, r4, r3
/* 803CA3C0 003C7320 7C 7E 02 14 */ add r3, r30, r0
/* 803CA3C4 003C7324 90 83 00 3C */ stw r4, 0x3c(r3)
/* 803CA3C8 003C7328 80 1E 00 20 */ lwz r0, 0x20(r30)
/* 803CA3CC 003C732C 20 A0 00 01 */ subfic r5, r0, 1
/* 803CA3D0 003C7330 54 A3 10 3A */ slwi r3, r5, 2
/* 803CA3D4 003C7334 54 00 10 3A */ slwi r0, r0, 2
/* 803CA3D8 003C7338 7C 9E 1A 14 */ add r4, r30, r3
/* 803CA3DC 003C733C 7C 7E 02 14 */ add r3, r30, r0
/* 803CA3E0 003C7340 80 84 00 3C */ lwz r4, 0x3c(r4)
/* 803CA3E4 003C7344 80 63 00 3C */ lwz r3, 0x3c(r3)
/* 803CA3E8 003C7348 20 05 00 05 */ subfic r0, r5, 5
/* 803CA3EC 003C734C 54 00 10 3A */ slwi r0, r0, 2
/* 803CA3F0 003C7350 7C 84 19 D6 */ mullw r4, r4, r3
/* 803CA3F4 003C7354 7C 7E 02 14 */ add r3, r30, r0
/* 803CA3F8 003C7358 90 83 00 3C */ stw r4, 0x3c(r3)
/* 803CA3FC 003C735C 80 BE 00 20 */ lwz r5, 0x20(r30)
/* 803CA400 003C7360 20 65 00 01 */ subfic r3, r5, 1
/* 803CA404 003C7364 20 05 00 04 */ subfic r0, r5, 4
/* 803CA408 003C7368 7C 63 00 D0 */ neg r3, r3
/* 803CA40C 003C736C 54 63 10 3A */ slwi r3, r3, 2
/* 803CA410 003C7370 54 00 10 3A */ slwi r0, r0, 2
/* 803CA414 003C7374 7C 9E 1A 14 */ add r4, r30, r3
/* 803CA418 003C7378 7C 7E 02 14 */ add r3, r30, r0
/* 803CA41C 003C737C 80 84 00 3C */ lwz r4, 0x3c(r4)
/* 803CA420 003C7380 80 63 00 3C */ lwz r3, 0x3c(r3)
/* 803CA424 003C7384 20 05 00 07 */ subfic r0, r5, 7
/* 803CA428 003C7388 54 00 10 3A */ slwi r0, r0, 2
/* 803CA42C 003C738C 7C 84 19 D6 */ mullw r4, r4, r3
/* 803CA430 003C7390 7C 7E 02 14 */ add r3, r30, r0
/* 803CA434 003C7394 90 83 00 3C */ stw r4, 0x3c(r3)
lbl_803CA438:
/* 803CA438 003C7398 3C 60 80 3D */ lis r3, _F31@ha
/* 803CA43C 003C739C 80 BE 00 10 */ lwz r5, 0x10(r30)
/* 803CA440 003C73A0 38 C3 A0 3C */ addi r6, r3, _F31@l
/* 803CA444 003C73A4 38 7D 00 00 */ addi r3, r29, 0
/* 803CA448 003C73A8 38 9E 00 1C */ addi r4, r30, 0x1c
/* 803CA44C 003C73AC 48 00 06 65 */ bl GBAWriteAsync
/* 803CA450 003C73B0 7C 7C 1B 78 */ mr r28, r3
/* 803CA454 003C73B4 48 00 00 28 */ b lbl_803CA47C
lbl_803CA458:
/* 803CA458 003C73B8 4B FB AF 69 */ bl OSGetTick
/* 803CA45C 003C73BC 90 7E 00 24 */ stw r3, 0x24(r30)
/* 803CA460 003C73C0 3C 60 80 3D */ lis r3, _F33@ha
/* 803CA464 003C73C4 38 C3 A4 D4 */ addi r6, r3, _F33@l
/* 803CA468 003C73C8 80 BE 00 10 */ lwz r5, 0x10(r30)
/* 803CA46C 003C73CC 38 7D 00 00 */ addi r3, r29, 0
/* 803CA470 003C73D0 38 9E 00 18 */ addi r4, r30, 0x18
/* 803CA474 003C73D4 48 00 05 0D */ bl GBAReadAsync
/* 803CA478 003C73D8 7C 7C 1B 78 */ mr r28, r3
lbl_803CA47C:
/* 803CA47C 003C73DC 2C 1C 00 00 */ cmpwi r28, 0
/* 803CA480 003C73E0 41 82 00 30 */ beq lbl_803CA4B0
/* 803CA484 003C73E4 38 00 00 00 */ li r0, 0
/* 803CA488 003C73E8 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 803CA48C 003C73EC 90 1E 00 28 */ stw r0, 0x28(r30)
/* 803CA490 003C73F0 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 803CA494 003C73F4 28 0C 00 00 */ cmplwi r12, 0
/* 803CA498 003C73F8 41 82 00 18 */ beq lbl_803CA4B0
/* 803CA49C 003C73FC 90 1E 00 14 */ stw r0, 0x14(r30)
/* 803CA4A0 003C7400 7D 88 03 A6 */ mtlr r12
/* 803CA4A4 003C7404 38 7D 00 00 */ addi r3, r29, 0
/* 803CA4A8 003C7408 38 9C 00 00 */ addi r4, r28, 0
/* 803CA4AC 003C740C 4E 80 00 21 */ blrl
lbl_803CA4B0:
/* 803CA4B0 003C7410 93 9F 00 20 */ stw r28, 0x20(r31)
/* 803CA4B4 003C7414 80 01 00 3C */ lwz r0, 0x3c(r1)
/* 803CA4B8 003C7418 83 E1 00 34 */ lwz r31, 0x34(r1)
/* 803CA4BC 003C741C 83 C1 00 30 */ lwz r30, 0x30(r1)
/* 803CA4C0 003C7420 83 A1 00 2C */ lwz r29, 0x2c(r1)
/* 803CA4C4 003C7424 83 81 00 28 */ lwz r28, 0x28(r1)
/* 803CA4C8 003C7428 38 21 00 38 */ addi r1, r1, 0x38
/* 803CA4CC 003C742C 7C 08 03 A6 */ mtlr r0
/* 803CA4D0 003C7430 4E 80 00 20 */ blr
.global _F33
_F33:
/* 803CA4D4 003C7434 7C 08 02 A6 */ mflr r0
/* 803CA4D8 003C7438 90 01 00 04 */ stw r0, 4(r1)
/* 803CA4DC 003C743C 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803CA4E0 003C7440 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803CA4E4 003C7444 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803CA4E8 003C7448 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803CA4EC 003C744C 3B A3 00 00 */ addi r29, r3, 0
/* 803CA4F0 003C7450 3C 60 80 57 */ lis r3, __GBA@ha
/* 803CA4F4 003C7454 93 81 00 18 */ stw r28, 0x18(r1)
/* 803CA4F8 003C7458 7C 9C 23 79 */ or. r28, r4, r4
/* 803CA4FC 003C745C 57 A4 40 2E */ slwi r4, r29, 8
/* 803CA500 003C7460 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803CA504 003C7464 7F E0 22 14 */ add r31, r0, r4
/* 803CA508 003C7468 3B DF 00 40 */ addi r30, r31, 0x40
/* 803CA50C 003C746C 40 82 00 E4 */ bne lbl_803CA5F0
/* 803CA510 003C7470 38 00 00 21 */ li r0, 0x21
/* 803CA514 003C7474 3C 60 80 3F */ lis r3, lbl_803F7170@ha
/* 803CA518 003C7478 90 1E 00 20 */ stw r0, 0x20(r30)
/* 803CA51C 003C747C 38 03 71 70 */ addi r0, r3, lbl_803F7170@l
/* 803CA520 003C7480 48 00 00 94 */ b lbl_803CA5B4
lbl_803CA524:
/* 803CA524 003C7484 7C E0 1A 14 */ add r7, r0, r3
/* 803CA528 003C7488 88 DE 00 1B */ lbz r6, 0x1b(r30)
/* 803CA52C 003C748C 88 87 00 00 */ lbz r4, 0(r7)
/* 803CA530 003C7490 88 67 00 00 */ lbz r3, 0(r7)
/* 803CA534 003C7494 88 A7 00 00 */ lbz r5, 0(r7)
/* 803CA538 003C7498 54 84 10 3A */ slwi r4, r4, 2
/* 803CA53C 003C749C 89 07 00 00 */ lbz r8, 0(r7)
/* 803CA540 003C74A0 54 63 10 3A */ slwi r3, r3, 2
/* 803CA544 003C74A4 54 A7 10 3A */ slwi r7, r5, 2
/* 803CA548 003C74A8 38 A4 00 3C */ addi r5, r4, 0x3c
/* 803CA54C 003C74AC 88 9E 00 1A */ lbz r4, 0x1a(r30)
/* 803CA550 003C74B0 38 63 00 3C */ addi r3, r3, 0x3c
/* 803CA554 003C74B4 7C BE 28 2E */ lwzx r5, r30, r5
/* 803CA558 003C74B8 38 E7 00 3C */ addi r7, r7, 0x3c
/* 803CA55C 003C74BC 7C 7E 18 2E */ lwzx r3, r30, r3
/* 803CA560 003C74C0 55 08 10 3A */ slwi r8, r8, 2
/* 803CA564 003C74C4 7C FE 38 2E */ lwzx r7, r30, r7
/* 803CA568 003C74C8 39 28 00 3C */ addi r9, r8, 0x3c
/* 803CA56C 003C74CC 89 1E 00 19 */ lbz r8, 0x19(r30)
/* 803CA570 003C74D0 54 A5 46 3E */ srwi r5, r5, 0x18
/* 803CA574 003C74D4 89 5E 00 18 */ lbz r10, 0x18(r30)
/* 803CA578 003C74D8 54 63 84 3E */ srwi r3, r3, 0x10
/* 803CA57C 003C74DC 7D 3E 48 2E */ lwzx r9, r30, r9
/* 803CA580 003C74E0 54 E7 C2 3E */ srwi r7, r7, 8
/* 803CA584 003C74E4 7C 83 1A 78 */ xor r3, r4, r3
/* 803CA588 003C74E8 7C C5 2A 78 */ xor r5, r6, r5
/* 803CA58C 003C74EC 7C A3 1B 78 */ or r3, r5, r3
/* 803CA590 003C74F0 7D 04 3A 78 */ xor r4, r8, r7
/* 803CA594 003C74F4 7D 45 4A 78 */ xor r5, r10, r9
/* 803CA598 003C74F8 7C 83 1B 78 */ or r3, r4, r3
/* 803CA59C 003C74FC 7C A3 1B 78 */ or r3, r5, r3
/* 803CA5A0 003C7500 54 7C C0 0F */ rlwinm. r28, r3, 0x18, 0, 7
/* 803CA5A4 003C7504 41 82 00 1C */ beq lbl_803CA5C0
/* 803CA5A8 003C7508 80 7E 00 20 */ lwz r3, 0x20(r30)
/* 803CA5AC 003C750C 38 63 00 01 */ addi r3, r3, 1
/* 803CA5B0 003C7510 90 7E 00 20 */ stw r3, 0x20(r30)
lbl_803CA5B4:
/* 803CA5B4 003C7514 80 7E 00 20 */ lwz r3, 0x20(r30)
/* 803CA5B8 003C7518 2C 03 00 24 */ cmpwi r3, 0x24
/* 803CA5BC 003C751C 41 80 FF 68 */ blt lbl_803CA524
lbl_803CA5C0:
/* 803CA5C0 003C7520 2C 1C 00 00 */ cmpwi r28, 0
/* 803CA5C4 003C7524 41 82 00 0C */ beq lbl_803CA5D0
/* 803CA5C8 003C7528 3B 80 00 03 */ li r28, 3
/* 803CA5CC 003C752C 48 00 00 24 */ b lbl_803CA5F0
lbl_803CA5D0:
/* 803CA5D0 003C7530 4B FB AD F1 */ bl OSGetTick
/* 803CA5D4 003C7534 90 7E 00 24 */ stw r3, 0x24(r30)
/* 803CA5D8 003C7538 3C 60 80 3D */ lis r3, _F35@ha
/* 803CA5DC 003C753C 38 A3 A6 48 */ addi r5, r3, _F35@l
/* 803CA5E0 003C7540 80 9E 00 10 */ lwz r4, 0x10(r30)
/* 803CA5E4 003C7544 7F A3 EB 78 */ mr r3, r29
/* 803CA5E8 003C7548 4B FF F1 09 */ bl GBAGetStatusAsync
/* 803CA5EC 003C754C 7C 7C 1B 78 */ mr r28, r3
lbl_803CA5F0:
/* 803CA5F0 003C7550 2C 1C 00 00 */ cmpwi r28, 0
/* 803CA5F4 003C7554 41 82 00 30 */ beq lbl_803CA624
/* 803CA5F8 003C7558 38 00 00 00 */ li r0, 0
/* 803CA5FC 003C755C 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 803CA600 003C7560 90 1E 00 28 */ stw r0, 0x28(r30)
/* 803CA604 003C7564 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 803CA608 003C7568 28 0C 00 00 */ cmplwi r12, 0
/* 803CA60C 003C756C 41 82 00 18 */ beq lbl_803CA624
/* 803CA610 003C7570 90 1E 00 14 */ stw r0, 0x14(r30)
/* 803CA614 003C7574 7D 88 03 A6 */ mtlr r12
/* 803CA618 003C7578 38 7D 00 00 */ addi r3, r29, 0
/* 803CA61C 003C757C 38 9C 00 00 */ addi r4, r28, 0
/* 803CA620 003C7580 4E 80 00 21 */ blrl
lbl_803CA624:
/* 803CA624 003C7584 93 9F 00 20 */ stw r28, 0x20(r31)
/* 803CA628 003C7588 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803CA62C 003C758C 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803CA630 003C7590 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803CA634 003C7594 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803CA638 003C7598 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803CA63C 003C759C 38 21 00 28 */ addi r1, r1, 0x28
/* 803CA640 003C75A0 7C 08 03 A6 */ mtlr r0
/* 803CA644 003C75A4 4E 80 00 20 */ blr
.global _F35
_F35:
/* 803CA648 003C75A8 7C 08 02 A6 */ mflr r0
/* 803CA64C 003C75AC 90 01 00 04 */ stw r0, 4(r1)
/* 803CA650 003C75B0 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803CA654 003C75B4 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803CA658 003C75B8 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803CA65C 003C75BC 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803CA660 003C75C0 3B A3 00 00 */ addi r29, r3, 0
/* 803CA664 003C75C4 3C 60 80 57 */ lis r3, __GBA@ha
/* 803CA668 003C75C8 93 81 00 18 */ stw r28, 0x18(r1)
/* 803CA66C 003C75CC 7C 9C 23 79 */ or. r28, r4, r4
/* 803CA670 003C75D0 57 A4 40 2E */ slwi r4, r29, 8
/* 803CA674 003C75D4 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803CA678 003C75D8 7F E0 22 14 */ add r31, r0, r4
/* 803CA67C 003C75DC 3B DF 00 40 */ addi r30, r31, 0x40
/* 803CA680 003C75E0 40 82 00 CC */ bne lbl_803CA74C
/* 803CA684 003C75E4 4B FB AD 3D */ bl OSGetTick
/* 803CA688 003C75E8 3F 80 80 00 */ lis r28, 0x800000F8@ha
/* 803CA68C 003C75EC 80 9E 00 24 */ lwz r4, 0x24(r30)
/* 803CA690 003C75F0 80 1C 00 F8 */ lwz r0, 0x800000F8@l(r28)
/* 803CA694 003C75F4 7C 64 18 50 */ subf r3, r4, r3
/* 803CA698 003C75F8 54 05 F0 BE */ srwi r5, r0, 2
/* 803CA69C 003C75FC 1C 05 00 0A */ mulli r0, r5, 0xa
/* 803CA6A0 003C7600 7C 00 18 40 */ cmplw r0, r3
/* 803CA6A4 003C7604 41 81 00 0C */ bgt lbl_803CA6B0
/* 803CA6A8 003C7608 3B 80 00 03 */ li r28, 3
/* 803CA6AC 003C760C 48 00 00 A0 */ b lbl_803CA74C
lbl_803CA6B0:
/* 803CA6B0 003C7610 80 9E 00 10 */ lwz r4, 0x10(r30)
/* 803CA6B4 003C7614 88 64 00 00 */ lbz r3, 0(r4)
/* 803CA6B8 003C7618 70 60 00 32 */ andi. r0, r3, 0x32
/* 803CA6BC 003C761C 41 82 00 0C */ beq lbl_803CA6C8
/* 803CA6C0 003C7620 3B 80 00 03 */ li r28, 3
/* 803CA6C4 003C7624 48 00 00 88 */ b lbl_803CA74C
lbl_803CA6C8:
/* 803CA6C8 003C7628 28 03 00 08 */ cmplwi r3, 8
/* 803CA6CC 003C762C 41 82 00 1C */ beq lbl_803CA6E8
/* 803CA6D0 003C7630 3C 60 80 3D */ lis r3, _F35@ha
/* 803CA6D4 003C7634 38 A3 A6 48 */ addi r5, r3, _F35@l
/* 803CA6D8 003C7638 38 7D 00 00 */ addi r3, r29, 0
/* 803CA6DC 003C763C 4B FF F0 15 */ bl GBAGetStatusAsync
/* 803CA6E0 003C7640 7C 7C 1B 78 */ mr r28, r3
/* 803CA6E4 003C7644 48 00 00 68 */ b lbl_803CA74C
lbl_803CA6E8:
/* 803CA6E8 003C7648 3C 60 10 62 */ lis r3, 0x10624DD3@ha
/* 803CA6EC 003C764C 38 03 4D D3 */ addi r0, r3, 0x10624DD3@l
/* 803CA6F0 003C7650 7C 00 28 16 */ mulhwu r0, r0, r5
/* 803CA6F4 003C7654 54 06 E8 F8 */ rlwinm r6, r0, 0x1d, 3, 0x1c
/* 803CA6F8 003C7658 38 7D 00 00 */ addi r3, r29, 0
/* 803CA6FC 003C765C 38 A0 00 00 */ li r5, 0
/* 803CA700 003C7660 48 00 08 1D */ bl __GBASetDelay
/* 803CA704 003C7664 3C 60 80 3D */ lis r3, _F37@ha
/* 803CA708 003C7668 80 BE 00 10 */ lwz r5, 0x10(r30)
/* 803CA70C 003C766C 38 C3 A7 A4 */ addi r6, r3, _F37@l
/* 803CA710 003C7670 38 7D 00 00 */ addi r3, r29, 0
/* 803CA714 003C7674 38 9E 00 18 */ addi r4, r30, 0x18
/* 803CA718 003C7678 48 00 02 69 */ bl GBAReadAsync
/* 803CA71C 003C767C 80 1C 00 F8 */ lwz r0, 0xf8(r28)
/* 803CA720 003C7680 3C 80 43 1C */ lis r4, 0x431BDE83@ha
/* 803CA724 003C7684 3B 83 00 00 */ addi r28, r3, 0
/* 803CA728 003C7688 54 00 F0 BE */ srwi r0, r0, 2
/* 803CA72C 003C768C 38 84 DE 83 */ addi r4, r4, 0x431BDE83@l
/* 803CA730 003C7690 7C 04 00 16 */ mulhwu r0, r4, r0
/* 803CA734 003C7694 54 00 8B FE */ srwi r0, r0, 0xf
/* 803CA738 003C7698 1C 00 00 3C */ mulli r0, r0, 0x3c
/* 803CA73C 003C769C 54 06 E8 FE */ srwi r6, r0, 3
/* 803CA740 003C76A0 38 7D 00 00 */ addi r3, r29, 0
/* 803CA744 003C76A4 38 A0 00 00 */ li r5, 0
/* 803CA748 003C76A8 48 00 07 D5 */ bl __GBASetDelay
lbl_803CA74C:
/* 803CA74C 003C76AC 2C 1C 00 00 */ cmpwi r28, 0
/* 803CA750 003C76B0 41 82 00 30 */ beq lbl_803CA780
/* 803CA754 003C76B4 38 00 00 00 */ li r0, 0
/* 803CA758 003C76B8 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 803CA75C 003C76BC 90 1E 00 28 */ stw r0, 0x28(r30)
/* 803CA760 003C76C0 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 803CA764 003C76C4 28 0C 00 00 */ cmplwi r12, 0
/* 803CA768 003C76C8 41 82 00 18 */ beq lbl_803CA780
/* 803CA76C 003C76CC 90 1E 00 14 */ stw r0, 0x14(r30)
/* 803CA770 003C76D0 7D 88 03 A6 */ mtlr r12
/* 803CA774 003C76D4 38 7D 00 00 */ addi r3, r29, 0
/* 803CA778 003C76D8 38 9C 00 00 */ addi r4, r28, 0
/* 803CA77C 003C76DC 4E 80 00 21 */ blrl
lbl_803CA780:
/* 803CA780 003C76E0 93 9F 00 20 */ stw r28, 0x20(r31)
/* 803CA784 003C76E4 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803CA788 003C76E8 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803CA78C 003C76EC 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803CA790 003C76F0 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803CA794 003C76F4 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803CA798 003C76F8 38 21 00 28 */ addi r1, r1, 0x28
/* 803CA79C 003C76FC 7C 08 03 A6 */ mtlr r0
/* 803CA7A0 003C7700 4E 80 00 20 */ blr
.global _F37
_F37:
/* 803CA7A4 003C7704 7C 08 02 A6 */ mflr r0
/* 803CA7A8 003C7708 90 01 00 04 */ stw r0, 4(r1)
/* 803CA7AC 003C770C 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803CA7B0 003C7710 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803CA7B4 003C7714 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803CA7B8 003C7718 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803CA7BC 003C771C 3B A3 00 00 */ addi r29, r3, 0
/* 803CA7C0 003C7720 3C 60 80 57 */ lis r3, __GBA@ha
/* 803CA7C4 003C7724 93 81 00 18 */ stw r28, 0x18(r1)
/* 803CA7C8 003C7728 7C 9C 23 79 */ or. r28, r4, r4
/* 803CA7CC 003C772C 57 A4 40 2E */ slwi r4, r29, 8
/* 803CA7D0 003C7730 38 03 A1 A0 */ addi r0, r3, __GBA@l
/* 803CA7D4 003C7734 7F E0 22 14 */ add r31, r0, r4
/* 803CA7D8 003C7738 3B DF 00 40 */ addi r30, r31, 0x40
/* 803CA7DC 003C773C 40 82 00 6C */ bne lbl_803CA848
/* 803CA7E0 003C7740 81 3E 00 60 */ lwz r9, 0x60(r30)
/* 803CA7E4 003C7744 88 BE 00 1B */ lbz r5, 0x1b(r30)
/* 803CA7E8 003C7748 55 24 46 3E */ srwi r4, r9, 0x18
/* 803CA7EC 003C774C 88 7E 00 1A */ lbz r3, 0x1a(r30)
/* 803CA7F0 003C7750 55 20 84 3E */ srwi r0, r9, 0x10
/* 803CA7F4 003C7754 88 FE 00 19 */ lbz r7, 0x19(r30)
/* 803CA7F8 003C7758 89 1E 00 18 */ lbz r8, 0x18(r30)
/* 803CA7FC 003C775C 55 26 C2 3E */ srwi r6, r9, 8
/* 803CA800 003C7760 7C 60 02 78 */ xor r0, r3, r0
/* 803CA804 003C7764 7C A4 22 78 */ xor r4, r5, r4
/* 803CA808 003C7768 7C 80 03 78 */ or r0, r4, r0
/* 803CA80C 003C776C 7C E3 32 78 */ xor r3, r7, r6
/* 803CA810 003C7770 7D 04 4A 78 */ xor r4, r8, r9
/* 803CA814 003C7774 7C 60 03 78 */ or r0, r3, r0
/* 803CA818 003C7778 7C 80 03 78 */ or r0, r4, r0
/* 803CA81C 003C777C 54 00 C0 0F */ rlwinm. r0, r0, 0x18, 0, 7
/* 803CA820 003C7780 41 82 00 0C */ beq lbl_803CA82C
/* 803CA824 003C7784 3B 80 00 03 */ li r28, 3
/* 803CA828 003C7788 48 00 00 20 */ b lbl_803CA848
lbl_803CA82C:
/* 803CA82C 003C778C 3C 60 80 3D */ lis r3, _F39@ha
/* 803CA830 003C7790 80 BE 00 10 */ lwz r5, 0x10(r30)
/* 803CA834 003C7794 38 C3 A8 A0 */ addi r6, r3, _F39@l
/* 803CA838 003C7798 38 7D 00 00 */ addi r3, r29, 0
/* 803CA83C 003C779C 38 9E 00 18 */ addi r4, r30, 0x18
/* 803CA840 003C77A0 48 00 02 71 */ bl GBAWriteAsync
/* 803CA844 003C77A4 7C 7C 1B 78 */ mr r28, r3
lbl_803CA848:
/* 803CA848 003C77A8 2C 1C 00 00 */ cmpwi r28, 0
/* 803CA84C 003C77AC 41 82 00 30 */ beq lbl_803CA87C
/* 803CA850 003C77B0 38 00 00 00 */ li r0, 0
/* 803CA854 003C77B4 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 803CA858 003C77B8 90 1E 00 28 */ stw r0, 0x28(r30)
/* 803CA85C 003C77BC 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 803CA860 003C77C0 28 0C 00 00 */ cmplwi r12, 0
/* 803CA864 003C77C4 41 82 00 18 */ beq lbl_803CA87C
/* 803CA868 003C77C8 90 1E 00 14 */ stw r0, 0x14(r30)
/* 803CA86C 003C77CC 7D 88 03 A6 */ mtlr r12
/* 803CA870 003C77D0 38 7D 00 00 */ addi r3, r29, 0
/* 803CA874 003C77D4 38 9C 00 00 */ addi r4, r28, 0
/* 803CA878 003C77D8 4E 80 00 21 */ blrl
lbl_803CA87C:
/* 803CA87C 003C77DC 93 9F 00 20 */ stw r28, 0x20(r31)
/* 803CA880 003C77E0 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803CA884 003C77E4 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803CA888 003C77E8 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803CA88C 003C77EC 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803CA890 003C77F0 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803CA894 003C77F4 38 21 00 28 */ addi r1, r1, 0x28
/* 803CA898 003C77F8 7C 08 03 A6 */ mtlr r0
/* 803CA89C 003C77FC 4E 80 00 20 */ blr
.global _F39
_F39:
/* 803CA8A0 003C7800 7C 08 02 A6 */ mflr r0
/* 803CA8A4 003C7804 54 65 40 2E */ slwi r5, r3, 8
/* 803CA8A8 003C7808 90 01 00 04 */ stw r0, 4(r1)
/* 803CA8AC 003C780C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803CA8B0 003C7810 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803CA8B4 003C7814 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803CA8B8 003C7818 7C 9E 23 79 */ or. r30, r4, r4
/* 803CA8BC 003C781C 3C 80 80 57 */ lis r4, __GBA@ha
/* 803CA8C0 003C7820 38 04 A1 A0 */ addi r0, r4, __GBA@l
/* 803CA8C4 003C7824 7F E0 2A 14 */ add r31, r0, r5
/* 803CA8C8 003C7828 38 BF 00 40 */ addi r5, r31, 0x40
/* 803CA8CC 003C782C 40 82 00 10 */ bne lbl_803CA8DC
/* 803CA8D0 003C7830 80 85 00 10 */ lwz r4, 0x10(r5)
/* 803CA8D4 003C7834 38 00 00 00 */ li r0, 0
/* 803CA8D8 003C7838 98 04 00 00 */ stb r0, 0(r4)
lbl_803CA8DC:
/* 803CA8DC 003C783C 38 00 00 00 */ li r0, 0
/* 803CA8E0 003C7840 90 05 00 2C */ stw r0, 0x2c(r5)
/* 803CA8E4 003C7844 90 05 00 28 */ stw r0, 0x28(r5)
/* 803CA8E8 003C7848 81 85 00 14 */ lwz r12, 0x14(r5)
/* 803CA8EC 003C784C 28 0C 00 00 */ cmplwi r12, 0
/* 803CA8F0 003C7850 41 82 00 14 */ beq lbl_803CA904
/* 803CA8F4 003C7854 90 05 00 14 */ stw r0, 0x14(r5)
/* 803CA8F8 003C7858 7D 88 03 A6 */ mtlr r12
/* 803CA8FC 003C785C 38 9E 00 00 */ addi r4, r30, 0
/* 803CA900 003C7860 4E 80 00 21 */ blrl
lbl_803CA904:
/* 803CA904 003C7864 93 DF 00 20 */ stw r30, 0x20(r31)
/* 803CA908 003C7868 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803CA90C 003C786C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803CA910 003C7870 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803CA914 003C7874 38 21 00 20 */ addi r1, r1, 0x20
/* 803CA918 003C7878 7C 08 03 A6 */ mtlr r0
/* 803CA91C 003C787C 4E 80 00 20 */ blr