.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 ResultCallback: /* 802B2D18 002AE978 1C C3 00 14 */ mulli r6, r3, 0x14 /* 802B2D1C 002AE97C 3C A0 80 54 */ lis r5, lbl_8053A480@ha /* 802B2D20 002AE980 38 00 00 00 */ li r0, 0 /* 802B2D24 002AE984 38 A5 A4 80 */ addi r5, r5, lbl_8053A480@l /* 802B2D28 002AE988 7C 05 31 2E */ stwx r0, r5, r6 /* 802B2D2C 002AE98C 7C A5 32 14 */ add r5, r5, r6 /* 802B2D30 002AE990 81 85 00 10 */ lwz r12, 0x10(r5) /* 802B2D34 002AE994 2C 0C 00 00 */ cmpwi r12, 0 /* 802B2D38 002AE998 90 05 00 10 */ stw r0, 0x10(r5) /* 802B2D3C 002AE99C 4D 82 00 20 */ beqlr /* 802B2D40 002AE9A0 7D 89 03 A6 */ mtctr r12 /* 802B2D44 002AE9A4 4E 80 04 20 */ bctr /* 802B2D48 002AE9A8 4E 80 00 20 */ blr WriteCallback: /* 802B2D4C 002AE9AC 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802B2D50 002AE9B0 7C 08 02 A6 */ mflr r0 /* 802B2D54 002AE9B4 3C C0 80 54 */ lis r6, lbl_8053A480@ha /* 802B2D58 002AE9B8 90 01 00 24 */ stw r0, 0x24(r1) /* 802B2D5C 002AE9BC 38 C6 A4 80 */ addi r6, r6, lbl_8053A480@l /* 802B2D60 002AE9C0 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802B2D64 002AE9C4 7C 7F 1B 78 */ mr r31, r3 /* 802B2D68 002AE9C8 93 C1 00 18 */ stw r30, 0x18(r1) /* 802B2D6C 002AE9CC 1F C3 00 14 */ mulli r30, r3, 0x14 /* 802B2D70 002AE9D0 93 A1 00 14 */ stw r29, 0x14(r1) /* 802B2D74 002AE9D4 7C A6 F2 14 */ add r5, r6, r30 /* 802B2D78 002AE9D8 93 81 00 10 */ stw r28, 0x10(r1) /* 802B2D7C 002AE9DC A0 E5 00 08 */ lhz r7, 8(r5) /* 802B2D80 002AE9E0 2C 07 00 00 */ cmpwi r7, 0 /* 802B2D84 002AE9E4 40 82 00 28 */ bne lbl_802B2DAC /* 802B2D88 002AE9E8 38 00 00 00 */ li r0, 0 /* 802B2D8C 002AE9EC 7C 06 F1 2E */ stwx r0, r6, r30 /* 802B2D90 002AE9F0 81 85 00 10 */ lwz r12, 0x10(r5) /* 802B2D94 002AE9F4 2C 0C 00 00 */ cmpwi r12, 0 /* 802B2D98 002AE9F8 90 05 00 10 */ stw r0, 0x10(r5) /* 802B2D9C 002AE9FC 41 82 01 00 */ beq lbl_802B2E9C /* 802B2DA0 002AEA00 7D 89 03 A6 */ mtctr r12 /* 802B2DA4 002AEA04 4E 80 04 21 */ bctrl /* 802B2DA8 002AEA08 48 00 00 F4 */ b lbl_802B2E9C lbl_802B2DAC: /* 802B2DAC 002AEA0C 28 07 00 10 */ cmplwi r7, 0x10 /* 802B2DB0 002AEA10 38 00 00 10 */ li r0, 0x10 /* 802B2DB4 002AEA14 41 81 00 08 */ bgt lbl_802B2DBC /* 802B2DB8 002AEA18 7C E0 3B 78 */ mr r0, r7 lbl_802B2DBC: /* 802B2DBC 002AEA1C 2C 04 00 00 */ cmpwi r4, 0 /* 802B2DC0 002AEA20 54 1C 04 3E */ clrlwi r28, r0, 0x10 /* 802B2DC4 002AEA24 40 82 00 64 */ bne lbl_802B2E28 /* 802B2DC8 002AEA28 A0 05 00 08 */ lhz r0, 8(r5) /* 802B2DCC 002AEA2C 3C 60 80 54 */ lis r3, lbl_8053A480@ha /* 802B2DD0 002AEA30 38 63 A4 80 */ addi r3, r3, lbl_8053A480@l /* 802B2DD4 002AEA34 7C 1C 00 50 */ subf r0, r28, r0 /* 802B2DD8 002AEA38 B0 05 00 08 */ sth r0, 8(r5) /* 802B2DDC 002AEA3C 7F C3 F2 14 */ add r30, r3, r30 /* 802B2DE0 002AEA40 80 7E 00 0C */ lwz r3, 0xc(r30) /* 802B2DE4 002AEA44 38 03 00 10 */ addi r0, r3, 0x10 /* 802B2DE8 002AEA48 90 1E 00 0C */ stw r0, 0xc(r30) /* 802B2DEC 002AEA4C 80 7E 00 04 */ lwz r3, 4(r30) /* 802B2DF0 002AEA50 38 03 00 10 */ addi r0, r3, 0x10 /* 802B2DF4 002AEA54 90 1E 00 04 */ stw r0, 4(r30) /* 802B2DF8 002AEA58 4B FB B9 65 */ bl OSDisableInterrupts /* 802B2DFC 002AEA5C 3C E0 80 2B */ lis r7, WriteCallback@ha /* 802B2E00 002AEA60 80 9E 00 04 */ lwz r4, 4(r30) /* 802B2E04 002AEA64 7C 7D 1B 78 */ mr r29, r3 /* 802B2E08 002AEA68 80 DE 00 0C */ lwz r6, 0xc(r30) /* 802B2E0C 002AEA6C 7F E3 FB 78 */ mr r3, r31 /* 802B2E10 002AEA70 7F 85 E3 78 */ mr r5, r28 /* 802B2E14 002AEA74 38 E7 2D 4C */ addi r7, r7, WriteCallback@l /* 802B2E18 002AEA78 48 00 08 25 */ bl WPADWriteMemoryAsync /* 802B2E1C 002AEA7C 7F A3 EB 78 */ mr r3, r29 /* 802B2E20 002AEA80 4B FB B9 65 */ bl OSRestoreInterrupts /* 802B2E24 002AEA84 48 00 00 78 */ b lbl_802B2E9C lbl_802B2E28: /* 802B2E28 002AEA88 2C 04 FF FE */ cmpwi r4, -2 /* 802B2E2C 002AEA8C 40 82 00 40 */ bne lbl_802B2E6C /* 802B2E30 002AEA90 4B FB B9 2D */ bl OSDisableInterrupts /* 802B2E34 002AEA94 3C 80 80 54 */ lis r4, lbl_8053A480@ha /* 802B2E38 002AEA98 3C E0 80 2B */ lis r7, WriteCallback@ha /* 802B2E3C 002AEA9C 38 84 A4 80 */ addi r4, r4, lbl_8053A480@l /* 802B2E40 002AEAA0 7C 7D 1B 78 */ mr r29, r3 /* 802B2E44 002AEAA4 7C C4 F2 14 */ add r6, r4, r30 /* 802B2E48 002AEAA8 7F E3 FB 78 */ mr r3, r31 /* 802B2E4C 002AEAAC 80 86 00 04 */ lwz r4, 4(r6) /* 802B2E50 002AEAB0 7F 85 E3 78 */ mr r5, r28 /* 802B2E54 002AEAB4 80 C6 00 0C */ lwz r6, 0xc(r6) /* 802B2E58 002AEAB8 38 E7 2D 4C */ addi r7, r7, WriteCallback@l /* 802B2E5C 002AEABC 48 00 07 E1 */ bl WPADWriteMemoryAsync /* 802B2E60 002AEAC0 7F A3 EB 78 */ mr r3, r29 /* 802B2E64 002AEAC4 4B FB B9 21 */ bl OSRestoreInterrupts /* 802B2E68 002AEAC8 48 00 00 34 */ b lbl_802B2E9C lbl_802B2E6C: /* 802B2E6C 002AEACC 3C 60 80 54 */ lis r3, lbl_8053A480@ha /* 802B2E70 002AEAD0 38 00 00 00 */ li r0, 0 /* 802B2E74 002AEAD4 38 63 A4 80 */ addi r3, r3, lbl_8053A480@l /* 802B2E78 002AEAD8 7C 03 F1 2E */ stwx r0, r3, r30 /* 802B2E7C 002AEADC 7C 63 F2 14 */ add r3, r3, r30 /* 802B2E80 002AEAE0 81 83 00 10 */ lwz r12, 0x10(r3) /* 802B2E84 002AEAE4 2C 0C 00 00 */ cmpwi r12, 0 /* 802B2E88 002AEAE8 90 03 00 10 */ stw r0, 0x10(r3) /* 802B2E8C 002AEAEC 41 82 00 10 */ beq lbl_802B2E9C /* 802B2E90 002AEAF0 7F E3 FB 78 */ mr r3, r31 /* 802B2E94 002AEAF4 7D 89 03 A6 */ mtctr r12 /* 802B2E98 002AEAF8 4E 80 04 21 */ bctrl lbl_802B2E9C: /* 802B2E9C 002AEAFC 80 01 00 24 */ lwz r0, 0x24(r1) /* 802B2EA0 002AEB00 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802B2EA4 002AEB04 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802B2EA8 002AEB08 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802B2EAC 002AEB0C 83 81 00 10 */ lwz r28, 0x10(r1) /* 802B2EB0 002AEB10 7C 08 03 A6 */ mtlr r0 /* 802B2EB4 002AEB14 38 21 00 20 */ addi r1, r1, 0x20 /* 802B2EB8 002AEB18 4E 80 00 20 */ blr WriteGameDataSub: /* 802B2EBC 002AEB1C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802B2EC0 002AEB20 7C 08 02 A6 */ mflr r0 /* 802B2EC4 002AEB24 3C A0 80 53 */ lis r5, lbl_80536D70@ha /* 802B2EC8 002AEB28 90 01 00 24 */ stw r0, 0x24(r1) /* 802B2ECC 002AEB2C 54 60 10 3A */ slwi r0, r3, 2 /* 802B2ED0 002AEB30 38 A5 6D 70 */ addi r5, r5, lbl_80536D70@l /* 802B2ED4 002AEB34 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802B2ED8 002AEB38 7C 7F 1B 78 */ mr r31, r3 /* 802B2EDC 002AEB3C 93 C1 00 18 */ stw r30, 0x18(r1) /* 802B2EE0 002AEB40 93 A1 00 14 */ stw r29, 0x14(r1) /* 802B2EE4 002AEB44 93 81 00 10 */ stw r28, 0x10(r1) /* 802B2EE8 002AEB48 7C C5 00 2E */ lwzx r6, r5, r0 /* 802B2EEC 002AEB4C 80 06 00 3C */ lwz r0, 0x3c(r6) /* 802B2EF0 002AEB50 2C 00 00 00 */ cmpwi r0, 0 /* 802B2EF4 002AEB54 40 82 00 1C */ bne lbl_802B2F10 /* 802B2EF8 002AEB58 7C 85 00 34 */ cntlzw r5, r4 /* 802B2EFC 002AEB5C 38 00 FF FD */ li r0, -3 /* 802B2F00 002AEB60 54 A5 DF FE */ rlwinm r5, r5, 0x1b, 0x1f, 0x1f /* 802B2F04 002AEB64 7C A5 00 D0 */ neg r5, r5 /* 802B2F08 002AEB68 7C 00 28 78 */ andc r0, r0, r5 /* 802B2F0C 002AEB6C 90 06 00 3C */ stw r0, 0x3c(r6) lbl_802B2F10: /* 802B2F10 002AEB70 2C 04 00 00 */ cmpwi r4, 0 /* 802B2F14 002AEB74 40 82 00 90 */ bne lbl_802B2FA4 /* 802B2F18 002AEB78 80 06 00 38 */ lwz r0, 0x38(r6) /* 802B2F1C 002AEB7C 2C 00 00 00 */ cmpwi r0, 0 /* 802B2F20 002AEB80 41 82 00 10 */ beq lbl_802B2F30 /* 802B2F24 002AEB84 80 06 00 3C */ lwz r0, 0x3c(r6) /* 802B2F28 002AEB88 2C 00 00 00 */ cmpwi r0, 0 /* 802B2F2C 002AEB8C 40 82 00 74 */ bne lbl_802B2FA0 lbl_802B2F30: /* 802B2F30 002AEB90 1F C3 00 14 */ mulli r30, r3, 0x14 /* 802B2F34 002AEB94 3C 80 80 54 */ lis r4, lbl_8053A480@ha /* 802B2F38 002AEB98 38 60 00 10 */ li r3, 0x10 /* 802B2F3C 002AEB9C 38 84 A4 80 */ addi r4, r4, lbl_8053A480@l /* 802B2F40 002AEBA0 7C 84 F2 14 */ add r4, r4, r30 /* 802B2F44 002AEBA4 A0 04 00 08 */ lhz r0, 8(r4) /* 802B2F48 002AEBA8 28 00 00 10 */ cmplwi r0, 0x10 /* 802B2F4C 002AEBAC 41 81 00 08 */ bgt lbl_802B2F54 /* 802B2F50 002AEBB0 7C 03 03 78 */ mr r3, r0 lbl_802B2F54: /* 802B2F54 002AEBB4 A0 04 00 08 */ lhz r0, 8(r4) /* 802B2F58 002AEBB8 54 7C 04 3E */ clrlwi r28, r3, 0x10 /* 802B2F5C 002AEBBC 7C 1C 00 50 */ subf r0, r28, r0 /* 802B2F60 002AEBC0 B0 04 00 08 */ sth r0, 8(r4) /* 802B2F64 002AEBC4 4B FB B7 F9 */ bl OSDisableInterrupts /* 802B2F68 002AEBC8 3C 80 80 54 */ lis r4, lbl_8053A480@ha /* 802B2F6C 002AEBCC 3C E0 80 2B */ lis r7, WriteCallback@ha /* 802B2F70 002AEBD0 38 84 A4 80 */ addi r4, r4, lbl_8053A480@l /* 802B2F74 002AEBD4 7C 7D 1B 78 */ mr r29, r3 /* 802B2F78 002AEBD8 7C C4 F2 14 */ add r6, r4, r30 /* 802B2F7C 002AEBDC 7F E3 FB 78 */ mr r3, r31 /* 802B2F80 002AEBE0 80 86 00 04 */ lwz r4, 4(r6) /* 802B2F84 002AEBE4 7F 85 E3 78 */ mr r5, r28 /* 802B2F88 002AEBE8 80 C6 00 0C */ lwz r6, 0xc(r6) /* 802B2F8C 002AEBEC 38 E7 2D 4C */ addi r7, r7, WriteCallback@l /* 802B2F90 002AEBF0 48 00 06 AD */ bl WPADWriteMemoryAsync /* 802B2F94 002AEBF4 7F A3 EB 78 */ mr r3, r29 /* 802B2F98 002AEBF8 4B FB B7 ED */ bl OSRestoreInterrupts /* 802B2F9C 002AEBFC 48 00 00 40 */ b lbl_802B2FDC lbl_802B2FA0: /* 802B2FA0 002AEC00 38 80 FF FD */ li r4, -3 lbl_802B2FA4: /* 802B2FA4 002AEC04 1C C3 00 14 */ mulli r6, r3, 0x14 /* 802B2FA8 002AEC08 3C A0 80 54 */ lis r5, lbl_8053A480@ha /* 802B2FAC 002AEC0C 38 A5 A4 80 */ addi r5, r5, lbl_8053A480@l /* 802B2FB0 002AEC10 7F A5 32 14 */ add r29, r5, r6 /* 802B2FB4 002AEC14 80 1D 00 10 */ lwz r0, 0x10(r29) /* 802B2FB8 002AEC18 2C 00 00 00 */ cmpwi r0, 0 /* 802B2FBC 002AEC1C 41 82 00 20 */ beq lbl_802B2FDC /* 802B2FC0 002AEC20 3B C0 00 00 */ li r30, 0 /* 802B2FC4 002AEC24 7F E3 FB 78 */ mr r3, r31 /* 802B2FC8 002AEC28 7F C5 31 2E */ stwx r30, r5, r6 /* 802B2FCC 002AEC2C 81 9D 00 10 */ lwz r12, 0x10(r29) /* 802B2FD0 002AEC30 7D 89 03 A6 */ mtctr r12 /* 802B2FD4 002AEC34 4E 80 04 21 */ bctrl /* 802B2FD8 002AEC38 93 DD 00 10 */ stw r30, 0x10(r29) lbl_802B2FDC: /* 802B2FDC 002AEC3C 80 01 00 24 */ lwz r0, 0x24(r1) /* 802B2FE0 002AEC40 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802B2FE4 002AEC44 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802B2FE8 002AEC48 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802B2FEC 002AEC4C 83 81 00 10 */ lwz r28, 0x10(r1) /* 802B2FF0 002AEC50 7C 08 03 A6 */ mtlr r0 /* 802B2FF4 002AEC54 38 21 00 20 */ addi r1, r1, 0x20 /* 802B2FF8 002AEC58 4E 80 00 20 */ blr writeCheck1: /* 802B2FFC 002AEC5C 3C A0 80 53 */ lis r5, lbl_80536D70@ha /* 802B3000 002AEC60 54 60 10 3A */ slwi r0, r3, 2 /* 802B3004 002AEC64 38 A5 6D 70 */ addi r5, r5, lbl_80536D70@l /* 802B3008 002AEC68 7C A5 00 2E */ lwzx r5, r5, r0 /* 802B300C 002AEC6C 80 05 00 38 */ lwz r0, 0x38(r5) /* 802B3010 002AEC70 2C 00 00 00 */ cmpwi r0, 0 /* 802B3014 002AEC74 4C 82 00 20 */ bnelr /* 802B3018 002AEC78 7C 83 00 34 */ cntlzw r3, r4 /* 802B301C 002AEC7C 38 00 FF FD */ li r0, -3 /* 802B3020 002AEC80 54 63 DF FE */ rlwinm r3, r3, 0x1b, 0x1f, 0x1f /* 802B3024 002AEC84 7C 63 00 D0 */ neg r3, r3 /* 802B3028 002AEC88 7C 00 18 78 */ andc r0, r0, r3 /* 802B302C 002AEC8C 90 05 00 38 */ stw r0, 0x38(r5) /* 802B3030 002AEC90 4E 80 00 20 */ blr writeCheck2: /* 802B3034 002AEC94 3C A0 80 53 */ lis r5, lbl_80536D70@ha /* 802B3038 002AEC98 54 60 10 3A */ slwi r0, r3, 2 /* 802B303C 002AEC9C 38 A5 6D 70 */ addi r5, r5, lbl_80536D70@l /* 802B3040 002AECA0 7C A5 00 2E */ lwzx r5, r5, r0 /* 802B3044 002AECA4 80 05 00 3C */ lwz r0, 0x3c(r5) /* 802B3048 002AECA8 2C 00 00 00 */ cmpwi r0, 0 /* 802B304C 002AECAC 4C 82 00 20 */ bnelr /* 802B3050 002AECB0 7C 83 00 34 */ cntlzw r3, r4 /* 802B3054 002AECB4 38 00 FF FD */ li r0, -3 /* 802B3058 002AECB8 54 63 DF FE */ rlwinm r3, r3, 0x1b, 0x1f, 0x1f /* 802B305C 002AECBC 7C 63 00 D0 */ neg r3, r3 /* 802B3060 002AECC0 7C 00 18 78 */ andc r0, r0, r3 /* 802B3064 002AECC4 90 05 00 3C */ stw r0, 0x3c(r5) /* 802B3068 002AECC8 4E 80 00 20 */ blr .global WPADWriteGameData WPADWriteGameData: /* 802B306C 002AECCC 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802B3070 002AECD0 7C 08 02 A6 */ mflr r0 /* 802B3074 002AECD4 90 01 00 34 */ stw r0, 0x34(r1) /* 802B3078 002AECD8 39 61 00 30 */ addi r11, r1, 0x30 /* 802B307C 002AECDC 4B F1 40 9D */ bl _savegpr_23 /* 802B3080 002AECE0 3D 00 80 53 */ lis r8, lbl_80536D70@ha /* 802B3084 002AECE4 54 60 10 3A */ slwi r0, r3, 2 /* 802B3088 002AECE8 39 08 6D 70 */ addi r8, r8, lbl_80536D70@l /* 802B308C 002AECEC 7C 7D 1B 78 */ mr r29, r3 /* 802B3090 002AECF0 7F C8 00 2E */ lwzx r30, r8, r0 /* 802B3094 002AECF4 7C 97 23 78 */ mr r23, r4 /* 802B3098 002AECF8 7C B8 2B 78 */ mr r24, r5 /* 802B309C 002AECFC 7C DB 33 78 */ mr r27, r6 /* 802B30A0 002AED00 7C FA 3B 78 */ mr r26, r7 /* 802B30A4 002AED04 4B FB B6 B9 */ bl OSDisableInterrupts /* 802B30A8 002AED08 83 3E 08 BC */ lwz r25, 0x8bc(r30) /* 802B30AC 002AED0C 7C 7F 1B 78 */ mr r31, r3 /* 802B30B0 002AED10 80 1E 08 DC */ lwz r0, 0x8dc(r30) /* 802B30B4 002AED14 2C 19 FF FF */ cmpwi r25, -1 /* 802B30B8 002AED18 41 82 03 24 */ beq lbl_802B33DC /* 802B30BC 002AED1C 2C 00 00 00 */ cmpwi r0, 0 /* 802B30C0 002AED20 40 82 00 0C */ bne lbl_802B30CC /* 802B30C4 002AED24 3B 20 FF FE */ li r25, -2 /* 802B30C8 002AED28 48 00 03 14 */ b lbl_802B33DC lbl_802B30CC: /* 802B30CC 002AED2C 1F 3D 00 14 */ mulli r25, r29, 0x14 /* 802B30D0 002AED30 3F 80 80 54 */ lis r28, lbl_8053A480@ha /* 802B30D4 002AED34 3B 9C A4 80 */ addi r28, r28, lbl_8053A480@l /* 802B30D8 002AED38 7C 1C C8 2E */ lwzx r0, r28, r25 /* 802B30DC 002AED3C 2C 00 00 00 */ cmpwi r0, 0 /* 802B30E0 002AED40 40 82 02 F8 */ bne lbl_802B33D8 /* 802B30E4 002AED44 38 7E 01 60 */ addi r3, r30, 0x160 /* 802B30E8 002AED48 38 80 00 09 */ li r4, 9 /* 802B30EC 002AED4C 4B FF 9F E9 */ bl __CanPushCmdQueue /* 802B30F0 002AED50 2C 03 00 00 */ cmpwi r3, 0 /* 802B30F4 002AED54 40 82 00 0C */ bne lbl_802B3100 /* 802B30F8 002AED58 3B 20 FF FE */ li r25, -2 /* 802B30FC 002AED5C 48 00 02 E0 */ b lbl_802B33DC lbl_802B3100: /* 802B3100 002AED60 38 00 00 01 */ li r0, 1 /* 802B3104 002AED64 7C DC CA 14 */ add r6, r28, r25 /* 802B3108 002AED68 7C 1C C9 2E */ stwx r0, r28, r25 /* 802B310C 002AED6C 38 1B 00 9A */ addi r0, r27, 0x9a /* 802B3110 002AED70 80 8D AE 54 */ lwz r4, lbl_80640114-_SDA_BASE_(r13) /* 802B3114 002AED74 38 7E 00 2A */ addi r3, r30, 0x2a /* 802B3118 002AED78 93 46 00 10 */ stw r26, 0x10(r6) /* 802B311C 002AED7C 38 A0 00 04 */ li r5, 4 /* 802B3120 002AED80 B3 06 00 08 */ sth r24, 8(r6) /* 802B3124 002AED84 90 06 00 0C */ stw r0, 0xc(r6) /* 802B3128 002AED88 92 E6 00 04 */ stw r23, 4(r6) /* 802B312C 002AED8C 4B D5 0E D5 */ bl memcpy /* 802B3130 002AED90 3C 80 80 54 */ lis r4, lbl_8053A440@ha /* 802B3134 002AED94 38 7E 00 08 */ addi r3, r30, 8 /* 802B3138 002AED98 38 84 A4 40 */ addi r4, r4, lbl_8053A440@l /* 802B313C 002AED9C 38 A0 00 22 */ li r5, 0x22 /* 802B3140 002AEDA0 4B D5 0E C1 */ bl memcpy /* 802B3144 002AEDA4 4B FB F6 75 */ bl OSGetTime /* 802B3148 002AEDA8 90 9E 00 04 */ stw r4, 4(r30) /* 802B314C 002AEDAC 38 A0 00 00 */ li r5, 0 /* 802B3150 002AEDB0 38 00 00 03 */ li r0, 3 /* 802B3154 002AEDB4 38 80 00 00 */ li r4, 0 /* 802B3158 002AEDB8 90 7E 00 00 */ stw r3, 0(r30) /* 802B315C 002AEDBC 88 6D AE 58 */ lbz r3, lbl_80640118-_SDA_BASE_(r13) /* 802B3160 002AEDC0 98 7E 00 2E */ stb r3, 0x2e(r30) /* 802B3164 002AEDC4 98 BE 00 2F */ stb r5, 0x2f(r30) /* 802B3168 002AEDC8 7C 09 03 A6 */ mtctr r0 lbl_802B316C: /* 802B316C 002AEDCC 54 80 06 3E */ clrlwi r0, r4, 0x18 /* 802B3170 002AEDD0 88 BE 00 2F */ lbz r5, 0x2f(r30) /* 802B3174 002AEDD4 7C 7E 00 AE */ lbzx r3, r30, r0 /* 802B3178 002AEDD8 7C DE 02 14 */ add r6, r30, r0 /* 802B317C 002AEDDC 38 84 00 07 */ addi r4, r4, 7 /* 802B3180 002AEDE0 7C 65 1A 14 */ add r3, r5, r3 /* 802B3184 002AEDE4 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B3188 002AEDE8 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B318C 002AEDEC 54 80 06 3E */ clrlwi r0, r4, 0x18 /* 802B3190 002AEDF0 38 84 00 07 */ addi r4, r4, 7 /* 802B3194 002AEDF4 88 66 00 01 */ lbz r3, 1(r6) /* 802B3198 002AEDF8 7C 65 1A 14 */ add r3, r5, r3 /* 802B319C 002AEDFC 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B31A0 002AEE00 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B31A4 002AEE04 88 66 00 02 */ lbz r3, 2(r6) /* 802B31A8 002AEE08 7C 65 1A 14 */ add r3, r5, r3 /* 802B31AC 002AEE0C 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B31B0 002AEE10 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B31B4 002AEE14 88 66 00 03 */ lbz r3, 3(r6) /* 802B31B8 002AEE18 7C 65 1A 14 */ add r3, r5, r3 /* 802B31BC 002AEE1C 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B31C0 002AEE20 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B31C4 002AEE24 88 66 00 04 */ lbz r3, 4(r6) /* 802B31C8 002AEE28 7C 65 1A 14 */ add r3, r5, r3 /* 802B31CC 002AEE2C 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B31D0 002AEE30 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B31D4 002AEE34 88 66 00 05 */ lbz r3, 5(r6) /* 802B31D8 002AEE38 7C 65 1A 14 */ add r3, r5, r3 /* 802B31DC 002AEE3C 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B31E0 002AEE40 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B31E4 002AEE44 88 66 00 06 */ lbz r3, 6(r6) /* 802B31E8 002AEE48 7C DE 02 14 */ add r6, r30, r0 /* 802B31EC 002AEE4C 54 80 06 3E */ clrlwi r0, r4, 0x18 /* 802B31F0 002AEE50 7C 65 1A 14 */ add r3, r5, r3 /* 802B31F4 002AEE54 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B31F8 002AEE58 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B31FC 002AEE5C 88 66 00 00 */ lbz r3, 0(r6) /* 802B3200 002AEE60 7C 65 1A 14 */ add r3, r5, r3 /* 802B3204 002AEE64 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B3208 002AEE68 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B320C 002AEE6C 88 66 00 01 */ lbz r3, 1(r6) /* 802B3210 002AEE70 7C 65 1A 14 */ add r3, r5, r3 /* 802B3214 002AEE74 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B3218 002AEE78 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B321C 002AEE7C 88 66 00 02 */ lbz r3, 2(r6) /* 802B3220 002AEE80 7C 65 1A 14 */ add r3, r5, r3 /* 802B3224 002AEE84 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B3228 002AEE88 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B322C 002AEE8C 88 66 00 03 */ lbz r3, 3(r6) /* 802B3230 002AEE90 7C 65 1A 14 */ add r3, r5, r3 /* 802B3234 002AEE94 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B3238 002AEE98 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B323C 002AEE9C 88 66 00 04 */ lbz r3, 4(r6) /* 802B3240 002AEEA0 7C 65 1A 14 */ add r3, r5, r3 /* 802B3244 002AEEA4 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B3248 002AEEA8 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B324C 002AEEAC 88 66 00 05 */ lbz r3, 5(r6) /* 802B3250 002AEEB0 7C 65 1A 14 */ add r3, r5, r3 /* 802B3254 002AEEB4 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B3258 002AEEB8 54 65 06 3E */ clrlwi r5, r3, 0x18 /* 802B325C 002AEEBC 88 66 00 06 */ lbz r3, 6(r6) /* 802B3260 002AEEC0 7C 65 1A 14 */ add r3, r5, r3 /* 802B3264 002AEEC4 98 7E 00 2F */ stb r3, 0x2f(r30) /* 802B3268 002AEEC8 42 00 FF 04 */ bdnz lbl_802B316C /* 802B326C 002AEECC 7C FE 00 AE */ lbzx r7, r30, r0 /* 802B3270 002AEED0 38 A4 00 02 */ addi r5, r4, 2 /* 802B3274 002AEED4 89 1E 00 2F */ lbz r8, 0x2f(r30) /* 802B3278 002AEED8 38 64 00 03 */ addi r3, r4, 3 /* 802B327C 002AEEDC 54 69 06 3E */ clrlwi r9, r3, 0x18 /* 802B3280 002AEEE0 38 C4 00 01 */ addi r6, r4, 1 /* 802B3284 002AEEE4 7C E8 3A 14 */ add r7, r8, r7 /* 802B3288 002AEEE8 38 04 00 04 */ addi r0, r4, 4 /* 802B328C 002AEEEC 54 C4 06 3E */ clrlwi r4, r6, 0x18 /* 802B3290 002AEEF0 98 FE 00 2F */ stb r7, 0x2f(r30) /* 802B3294 002AEEF4 54 08 06 3E */ clrlwi r8, r0, 0x18 /* 802B3298 002AEEF8 54 E6 06 3E */ clrlwi r6, r7, 0x18 /* 802B329C 002AEEFC 7C 9E 20 AE */ lbzx r4, r30, r4 /* 802B32A0 002AEF00 3F 80 80 2B */ lis r28, writeCheck1@ha /* 802B32A4 002AEF04 54 A5 06 3E */ clrlwi r5, r5, 0x18 /* 802B32A8 002AEF08 38 00 00 00 */ li r0, 0 /* 802B32AC 002AEF0C 7C 86 22 14 */ add r4, r6, r4 /* 802B32B0 002AEF10 7F A3 EB 78 */ mr r3, r29 /* 802B32B4 002AEF14 98 9E 00 2F */ stb r4, 0x2f(r30) /* 802B32B8 002AEF18 54 8B 06 3E */ clrlwi r11, r4, 0x18 /* 802B32BC 002AEF1C 7F C4 F3 78 */ mr r4, r30 /* 802B32C0 002AEF20 38 FC 2F FC */ addi r7, r28, writeCheck1@l /* 802B32C4 002AEF24 7D 5E 28 AE */ lbzx r10, r30, r5 /* 802B32C8 002AEF28 38 A0 00 10 */ li r5, 0x10 /* 802B32CC 002AEF2C 38 C0 00 2A */ li r6, 0x2a /* 802B32D0 002AEF30 7D 4B 52 14 */ add r10, r11, r10 /* 802B32D4 002AEF34 99 5E 00 2F */ stb r10, 0x2f(r30) /* 802B32D8 002AEF38 55 4A 06 3E */ clrlwi r10, r10, 0x18 /* 802B32DC 002AEF3C 7D 3E 48 AE */ lbzx r9, r30, r9 /* 802B32E0 002AEF40 7D 2A 4A 14 */ add r9, r10, r9 /* 802B32E4 002AEF44 99 3E 00 2F */ stb r9, 0x2f(r30) /* 802B32E8 002AEF48 55 29 06 3E */ clrlwi r9, r9, 0x18 /* 802B32EC 002AEF4C 7D 1E 40 AE */ lbzx r8, r30, r8 /* 802B32F0 002AEF50 7D 09 42 14 */ add r8, r9, r8 /* 802B32F4 002AEF54 55 08 06 3E */ clrlwi r8, r8, 0x18 /* 802B32F8 002AEF58 39 08 00 55 */ addi r8, r8, 0x55 /* 802B32FC 002AEF5C 99 1E 00 2F */ stb r8, 0x2f(r30) /* 802B3300 002AEF60 90 1E 00 38 */ stw r0, 0x38(r30) /* 802B3304 002AEF64 90 1E 00 3C */ stw r0, 0x3c(r30) /* 802B3308 002AEF68 48 00 03 35 */ bl WPADWriteMemoryAsync /* 802B330C 002AEF6C 3B 7E 00 10 */ addi r27, r30, 0x10 /* 802B3310 002AEF70 7F A3 EB 78 */ mr r3, r29 /* 802B3314 002AEF74 7F 64 DB 78 */ mr r4, r27 /* 802B3318 002AEF78 38 FC 2F FC */ addi r7, r28, 0x2ffc /* 802B331C 002AEF7C 38 A0 00 10 */ li r5, 0x10 /* 802B3320 002AEF80 38 C0 00 3A */ li r6, 0x3a /* 802B3324 002AEF84 48 00 03 19 */ bl WPADWriteMemoryAsync /* 802B3328 002AEF88 3B 5E 00 20 */ addi r26, r30, 0x20 /* 802B332C 002AEF8C 7F A3 EB 78 */ mr r3, r29 /* 802B3330 002AEF90 7F 44 D3 78 */ mr r4, r26 /* 802B3334 002AEF94 38 FC 2F FC */ addi r7, r28, 0x2ffc /* 802B3338 002AEF98 38 A0 00 10 */ li r5, 0x10 /* 802B333C 002AEF9C 38 C0 00 4A */ li r6, 0x4a /* 802B3340 002AEFA0 48 00 02 FD */ bl WPADWriteMemoryAsync /* 802B3344 002AEFA4 3B 3E 00 30 */ addi r25, r30, 0x30 /* 802B3348 002AEFA8 7F A3 EB 78 */ mr r3, r29 /* 802B334C 002AEFAC 7F 24 CB 78 */ mr r4, r25 /* 802B3350 002AEFB0 38 FC 2F FC */ addi r7, r28, 0x2ffc /* 802B3354 002AEFB4 38 A0 00 08 */ li r5, 8 /* 802B3358 002AEFB8 38 C0 00 5A */ li r6, 0x5a /* 802B335C 002AEFBC 48 00 02 E1 */ bl WPADWriteMemoryAsync /* 802B3360 002AEFC0 3F 80 80 2B */ lis r28, writeCheck2@ha /* 802B3364 002AEFC4 7F A3 EB 78 */ mr r3, r29 /* 802B3368 002AEFC8 7F C4 F3 78 */ mr r4, r30 /* 802B336C 002AEFCC 38 A0 00 10 */ li r5, 0x10 /* 802B3370 002AEFD0 38 FC 30 34 */ addi r7, r28, writeCheck2@l /* 802B3374 002AEFD4 38 C0 00 62 */ li r6, 0x62 /* 802B3378 002AEFD8 48 00 02 C5 */ bl WPADWriteMemoryAsync /* 802B337C 002AEFDC 7F A3 EB 78 */ mr r3, r29 /* 802B3380 002AEFE0 7F 64 DB 78 */ mr r4, r27 /* 802B3384 002AEFE4 38 FC 30 34 */ addi r7, r28, 0x3034 /* 802B3388 002AEFE8 38 A0 00 10 */ li r5, 0x10 /* 802B338C 002AEFEC 38 C0 00 72 */ li r6, 0x72 /* 802B3390 002AEFF0 48 00 02 AD */ bl WPADWriteMemoryAsync /* 802B3394 002AEFF4 7F A3 EB 78 */ mr r3, r29 /* 802B3398 002AEFF8 7F 44 D3 78 */ mr r4, r26 /* 802B339C 002AEFFC 38 FC 30 34 */ addi r7, r28, 0x3034 /* 802B33A0 002AF000 38 A0 00 10 */ li r5, 0x10 /* 802B33A4 002AF004 38 C0 00 82 */ li r6, 0x82 /* 802B33A8 002AF008 48 00 02 95 */ bl WPADWriteMemoryAsync /* 802B33AC 002AF00C 3C E0 80 2B */ lis r7, WriteGameDataSub@ha /* 802B33B0 002AF010 7F A3 EB 78 */ mr r3, r29 /* 802B33B4 002AF014 7F 24 CB 78 */ mr r4, r25 /* 802B33B8 002AF018 38 A0 00 08 */ li r5, 8 /* 802B33BC 002AF01C 38 E7 2E BC */ addi r7, r7, WriteGameDataSub@l /* 802B33C0 002AF020 38 C0 00 92 */ li r6, 0x92 /* 802B33C4 002AF024 48 00 02 79 */ bl WPADWriteMemoryAsync /* 802B33C8 002AF028 7F E3 FB 78 */ mr r3, r31 /* 802B33CC 002AF02C 4B FB B3 B9 */ bl OSRestoreInterrupts /* 802B33D0 002AF030 38 60 00 00 */ li r3, 0 /* 802B33D4 002AF034 48 00 00 30 */ b lbl_802B3404 lbl_802B33D8: /* 802B33D8 002AF038 3B 20 FF FE */ li r25, -2 lbl_802B33DC: /* 802B33DC 002AF03C 7F E3 FB 78 */ mr r3, r31 /* 802B33E0 002AF040 4B FB B3 A5 */ bl OSRestoreInterrupts /* 802B33E4 002AF044 2C 1A 00 00 */ cmpwi r26, 0 /* 802B33E8 002AF048 41 82 00 18 */ beq lbl_802B3400 /* 802B33EC 002AF04C 7F 4C D3 78 */ mr r12, r26 /* 802B33F0 002AF050 7F A3 EB 78 */ mr r3, r29 /* 802B33F4 002AF054 7F 24 CB 78 */ mr r4, r25 /* 802B33F8 002AF058 7D 89 03 A6 */ mtctr r12 /* 802B33FC 002AF05C 4E 80 04 21 */ bctrl lbl_802B3400: /* 802B3400 002AF060 7F 23 CB 78 */ mr r3, r25 lbl_802B3404: /* 802B3404 002AF064 39 61 00 30 */ addi r11, r1, 0x30 /* 802B3408 002AF068 4B F1 3D 5D */ bl _restgpr_23 /* 802B340C 002AF06C 80 01 00 34 */ lwz r0, 0x34(r1) /* 802B3410 002AF070 7C 08 03 A6 */ mtlr r0 /* 802B3414 002AF074 38 21 00 30 */ addi r1, r1, 0x30 /* 802B3418 002AF078 4E 80 00 20 */ blr .global WPADReadGameData WPADReadGameData: /* 802B341C 002AF07C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802B3420 002AF080 7C 08 02 A6 */ mflr r0 /* 802B3424 002AF084 90 01 00 34 */ stw r0, 0x34(r1) /* 802B3428 002AF088 39 61 00 30 */ addi r11, r1, 0x30 /* 802B342C 002AF08C 4B F1 3C E9 */ bl _savegpr_22 /* 802B3430 002AF090 3D 00 80 53 */ lis r8, lbl_80536D70@ha /* 802B3434 002AF094 54 60 10 3A */ slwi r0, r3, 2 /* 802B3438 002AF098 39 08 6D 70 */ addi r8, r8, lbl_80536D70@l /* 802B343C 002AF09C 7C 78 1B 78 */ mr r24, r3 /* 802B3440 002AF0A0 7E E8 00 2E */ lwzx r23, r8, r0 /* 802B3444 002AF0A4 7C 99 23 78 */ mr r25, r4 /* 802B3448 002AF0A8 7C BA 2B 78 */ mr r26, r5 /* 802B344C 002AF0AC 7C DB 33 78 */ mr r27, r6 /* 802B3450 002AF0B0 7C FC 3B 78 */ mr r28, r7 /* 802B3454 002AF0B4 4B FB B3 09 */ bl OSDisableInterrupts /* 802B3458 002AF0B8 82 D7 08 BC */ lwz r22, 0x8bc(r23) /* 802B345C 002AF0BC 7C 7D 1B 78 */ mr r29, r3 /* 802B3460 002AF0C0 80 17 08 DC */ lwz r0, 0x8dc(r23) /* 802B3464 002AF0C4 2C 16 FF FF */ cmpwi r22, -1 /* 802B3468 002AF0C8 41 82 00 C8 */ beq lbl_802B3530 /* 802B346C 002AF0CC 2C 00 00 00 */ cmpwi r0, 0 /* 802B3470 002AF0D0 40 82 00 0C */ bne lbl_802B347C /* 802B3474 002AF0D4 3A C0 FF FE */ li r22, -2 /* 802B3478 002AF0D8 48 00 00 B8 */ b lbl_802B3530 lbl_802B347C: /* 802B347C 002AF0DC 1F D8 00 14 */ mulli r30, r24, 0x14 /* 802B3480 002AF0E0 3F E0 80 54 */ lis r31, lbl_8053A480@ha /* 802B3484 002AF0E4 3B FF A4 80 */ addi r31, r31, lbl_8053A480@l /* 802B3488 002AF0E8 7C 1F F0 2E */ lwzx r0, r31, r30 /* 802B348C 002AF0EC 2C 00 00 00 */ cmpwi r0, 0 /* 802B3490 002AF0F0 40 82 00 9C */ bne lbl_802B352C /* 802B3494 002AF0F4 80 17 00 38 */ lwz r0, 0x38(r23) /* 802B3498 002AF0F8 38 80 00 00 */ li r4, 0 /* 802B349C 002AF0FC 2C 00 00 00 */ cmpwi r0, 0 /* 802B34A0 002AF100 41 82 00 10 */ beq lbl_802B34B0 /* 802B34A4 002AF104 80 17 00 3C */ lwz r0, 0x3c(r23) /* 802B34A8 002AF108 2C 00 00 00 */ cmpwi r0, 0 /* 802B34AC 002AF10C 40 82 00 08 */ bne lbl_802B34B4 lbl_802B34B0: /* 802B34B0 002AF110 38 80 00 01 */ li r4, 1 lbl_802B34B4: /* 802B34B4 002AF114 7C 64 00 D0 */ neg r3, r4 /* 802B34B8 002AF118 38 00 FF FA */ li r0, -6 /* 802B34BC 002AF11C 7C 63 23 78 */ or r3, r3, r4 /* 802B34C0 002AF120 7C 63 FE 70 */ srawi r3, r3, 0x1f /* 802B34C4 002AF124 7C 16 18 79 */ andc. r22, r0, r3 /* 802B34C8 002AF128 40 82 00 68 */ bne lbl_802B3530 /* 802B34CC 002AF12C 80 6D AE 54 */ lwz r3, lbl_80640114-_SDA_BASE_(r13) /* 802B34D0 002AF130 38 97 00 2A */ addi r4, r23, 0x2a /* 802B34D4 002AF134 38 A0 00 04 */ li r5, 4 /* 802B34D8 002AF138 4B F1 6E C1 */ bl memcmp /* 802B34DC 002AF13C 2C 03 00 00 */ cmpwi r3, 0 /* 802B34E0 002AF140 40 82 00 44 */ bne lbl_802B3524 /* 802B34E4 002AF144 38 00 00 01 */ li r0, 1 /* 802B34E8 002AF148 3C 60 80 54 */ lis r3, lbl_8053A480@ha /* 802B34EC 002AF14C 38 63 A4 80 */ addi r3, r3, lbl_8053A480@l /* 802B34F0 002AF150 7C 1F F1 2E */ stwx r0, r31, r30 /* 802B34F4 002AF154 7C 83 F2 14 */ add r4, r3, r30 /* 802B34F8 002AF158 93 84 00 10 */ stw r28, 0x10(r4) /* 802B34FC 002AF15C 7F A3 EB 78 */ mr r3, r29 /* 802B3500 002AF160 4B FB B2 85 */ bl OSRestoreInterrupts /* 802B3504 002AF164 3C E0 80 2B */ lis r7, ResultCallback@ha /* 802B3508 002AF168 7F 03 C3 78 */ mr r3, r24 /* 802B350C 002AF16C 7F 24 CB 78 */ mr r4, r25 /* 802B3510 002AF170 7F 45 D3 78 */ mr r5, r26 /* 802B3514 002AF174 38 DB 00 9A */ addi r6, r27, 0x9a /* 802B3518 002AF178 38 E7 2D 18 */ addi r7, r7, ResultCallback@l /* 802B351C 002AF17C 48 00 00 55 */ bl WPADReadMemoryAsync /* 802B3520 002AF180 48 00 00 38 */ b lbl_802B3558 lbl_802B3524: /* 802B3524 002AF184 3A C0 FF FB */ li r22, -5 /* 802B3528 002AF188 48 00 00 08 */ b lbl_802B3530 lbl_802B352C: /* 802B352C 002AF18C 3A C0 FF FE */ li r22, -2 lbl_802B3530: /* 802B3530 002AF190 7F A3 EB 78 */ mr r3, r29 /* 802B3534 002AF194 4B FB B2 51 */ bl OSRestoreInterrupts /* 802B3538 002AF198 2C 1C 00 00 */ cmpwi r28, 0 /* 802B353C 002AF19C 41 82 00 18 */ beq lbl_802B3554 /* 802B3540 002AF1A0 7F 8C E3 78 */ mr r12, r28 /* 802B3544 002AF1A4 7F 03 C3 78 */ mr r3, r24 /* 802B3548 002AF1A8 7E C4 B3 78 */ mr r4, r22 /* 802B354C 002AF1AC 7D 89 03 A6 */ mtctr r12 /* 802B3550 002AF1B0 4E 80 04 21 */ bctrl lbl_802B3554: /* 802B3554 002AF1B4 7E C3 B3 78 */ mr r3, r22 lbl_802B3558: /* 802B3558 002AF1B8 39 61 00 30 */ addi r11, r1, 0x30 /* 802B355C 002AF1BC 4B F1 3C 05 */ bl _restgpr_22 /* 802B3560 002AF1C0 80 01 00 34 */ lwz r0, 0x34(r1) /* 802B3564 002AF1C4 7C 08 03 A6 */ mtlr r0 /* 802B3568 002AF1C8 38 21 00 30 */ addi r1, r1, 0x30 /* 802B356C 002AF1CC 4E 80 00 20 */ blr .global WPADReadMemoryAsync WPADReadMemoryAsync: /* 802B3570 002AF1D0 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802B3574 002AF1D4 7C 08 02 A6 */ mflr r0 /* 802B3578 002AF1D8 90 01 00 34 */ stw r0, 0x34(r1) /* 802B357C 002AF1DC 39 61 00 30 */ addi r11, r1, 0x30 /* 802B3580 002AF1E0 4B F1 3B 9D */ bl _savegpr_24 /* 802B3584 002AF1E4 3D 00 80 53 */ lis r8, lbl_80536D70@ha /* 802B3588 002AF1E8 54 60 10 3A */ slwi r0, r3, 2 /* 802B358C 002AF1EC 39 08 6D 70 */ addi r8, r8, lbl_80536D70@l /* 802B3590 002AF1F0 7C 78 1B 78 */ mr r24, r3 /* 802B3594 002AF1F4 7F E8 00 2E */ lwzx r31, r8, r0 /* 802B3598 002AF1F8 7C 99 23 78 */ mr r25, r4 /* 802B359C 002AF1FC 7C BA 2B 78 */ mr r26, r5 /* 802B35A0 002AF200 7C DB 33 78 */ mr r27, r6 /* 802B35A4 002AF204 7C FC 3B 78 */ mr r28, r7 /* 802B35A8 002AF208 4B FB B1 B5 */ bl OSDisableInterrupts /* 802B35AC 002AF20C 83 BF 08 BC */ lwz r29, 0x8bc(r31) /* 802B35B0 002AF210 83 DF 08 DC */ lwz r30, 0x8dc(r31) /* 802B35B4 002AF214 4B FB B1 D1 */ bl OSRestoreInterrupts /* 802B35B8 002AF218 2C 1D FF FF */ cmpwi r29, -1 /* 802B35BC 002AF21C 41 82 00 40 */ beq lbl_802B35FC /* 802B35C0 002AF220 2C 1E 00 00 */ cmpwi r30, 0 /* 802B35C4 002AF224 40 82 00 0C */ bne lbl_802B35D0 /* 802B35C8 002AF228 3B A0 FF FE */ li r29, -2 /* 802B35CC 002AF22C 48 00 00 30 */ b lbl_802B35FC lbl_802B35D0: /* 802B35D0 002AF230 7F 24 CB 78 */ mr r4, r25 /* 802B35D4 002AF234 7F 45 D3 78 */ mr r5, r26 /* 802B35D8 002AF238 7F 66 DB 78 */ mr r6, r27 /* 802B35DC 002AF23C 7F 87 E3 78 */ mr r7, r28 /* 802B35E0 002AF240 38 7F 01 60 */ addi r3, r31, 0x160 /* 802B35E4 002AF244 4B FF 99 45 */ bl WPADiSendReadData /* 802B35E8 002AF248 7C 83 00 D0 */ neg r4, r3 /* 802B35EC 002AF24C 38 00 FF FE */ li r0, -2 /* 802B35F0 002AF250 7C 83 1B 78 */ or r3, r4, r3 /* 802B35F4 002AF254 7C 63 FE 70 */ srawi r3, r3, 0x1f /* 802B35F8 002AF258 7C 1D 18 78 */ andc r29, r0, r3 lbl_802B35FC: /* 802B35FC 002AF25C 2C 1D 00 00 */ cmpwi r29, 0 /* 802B3600 002AF260 41 82 00 20 */ beq lbl_802B3620 /* 802B3604 002AF264 2C 1C 00 00 */ cmpwi r28, 0 /* 802B3608 002AF268 41 82 00 18 */ beq lbl_802B3620 /* 802B360C 002AF26C 7F 8C E3 78 */ mr r12, r28 /* 802B3610 002AF270 7F 03 C3 78 */ mr r3, r24 /* 802B3614 002AF274 7F A4 EB 78 */ mr r4, r29 /* 802B3618 002AF278 7D 89 03 A6 */ mtctr r12 /* 802B361C 002AF27C 4E 80 04 21 */ bctrl lbl_802B3620: /* 802B3620 002AF280 39 61 00 30 */ addi r11, r1, 0x30 /* 802B3624 002AF284 7F A3 EB 78 */ mr r3, r29 /* 802B3628 002AF288 4B F1 3B 41 */ bl _restgpr_24 /* 802B362C 002AF28C 80 01 00 34 */ lwz r0, 0x34(r1) /* 802B3630 002AF290 7C 08 03 A6 */ mtlr r0 /* 802B3634 002AF294 38 21 00 30 */ addi r1, r1, 0x30 /* 802B3638 002AF298 4E 80 00 20 */ blr .global WPADWriteMemoryAsync WPADWriteMemoryAsync: /* 802B363C 002AF29C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802B3640 002AF2A0 7C 08 02 A6 */ mflr r0 /* 802B3644 002AF2A4 90 01 00 34 */ stw r0, 0x34(r1) /* 802B3648 002AF2A8 39 61 00 30 */ addi r11, r1, 0x30 /* 802B364C 002AF2AC 4B F1 3A D1 */ bl _savegpr_24 /* 802B3650 002AF2B0 3D 00 80 53 */ lis r8, lbl_80536D70@ha /* 802B3654 002AF2B4 54 60 10 3A */ slwi r0, r3, 2 /* 802B3658 002AF2B8 39 08 6D 70 */ addi r8, r8, lbl_80536D70@l /* 802B365C 002AF2BC 7C 78 1B 78 */ mr r24, r3 /* 802B3660 002AF2C0 7F E8 00 2E */ lwzx r31, r8, r0 /* 802B3664 002AF2C4 7C 99 23 78 */ mr r25, r4 /* 802B3668 002AF2C8 7C BA 2B 78 */ mr r26, r5 /* 802B366C 002AF2CC 7C DB 33 78 */ mr r27, r6 /* 802B3670 002AF2D0 7C FC 3B 78 */ mr r28, r7 /* 802B3674 002AF2D4 4B FB B0 E9 */ bl OSDisableInterrupts /* 802B3678 002AF2D8 83 BF 08 BC */ lwz r29, 0x8bc(r31) /* 802B367C 002AF2DC 83 DF 08 DC */ lwz r30, 0x8dc(r31) /* 802B3680 002AF2E0 4B FB B1 05 */ bl OSRestoreInterrupts /* 802B3684 002AF2E4 2C 1D FF FF */ cmpwi r29, -1 /* 802B3688 002AF2E8 41 82 00 40 */ beq lbl_802B36C8 /* 802B368C 002AF2EC 2C 1E 00 00 */ cmpwi r30, 0 /* 802B3690 002AF2F0 40 82 00 0C */ bne lbl_802B369C /* 802B3694 002AF2F4 3B A0 FF FE */ li r29, -2 /* 802B3698 002AF2F8 48 00 00 30 */ b lbl_802B36C8 lbl_802B369C: /* 802B369C 002AF2FC 7F 24 CB 78 */ mr r4, r25 /* 802B36A0 002AF300 7F 45 D3 78 */ mr r5, r26 /* 802B36A4 002AF304 7F 66 DB 78 */ mr r6, r27 /* 802B36A8 002AF308 7F 87 E3 78 */ mr r7, r28 /* 802B36AC 002AF30C 38 7F 01 60 */ addi r3, r31, 0x160 /* 802B36B0 002AF310 4B FF 96 C1 */ bl WPADiSendWriteData /* 802B36B4 002AF314 7C 83 00 D0 */ neg r4, r3 /* 802B36B8 002AF318 38 00 FF FE */ li r0, -2 /* 802B36BC 002AF31C 7C 83 1B 78 */ or r3, r4, r3 /* 802B36C0 002AF320 7C 63 FE 70 */ srawi r3, r3, 0x1f /* 802B36C4 002AF324 7C 1D 18 78 */ andc r29, r0, r3 lbl_802B36C8: /* 802B36C8 002AF328 2C 1D 00 00 */ cmpwi r29, 0 /* 802B36CC 002AF32C 41 82 00 20 */ beq lbl_802B36EC /* 802B36D0 002AF330 2C 1C 00 00 */ cmpwi r28, 0 /* 802B36D4 002AF334 41 82 00 18 */ beq lbl_802B36EC /* 802B36D8 002AF338 7F 8C E3 78 */ mr r12, r28 /* 802B36DC 002AF33C 7F 03 C3 78 */ mr r3, r24 /* 802B36E0 002AF340 7F A4 EB 78 */ mr r4, r29 /* 802B36E4 002AF344 7D 89 03 A6 */ mtctr r12 /* 802B36E8 002AF348 4E 80 04 21 */ bctrl lbl_802B36EC: /* 802B36EC 002AF34C 39 61 00 30 */ addi r11, r1, 0x30 /* 802B36F0 002AF350 7F A3 EB 78 */ mr r3, r29 /* 802B36F4 002AF354 4B F1 3A 75 */ bl _restgpr_24 /* 802B36F8 002AF358 80 01 00 34 */ lwz r0, 0x34(r1) /* 802B36FC 002AF35C 7C 08 03 A6 */ mtlr r0 /* 802B3700 002AF360 38 21 00 30 */ addi r1, r1, 0x30 /* 802B3704 002AF364 4E 80 00 20 */ blr .global WPADGetGameTitleUtf16 WPADGetGameTitleUtf16: /* 802B3708 002AF368 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802B370C 002AF36C 7C 08 02 A6 */ mflr r0 /* 802B3710 002AF370 3C A0 80 53 */ lis r5, lbl_80536D70@ha /* 802B3714 002AF374 90 01 00 24 */ stw r0, 0x24(r1) /* 802B3718 002AF378 54 60 10 3A */ slwi r0, r3, 2 /* 802B371C 002AF37C 38 A5 6D 70 */ addi r5, r5, lbl_80536D70@l /* 802B3720 002AF380 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802B3724 002AF384 93 C1 00 18 */ stw r30, 0x18(r1) /* 802B3728 002AF388 93 A1 00 14 */ stw r29, 0x14(r1) /* 802B372C 002AF38C 7C 9D 23 78 */ mr r29, r4 /* 802B3730 002AF390 7F E5 00 2E */ lwzx r31, r5, r0 /* 802B3734 002AF394 4B FB B0 29 */ bl OSDisableInterrupts /* 802B3738 002AF398 80 1F 00 38 */ lwz r0, 0x38(r31) /* 802B373C 002AF39C 38 A0 00 00 */ li r5, 0 /* 802B3740 002AF3A0 2C 00 00 00 */ cmpwi r0, 0 /* 802B3744 002AF3A4 41 82 00 10 */ beq lbl_802B3754 /* 802B3748 002AF3A8 80 1F 00 3C */ lwz r0, 0x3c(r31) /* 802B374C 002AF3AC 2C 00 00 00 */ cmpwi r0, 0 /* 802B3750 002AF3B0 40 82 00 08 */ bne lbl_802B3758 lbl_802B3754: /* 802B3754 002AF3B4 38 A0 00 01 */ li r5, 1 lbl_802B3758: /* 802B3758 002AF3B8 7C 85 00 D0 */ neg r4, r5 /* 802B375C 002AF3BC 38 00 FF FC */ li r0, -4 /* 802B3760 002AF3C0 7C 84 2B 78 */ or r4, r4, r5 /* 802B3764 002AF3C4 7C 84 FE 70 */ srawi r4, r4, 0x1f /* 802B3768 002AF3C8 7C 1E 20 79 */ andc. r30, r0, r4 /* 802B376C 002AF3CC 40 82 00 10 */ bne lbl_802B377C /* 802B3770 002AF3D0 38 1F 00 08 */ addi r0, r31, 8 /* 802B3774 002AF3D4 90 1D 00 00 */ stw r0, 0(r29) /* 802B3778 002AF3D8 48 00 00 0C */ b lbl_802B3784 lbl_802B377C: /* 802B377C 002AF3DC 38 00 00 00 */ li r0, 0 /* 802B3780 002AF3E0 90 1D 00 00 */ stw r0, 0(r29) lbl_802B3784: /* 802B3784 002AF3E4 4B FB B0 01 */ bl OSRestoreInterrupts /* 802B3788 002AF3E8 7F C3 F3 78 */ mr r3, r30 /* 802B378C 002AF3EC 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802B3790 002AF3F0 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802B3794 002AF3F4 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802B3798 002AF3F8 80 01 00 24 */ lwz r0, 0x24(r1) /* 802B379C 002AF3FC 7C 08 03 A6 */ mtlr r0 /* 802B37A0 002AF400 38 21 00 20 */ addi r1, r1, 0x20 /* 802B37A4 002AF404 4E 80 00 20 */ blr .global WPADSetGameTitleUtf16 WPADSetGameTitleUtf16: /* 802B37A8 002AF408 3C 80 80 54 */ lis r4, lbl_8053A440@ha /* 802B37AC 002AF40C 38 00 00 02 */ li r0, 2 /* 802B37B0 002AF410 38 A0 00 00 */ li r5, 0 /* 802B37B4 002AF414 38 84 A4 40 */ addi r4, r4, lbl_8053A440@l /* 802B37B8 002AF418 7C 09 03 A6 */ mtctr r0 lbl_802B37BC: /* 802B37BC 002AF41C A0 03 00 00 */ lhz r0, 0(r3) /* 802B37C0 002AF420 2C 00 00 00 */ cmpwi r0, 0 /* 802B37C4 002AF424 B0 04 00 00 */ sth r0, 0(r4) /* 802B37C8 002AF428 41 82 00 84 */ beq lbl_802B384C /* 802B37CC 002AF42C A0 03 00 02 */ lhz r0, 2(r3) /* 802B37D0 002AF430 2C 00 00 00 */ cmpwi r0, 0 /* 802B37D4 002AF434 B0 04 00 02 */ sth r0, 2(r4) /* 802B37D8 002AF438 41 82 00 74 */ beq lbl_802B384C /* 802B37DC 002AF43C A0 03 00 04 */ lhz r0, 4(r3) /* 802B37E0 002AF440 2C 00 00 00 */ cmpwi r0, 0 /* 802B37E4 002AF444 B0 04 00 04 */ sth r0, 4(r4) /* 802B37E8 002AF448 41 82 00 64 */ beq lbl_802B384C /* 802B37EC 002AF44C A0 03 00 06 */ lhz r0, 6(r3) /* 802B37F0 002AF450 2C 00 00 00 */ cmpwi r0, 0 /* 802B37F4 002AF454 B0 04 00 06 */ sth r0, 6(r4) /* 802B37F8 002AF458 41 82 00 54 */ beq lbl_802B384C /* 802B37FC 002AF45C A0 03 00 08 */ lhz r0, 8(r3) /* 802B3800 002AF460 2C 00 00 00 */ cmpwi r0, 0 /* 802B3804 002AF464 B0 04 00 08 */ sth r0, 8(r4) /* 802B3808 002AF468 41 82 00 44 */ beq lbl_802B384C /* 802B380C 002AF46C A0 03 00 0A */ lhz r0, 0xa(r3) /* 802B3810 002AF470 2C 00 00 00 */ cmpwi r0, 0 /* 802B3814 002AF474 B0 04 00 0A */ sth r0, 0xa(r4) /* 802B3818 002AF478 41 82 00 34 */ beq lbl_802B384C /* 802B381C 002AF47C A0 03 00 0C */ lhz r0, 0xc(r3) /* 802B3820 002AF480 2C 00 00 00 */ cmpwi r0, 0 /* 802B3824 002AF484 B0 04 00 0C */ sth r0, 0xc(r4) /* 802B3828 002AF488 41 82 00 24 */ beq lbl_802B384C /* 802B382C 002AF48C A0 03 00 0E */ lhz r0, 0xe(r3) /* 802B3830 002AF490 2C 00 00 00 */ cmpwi r0, 0 /* 802B3834 002AF494 B0 04 00 0E */ sth r0, 0xe(r4) /* 802B3838 002AF498 41 82 00 14 */ beq lbl_802B384C /* 802B383C 002AF49C 38 63 00 10 */ addi r3, r3, 0x10 /* 802B3840 002AF4A0 38 84 00 10 */ addi r4, r4, 0x10 /* 802B3844 002AF4A4 38 A5 00 07 */ addi r5, r5, 7 /* 802B3848 002AF4A8 42 00 FF 74 */ bdnz lbl_802B37BC lbl_802B384C: /* 802B384C 002AF4AC 3C 60 80 54 */ lis r3, lbl_8053A440@ha /* 802B3850 002AF4B0 38 00 00 00 */ li r0, 0 /* 802B3854 002AF4B4 38 63 A4 40 */ addi r3, r3, lbl_8053A440@l /* 802B3858 002AF4B8 B0 03 00 20 */ sth r0, 0x20(r3) /* 802B385C 002AF4BC 4E 80 00 20 */ blr