.include "macros.inc" .section .data, "wa" lbl_803F71A0: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2,255, 0, 33 .byte 19, 6, 18, 3, 18, 4, 19, 5, 0,146, 0,255, 0,136,255,255 .byte 0,137,255,255, 0,138,255,255, 0,139,255,255,143, 0,139, 0 .byte 140, 0, 2,191,128,126, 22,252,220,209, 22,253, 0, 0, 22,251 .byte 0, 1, 2,191,128,120, 36,255, 2,128,171,186, 2,148, 0, 41 .byte 142, 0, 2,191,128,120, 32,255, 2, 64, 15,255, 31, 94, 0,155 .byte 0, 0, 0,153, 0, 32, 0,135, 0, 0, 0,128, 0, 65, 2,159 .byte 128,188, 2,191, 0,140, 2,191,128,126, 22,252,220,209, 22,253 .byte 0, 3, 22,251, 0, 1,143, 0, 2,191,128,120, 2,128,205,209 .byte 2,148, 0, 76, 38,255, 2,128, 0, 1, 2,149, 0, 94, 2,128 .byte 0, 2, 2,149,128, 0, 2,159, 0, 76, 0, 33,142, 0, 2,191 .byte 128,120, 36,255, 2,191,128,120, 36,255, 2,191,128,120, 36,255 .byte 2,191,128,120, 0,197,255,255, 2, 64, 15,255, 28,158, 2,191 .byte 128,120, 0,199,255,255, 2,191,128,120, 0,198,255,255, 2,191 .byte 128,120, 0,192,255,255, 2,191,128,120, 32,255, 2, 64, 15,255 .byte 31, 94, 2,191,128,120, 33,255, 2,191,128,120, 35,255, 18, 5 .byte 18, 6, 2,159,128,181, 0, 33,129, 0, 0,129, 0, 16, 16, 32 .byte 27, 62, 0,223, 20, 86, 3, 64,255,208,132, 23, 0,128, 0, 0 .byte 0,134, 0, 0, 0,130, 0, 31, 0,222, 21,246, 20, 8, 0,223 .byte 23,102, 3, 64, 0,255, 31, 95, 2,191,136,229, 31, 28,129, 30 .byte 25, 30, 20,120, 31,252, 31, 94, 2,191,136, 9, 2,191,135, 35 .byte 0, 6,129, 6, 0,222, 22,108, 20, 4, 2, 64,255, 0, 0,223 .byte 18, 49, 21,120, 3, 64, 0,255, 31, 95, 2,191,136,229, 31, 28 .byte 129, 30, 25, 30, 20,120, 31,252, 31, 94, 2,191,136, 9, 2,191 .byte 135, 35,129, 0,137, 0, 0,209, 0, 5,153, 0,130, 0, 2,149 .byte 0,229, 2,145, 0,243, 0,130, 0, 16, 0,134, 0, 1, 0,208 .byte 23, 27,145, 0,125, 0, 77, 0, 21, 1, 31, 95, 0,223, 0, 3 .byte 21, 4, 2,191,136, 9, 2,159, 1, 2, 0,130, 0, 17, 0,223 .byte 0, 3, 21, 1, 31, 95, 0,222, 16, 67, 2, 64,255,240, 2,191 .byte 136,229, 2,159, 1, 2, 0,130, 0, 16, 0,134, 0, 1, 0,208 .byte 18,133,145, 0, 77, 0, 21, 1, 0,222, 0, 3, 20, 4, 31, 94 .byte 2,191,136, 9, 0,131, 0, 19, 27,126,137, 35, 0,131, 0, 19 .byte 0,223, 0, 7, 0,222, 17,184, 2, 64,255,240, 31, 94, 2,191 .byte 129,244,241, 0, 2,191,132, 88,143, 0, 0,130, 0, 21, 0,222 .byte 0, 6, 0,218, 22, 91, 2,191,136,229, 20,253, 20, 3, 27, 94 .byte 27, 92, 0,130, 0, 22, 0,222, 23, 35, 20,244, 0,218, 22,107 .byte 2,191,136,229,177, 0, 2,144, 1, 46,129, 0, 20,253,142, 0 .byte 0,223, 20,145, 3, 64,208,240, 28,191, 0,223, 20,104, 0,209 .byte 17,252, 21,124, 28,223, 0,209, 17,184,153, 0, 20, 24, 20,120 .byte 31, 94, 31,254, 31,101, 54, 0, 20, 2, 31,102, 55, 0, 21, 1 .byte 76, 0, 21, 24,153, 0, 53, 0, 76, 0, 0,223, 0, 18, 63, 0 .byte 0,255, 0, 18, 20,112, 0,223, 0, 17, 63, 0, 0,255, 0, 17 .byte 31,165, 21, 1, 31,230,241, 0, 21,248,245, 0, 31, 95, 31,125 .byte 129, 0, 0,222, 0, 17, 52, 0,137, 0, 0,223, 0, 18, 53, 0 .byte 76, 0, 0,223, 0, 18, 21,120, 76, 0,137, 0, 31,254, 21, 8 .byte 59, 0, 0,222, 0, 17, 62, 0, 0,223, 0, 18, 59, 0, 28,191 .byte 0,218, 21,241, 53, 0, 2,149, 1,146, 0,223, 16,226, 21, 8 .byte 31, 95, 0,223, 16, 59,121, 0, 57, 0, 48,128, 0,254, 0, 34 .byte 0,220, 18, 41, 0,221, 17,248, 92, 0,240, 0, 31,229, 48,128 .byte 2,159, 1,165, 0,223, 16,202, 21, 8, 31, 95, 0,223, 16, 67 .byte 117, 0, 57, 0, 48,128, 0,254, 0, 34, 0,220, 18, 89, 0,221 .byte 22,254, 76, 0,240, 0, 31,229, 48,128, 0,254, 0, 35, 0,218 .byte 0, 8, 0,216, 0, 9, 0,155, 0, 32, 0,153, 0, 8, 0,135 .byte 0, 0, 2,191,128,139, 2,223, 0, 0, 0, 0, 0, 0, 0, 0 .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 lbl_803F7520: .ascii "GBAKey.c" .skip 4 lbl_803F752C: .ascii "GBA - unexpected dsp call" .skip 1 .section .text, "ax" # 0x80003640 - 0x803CB1C0 .global __GBAHandler __GBAHandler: /* 803CAC08 003C7B68 7C 08 02 A6 */ mflr r0 /* 803CAC0C 003C7B6C 90 01 00 04 */ stw r0, 4(r1) /* 803CAC10 003C7B70 94 21 FD 08 */ stwu r1, -0x2f8(r1) /* 803CAC14 003C7B74 93 E1 02 F4 */ stw r31, 0x2f4(r1) /* 803CAC18 003C7B78 93 C1 02 F0 */ stw r30, 0x2f0(r1) /* 803CAC1C 003C7B7C 3B C5 00 00 */ addi r30, r5, 0 /* 803CAC20 003C7B80 93 A1 02 EC */ stw r29, 0x2ec(r1) /* 803CAC24 003C7B84 3B A3 00 00 */ addi r29, r3, 0 /* 803CAC28 003C7B88 3C 60 80 57 */ lis r3, __GBA@ha /* 803CAC2C 003C7B8C 80 0D B1 58 */ lwz r0, __GBAReset@sda21(r13) /* 803CAC30 003C7B90 57 A6 40 2E */ slwi r6, r29, 8 /* 803CAC34 003C7B94 2C 00 00 00 */ cmpwi r0, 0 /* 803CAC38 003C7B98 38 03 A1 A0 */ addi r0, r3, __GBA@l /* 803CAC3C 003C7B9C 7F E0 32 14 */ add r31, r0, r6 /* 803CAC40 003C7BA0 40 82 00 88 */ bne lbl_803CACC8 /* 803CAC44 003C7BA4 54 80 07 3F */ clrlwi. r0, r4, 0x1c /* 803CAC48 003C7BA8 41 82 00 10 */ beq lbl_803CAC58 /* 803CAC4C 003C7BAC 38 00 00 01 */ li r0, 1 /* 803CAC50 003C7BB0 90 1F 00 20 */ stw r0, 0x20(r31) /* 803CAC54 003C7BB4 48 00 00 0C */ b lbl_803CAC60 lbl_803CAC58: /* 803CAC58 003C7BB8 38 00 00 00 */ li r0, 0 /* 803CAC5C 003C7BBC 90 1F 00 20 */ stw r0, 0x20(r31) lbl_803CAC60: /* 803CAC60 003C7BC0 81 9F 00 38 */ lwz r12, 0x38(r31) /* 803CAC64 003C7BC4 28 0C 00 00 */ cmplwi r12, 0 /* 803CAC68 003C7BC8 41 82 00 18 */ beq lbl_803CAC80 /* 803CAC6C 003C7BCC 38 00 00 00 */ li r0, 0 /* 803CAC70 003C7BD0 7D 88 03 A6 */ mtlr r12 /* 803CAC74 003C7BD4 90 1F 00 38 */ stw r0, 0x38(r31) /* 803CAC78 003C7BD8 7F A3 EB 78 */ mr r3, r29 /* 803CAC7C 003C7BDC 4E 80 00 21 */ blrl lbl_803CAC80: /* 803CAC80 003C7BE0 80 1F 00 1C */ lwz r0, 0x1c(r31) /* 803CAC84 003C7BE4 28 00 00 00 */ cmplwi r0, 0 /* 803CAC88 003C7BE8 41 82 00 40 */ beq lbl_803CACC8 /* 803CAC8C 003C7BEC 38 61 00 18 */ addi r3, r1, 0x18 /* 803CAC90 003C7BF0 4B FB 49 85 */ bl OSClearContext /* 803CAC94 003C7BF4 38 61 00 18 */ addi r3, r1, 0x18 /* 803CAC98 003C7BF8 4B FB 47 85 */ bl OSSetCurrentContext /* 803CAC9C 003C7BFC 81 9F 00 1C */ lwz r12, 0x1c(r31) /* 803CACA0 003C7C00 38 00 00 00 */ li r0, 0 /* 803CACA4 003C7C04 38 7D 00 00 */ addi r3, r29, 0 /* 803CACA8 003C7C08 90 1F 00 1C */ stw r0, 0x1c(r31) /* 803CACAC 003C7C0C 7D 88 03 A6 */ mtlr r12 /* 803CACB0 003C7C10 80 9F 00 20 */ lwz r4, 0x20(r31) /* 803CACB4 003C7C14 4E 80 00 21 */ blrl /* 803CACB8 003C7C18 38 61 00 18 */ addi r3, r1, 0x18 /* 803CACBC 003C7C1C 4B FB 49 59 */ bl OSClearContext /* 803CACC0 003C7C20 7F C3 F3 78 */ mr r3, r30 /* 803CACC4 003C7C24 4B FB 47 59 */ bl OSSetCurrentContext lbl_803CACC8: /* 803CACC8 003C7C28 80 01 02 FC */ lwz r0, 0x2fc(r1) /* 803CACCC 003C7C2C 83 E1 02 F4 */ lwz r31, 0x2f4(r1) /* 803CACD0 003C7C30 83 C1 02 F0 */ lwz r30, 0x2f0(r1) /* 803CACD4 003C7C34 83 A1 02 EC */ lwz r29, 0x2ec(r1) /* 803CACD8 003C7C38 38 21 02 F8 */ addi r1, r1, 0x2f8 /* 803CACDC 003C7C3C 7C 08 03 A6 */ mtlr r0 /* 803CACE0 003C7C40 4E 80 00 20 */ blr .global __GBASyncCallback __GBASyncCallback: /* 803CACE4 003C7C44 7C 08 02 A6 */ mflr r0 /* 803CACE8 003C7C48 3C 80 80 57 */ lis r4, __GBA@ha /* 803CACEC 003C7C4C 90 01 00 04 */ stw r0, 4(r1) /* 803CACF0 003C7C50 54 63 40 2E */ slwi r3, r3, 8 /* 803CACF4 003C7C54 38 04 A1 A0 */ addi r0, r4, __GBA@l /* 803CACF8 003C7C58 7C 60 1A 14 */ add r3, r0, r3 /* 803CACFC 003C7C5C 94 21 FF F8 */ stwu r1, -8(r1) /* 803CAD00 003C7C60 38 63 00 24 */ addi r3, r3, 0x24 /* 803CAD04 003C7C64 4B FB A4 F5 */ bl OSWakeupThread /* 803CAD08 003C7C68 80 01 00 0C */ lwz r0, 0xc(r1) /* 803CAD0C 003C7C6C 38 21 00 08 */ addi r1, r1, 8 /* 803CAD10 003C7C70 7C 08 03 A6 */ mtlr r0 /* 803CAD14 003C7C74 4E 80 00 20 */ blr .global __GBASync __GBASync: /* 803CAD18 003C7C78 7C 08 02 A6 */ mflr r0 /* 803CAD1C 003C7C7C 3C 80 80 57 */ lis r4, __GBA@ha /* 803CAD20 003C7C80 90 01 00 04 */ stw r0, 4(r1) /* 803CAD24 003C7C84 54 63 40 2E */ slwi r3, r3, 8 /* 803CAD28 003C7C88 38 04 A1 A0 */ addi r0, r4, __GBA@l /* 803CAD2C 003C7C8C 94 21 FF E8 */ stwu r1, -0x18(r1) /* 803CAD30 003C7C90 93 E1 00 14 */ stw r31, 0x14(r1) /* 803CAD34 003C7C94 7F E0 1A 14 */ add r31, r0, r3 /* 803CAD38 003C7C98 93 C1 00 10 */ stw r30, 0x10(r1) /* 803CAD3C 003C7C9C 4B FB 69 25 */ bl OSDisableInterrupts /* 803CAD40 003C7CA0 7C 7E 1B 78 */ mr r30, r3 /* 803CAD44 003C7CA4 48 00 00 0C */ b lbl_803CAD50 lbl_803CAD48: /* 803CAD48 003C7CA8 38 7F 00 24 */ addi r3, r31, 0x24 /* 803CAD4C 003C7CAC 4B FB A3 C1 */ bl OSSleepThread lbl_803CAD50: /* 803CAD50 003C7CB0 80 1F 00 1C */ lwz r0, 0x1c(r31) /* 803CAD54 003C7CB4 28 00 00 00 */ cmplwi r0, 0 /* 803CAD58 003C7CB8 40 82 FF F0 */ bne lbl_803CAD48 /* 803CAD5C 003C7CBC 83 FF 00 20 */ lwz r31, 0x20(r31) /* 803CAD60 003C7CC0 7F C3 F3 78 */ mr r3, r30 /* 803CAD64 003C7CC4 4B FB 69 25 */ bl OSRestoreInterrupts /* 803CAD68 003C7CC8 7F E3 FB 78 */ mr r3, r31 /* 803CAD6C 003C7CCC 80 01 00 1C */ lwz r0, 0x1c(r1) /* 803CAD70 003C7CD0 83 E1 00 14 */ lwz r31, 0x14(r1) /* 803CAD74 003C7CD4 83 C1 00 10 */ lwz r30, 0x10(r1) /* 803CAD78 003C7CD8 38 21 00 18 */ addi r1, r1, 0x18 /* 803CAD7C 003C7CDC 7C 08 03 A6 */ mtlr r0 /* 803CAD80 003C7CE0 4E 80 00 20 */ blr .global TypeAndStatusCallback TypeAndStatusCallback: /* 803CAD84 003C7CE4 7C 08 02 A6 */ mflr r0 /* 803CAD88 003C7CE8 90 01 00 04 */ stw r0, 4(r1) /* 803CAD8C 003C7CEC 94 21 FD 10 */ stwu r1, -0x2f0(r1) /* 803CAD90 003C7CF0 93 E1 02 EC */ stw r31, 0x2ec(r1) /* 803CAD94 003C7CF4 3B E3 00 00 */ addi r31, r3, 0 /* 803CAD98 003C7CF8 3C 60 80 57 */ lis r3, __GBA@ha /* 803CAD9C 003C7CFC 93 C1 02 E8 */ stw r30, 0x2e8(r1) /* 803CADA0 003C7D00 57 E5 40 2E */ slwi r5, r31, 8 /* 803CADA4 003C7D04 93 A1 02 E4 */ stw r29, 0x2e4(r1) /* 803CADA8 003C7D08 80 0D B1 58 */ lwz r0, __GBAReset@sda21(r13) /* 803CADAC 003C7D0C 2C 00 00 00 */ cmpwi r0, 0 /* 803CADB0 003C7D10 38 03 A1 A0 */ addi r0, r3, __GBA@l /* 803CADB4 003C7D14 7F C0 2A 14 */ add r30, r0, r5 /* 803CADB8 003C7D18 40 82 00 D4 */ bne lbl_803CAE8C /* 803CADBC 003C7D1C 54 80 06 3F */ clrlwi. r0, r4, 0x18 /* 803CADC0 003C7D20 40 82 00 14 */ bne lbl_803CADD4 /* 803CADC4 003C7D24 54 83 00 1E */ rlwinm r3, r4, 0, 0, 0xf /* 803CADC8 003C7D28 3C 03 FF FC */ addis r0, r3, 0xfffc /* 803CADCC 003C7D2C 28 00 00 00 */ cmplwi r0, 0 /* 803CADD0 003C7D30 41 82 00 10 */ beq lbl_803CADE0 lbl_803CADD4: /* 803CADD4 003C7D34 38 00 00 01 */ li r0, 1 /* 803CADD8 003C7D38 90 1E 00 20 */ stw r0, 0x20(r30) /* 803CADDC 003C7D3C 48 00 00 3C */ b lbl_803CAE18 lbl_803CADE0: /* 803CADE0 003C7D40 3C 60 80 3D */ lis r3, __GBAHandler@ha /* 803CADE4 003C7D44 80 BE 00 0C */ lwz r5, 0xc(r30) /* 803CADE8 003C7D48 39 03 AC 08 */ addi r8, r3, __GBAHandler@l /* 803CADEC 003C7D4C 80 FE 00 10 */ lwz r7, 0x10(r30) /* 803CADF0 003C7D50 81 3E 00 30 */ lwz r9, 0x30(r30) /* 803CADF4 003C7D54 7F E3 FB 78 */ mr r3, r31 /* 803CADF8 003C7D58 81 5E 00 34 */ lwz r10, 0x34(r30) /* 803CADFC 003C7D5C 38 9E 00 00 */ addi r4, r30, 0 /* 803CAE00 003C7D60 38 DE 00 05 */ addi r6, r30, 5 /* 803CAE04 003C7D64 4B FF 48 95 */ bl SITransfer /* 803CAE08 003C7D68 2C 03 00 00 */ cmpwi r3, 0 /* 803CAE0C 003C7D6C 40 82 00 80 */ bne lbl_803CAE8C /* 803CAE10 003C7D70 38 00 00 02 */ li r0, 2 /* 803CAE14 003C7D74 90 1E 00 20 */ stw r0, 0x20(r30) lbl_803CAE18: /* 803CAE18 003C7D78 81 9E 00 38 */ lwz r12, 0x38(r30) /* 803CAE1C 003C7D7C 28 0C 00 00 */ cmplwi r12, 0 /* 803CAE20 003C7D80 41 82 00 18 */ beq lbl_803CAE38 /* 803CAE24 003C7D84 38 00 00 00 */ li r0, 0 /* 803CAE28 003C7D88 7D 88 03 A6 */ mtlr r12 /* 803CAE2C 003C7D8C 90 1E 00 38 */ stw r0, 0x38(r30) /* 803CAE30 003C7D90 7F E3 FB 78 */ mr r3, r31 /* 803CAE34 003C7D94 4E 80 00 21 */ blrl lbl_803CAE38: /* 803CAE38 003C7D98 80 1E 00 1C */ lwz r0, 0x1c(r30) /* 803CAE3C 003C7D9C 28 00 00 00 */ cmplwi r0, 0 /* 803CAE40 003C7DA0 41 82 00 4C */ beq lbl_803CAE8C /* 803CAE44 003C7DA4 4B FB 46 35 */ bl OSGetCurrentContext /* 803CAE48 003C7DA8 3B A3 00 00 */ addi r29, r3, 0 /* 803CAE4C 003C7DAC 38 61 00 10 */ addi r3, r1, 0x10 /* 803CAE50 003C7DB0 4B FB 47 C5 */ bl OSClearContext /* 803CAE54 003C7DB4 38 61 00 10 */ addi r3, r1, 0x10 /* 803CAE58 003C7DB8 4B FB 45 C5 */ bl OSSetCurrentContext /* 803CAE5C 003C7DBC 81 9E 00 1C */ lwz r12, 0x1c(r30) /* 803CAE60 003C7DC0 38 00 00 00 */ li r0, 0 /* 803CAE64 003C7DC4 38 7F 00 00 */ addi r3, r31, 0 /* 803CAE68 003C7DC8 90 1E 00 1C */ stw r0, 0x1c(r30) /* 803CAE6C 003C7DCC 7D 88 03 A6 */ mtlr r12 /* 803CAE70 003C7DD0 80 9E 00 20 */ lwz r4, 0x20(r30) /* 803CAE74 003C7DD4 4E 80 00 21 */ blrl /* 803CAE78 003C7DD8 38 61 00 10 */ addi r3, r1, 0x10 /* 803CAE7C 003C7DDC 4B FB 47 99 */ bl OSClearContext /* 803CAE80 003C7DE0 7F A3 EB 78 */ mr r3, r29 /* 803CAE84 003C7DE4 4B FB 45 99 */ bl OSSetCurrentContext /* 803CAE88 003C7DE8 4B FB 9C 65 */ bl __OSReschedule lbl_803CAE8C: /* 803CAE8C 003C7DEC 80 01 02 F4 */ lwz r0, 0x2f4(r1) /* 803CAE90 003C7DF0 83 E1 02 EC */ lwz r31, 0x2ec(r1) /* 803CAE94 003C7DF4 83 C1 02 E8 */ lwz r30, 0x2e8(r1) /* 803CAE98 003C7DF8 83 A1 02 E4 */ lwz r29, 0x2e4(r1) /* 803CAE9C 003C7DFC 38 21 02 F0 */ addi r1, r1, 0x2f0 /* 803CAEA0 003C7E00 7C 08 03 A6 */ mtlr r0 /* 803CAEA4 003C7E04 4E 80 00 20 */ blr .global __GBATransfer __GBATransfer: /* 803CAEA8 003C7E08 7C 08 02 A6 */ mflr r0 /* 803CAEAC 003C7E0C 90 01 00 04 */ stw r0, 4(r1) /* 803CAEB0 003C7E10 94 21 FF D0 */ stwu r1, -0x30(r1) /* 803CAEB4 003C7E14 BF 61 00 1C */ stmw r27, 0x1c(r1) /* 803CAEB8 003C7E18 3B 63 00 00 */ addi r27, r3, 0 /* 803CAEBC 003C7E1C 3C 60 80 57 */ lis r3, __GBA@ha /* 803CAEC0 003C7E20 57 67 40 2E */ slwi r7, r27, 8 /* 803CAEC4 003C7E24 38 03 A1 A0 */ addi r0, r3, __GBA@l /* 803CAEC8 003C7E28 3B 84 00 00 */ addi r28, r4, 0 /* 803CAECC 003C7E2C 3B A5 00 00 */ addi r29, r5, 0 /* 803CAED0 003C7E30 3B E6 00 00 */ addi r31, r6, 0 /* 803CAED4 003C7E34 7F C0 3A 14 */ add r30, r0, r7 /* 803CAED8 003C7E38 4B FB 67 89 */ bl OSDisableInterrupts /* 803CAEDC 003C7E3C 93 FE 00 38 */ stw r31, 0x38(r30) /* 803CAEE0 003C7E40 3C 80 80 3D */ lis r4, TypeAndStatusCallback@ha /* 803CAEE4 003C7E44 3B E3 00 00 */ addi r31, r3, 0 /* 803CAEE8 003C7E48 93 9E 00 0C */ stw r28, 0xc(r30) /* 803CAEEC 003C7E4C 38 84 AD 84 */ addi r4, r4, TypeAndStatusCallback@l /* 803CAEF0 003C7E50 7F 63 DB 78 */ mr r3, r27 /* 803CAEF4 003C7E54 93 BE 00 10 */ stw r29, 0x10(r30) /* 803CAEF8 003C7E58 4B FF 4D 69 */ bl SIGetTypeAsync /* 803CAEFC 003C7E5C 7F E3 FB 78 */ mr r3, r31 /* 803CAF00 003C7E60 4B FB 67 89 */ bl OSRestoreInterrupts /* 803CAF04 003C7E64 BB 61 00 1C */ lmw r27, 0x1c(r1) /* 803CAF08 003C7E68 38 60 00 00 */ li r3, 0 /* 803CAF0C 003C7E6C 80 01 00 34 */ lwz r0, 0x34(r1) /* 803CAF10 003C7E70 38 21 00 30 */ addi r1, r1, 0x30 /* 803CAF14 003C7E74 7C 08 03 A6 */ mtlr r0 /* 803CAF18 003C7E78 4E 80 00 20 */ blr .global __GBASetDelay __GBASetDelay: /* 803CAF1C 003C7E7C 3C 80 80 57 */ lis r4, __GBA@ha /* 803CAF20 003C7E80 54 63 40 2E */ slwi r3, r3, 8 /* 803CAF24 003C7E84 38 04 A1 A0 */ addi r0, r4, __GBA@l /* 803CAF28 003C7E88 7C E0 1A 14 */ add r7, r0, r3 /* 803CAF2C 003C7E8C 80 67 00 30 */ lwz r3, 0x30(r7) /* 803CAF30 003C7E90 80 87 00 34 */ lwz r4, 0x34(r7) /* 803CAF34 003C7E94 90 C7 00 34 */ stw r6, 0x34(r7) /* 803CAF38 003C7E98 90 A7 00 30 */ stw r5, 0x30(r7) /* 803CAF3C 003C7E9C 4E 80 00 20 */ blr .global __GBADSPTaskInit __GBADSPTaskInit: /* 803CAF40 003C7EA0 7C 08 02 A6 */ mflr r0 /* 803CAF44 003C7EA4 3C 80 80 57 */ lis r4, __GBA@ha /* 803CAF48 003C7EA8 90 01 00 04 */ stw r0, 4(r1) /* 803CAF4C 003C7EAC 38 84 A1 A0 */ addi r4, r4, __GBA@l /* 803CAF50 003C7EB0 38 04 00 A8 */ addi r0, r4, 0xa8 /* 803CAF54 003C7EB4 94 21 FF E0 */ stwu r1, -0x20(r1) /* 803CAF58 003C7EB8 7C 00 18 40 */ cmplw r0, r3 /* 803CAF5C 003C7EBC 93 E1 00 1C */ stw r31, 0x1c(r1) /* 803CAF60 003C7EC0 40 82 00 0C */ bne lbl_803CAF6C /* 803CAF64 003C7EC4 38 00 00 00 */ li r0, 0 /* 803CAF68 003C7EC8 48 00 00 68 */ b lbl_803CAFD0 lbl_803CAF6C: /* 803CAF6C 003C7ECC 38 84 01 00 */ addi r4, r4, 0x100 /* 803CAF70 003C7ED0 38 04 00 A8 */ addi r0, r4, 0xa8 /* 803CAF74 003C7ED4 7C 00 18 40 */ cmplw r0, r3 /* 803CAF78 003C7ED8 40 82 00 0C */ bne lbl_803CAF84 /* 803CAF7C 003C7EDC 38 00 00 01 */ li r0, 1 /* 803CAF80 003C7EE0 48 00 00 50 */ b lbl_803CAFD0 lbl_803CAF84: /* 803CAF84 003C7EE4 38 04 01 A8 */ addi r0, r4, 0x1a8 /* 803CAF88 003C7EE8 7C 00 18 40 */ cmplw r0, r3 /* 803CAF8C 003C7EEC 38 84 01 00 */ addi r4, r4, 0x100 /* 803CAF90 003C7EF0 40 82 00 0C */ bne lbl_803CAF9C /* 803CAF94 003C7EF4 38 00 00 02 */ li r0, 2 /* 803CAF98 003C7EF8 48 00 00 38 */ b lbl_803CAFD0 lbl_803CAF9C: /* 803CAF9C 003C7EFC 38 04 01 A8 */ addi r0, r4, 0x1a8 /* 803CAFA0 003C7F00 7C 00 18 40 */ cmplw r0, r3 /* 803CAFA4 003C7F04 40 82 00 0C */ bne lbl_803CAFB0 /* 803CAFA8 003C7F08 38 00 00 03 */ li r0, 3 /* 803CAFAC 003C7F0C 48 00 00 24 */ b lbl_803CAFD0 lbl_803CAFB0: /* 803CAFB0 003C7F10 3C 60 80 3F */ lis r3, lbl_803F7520@ha /* 803CAFB4 003C7F14 4C C6 31 82 */ crclr 6 /* 803CAFB8 003C7F18 3C 80 80 3F */ lis r4, lbl_803F752C@ha /* 803CAFBC 003C7F1C 38 A4 75 2C */ addi r5, r4, lbl_803F752C@l /* 803CAFC0 003C7F20 38 63 75 20 */ addi r3, r3, lbl_803F7520@l /* 803CAFC4 003C7F24 38 80 00 A9 */ li r4, 0xa9 /* 803CAFC8 003C7F28 4B FB 4A 65 */ bl OSPanic /* 803CAFCC 003C7F2C 38 00 FF FF */ li r0, -1 lbl_803CAFD0: /* 803CAFD0 003C7F30 3C 60 80 57 */ lis r3, __GBA@ha /* 803CAFD4 003C7F34 54 04 40 2E */ slwi r4, r0, 8 /* 803CAFD8 003C7F38 38 03 A1 A0 */ addi r0, r3, __GBA@l /* 803CAFDC 003C7F3C 7F E0 22 14 */ add r31, r0, r4 /* 803CAFE0 003C7F40 3C 60 AB BA */ lis r3, 0xabba /* 803CAFE4 003C7F44 4B FA 4A 0D */ bl DSPSendMailToDSP lbl_803CAFE8: /* 803CAFE8 003C7F48 4B FA 49 D1 */ bl DSPCheckMailToDSP /* 803CAFEC 003C7F4C 28 03 00 00 */ cmplwi r3, 0 /* 803CAFF0 003C7F50 40 82 FF F8 */ bne lbl_803CAFE8 /* 803CAFF4 003C7F54 80 7F 00 F8 */ lwz r3, 0xf8(r31) /* 803CAFF8 003C7F58 4B FA 49 F9 */ bl DSPSendMailToDSP lbl_803CAFFC: /* 803CAFFC 003C7F5C 4B FA 49 BD */ bl DSPCheckMailToDSP /* 803CB000 003C7F60 28 03 00 00 */ cmplwi r3, 0 /* 803CB004 003C7F64 40 82 FF F8 */ bne lbl_803CAFFC /* 803CB008 003C7F68 80 01 00 24 */ lwz r0, 0x24(r1) /* 803CB00C 003C7F6C 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 803CB010 003C7F70 38 21 00 20 */ addi r1, r1, 0x20 /* 803CB014 003C7F74 7C 08 03 A6 */ mtlr r0 /* 803CB018 003C7F78 4E 80 00 20 */ blr .global __GBADSPTaskDone __GBADSPTaskDone: /* 803CB01C 003C7F7C 3C 80 80 57 */ lis r4, __GBA@ha /* 803CB020 003C7F80 7C 08 02 A6 */ mflr r0 /* 803CB024 003C7F84 38 84 A1 A0 */ addi r4, r4, __GBA@l /* 803CB028 003C7F88 90 01 00 04 */ stw r0, 4(r1) /* 803CB02C 003C7F8C 38 04 00 A8 */ addi r0, r4, 0xa8 /* 803CB030 003C7F90 7C 00 18 40 */ cmplw r0, r3 /* 803CB034 003C7F94 94 21 FF F8 */ stwu r1, -8(r1) /* 803CB038 003C7F98 40 82 00 0C */ bne lbl_803CB044 /* 803CB03C 003C7F9C 38 00 00 00 */ li r0, 0 /* 803CB040 003C7FA0 48 00 00 68 */ b lbl_803CB0A8 lbl_803CB044: /* 803CB044 003C7FA4 38 84 01 00 */ addi r4, r4, 0x100 /* 803CB048 003C7FA8 38 04 00 A8 */ addi r0, r4, 0xa8 /* 803CB04C 003C7FAC 7C 00 18 40 */ cmplw r0, r3 /* 803CB050 003C7FB0 40 82 00 0C */ bne lbl_803CB05C /* 803CB054 003C7FB4 38 00 00 01 */ li r0, 1 /* 803CB058 003C7FB8 48 00 00 50 */ b lbl_803CB0A8 lbl_803CB05C: /* 803CB05C 003C7FBC 38 04 01 A8 */ addi r0, r4, 0x1a8 /* 803CB060 003C7FC0 7C 00 18 40 */ cmplw r0, r3 /* 803CB064 003C7FC4 38 84 01 00 */ addi r4, r4, 0x100 /* 803CB068 003C7FC8 40 82 00 0C */ bne lbl_803CB074 /* 803CB06C 003C7FCC 38 00 00 02 */ li r0, 2 /* 803CB070 003C7FD0 48 00 00 38 */ b lbl_803CB0A8 lbl_803CB074: /* 803CB074 003C7FD4 38 04 01 A8 */ addi r0, r4, 0x1a8 /* 803CB078 003C7FD8 7C 00 18 40 */ cmplw r0, r3 /* 803CB07C 003C7FDC 40 82 00 0C */ bne lbl_803CB088 /* 803CB080 003C7FE0 38 00 00 03 */ li r0, 3 /* 803CB084 003C7FE4 48 00 00 24 */ b lbl_803CB0A8 lbl_803CB088: /* 803CB088 003C7FE8 3C 60 80 3F */ lis r3, lbl_803F7520@ha /* 803CB08C 003C7FEC 4C C6 31 82 */ crclr 6 /* 803CB090 003C7FF0 3C 80 80 3F */ lis r4, lbl_803F752C@ha /* 803CB094 003C7FF4 38 A4 75 2C */ addi r5, r4, lbl_803F752C@l /* 803CB098 003C7FF8 38 63 75 20 */ addi r3, r3, lbl_803F7520@l /* 803CB09C 003C7FFC 38 80 00 A9 */ li r4, 0xa9 /* 803CB0A0 003C8000 4B FB 49 8D */ bl OSPanic /* 803CB0A4 003C8004 38 00 FF FF */ li r0, -1 lbl_803CB0A8: /* 803CB0A8 003C8008 7C 03 03 78 */ mr r3, r0 /* 803CB0AC 003C800C 38 80 00 00 */ li r4, 0 /* 803CB0B0 003C8010 4B FF ED B1 */ bl __GBAX01 /* 803CB0B4 003C8014 80 01 00 0C */ lwz r0, 0xc(r1) /* 803CB0B8 003C8018 38 21 00 08 */ addi r1, r1, 8 /* 803CB0BC 003C801C 7C 08 03 A6 */ mtlr r0 /* 803CB0C0 003C8020 4E 80 00 20 */ blr .global __GBAX02 __GBAX02: /* 803CB0C4 003C8024 7C 08 02 A6 */ mflr r0 /* 803CB0C8 003C8028 3C A0 80 57 */ lis r5, __GBA@ha /* 803CB0CC 003C802C 90 01 00 04 */ stw r0, 4(r1) /* 803CB0D0 003C8030 38 05 A1 A0 */ addi r0, r5, __GBA@l /* 803CB0D4 003C8034 54 63 40 2E */ slwi r3, r3, 8 /* 803CB0D8 003C8038 94 21 FF E0 */ stwu r1, -0x20(r1) /* 803CB0DC 003C803C 38 A0 00 04 */ li r5, 4 /* 803CB0E0 003C8040 93 E1 00 1C */ stw r31, 0x1c(r1) /* 803CB0E4 003C8044 7F E0 1A 14 */ add r31, r0, r3 /* 803CB0E8 003C8048 93 C1 00 18 */ stw r30, 0x18(r1) /* 803CB0EC 003C804C 3B DF 00 40 */ addi r30, r31, 0x40 /* 803CB0F0 003C8050 93 A1 00 14 */ stw r29, 0x14(r1) /* 803CB0F4 003C8054 83 BF 00 F8 */ lwz r29, 0xf8(r31) /* 803CB0F8 003C8058 38 7D 00 00 */ addi r3, r29, 0 /* 803CB0FC 003C805C 4B C3 83 95 */ bl memcpy /* 803CB100 003C8060 80 1E 00 00 */ lwz r0, 0(r30) /* 803CB104 003C8064 38 7D 00 20 */ addi r3, r29, 0x20 /* 803CB108 003C8068 38 80 00 20 */ li r4, 0x20 /* 803CB10C 003C806C 90 1D 00 04 */ stw r0, 4(r29) /* 803CB110 003C8070 80 1E 00 04 */ lwz r0, 4(r30) /* 803CB114 003C8074 90 1D 00 08 */ stw r0, 8(r29) /* 803CB118 003C8078 80 1E 00 0C */ lwz r0, 0xc(r30) /* 803CB11C 003C807C 90 1D 00 0C */ stw r0, 0xc(r29) /* 803CB120 003C8080 90 7D 00 10 */ stw r3, 0x10(r29) /* 803CB124 003C8084 4B FB 39 61 */ bl DCInvalidateRange /* 803CB128 003C8088 38 7D 00 00 */ addi r3, r29, 0 /* 803CB12C 003C808C 38 80 00 20 */ li r4, 0x20 /* 803CB130 003C8090 4B FB 39 81 */ bl DCFlushRange /* 803CB134 003C8094 38 00 00 FF */ li r0, 0xff /* 803CB138 003C8098 3C 80 80 3F */ lis r4, lbl_803F71A0@ha /* 803CB13C 003C809C 90 1F 00 AC */ stw r0, 0xac(r31) /* 803CB140 003C80A0 38 84 71 A0 */ addi r4, r4, lbl_803F71A0@l /* 803CB144 003C80A4 3C 04 80 00 */ addis r0, r4, 0x8000 /* 803CB148 003C80A8 90 1F 00 B4 */ stw r0, 0xb4(r31) /* 803CB14C 003C80AC 38 00 03 80 */ li r0, 0x380 /* 803CB150 003C80B0 3C A0 80 3D */ lis r5, __GBADSPTaskInit@ha /* 803CB154 003C80B4 90 1F 00 B8 */ stw r0, 0xb8(r31) /* 803CB158 003C80B8 38 C0 00 00 */ li r6, 0 /* 803CB15C 003C80BC 38 00 00 10 */ li r0, 0x10 /* 803CB160 003C80C0 90 DF 00 BC */ stw r6, 0xbc(r31) /* 803CB164 003C80C4 38 A5 AF 40 */ addi r5, r5, __GBADSPTaskInit@l /* 803CB168 003C80C8 3C 80 80 3D */ lis r4, __GBADSPTaskDone@ha /* 803CB16C 003C80CC B0 1F 00 CC */ sth r0, 0xcc(r31) /* 803CB170 003C80D0 38 04 B0 1C */ addi r0, r4, __GBADSPTaskDone@l /* 803CB174 003C80D4 38 7F 00 A8 */ addi r3, r31, 0xa8 /* 803CB178 003C80D8 90 BF 00 D0 */ stw r5, 0xd0(r31) /* 803CB17C 003C80DC 90 DF 00 D4 */ stw r6, 0xd4(r31) /* 803CB180 003C80E0 90 1F 00 D8 */ stw r0, 0xd8(r31) /* 803CB184 003C80E4 90 DF 00 DC */ stw r6, 0xdc(r31) /* 803CB188 003C80E8 4B FA 49 D9 */ bl DSPAddTask /* 803CB18C 003C80EC 80 01 00 24 */ lwz r0, 0x24(r1) /* 803CB190 003C80F0 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 803CB194 003C80F4 83 C1 00 18 */ lwz r30, 0x18(r1) /* 803CB198 003C80F8 83 A1 00 14 */ lwz r29, 0x14(r1) /* 803CB19C 003C80FC 38 21 00 20 */ addi r1, r1, 0x20 /* 803CB1A0 003C8100 7C 08 03 A6 */ mtlr r0 /* 803CB1A4 003C8104 4E 80 00 20 */ blr