.include "macros.inc" .section .text, "ax" # 80358914 .global WriteCallback_X2_ WriteCallback_X2_: /* 80358914 00355854 7C 08 02 A6 */ mflr r0 /* 80358918 00355858 90 01 00 04 */ stw r0, 4(r1) /* 8035891C 0035585C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80358920 00355860 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80358924 00355864 93 C1 00 18 */ stw r30, 0x18(r1) /* 80358928 00355868 3B C3 00 00 */ addi r30, r3, 0 /* 8035892C 0035586C 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha /* 80358930 00355870 93 A1 00 14 */ stw r29, 0x14(r1) /* 80358934 00355874 1C BE 01 10 */ mulli r5, r30, 0x110 /* 80358938 00355878 93 81 00 10 */ stw r28, 0x10(r1) /* 8035893C 0035587C 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l /* 80358940 00355880 7C 9C 23 79 */ or. r28, r4, r4 /* 80358944 00355884 7F E0 2A 14 */ add r31, r0, r5 /* 80358948 00355888 41 80 00 F0 */ blt lbl_80358A38 /* 8035894C 0035588C 83 BF 00 C0 */ lwz r29, 0xc0(r31) /* 80358950 00355890 80 7D 00 0C */ lwz r3, 0xc(r29) /* 80358954 00355894 2C 03 00 00 */ cmpwi r3, 0 /* 80358958 00355898 40 80 00 0C */ bge lbl_80358964 /* 8035895C 0035589C 3B 80 FF F2 */ li r28, -14 /* 80358960 003558A0 48 00 00 D8 */ b lbl_80358A38 lbl_80358964: /* 80358964 003558A4 80 1F 00 0C */ lwz r0, 0xc(r31) /* 80358968 003558A8 7C 00 18 50 */ subf r0, r0, r3 /* 8035896C 003558AC 90 1D 00 0C */ stw r0, 0xc(r29) /* 80358970 003558B0 80 1D 00 0C */ lwz r0, 0xc(r29) /* 80358974 003558B4 2C 00 00 00 */ cmpwi r0, 0 /* 80358978 003558B8 41 81 00 54 */ bgt lbl_803589CC /* 8035897C 003558BC 7F E3 FB 78 */ mr r3, r31 /* 80358980 003558C0 4B FF CD FD */ bl __CARDGetDirBlock /* 80358984 003558C4 80 BD 00 04 */ lwz r5, 4(r29) /* 80358988 003558C8 3C 80 80 00 */ lis r4, 0x800000F8@ha /* 8035898C 003558CC 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4) /* 80358990 003558D0 54 A4 30 32 */ slwi r4, r5, 6 /* 80358994 003558D4 7F 83 22 14 */ add r28, r3, r4 /* 80358998 003558D8 54 1D F0 BE */ srwi r29, r0, 2 /* 8035899C 003558DC 4B FE 9D 61 */ bl OSGetTime /* 803589A0 003558E0 38 DD 00 00 */ addi r6, r29, 0 /* 803589A4 003558E4 38 A0 00 00 */ li r5, 0 /* 803589A8 003558E8 48 00 99 7D */ bl func_80362324 /* 803589AC 003558EC 90 9C 00 28 */ stw r4, 0x28(r28) /* 803589B0 003558F0 38 00 00 00 */ li r0, 0 /* 803589B4 003558F4 38 7E 00 00 */ addi r3, r30, 0 /* 803589B8 003558F8 80 9F 00 D0 */ lwz r4, 0xd0(r31) /* 803589BC 003558FC 90 1F 00 D0 */ stw r0, 0xd0(r31) /* 803589C0 00355900 4B FF CF 5D */ bl __CARDUpdateDir /* 803589C4 00355904 7C 7C 1B 78 */ mr r28, r3 /* 803589C8 00355908 48 00 00 68 */ b lbl_80358A30 lbl_803589CC: /* 803589CC 0035590C 7F E3 FB 78 */ mr r3, r31 /* 803589D0 00355910 4B FF CA 45 */ bl __CARDGetFatBlock /* 803589D4 00355914 80 9D 00 08 */ lwz r4, 8(r29) /* 803589D8 00355918 80 1F 00 0C */ lwz r0, 0xc(r31) /* 803589DC 0035591C 7C 04 02 14 */ add r0, r4, r0 /* 803589E0 00355920 90 1D 00 08 */ stw r0, 8(r29) /* 803589E4 00355924 A0 1D 00 10 */ lhz r0, 0x10(r29) /* 803589E8 00355928 54 00 08 3C */ slwi r0, r0, 1 /* 803589EC 0035592C 7C 03 02 2E */ lhzx r0, r3, r0 /* 803589F0 00355930 B0 1D 00 10 */ sth r0, 0x10(r29) /* 803589F4 00355934 A0 9D 00 10 */ lhz r4, 0x10(r29) /* 803589F8 00355938 28 04 00 05 */ cmplwi r4, 5 /* 803589FC 0035593C 41 80 00 10 */ blt lbl_80358A0C /* 80358A00 00355940 A0 1F 00 10 */ lhz r0, 0x10(r31) /* 80358A04 00355944 7C 04 00 40 */ cmplw r4, r0 /* 80358A08 00355948 41 80 00 0C */ blt lbl_80358A14 lbl_80358A0C: /* 80358A0C 0035594C 3B 80 FF FA */ li r28, -6 /* 80358A10 00355950 48 00 00 28 */ b lbl_80358A38 lbl_80358A14: /* 80358A14 00355954 80 1F 00 0C */ lwz r0, 0xc(r31) .global EraseCallback_X2_ /* 80358A18 00355958 3C 60 80 36 */ lis r3, EraseCallback_X2_@ha .global EraseCallback_X2_ /* 80358A1C 0035595C 38 A3 8A 84 */ addi r5, r3, EraseCallback_X2_@l /* 80358A20 00355960 7C 80 21 D6 */ mullw r4, r0, r4 /* 80358A24 00355964 38 7E 00 00 */ addi r3, r30, 0 /* 80358A28 00355968 4B FF AF 91 */ bl __CARDEraseSector /* 80358A2C 0035596C 7C 7C 1B 78 */ mr r28, r3 lbl_80358A30: /* 80358A30 00355970 2C 1C 00 00 */ cmpwi r28, 0 /* 80358A34 00355974 40 80 00 30 */ bge lbl_80358A64 lbl_80358A38: /* 80358A38 00355978 83 BF 00 D0 */ lwz r29, 0xd0(r31) /* 80358A3C 0035597C 38 00 00 00 */ li r0, 0 /* 80358A40 00355980 38 7F 00 00 */ addi r3, r31, 0 /* 80358A44 00355984 90 1F 00 D0 */ stw r0, 0xd0(r31) /* 80358A48 00355988 7F 84 E3 78 */ mr r4, r28 /* 80358A4C 0035598C 4B FF B2 21 */ bl __CARDPutControlBlock /* 80358A50 00355990 39 9D 00 00 */ addi r12, r29, 0 /* 80358A54 00355994 7D 88 03 A6 */ mtlr r12 /* 80358A58 00355998 38 7E 00 00 */ addi r3, r30, 0 /* 80358A5C 0035599C 38 9C 00 00 */ addi r4, r28, 0 /* 80358A60 003559A0 4E 80 00 21 */ blrl lbl_80358A64: /* 80358A64 003559A4 80 01 00 24 */ lwz r0, 0x24(r1) /* 80358A68 003559A8 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80358A6C 003559AC 83 C1 00 18 */ lwz r30, 0x18(r1) /* 80358A70 003559B0 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80358A74 003559B4 83 81 00 10 */ lwz r28, 0x10(r1) /* 80358A78 003559B8 38 21 00 20 */ addi r1, r1, 0x20 /* 80358A7C 003559BC 7C 08 03 A6 */ mtlr r0 /* 80358A80 003559C0 4E 80 00 20 */ blr .global EraseCallback_X2_ EraseCallback_X2_: /* 80358A84 003559C4 7C 08 02 A6 */ mflr r0 /* 80358A88 003559C8 90 01 00 04 */ stw r0, 4(r1) /* 80358A8C 003559CC 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80358A90 003559D0 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80358A94 003559D4 93 C1 00 18 */ stw r30, 0x18(r1) /* 80358A98 003559D8 93 A1 00 14 */ stw r29, 0x14(r1) /* 80358A9C 003559DC 7C 9D 23 79 */ or. r29, r4, r4 /* 80358AA0 003559E0 93 81 00 10 */ stw r28, 0x10(r1) /* 80358AA4 003559E4 3B 83 00 00 */ addi r28, r3, 0 /* 80358AA8 003559E8 1C BC 01 10 */ mulli r5, r28, 0x110 /* 80358AAC 003559EC 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha /* 80358AB0 003559F0 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l /* 80358AB4 003559F4 7F E0 2A 14 */ add r31, r0, r5 /* 80358AB8 003559F8 41 80 00 30 */ blt lbl_80358AE8 /* 80358ABC 003559FC 80 9F 00 C0 */ lwz r4, 0xc0(r31) .global WriteCallback_X2_ /* 80358AC0 00355A00 3C 60 80 36 */ lis r3, WriteCallback_X2_@ha .global WriteCallback_X2_ /* 80358AC4 00355A04 38 E3 89 14 */ addi r7, r3, WriteCallback_X2_@l /* 80358AC8 00355A08 80 BF 00 0C */ lwz r5, 0xc(r31) /* 80358ACC 00355A0C A0 04 00 10 */ lhz r0, 0x10(r4) /* 80358AD0 00355A10 80 DF 00 B4 */ lwz r6, 0xb4(r31) /* 80358AD4 00355A14 38 7C 00 00 */ addi r3, r28, 0 /* 80358AD8 00355A18 7C 85 01 D6 */ mullw r4, r5, r0 /* 80358ADC 00355A1C 4B FF C8 D1 */ bl __CARDWrite /* 80358AE0 00355A20 7C 7D 1B 79 */ or. r29, r3, r3 /* 80358AE4 00355A24 40 80 00 30 */ bge lbl_80358B14 lbl_80358AE8: /* 80358AE8 00355A28 83 DF 00 D0 */ lwz r30, 0xd0(r31) /* 80358AEC 00355A2C 38 00 00 00 */ li r0, 0 /* 80358AF0 00355A30 38 7F 00 00 */ addi r3, r31, 0 /* 80358AF4 00355A34 90 1F 00 D0 */ stw r0, 0xd0(r31) /* 80358AF8 00355A38 7F A4 EB 78 */ mr r4, r29 /* 80358AFC 00355A3C 4B FF B1 71 */ bl __CARDPutControlBlock /* 80358B00 00355A40 39 9E 00 00 */ addi r12, r30, 0 /* 80358B04 00355A44 7D 88 03 A6 */ mtlr r12 /* 80358B08 00355A48 38 7C 00 00 */ addi r3, r28, 0 /* 80358B0C 00355A4C 38 9D 00 00 */ addi r4, r29, 0 /* 80358B10 00355A50 4E 80 00 21 */ blrl lbl_80358B14: /* 80358B14 00355A54 80 01 00 24 */ lwz r0, 0x24(r1) /* 80358B18 00355A58 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80358B1C 00355A5C 83 C1 00 18 */ lwz r30, 0x18(r1) /* 80358B20 00355A60 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80358B24 00355A64 83 81 00 10 */ lwz r28, 0x10(r1) /* 80358B28 00355A68 38 21 00 20 */ addi r1, r1, 0x20 /* 80358B2C 00355A6C 7C 08 03 A6 */ mtlr r0 /* 80358B30 00355A70 4E 80 00 20 */ blr .global CARDWriteAsync CARDWriteAsync: /* 80358B34 00355A74 7C 08 02 A6 */ mflr r0 /* 80358B38 00355A78 90 01 00 04 */ stw r0, 4(r1) /* 80358B3C 00355A7C 94 21 FF C8 */ stwu r1, -0x38(r1) /* 80358B40 00355A80 BF 61 00 24 */ stmw r27, 0x24(r1) /* 80358B44 00355A84 3B 86 00 00 */ addi r28, r6, 0 /* 80358B48 00355A88 3B 65 00 00 */ addi r27, r5, 0 /* 80358B4C 00355A8C 3B E4 00 00 */ addi r31, r4, 0 /* 80358B50 00355A90 3B C3 00 00 */ addi r30, r3, 0 /* 80358B54 00355A94 3B A7 00 00 */ addi r29, r7, 0 /* 80358B58 00355A98 38 9B 00 00 */ addi r4, r27, 0 /* 80358B5C 00355A9C 38 BC 00 00 */ addi r5, r28, 0 /* 80358B60 00355AA0 38 C1 00 1C */ addi r6, r1, 0x1c /* 80358B64 00355AA4 4B FF F9 3D */ bl __CARDSeek /* 80358B68 00355AA8 2C 03 00 00 */ cmpwi r3, 0 /* 80358B6C 00355AAC 40 80 00 08 */ bge lbl_80358B74 /* 80358B70 00355AB0 48 00 00 C4 */ b lbl_80358C34 lbl_80358B74: /* 80358B74 00355AB4 80 61 00 1C */ lwz r3, 0x1c(r1) /* 80358B78 00355AB8 80 83 00 0C */ lwz r4, 0xc(r3) /* 80358B7C 00355ABC 38 84 FF FF */ addi r4, r4, -1 /* 80358B80 00355AC0 7F 80 20 39 */ and. r0, r28, r4 /* 80358B84 00355AC4 40 82 00 0C */ bne lbl_80358B90 /* 80358B88 00355AC8 7F 60 20 39 */ and. r0, r27, r4 /* 80358B8C 00355ACC 41 82 00 10 */ beq lbl_80358B9C lbl_80358B90: /* 80358B90 00355AD0 38 80 FF 80 */ li r4, -128 /* 80358B94 00355AD4 4B FF B0 D9 */ bl __CARDPutControlBlock /* 80358B98 00355AD8 48 00 00 9C */ b lbl_80358C34 lbl_80358B9C: /* 80358B9C 00355ADC 4B FF CB E1 */ bl __CARDGetDirBlock /* 80358BA0 00355AE0 80 1E 00 04 */ lwz r0, 4(r30) /* 80358BA4 00355AE4 54 00 30 32 */ slwi r0, r0, 6 /* 80358BA8 00355AE8 7C 83 02 14 */ add r4, r3, r0 /* 80358BAC 00355AEC 80 61 00 1C */ lwz r3, 0x1c(r1) /* 80358BB0 00355AF0 4B FF F1 C1 */ bl __CARDIsWritable /* 80358BB4 00355AF4 7C 64 1B 79 */ or. r4, r3, r3 /* 80358BB8 00355AF8 40 80 00 10 */ bge lbl_80358BC8 /* 80358BBC 00355AFC 80 61 00 1C */ lwz r3, 0x1c(r1) /* 80358BC0 00355B00 4B FF B0 AD */ bl __CARDPutControlBlock /* 80358BC4 00355B04 48 00 00 70 */ b lbl_80358C34 lbl_80358BC8: /* 80358BC8 00355B08 38 7F 00 00 */ addi r3, r31, 0 /* 80358BCC 00355B0C 38 9B 00 00 */ addi r4, r27, 0 /* 80358BD0 00355B10 4B FE 2A 0D */ bl DCStoreRange /* 80358BD4 00355B14 28 1D 00 00 */ cmplwi r29, 0 /* 80358BD8 00355B18 41 82 00 0C */ beq lbl_80358BE4 /* 80358BDC 00355B1C 7F A0 EB 78 */ mr r0, r29 /* 80358BE0 00355B20 48 00 00 0C */ b lbl_80358BEC lbl_80358BE4: .global __CARDDefaultApiCallback /* 80358BE4 00355B24 3C 60 80 35 */ lis r3, __CARDDefaultApiCallback@ha .global __CARDDefaultApiCallback /* 80358BE8 00355B28 38 03 2A 30 */ addi r0, r3, __CARDDefaultApiCallback@l lbl_80358BEC: /* 80358BEC 00355B2C 80 81 00 1C */ lwz r4, 0x1c(r1) .global EraseCallback_X2_ /* 80358BF0 00355B30 3C 60 80 36 */ lis r3, EraseCallback_X2_@ha .global EraseCallback_X2_ /* 80358BF4 00355B34 38 A3 8A 84 */ addi r5, r3, EraseCallback_X2_@l /* 80358BF8 00355B38 90 04 00 D0 */ stw r0, 0xd0(r4) /* 80358BFC 00355B3C 80 61 00 1C */ lwz r3, 0x1c(r1) /* 80358C00 00355B40 93 E3 00 B4 */ stw r31, 0xb4(r3) /* 80358C04 00355B44 80 61 00 1C */ lwz r3, 0x1c(r1) /* 80358C08 00355B48 A0 1E 00 10 */ lhz r0, 0x10(r30) /* 80358C0C 00355B4C 80 83 00 0C */ lwz r4, 0xc(r3) /* 80358C10 00355B50 80 7E 00 00 */ lwz r3, 0(r30) /* 80358C14 00355B54 7C 84 01 D6 */ mullw r4, r4, r0 /* 80358C18 00355B58 4B FF AD A1 */ bl __CARDEraseSector /* 80358C1C 00355B5C 7C 7E 1B 79 */ or. r30, r3, r3 /* 80358C20 00355B60 40 80 00 10 */ bge lbl_80358C30 /* 80358C24 00355B64 80 61 00 1C */ lwz r3, 0x1c(r1) /* 80358C28 00355B68 7F C4 F3 78 */ mr r4, r30 /* 80358C2C 00355B6C 4B FF B0 41 */ bl __CARDPutControlBlock lbl_80358C30: /* 80358C30 00355B70 7F C3 F3 78 */ mr r3, r30 lbl_80358C34: /* 80358C34 00355B74 BB 61 00 24 */ lmw r27, 0x24(r1) /* 80358C38 00355B78 80 01 00 3C */ lwz r0, 0x3c(r1) /* 80358C3C 00355B7C 38 21 00 38 */ addi r1, r1, 0x38 /* 80358C40 00355B80 7C 08 03 A6 */ mtlr r0 /* 80358C44 00355B84 4E 80 00 20 */ blr .global CARDWrite CARDWrite: /* 80358C48 00355B88 7C 08 02 A6 */ mflr r0 .global __CARDSyncCallback /* 80358C4C 00355B8C 3C E0 80 35 */ lis r7, __CARDSyncCallback@ha /* 80358C50 00355B90 90 01 00 04 */ stw r0, 4(r1) .global __CARDSyncCallback /* 80358C54 00355B94 38 E7 2A 34 */ addi r7, r7, __CARDSyncCallback@l /* 80358C58 00355B98 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80358C5C 00355B9C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80358C60 00355BA0 3B E3 00 00 */ addi r31, r3, 0 /* 80358C64 00355BA4 4B FF FE D1 */ bl CARDWriteAsync /* 80358C68 00355BA8 2C 03 00 00 */ cmpwi r3, 0 /* 80358C6C 00355BAC 40 80 00 08 */ bge lbl_80358C74 /* 80358C70 00355BB0 48 00 00 0C */ b lbl_80358C7C lbl_80358C74: /* 80358C74 00355BB4 80 7F 00 00 */ lwz r3, 0(r31) /* 80358C78 00355BB8 4B FF B1 A9 */ bl __CARDSync lbl_80358C7C: /* 80358C7C 00355BBC 80 01 00 24 */ lwz r0, 0x24(r1) /* 80358C80 00355BC0 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80358C84 00355BC4 38 21 00 20 */ addi r1, r1, 0x20 /* 80358C88 00355BC8 7C 08 03 A6 */ mtlr r0 /* 80358C8C 00355BCC 4E 80 00 20 */ blr