tp/asm/card/CARDMount.s

835 lines
39 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 80356948
.global IsCard
IsCard:
/* 80356948 00353888 54 60 00 1F */ rlwinm. r0, r3, 0, 0, 0xf
/* 8035694C 0035388C 41 82 00 24 */ beq lbl_80356970
/* 80356950 00353890 3C 03 80 00 */ addis r0, r3, 0x8000
/* 80356954 00353894 28 00 00 04 */ cmplwi r0, 4
/* 80356958 00353898 40 82 00 10 */ bne lbl_80356968
/* 8035695C 0035389C A0 0D 84 F0 */ lhz r0, lbl_80450A70-_SDA_BASE_(r13)
/* 80356960 003538A0 28 00 FF FF */ cmplwi r0, 0xffff
/* 80356964 003538A4 40 82 00 0C */ bne lbl_80356970
lbl_80356968:
/* 80356968 003538A8 38 60 00 00 */ li r3, 0
/* 8035696C 003538AC 4E 80 00 20 */ blr
lbl_80356970:
/* 80356970 003538B0 54 60 07 BF */ clrlwi. r0, r3, 0x1e
/* 80356974 003538B4 41 82 00 0C */ beq lbl_80356980
/* 80356978 003538B8 38 60 00 00 */ li r3, 0
/* 8035697C 003538BC 4E 80 00 20 */ blr
lbl_80356980:
/* 80356980 003538C0 54 65 06 3A */ rlwinm r5, r3, 0, 0x18, 0x1d
/* 80356984 003538C4 2C 05 00 20 */ cmpwi r5, 0x20
/* 80356988 003538C8 41 82 00 48 */ beq lbl_803569D0
/* 8035698C 003538CC 40 80 00 28 */ bge lbl_803569B4
/* 80356990 003538D0 2C 05 00 08 */ cmpwi r5, 8
/* 80356994 003538D4 41 82 00 3C */ beq lbl_803569D0
/* 80356998 003538D8 40 80 00 10 */ bge lbl_803569A8
/* 8035699C 003538DC 2C 05 00 04 */ cmpwi r5, 4
/* 803569A0 003538E0 41 82 00 30 */ beq lbl_803569D0
/* 803569A4 003538E4 48 00 00 24 */ b lbl_803569C8
lbl_803569A8:
/* 803569A8 003538E8 2C 05 00 10 */ cmpwi r5, 0x10
/* 803569AC 003538EC 41 82 00 24 */ beq lbl_803569D0
/* 803569B0 003538F0 48 00 00 18 */ b lbl_803569C8
lbl_803569B4:
/* 803569B4 003538F4 2C 05 00 80 */ cmpwi r5, 0x80
/* 803569B8 003538F8 41 82 00 18 */ beq lbl_803569D0
/* 803569BC 003538FC 40 80 00 0C */ bge lbl_803569C8
/* 803569C0 00353900 2C 05 00 40 */ cmpwi r5, 0x40
/* 803569C4 00353904 41 82 00 0C */ beq lbl_803569D0
lbl_803569C8:
/* 803569C8 00353908 38 60 00 00 */ li r3, 0
/* 803569CC 0035390C 4E 80 00 20 */ blr
lbl_803569D0:
/* 803569D0 00353910 3C 80 80 3D */ lis r4, lbl_803D2000@ha
/* 803569D4 00353914 54 63 BE FA */ rlwinm r3, r3, 0x17, 0x1b, 0x1d
/* 803569D8 00353918 38 04 20 00 */ addi r0, r4, lbl_803D2000@l
/* 803569DC 0035391C 7C 60 1A 14 */ add r3, r0, r3
/* 803569E0 00353920 80 63 00 00 */ lwz r3, 0(r3)
/* 803569E4 00353924 2C 03 00 00 */ cmpwi r3, 0
/* 803569E8 00353928 40 82 00 0C */ bne lbl_803569F4
/* 803569EC 0035392C 38 60 00 00 */ li r3, 0
/* 803569F0 00353930 4E 80 00 20 */ blr
lbl_803569F4:
/* 803569F4 00353934 54 A0 88 DC */ rlwinm r0, r5, 0x11, 3, 0xe
/* 803569F8 00353938 7C 00 1B 96 */ divwu r0, r0, r3
/* 803569FC 0035393C 28 00 00 08 */ cmplwi r0, 8
/* 80356A00 00353940 40 80 00 0C */ bge lbl_80356A0C
/* 80356A04 00353944 38 60 00 00 */ li r3, 0
/* 80356A08 00353948 4E 80 00 20 */ blr
lbl_80356A0C:
/* 80356A0C 0035394C 38 60 00 01 */ li r3, 1
/* 80356A10 00353950 4E 80 00 20 */ blr
.global CARDProbe
CARDProbe:
/* 80356A14 00353954 7C 08 02 A6 */ mflr r0
/* 80356A18 00353958 3C 80 80 00 */ lis r4, 0x800030E3@ha
/* 80356A1C 0035395C 90 01 00 04 */ stw r0, 4(r1)
/* 80356A20 00353960 94 21 FF F8 */ stwu r1, -8(r1)
/* 80356A24 00353964 88 04 30 E3 */ lbz r0, 0x800030E3@l(r4)
/* 80356A28 00353968 54 00 06 31 */ rlwinm. r0, r0, 0, 0x18, 0x18
/* 80356A2C 0035396C 41 82 00 0C */ beq lbl_80356A38
/* 80356A30 00353970 38 60 00 00 */ li r3, 0
/* 80356A34 00353974 48 00 00 08 */ b lbl_80356A3C
lbl_80356A38:
/* 80356A38 00353978 4B FE CB 35 */ bl EXIProbe
lbl_80356A3C:
/* 80356A3C 0035397C 80 01 00 0C */ lwz r0, 0xc(r1)
/* 80356A40 00353980 38 21 00 08 */ addi r1, r1, 8
/* 80356A44 00353984 7C 08 03 A6 */ mtlr r0
/* 80356A48 00353988 4E 80 00 20 */ blr
.global CARDProbeEx
CARDProbeEx:
/* 80356A4C 0035398C 7C 08 02 A6 */ mflr r0
/* 80356A50 00353990 90 01 00 04 */ stw r0, 4(r1)
/* 80356A54 00353994 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80356A58 00353998 BF 61 00 1C */ stmw r27, 0x1c(r1)
/* 80356A5C 0035399C 7C 7B 1B 79 */ or. r27, r3, r3
/* 80356A60 003539A0 3B 84 00 00 */ addi r28, r4, 0
/* 80356A64 003539A4 3B E5 00 00 */ addi r31, r5, 0
/* 80356A68 003539A8 41 80 00 0C */ blt lbl_80356A74
/* 80356A6C 003539AC 2C 1B 00 02 */ cmpwi r27, 2
/* 80356A70 003539B0 41 80 00 0C */ blt lbl_80356A7C
lbl_80356A74:
/* 80356A74 003539B4 38 60 FF 80 */ li r3, -128
/* 80356A78 003539B8 48 00 01 3C */ b lbl_80356BB4
lbl_80356A7C:
/* 80356A7C 003539BC 3C 60 80 00 */ lis r3, 0x800030E3@ha
/* 80356A80 003539C0 88 03 30 E3 */ lbz r0, 0x800030E3@l(r3)
/* 80356A84 003539C4 54 00 06 31 */ rlwinm. r0, r0, 0, 0x18, 0x18
/* 80356A88 003539C8 41 82 00 0C */ beq lbl_80356A94
/* 80356A8C 003539CC 38 60 FF FD */ li r3, -3
/* 80356A90 003539D0 48 00 01 24 */ b lbl_80356BB4
lbl_80356A94:
/* 80356A94 003539D4 1C 9B 01 10 */ mulli r4, r27, 0x110
/* 80356A98 003539D8 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
/* 80356A9C 003539DC 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
/* 80356AA0 003539E0 7F C0 22 14 */ add r30, r0, r4
/* 80356AA4 003539E4 4B FE 6C 51 */ bl __RAS_OSDisableInterrupts_begin
/* 80356AA8 003539E8 3B A3 00 00 */ addi r29, r3, 0
/* 80356AAC 003539EC 38 7B 00 00 */ addi r3, r27, 0
/* 80356AB0 003539F0 4B FE CB 3D */ bl EXIProbeEx
/* 80356AB4 003539F4 2C 03 FF FF */ cmpwi r3, -1
/* 80356AB8 003539F8 40 82 00 0C */ bne lbl_80356AC4
/* 80356ABC 003539FC 3B C0 FF FD */ li r30, -3
/* 80356AC0 00353A00 48 00 00 E8 */ b lbl_80356BA8
lbl_80356AC4:
/* 80356AC4 00353A04 2C 03 00 00 */ cmpwi r3, 0
/* 80356AC8 00353A08 40 82 00 0C */ bne lbl_80356AD4
/* 80356ACC 00353A0C 3B C0 FF FF */ li r30, -1
/* 80356AD0 00353A10 48 00 00 D8 */ b lbl_80356BA8
lbl_80356AD4:
/* 80356AD4 00353A14 80 1E 00 00 */ lwz r0, 0(r30)
/* 80356AD8 00353A18 2C 00 00 00 */ cmpwi r0, 0
/* 80356ADC 00353A1C 41 82 00 40 */ beq lbl_80356B1C
/* 80356AE0 00353A20 80 1E 00 24 */ lwz r0, 0x24(r30)
/* 80356AE4 00353A24 2C 00 00 01 */ cmpwi r0, 1
/* 80356AE8 00353A28 40 80 00 0C */ bge lbl_80356AF4
/* 80356AEC 00353A2C 3B C0 FF FF */ li r30, -1
/* 80356AF0 00353A30 48 00 00 B8 */ b lbl_80356BA8
lbl_80356AF4:
/* 80356AF4 00353A34 28 1C 00 00 */ cmplwi r28, 0
/* 80356AF8 00353A38 41 82 00 0C */ beq lbl_80356B04
/* 80356AFC 00353A3C A0 1E 00 08 */ lhz r0, 8(r30)
/* 80356B00 00353A40 90 1C 00 00 */ stw r0, 0(r28)
lbl_80356B04:
/* 80356B04 00353A44 28 1F 00 00 */ cmplwi r31, 0
/* 80356B08 00353A48 41 82 00 0C */ beq lbl_80356B14
/* 80356B0C 00353A4C 80 1E 00 0C */ lwz r0, 0xc(r30)
/* 80356B10 00353A50 90 1F 00 00 */ stw r0, 0(r31)
lbl_80356B14:
/* 80356B14 00353A54 3B C0 00 00 */ li r30, 0
/* 80356B18 00353A58 48 00 00 90 */ b lbl_80356BA8
lbl_80356B1C:
/* 80356B1C 00353A5C 7F 63 DB 78 */ mr r3, r27
/* 80356B20 00353A60 4B FE D6 D9 */ bl EXIGetState
/* 80356B24 00353A64 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
/* 80356B28 00353A68 41 82 00 0C */ beq lbl_80356B34
/* 80356B2C 00353A6C 3B C0 FF FE */ li r30, -2
/* 80356B30 00353A70 48 00 00 78 */ b lbl_80356BA8
lbl_80356B34:
/* 80356B34 00353A74 38 7B 00 00 */ addi r3, r27, 0
/* 80356B38 00353A78 38 A1 00 14 */ addi r5, r1, 0x14
/* 80356B3C 00353A7C 38 80 00 00 */ li r4, 0
/* 80356B40 00353A80 4B FE D6 F9 */ bl EXIGetID
/* 80356B44 00353A84 2C 03 00 00 */ cmpwi r3, 0
/* 80356B48 00353A88 40 82 00 0C */ bne lbl_80356B54
/* 80356B4C 00353A8C 3B C0 FF FF */ li r30, -1
/* 80356B50 00353A90 48 00 00 58 */ b lbl_80356BA8
lbl_80356B54:
/* 80356B54 00353A94 80 61 00 14 */ lwz r3, 0x14(r1)
/* 80356B58 00353A98 4B FF FD F1 */ bl IsCard
/* 80356B5C 00353A9C 2C 03 00 00 */ cmpwi r3, 0
/* 80356B60 00353AA0 41 82 00 44 */ beq lbl_80356BA4
/* 80356B64 00353AA4 28 1C 00 00 */ cmplwi r28, 0
/* 80356B68 00353AA8 41 82 00 10 */ beq lbl_80356B78
/* 80356B6C 00353AAC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80356B70 00353AB0 54 00 06 3A */ rlwinm r0, r0, 0, 0x18, 0x1d
/* 80356B74 00353AB4 90 1C 00 00 */ stw r0, 0(r28)
lbl_80356B78:
/* 80356B78 00353AB8 28 1F 00 00 */ cmplwi r31, 0
/* 80356B7C 00353ABC 41 82 00 20 */ beq lbl_80356B9C
/* 80356B80 00353AC0 80 81 00 14 */ lwz r4, 0x14(r1)
/* 80356B84 00353AC4 3C 60 80 3D */ lis r3, lbl_803D2000@ha
/* 80356B88 00353AC8 38 03 20 00 */ addi r0, r3, lbl_803D2000@l
/* 80356B8C 00353ACC 54 83 BE FA */ rlwinm r3, r4, 0x17, 0x1b, 0x1d
/* 80356B90 00353AD0 7C 60 1A 14 */ add r3, r0, r3
/* 80356B94 00353AD4 80 03 00 00 */ lwz r0, 0(r3)
/* 80356B98 00353AD8 90 1F 00 00 */ stw r0, 0(r31)
lbl_80356B9C:
/* 80356B9C 00353ADC 3B C0 00 00 */ li r30, 0
/* 80356BA0 00353AE0 48 00 00 08 */ b lbl_80356BA8
lbl_80356BA4:
/* 80356BA4 00353AE4 3B C0 FF FE */ li r30, -2
lbl_80356BA8:
/* 80356BA8 00353AE8 7F A3 EB 78 */ mr r3, r29
/* 80356BAC 00353AEC 4B FE 6B 71 */ bl OSRestoreInterrupts
/* 80356BB0 00353AF0 7F C3 F3 78 */ mr r3, r30
lbl_80356BB4:
/* 80356BB4 00353AF4 BB 61 00 1C */ lmw r27, 0x1c(r1)
/* 80356BB8 00353AF8 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80356BBC 00353AFC 38 21 00 30 */ addi r1, r1, 0x30
/* 80356BC0 00353B00 7C 08 03 A6 */ mtlr r0
/* 80356BC4 00353B04 4E 80 00 20 */ blr
.global DoMount
DoMount:
/* 80356BC8 00353B08 7C 08 02 A6 */ mflr r0
/* 80356BCC 00353B0C 90 01 00 04 */ stw r0, 4(r1)
/* 80356BD0 00353B10 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80356BD4 00353B14 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 80356BD8 00353B18 93 C1 00 28 */ stw r30, 0x28(r1)
/* 80356BDC 00353B1C 93 A1 00 24 */ stw r29, 0x24(r1)
/* 80356BE0 00353B20 3B A3 00 00 */ addi r29, r3, 0
/* 80356BE4 00353B24 1C 9D 01 10 */ mulli r4, r29, 0x110
/* 80356BE8 00353B28 93 81 00 20 */ stw r28, 0x20(r1)
/* 80356BEC 00353B2C 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
/* 80356BF0 00353B30 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
/* 80356BF4 00353B34 7C 60 22 14 */ add r3, r0, r4
/* 80356BF8 00353B38 80 03 00 24 */ lwz r0, 0x24(r3)
/* 80356BFC 00353B3C 3B E3 00 00 */ addi r31, r3, 0
/* 80356C00 00353B40 2C 00 00 00 */ cmpwi r0, 0
/* 80356C04 00353B44 40 82 02 F0 */ bne lbl_80356EF4
/* 80356C08 00353B48 38 7D 00 00 */ addi r3, r29, 0
/* 80356C0C 00353B4C 38 A1 00 18 */ addi r5, r1, 0x18
/* 80356C10 00353B50 38 80 00 00 */ li r4, 0
/* 80356C14 00353B54 4B FE D6 25 */ bl EXIGetID
/* 80356C18 00353B58 2C 03 00 00 */ cmpwi r3, 0
/* 80356C1C 00353B5C 40 82 00 0C */ bne lbl_80356C28
/* 80356C20 00353B60 3B C0 FF FD */ li r30, -3
/* 80356C24 00353B64 48 00 00 20 */ b lbl_80356C44
lbl_80356C28:
/* 80356C28 00353B68 80 61 00 18 */ lwz r3, 0x18(r1)
/* 80356C2C 00353B6C 4B FF FD 1D */ bl IsCard
/* 80356C30 00353B70 2C 03 00 00 */ cmpwi r3, 0
/* 80356C34 00353B74 41 82 00 0C */ beq lbl_80356C40
/* 80356C38 00353B78 3B C0 00 00 */ li r30, 0
/* 80356C3C 00353B7C 48 00 00 08 */ b lbl_80356C44
lbl_80356C40:
/* 80356C40 00353B80 3B C0 FF FE */ li r30, -2
lbl_80356C44:
/* 80356C44 00353B84 2C 1E 00 00 */ cmpwi r30, 0
/* 80356C48 00353B88 41 80 03 88 */ blt lbl_80356FD0
/* 80356C4C 00353B8C 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80356C50 00353B90 3C 80 80 3D */ lis r4, lbl_803D2000@ha
/* 80356C54 00353B94 38 A4 20 00 */ addi r5, r4, lbl_803D2000@l
/* 80356C58 00353B98 90 1F 01 08 */ stw r0, 0x108(r31)
/* 80356C5C 00353B9C 3C 60 80 3D */ lis r3, lbl_803D2020@ha
/* 80356C60 00353BA0 38 03 20 20 */ addi r0, r3, lbl_803D2020@l
/* 80356C64 00353BA4 80 C1 00 18 */ lwz r6, 0x18(r1)
/* 80356C68 00353BA8 38 7D 00 00 */ addi r3, r29, 0
/* 80356C6C 00353BAC 38 9F 00 12 */ addi r4, r31, 0x12
/* 80356C70 00353BB0 54 C6 06 3A */ rlwinm r6, r6, 0, 0x18, 0x1d
/* 80356C74 00353BB4 B0 DF 00 08 */ sth r6, 8(r31)
/* 80356C78 00353BB8 80 C1 00 18 */ lwz r6, 0x18(r1)
/* 80356C7C 00353BBC 54 C6 BE FA */ rlwinm r6, r6, 0x17, 0x1b, 0x1d
/* 80356C80 00353BC0 7C A5 32 14 */ add r5, r5, r6
/* 80356C84 00353BC4 80 A5 00 00 */ lwz r5, 0(r5)
/* 80356C88 00353BC8 90 BF 00 0C */ stw r5, 0xc(r31)
/* 80356C8C 00353BCC A0 DF 00 08 */ lhz r6, 8(r31)
/* 80356C90 00353BD0 80 BF 00 0C */ lwz r5, 0xc(r31)
/* 80356C94 00353BD4 54 C6 A0 16 */ slwi r6, r6, 0x14
/* 80356C98 00353BD8 7C C6 1E 70 */ srawi r6, r6, 3
/* 80356C9C 00353BDC 7C C6 01 94 */ addze r6, r6
/* 80356CA0 00353BE0 7C A6 2B D6 */ divw r5, r6, r5
/* 80356CA4 00353BE4 B0 BF 00 10 */ sth r5, 0x10(r31)
/* 80356CA8 00353BE8 80 A1 00 18 */ lwz r5, 0x18(r1)
/* 80356CAC 00353BEC 54 A5 D6 FA */ rlwinm r5, r5, 0x1a, 0x1b, 0x1d
/* 80356CB0 00353BF0 7C A0 2A 14 */ add r5, r0, r5
/* 80356CB4 00353BF4 80 05 00 00 */ lwz r0, 0(r5)
/* 80356CB8 00353BF8 90 1F 00 14 */ stw r0, 0x14(r31)
/* 80356CBC 00353BFC 4B FF C2 79 */ bl __CARDReadVendorID
/* 80356CC0 00353C00 7C 7E 1B 79 */ or. r30, r3, r3
/* 80356CC4 00353C04 41 80 03 0C */ blt lbl_80356FD0
/* 80356CC8 00353C08 4B FF D2 41 */ bl CARDGetFastMode
/* 80356CCC 00353C0C 2C 03 00 00 */ cmpwi r3, 0
/* 80356CD0 00353C10 41 82 00 20 */ beq lbl_80356CF0
/* 80356CD4 00353C14 A0 1F 00 12 */ lhz r0, 0x12(r31)
/* 80356CD8 00353C18 7C 00 46 70 */ srawi r0, r0, 8
/* 80356CDC 00353C1C 2C 00 00 EC */ cmpwi r0, 0xec
/* 80356CE0 00353C20 40 82 00 10 */ bne lbl_80356CF0
/* 80356CE4 00353C24 38 00 02 00 */ li r0, 0x200
/* 80356CE8 00353C28 B0 1F 00 0A */ sth r0, 0xa(r31)
/* 80356CEC 00353C2C 48 00 00 0C */ b lbl_80356CF8
lbl_80356CF0:
/* 80356CF0 00353C30 38 00 00 80 */ li r0, 0x80
/* 80356CF4 00353C34 B0 1F 00 0A */ sth r0, 0xa(r31)
lbl_80356CF8:
/* 80356CF8 00353C38 7F A3 EB 78 */ mr r3, r29
/* 80356CFC 00353C3C 4B FF C3 29 */ bl __CARDClearStatus
/* 80356D00 00353C40 7C 7E 1B 79 */ or. r30, r3, r3
/* 80356D04 00353C44 41 80 02 CC */ blt lbl_80356FD0
/* 80356D08 00353C48 38 7D 00 00 */ addi r3, r29, 0
/* 80356D0C 00353C4C 38 81 00 14 */ addi r4, r1, 0x14
/* 80356D10 00353C50 4B FF C1 35 */ bl __CARDReadStatus
/* 80356D14 00353C54 7C 7E 1B 79 */ or. r30, r3, r3
/* 80356D18 00353C58 41 80 02 B8 */ blt lbl_80356FD0
/* 80356D1C 00353C5C 7F A3 EB 78 */ mr r3, r29
/* 80356D20 00353C60 4B FE C8 4D */ bl EXIProbe
/* 80356D24 00353C64 2C 03 00 00 */ cmpwi r3, 0
/* 80356D28 00353C68 40 82 00 0C */ bne lbl_80356D34
/* 80356D2C 00353C6C 3B C0 FF FD */ li r30, -3
/* 80356D30 00353C70 48 00 02 A0 */ b lbl_80356FD0
lbl_80356D34:
/* 80356D34 00353C74 88 01 00 14 */ lbz r0, 0x14(r1)
/* 80356D38 00353C78 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19
/* 80356D3C 00353C7C 40 82 01 14 */ bne lbl_80356E50
/* 80356D40 00353C80 38 7D 00 00 */ addi r3, r29, 0
/* 80356D44 00353C84 38 9F 00 18 */ addi r4, r31, 0x18
/* 80356D48 00353C88 4B FF D5 51 */ bl __CARDUnlock
/* 80356D4C 00353C8C 7C 7E 1B 79 */ or. r30, r3, r3
/* 80356D50 00353C90 41 80 02 80 */ blt lbl_80356FD0
/* 80356D54 00353C94 4B FE 94 4D */ bl __OSLockSramEx
/* 80356D58 00353C98 1C 1D 00 0C */ mulli r0, r29, 0xc
/* 80356D5C 00353C9C 7C 83 02 14 */ add r4, r3, r0
/* 80356D60 00353CA0 88 1F 00 18 */ lbz r0, 0x18(r31)
/* 80356D64 00353CA4 38 BF 00 18 */ addi r5, r31, 0x18
/* 80356D68 00353CA8 98 04 00 00 */ stb r0, 0(r4)
/* 80356D6C 00353CAC 39 05 00 02 */ addi r8, r5, 2
/* 80356D70 00353CB0 39 25 00 03 */ addi r9, r5, 3
/* 80356D74 00353CB4 88 FF 00 18 */ lbz r7, 0x18(r31)
/* 80356D78 00353CB8 39 45 00 04 */ addi r10, r5, 4
/* 80356D7C 00353CBC 88 1F 00 19 */ lbz r0, 0x19(r31)
/* 80356D80 00353CC0 39 65 00 05 */ addi r11, r5, 5
/* 80356D84 00353CC4 39 85 00 06 */ addi r12, r5, 6
/* 80356D88 00353CC8 98 04 00 01 */ stb r0, 1(r4)
/* 80356D8C 00353CCC 3B 85 00 07 */ addi r28, r5, 7
/* 80356D90 00353CD0 38 A0 00 08 */ li r5, 8
/* 80356D94 00353CD4 88 1F 00 19 */ lbz r0, 0x19(r31)
/* 80356D98 00353CD8 88 C8 00 00 */ lbz r6, 0(r8)
/* 80356D9C 00353CDC 7C 07 02 14 */ add r0, r7, r0
/* 80356DA0 00353CE0 98 C4 00 02 */ stb r6, 2(r4)
/* 80356DA4 00353CE4 88 E8 00 00 */ lbz r7, 0(r8)
/* 80356DA8 00353CE8 88 C9 00 00 */ lbz r6, 0(r9)
/* 80356DAC 00353CEC 7C 00 3A 14 */ add r0, r0, r7
/* 80356DB0 00353CF0 98 C4 00 03 */ stb r6, 3(r4)
/* 80356DB4 00353CF4 88 E9 00 00 */ lbz r7, 0(r9)
/* 80356DB8 00353CF8 88 CA 00 00 */ lbz r6, 0(r10)
/* 80356DBC 00353CFC 7C 00 3A 14 */ add r0, r0, r7
/* 80356DC0 00353D00 98 C4 00 04 */ stb r6, 4(r4)
/* 80356DC4 00353D04 88 EA 00 00 */ lbz r7, 0(r10)
/* 80356DC8 00353D08 88 CB 00 00 */ lbz r6, 0(r11)
/* 80356DCC 00353D0C 7C 00 3A 14 */ add r0, r0, r7
/* 80356DD0 00353D10 98 C4 00 05 */ stb r6, 5(r4)
/* 80356DD4 00353D14 88 EB 00 00 */ lbz r7, 0(r11)
/* 80356DD8 00353D18 88 CC 00 00 */ lbz r6, 0(r12)
/* 80356DDC 00353D1C 7C 00 3A 14 */ add r0, r0, r7
/* 80356DE0 00353D20 98 C4 00 06 */ stb r6, 6(r4)
/* 80356DE4 00353D24 88 EC 00 00 */ lbz r7, 0(r12)
/* 80356DE8 00353D28 88 DC 00 00 */ lbz r6, 0(r28)
/* 80356DEC 00353D2C 7C 00 3A 14 */ add r0, r0, r7
/* 80356DF0 00353D30 98 C4 00 07 */ stb r6, 7(r4)
/* 80356DF4 00353D34 88 DC 00 00 */ lbz r6, 0(r28)
/* 80356DF8 00353D38 7C 00 32 14 */ add r0, r0, r6
/* 80356DFC 00353D3C 48 00 01 F0 */ b lbl_80356FEC
lbl_80356E00:
/* 80356E00 00353D40 20 85 00 0C */ subfic r4, r5, 0xc
/* 80356E04 00353D44 2C 05 00 0C */ cmpwi r5, 0xc
/* 80356E08 00353D48 7C 89 03 A6 */ mtctr r4
/* 80356E0C 00353D4C 40 80 00 28 */ bge lbl_80356E34
lbl_80356E10:
/* 80356E10 00353D50 38 E5 00 18 */ addi r7, r5, 0x18
/* 80356E14 00353D54 7C FF 3A 14 */ add r7, r31, r7
/* 80356E18 00353D58 88 87 00 00 */ lbz r4, 0(r7)
/* 80356E1C 00353D5C 38 A5 00 01 */ addi r5, r5, 1
/* 80356E20 00353D60 98 86 00 00 */ stb r4, 0(r6)
/* 80356E24 00353D64 38 C6 00 01 */ addi r6, r6, 1
/* 80356E28 00353D68 88 87 00 00 */ lbz r4, 0(r7)
/* 80356E2C 00353D6C 7C 00 22 14 */ add r0, r0, r4
/* 80356E30 00353D70 42 00 FF E0 */ bdnz lbl_80356E10
lbl_80356E34:
/* 80356E34 00353D74 7C 63 EA 14 */ add r3, r3, r29
/* 80356E38 00353D78 7C 00 00 F8 */ nor r0, r0, r0
/* 80356E3C 00353D7C 98 03 00 26 */ stb r0, 0x26(r3)
/* 80356E40 00353D80 38 60 00 01 */ li r3, 1
/* 80356E44 00353D84 4B FE 97 19 */ bl __OSUnlockSramEx
/* 80356E48 00353D88 7F C3 F3 78 */ mr r3, r30
/* 80356E4C 00353D8C 48 00 01 B0 */ b lbl_80356FFC
lbl_80356E50:
/* 80356E50 00353D90 38 00 00 01 */ li r0, 1
/* 80356E54 00353D94 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80356E58 00353D98 4B FE 93 49 */ bl __OSLockSramEx
/* 80356E5C 00353D9C 1C 1D 00 0C */ mulli r0, r29, 0xc
/* 80356E60 00353DA0 3B C3 00 00 */ addi r30, r3, 0
/* 80356E64 00353DA4 7C BE 02 14 */ add r5, r30, r0
/* 80356E68 00353DA8 88 85 00 00 */ lbz r4, 0(r5)
/* 80356E6C 00353DAC 38 C0 00 08 */ li r6, 8
/* 80356E70 00353DB0 88 05 00 01 */ lbz r0, 1(r5)
/* 80356E74 00353DB4 88 65 00 02 */ lbz r3, 2(r5)
/* 80356E78 00353DB8 7F 84 02 14 */ add r28, r4, r0
/* 80356E7C 00353DBC 88 05 00 03 */ lbz r0, 3(r5)
/* 80356E80 00353DC0 7F 9C 1A 14 */ add r28, r28, r3
/* 80356E84 00353DC4 88 65 00 04 */ lbz r3, 4(r5)
/* 80356E88 00353DC8 7F 9C 02 14 */ add r28, r28, r0
/* 80356E8C 00353DCC 88 05 00 05 */ lbz r0, 5(r5)
/* 80356E90 00353DD0 7F 9C 1A 14 */ add r28, r28, r3
/* 80356E94 00353DD4 88 65 00 06 */ lbz r3, 6(r5)
/* 80356E98 00353DD8 7F 9C 02 14 */ add r28, r28, r0
/* 80356E9C 00353DDC 88 05 00 07 */ lbz r0, 7(r5)
/* 80356EA0 00353DE0 7F 9C 1A 14 */ add r28, r28, r3
/* 80356EA4 00353DE4 7F 9C 02 14 */ add r28, r28, r0
/* 80356EA8 00353DE8 48 00 01 4C */ b lbl_80356FF4
lbl_80356EAC:
/* 80356EAC 00353DEC 20 06 00 0C */ subfic r0, r6, 0xc
/* 80356EB0 00353DF0 2C 06 00 0C */ cmpwi r6, 0xc
/* 80356EB4 00353DF4 7C 09 03 A6 */ mtctr r0
/* 80356EB8 00353DF8 40 80 00 14 */ bge lbl_80356ECC
lbl_80356EBC:
/* 80356EBC 00353DFC 88 03 00 00 */ lbz r0, 0(r3)
/* 80356EC0 00353E00 38 63 00 01 */ addi r3, r3, 1
/* 80356EC4 00353E04 7F 9C 02 14 */ add r28, r28, r0
/* 80356EC8 00353E08 42 00 FF F4 */ bdnz lbl_80356EBC
lbl_80356ECC:
/* 80356ECC 00353E0C 38 60 00 00 */ li r3, 0
/* 80356ED0 00353E10 4B FE 96 8D */ bl __OSUnlockSramEx
/* 80356ED4 00353E14 7C 7E EA 14 */ add r3, r30, r29
/* 80356ED8 00353E18 7F 80 E0 F8 */ nor r0, r28, r28
/* 80356EDC 00353E1C 88 63 00 26 */ lbz r3, 0x26(r3)
/* 80356EE0 00353E20 54 00 06 3E */ clrlwi r0, r0, 0x18
/* 80356EE4 00353E24 7C 03 00 40 */ cmplw r3, r0
/* 80356EE8 00353E28 41 82 00 0C */ beq lbl_80356EF4
/* 80356EEC 00353E2C 3B C0 FF FB */ li r30, -5
/* 80356EF0 00353E30 48 00 00 E0 */ b lbl_80356FD0
lbl_80356EF4:
/* 80356EF4 00353E34 80 1F 00 24 */ lwz r0, 0x24(r31)
/* 80356EF8 00353E38 2C 00 00 01 */ cmpwi r0, 1
/* 80356EFC 00353E3C 40 82 00 88 */ bne lbl_80356F84
/* 80356F00 00353E40 80 7F 01 08 */ lwz r3, 0x108(r31)
/* 80356F04 00353E44 3C 03 80 00 */ addis r0, r3, 0x8000
/* 80356F08 00353E48 28 00 00 04 */ cmplwi r0, 4
/* 80356F0C 00353E4C 40 82 00 34 */ bne lbl_80356F40
/* 80356F10 00353E50 4B FE 92 91 */ bl __OSLockSramEx
/* 80356F14 00353E54 1C 1D 00 0C */ mulli r0, r29, 0xc
/* 80356F18 00353E58 7F 83 02 2E */ lhzx r28, r3, r0
/* 80356F1C 00353E5C 38 60 00 00 */ li r3, 0
/* 80356F20 00353E60 4B FE 96 3D */ bl __OSUnlockSramEx
/* 80356F24 00353E64 A0 0D 84 F0 */ lhz r0, lbl_80450A70-_SDA_BASE_(r13)
/* 80356F28 00353E68 28 00 FF FF */ cmplwi r0, 0xffff
/* 80356F2C 00353E6C 41 82 00 0C */ beq lbl_80356F38
/* 80356F30 00353E70 7C 1C 00 40 */ cmplw r28, r0
/* 80356F34 00353E74 41 82 00 0C */ beq lbl_80356F40
lbl_80356F38:
/* 80356F38 00353E78 3B C0 FF FE */ li r30, -2
/* 80356F3C 00353E7C 48 00 00 94 */ b lbl_80356FD0
lbl_80356F40:
/* 80356F40 00353E80 38 00 00 02 */ li r0, 2
/* 80356F44 00353E84 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80356F48 00353E88 38 7D 00 00 */ addi r3, r29, 0
/* 80356F4C 00353E8C 38 80 00 01 */ li r4, 1
/* 80356F50 00353E90 4B FF BE 35 */ bl __CARDEnableInterrupt
/* 80356F54 00353E94 7C 7E 1B 79 */ or. r30, r3, r3
/* 80356F58 00353E98 41 80 00 78 */ blt lbl_80356FD0
.global __CARDExiHandler
/* 80356F5C 00353E9C 3C 60 80 35 */ lis r3, __CARDExiHandler@ha
.global __CARDExiHandler
/* 80356F60 00353EA0 38 83 2B 40 */ addi r4, r3, __CARDExiHandler@l
/* 80356F64 00353EA4 38 7D 00 00 */ addi r3, r29, 0
/* 80356F68 00353EA8 4B FE C4 15 */ bl EXISetExiCallback
/* 80356F6C 00353EAC 7F A3 EB 78 */ mr r3, r29
/* 80356F70 00353EB0 4B FE D1 AD */ bl EXIUnlock
/* 80356F74 00353EB4 3C 80 00 01 */ lis r4, 0x0000A000@ha
/* 80356F78 00353EB8 80 7F 00 80 */ lwz r3, 0x80(r31)
/* 80356F7C 00353EBC 38 84 A0 00 */ addi r4, r4, 0x0000A000@l
/* 80356F80 00353EC0 4B FE 46 01 */ bl DCInvalidateRange
lbl_80356F84:
/* 80356F84 00353EC4 80 9F 00 24 */ lwz r4, 0x24(r31)
/* 80356F88 00353EC8 3C 60 80 35 */ lis r3, __CARDMountCallback@ha
/* 80356F8C 00353ECC 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 80356F90 00353ED0 38 E3 70 1C */ addi r7, r3, __CARDMountCallback@l
/* 80356F94 00353ED4 38 64 FF FE */ addi r3, r4, -2
/* 80356F98 00353ED8 7C 80 19 D6 */ mullw r4, r0, r3
/* 80356F9C 00353EDC 80 BF 00 80 */ lwz r5, 0x80(r31)
/* 80356FA0 00353EE0 54 60 68 24 */ slwi r0, r3, 0xd
/* 80356FA4 00353EE4 7C C5 02 14 */ add r6, r5, r0
/* 80356FA8 00353EE8 38 7D 00 00 */ addi r3, r29, 0
/* 80356FAC 00353EEC 38 A0 20 00 */ li r5, 0x2000
/* 80356FB0 00353EF0 4B FF E2 B1 */ bl __CARDRead
/* 80356FB4 00353EF4 7C 7C 1B 79 */ or. r28, r3, r3
/* 80356FB8 00353EF8 40 80 00 10 */ bge lbl_80356FC8
/* 80356FBC 00353EFC 38 7F 00 00 */ addi r3, r31, 0
/* 80356FC0 00353F00 38 9C 00 00 */ addi r4, r28, 0
/* 80356FC4 00353F04 4B FF CC A9 */ bl __CARDPutControlBlock
lbl_80356FC8:
/* 80356FC8 00353F08 7F 83 E3 78 */ mr r3, r28
/* 80356FCC 00353F0C 48 00 00 30 */ b lbl_80356FFC
lbl_80356FD0:
/* 80356FD0 00353F10 7F A3 EB 78 */ mr r3, r29
/* 80356FD4 00353F14 4B FE D1 49 */ bl EXIUnlock
/* 80356FD8 00353F18 38 7D 00 00 */ addi r3, r29, 0
/* 80356FDC 00353F1C 38 9E 00 00 */ addi r4, r30, 0
/* 80356FE0 00353F20 48 00 03 5D */ bl DoUnmount
/* 80356FE4 00353F24 7F C3 F3 78 */ mr r3, r30
/* 80356FE8 00353F28 48 00 00 14 */ b lbl_80356FFC
lbl_80356FEC:
/* 80356FEC 00353F2C 38 C4 00 08 */ addi r6, r4, 8
/* 80356FF0 00353F30 4B FF FE 10 */ b lbl_80356E00
lbl_80356FF4:
/* 80356FF4 00353F34 38 65 00 08 */ addi r3, r5, 8
/* 80356FF8 00353F38 4B FF FE B4 */ b lbl_80356EAC
lbl_80356FFC:
/* 80356FFC 00353F3C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80357000 00353F40 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 80357004 00353F44 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 80357008 00353F48 83 A1 00 24 */ lwz r29, 0x24(r1)
/* 8035700C 00353F4C 83 81 00 20 */ lwz r28, 0x20(r1)
/* 80357010 00353F50 38 21 00 30 */ addi r1, r1, 0x30
/* 80357014 00353F54 7C 08 03 A6 */ mtlr r0
/* 80357018 00353F58 4E 80 00 20 */ blr
.global __CARDMountCallback
__CARDMountCallback:
/* 8035701C 00353F5C 7C 08 02 A6 */ mflr r0
/* 80357020 00353F60 90 01 00 04 */ stw r0, 4(r1)
/* 80357024 00353F64 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80357028 00353F68 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8035702C 00353F6C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80357030 00353F70 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80357034 00353F74 3B A4 00 00 */ addi r29, r4, 0
/* 80357038 00353F78 2C 1D FF FD */ cmpwi r29, -3
/* 8035703C 00353F7C 93 81 00 10 */ stw r28, 0x10(r1)
/* 80357040 00353F80 3B 83 00 00 */ addi r28, r3, 0
/* 80357044 00353F84 1C BC 01 10 */ mulli r5, r28, 0x110
/* 80357048 00353F88 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
/* 8035704C 00353F8C 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
/* 80357050 00353F90 7F E0 2A 14 */ add r31, r0, r5
/* 80357054 00353F94 41 82 00 A8 */ beq lbl_803570FC
/* 80357058 00353F98 40 80 00 10 */ bge lbl_80357068
/* 8035705C 00353F9C 2C 1D FF FB */ cmpwi r29, -5
/* 80357060 00353FA0 41 82 00 9C */ beq lbl_803570FC
/* 80357064 00353FA4 48 00 00 A4 */ b lbl_80357108
lbl_80357068:
/* 80357068 00353FA8 2C 1D 00 01 */ cmpwi r29, 1
/* 8035706C 00353FAC 41 82 00 4C */ beq lbl_803570B8
/* 80357070 00353FB0 40 80 00 98 */ bge lbl_80357108
/* 80357074 00353FB4 2C 1D 00 00 */ cmpwi r29, 0
/* 80357078 00353FB8 40 80 00 08 */ bge lbl_80357080
/* 8035707C 00353FBC 48 00 00 8C */ b lbl_80357108
lbl_80357080:
/* 80357080 00353FC0 80 7F 00 24 */ lwz r3, 0x24(r31)
/* 80357084 00353FC4 38 03 00 01 */ addi r0, r3, 1
/* 80357088 00353FC8 2C 00 00 07 */ cmpwi r0, 7
/* 8035708C 00353FCC 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80357090 00353FD0 40 80 00 18 */ bge lbl_803570A8
/* 80357094 00353FD4 7F 83 E3 78 */ mr r3, r28
/* 80357098 00353FD8 4B FF FB 31 */ bl DoMount
/* 8035709C 00353FDC 7C 7D 1B 79 */ or. r29, r3, r3
/* 803570A0 00353FE0 41 80 00 68 */ blt lbl_80357108
/* 803570A4 00353FE4 48 00 00 90 */ b lbl_80357134
lbl_803570A8:
/* 803570A8 00353FE8 7F E3 FB 78 */ mr r3, r31
/* 803570AC 00353FEC 4B FF F2 2D */ bl __CARDVerify
/* 803570B0 00353FF0 7C 7D 1B 78 */ mr r29, r3
/* 803570B4 00353FF4 48 00 00 54 */ b lbl_80357108
lbl_803570B8:
/* 803570B8 00353FF8 3C 60 80 35 */ lis r3, __CARDMountCallback@ha
/* 803570BC 00353FFC 38 03 70 1C */ addi r0, r3, __CARDMountCallback@l
.global __CARDUnlockedHandler
/* 803570C0 00354000 3C 60 80 35 */ lis r3, __CARDUnlockedHandler@ha
/* 803570C4 00354004 90 1F 00 DC */ stw r0, 0xdc(r31)
.global __CARDUnlockedHandler
/* 803570C8 00354008 38 A3 2D 00 */ addi r5, r3, __CARDUnlockedHandler@l
/* 803570CC 0035400C 38 7C 00 00 */ addi r3, r28, 0
/* 803570D0 00354010 38 80 00 00 */ li r4, 0
/* 803570D4 00354014 4B FE CF 55 */ bl EXILock
/* 803570D8 00354018 2C 03 00 00 */ cmpwi r3, 0
/* 803570DC 0035401C 41 82 00 58 */ beq lbl_80357134
/* 803570E0 00354020 38 00 00 00 */ li r0, 0
/* 803570E4 00354024 90 1F 00 DC */ stw r0, 0xdc(r31)
/* 803570E8 00354028 7F 83 E3 78 */ mr r3, r28
/* 803570EC 0035402C 4B FF FA DD */ bl DoMount
/* 803570F0 00354030 7C 7D 1B 79 */ or. r29, r3, r3
/* 803570F4 00354034 41 80 00 14 */ blt lbl_80357108
/* 803570F8 00354038 48 00 00 3C */ b lbl_80357134
lbl_803570FC:
/* 803570FC 0035403C 38 7C 00 00 */ addi r3, r28, 0
/* 80357100 00354040 38 9D 00 00 */ addi r4, r29, 0
/* 80357104 00354044 48 00 02 39 */ bl DoUnmount
lbl_80357108:
/* 80357108 00354048 83 DF 00 D0 */ lwz r30, 0xd0(r31)
/* 8035710C 0035404C 38 00 00 00 */ li r0, 0
/* 80357110 00354050 38 7F 00 00 */ addi r3, r31, 0
/* 80357114 00354054 90 1F 00 D0 */ stw r0, 0xd0(r31)
/* 80357118 00354058 7F A4 EB 78 */ mr r4, r29
/* 8035711C 0035405C 4B FF CB 51 */ bl __CARDPutControlBlock
/* 80357120 00354060 39 9E 00 00 */ addi r12, r30, 0
/* 80357124 00354064 7D 88 03 A6 */ mtlr r12
/* 80357128 00354068 38 7C 00 00 */ addi r3, r28, 0
/* 8035712C 0035406C 38 9D 00 00 */ addi r4, r29, 0
/* 80357130 00354070 4E 80 00 21 */ blrl
lbl_80357134:
/* 80357134 00354074 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80357138 00354078 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8035713C 0035407C 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80357140 00354080 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80357144 00354084 83 81 00 10 */ lwz r28, 0x10(r1)
/* 80357148 00354088 38 21 00 20 */ addi r1, r1, 0x20
/* 8035714C 0035408C 7C 08 03 A6 */ mtlr r0
/* 80357150 00354090 4E 80 00 20 */ blr
.global CARDMountAsync
CARDMountAsync:
/* 80357154 00354094 7C 08 02 A6 */ mflr r0
/* 80357158 00354098 90 01 00 04 */ stw r0, 4(r1)
/* 8035715C 0035409C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80357160 003540A0 BF 41 00 18 */ stmw r26, 0x18(r1)
/* 80357164 003540A4 7C 7E 1B 79 */ or. r30, r3, r3
/* 80357168 003540A8 3B 44 00 00 */ addi r26, r4, 0
/* 8035716C 003540AC 3B 65 00 00 */ addi r27, r5, 0
/* 80357170 003540B0 3B A6 00 00 */ addi r29, r6, 0
/* 80357174 003540B4 41 80 00 0C */ blt lbl_80357180
/* 80357178 003540B8 2C 1E 00 02 */ cmpwi r30, 2
/* 8035717C 003540BC 41 80 00 0C */ blt lbl_80357188
lbl_80357180:
/* 80357180 003540C0 38 60 FF 80 */ li r3, -128
/* 80357184 003540C4 48 00 01 5C */ b lbl_803572E0
lbl_80357188:
/* 80357188 003540C8 3C 60 80 00 */ lis r3, 0x800030E3@ha
/* 8035718C 003540CC 88 03 30 E3 */ lbz r0, 0x800030E3@l(r3)
/* 80357190 003540D0 54 00 06 31 */ rlwinm. r0, r0, 0, 0x18, 0x18
/* 80357194 003540D4 41 82 00 0C */ beq lbl_803571A0
/* 80357198 003540D8 38 60 FF FD */ li r3, -3
/* 8035719C 003540DC 48 00 01 44 */ b lbl_803572E0
lbl_803571A0:
/* 803571A0 003540E0 1C 9E 01 10 */ mulli r4, r30, 0x110
/* 803571A4 003540E4 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
/* 803571A8 003540E8 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
/* 803571AC 003540EC 7F E0 22 14 */ add r31, r0, r4
/* 803571B0 003540F0 4B FE 65 45 */ bl __RAS_OSDisableInterrupts_begin
/* 803571B4 003540F4 80 1F 00 04 */ lwz r0, 4(r31)
/* 803571B8 003540F8 3B 83 00 00 */ addi r28, r3, 0
/* 803571BC 003540FC 2C 00 FF FF */ cmpwi r0, -1
/* 803571C0 00354100 40 82 00 14 */ bne lbl_803571D4
/* 803571C4 00354104 7F 83 E3 78 */ mr r3, r28
/* 803571C8 00354108 4B FE 65 55 */ bl OSRestoreInterrupts
/* 803571CC 0035410C 38 60 FF FF */ li r3, -1
/* 803571D0 00354110 48 00 01 10 */ b lbl_803572E0
lbl_803571D4:
/* 803571D4 00354114 80 1F 00 00 */ lwz r0, 0(r31)
/* 803571D8 00354118 2C 00 00 00 */ cmpwi r0, 0
/* 803571DC 0035411C 40 82 00 24 */ bne lbl_80357200
/* 803571E0 00354120 7F C3 F3 78 */ mr r3, r30
/* 803571E4 00354124 4B FE D0 15 */ bl EXIGetState
/* 803571E8 00354128 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
/* 803571EC 0035412C 41 82 00 14 */ beq lbl_80357200
/* 803571F0 00354130 7F 83 E3 78 */ mr r3, r28
/* 803571F4 00354134 4B FE 65 29 */ bl OSRestoreInterrupts
/* 803571F8 00354138 38 60 FF FE */ li r3, -2
/* 803571FC 0035413C 48 00 00 E4 */ b lbl_803572E0
lbl_80357200:
/* 80357200 00354140 38 00 FF FF */ li r0, -1
/* 80357204 00354144 90 1F 00 04 */ stw r0, 4(r31)
/* 80357208 00354148 28 1D 00 00 */ cmplwi r29, 0
/* 8035720C 0035414C 93 5F 00 80 */ stw r26, 0x80(r31)
/* 80357210 00354150 93 7F 00 C4 */ stw r27, 0xc4(r31)
/* 80357214 00354154 41 82 00 0C */ beq lbl_80357220
/* 80357218 00354158 7F A0 EB 78 */ mr r0, r29
/* 8035721C 0035415C 48 00 00 0C */ b lbl_80357228
lbl_80357220:
.global __CARDDefaultApiCallback
/* 80357220 00354160 3C 60 80 35 */ lis r3, __CARDDefaultApiCallback@ha
.global __CARDDefaultApiCallback
/* 80357224 00354164 38 03 2A 30 */ addi r0, r3, __CARDDefaultApiCallback@l
lbl_80357228:
/* 80357228 00354168 90 1F 00 D0 */ stw r0, 0xd0(r31)
/* 8035722C 0035416C 38 00 00 00 */ li r0, 0
/* 80357230 00354170 90 1F 00 CC */ stw r0, 0xcc(r31)
/* 80357234 00354174 80 1F 00 00 */ lwz r0, 0(r31)
/* 80357238 00354178 2C 00 00 00 */ cmpwi r0, 0
/* 8035723C 0035417C 40 82 00 34 */ bne lbl_80357270
.global __CARDExtHandler
/* 80357240 00354180 3C 60 80 35 */ lis r3, __CARDExtHandler@ha
.global __CARDExtHandler
/* 80357244 00354184 38 83 2A 68 */ addi r4, r3, __CARDExtHandler@l
/* 80357248 00354188 38 7E 00 00 */ addi r3, r30, 0
/* 8035724C 0035418C 4B FE C4 55 */ bl EXIAttach
/* 80357250 00354190 2C 03 00 00 */ cmpwi r3, 0
/* 80357254 00354194 40 82 00 1C */ bne lbl_80357270
/* 80357258 00354198 38 00 FF FD */ li r0, -3
/* 8035725C 0035419C 90 1F 00 04 */ stw r0, 4(r31)
/* 80357260 003541A0 7F 83 E3 78 */ mr r3, r28
/* 80357264 003541A4 4B FE 64 B9 */ bl OSRestoreInterrupts
/* 80357268 003541A8 38 60 FF FD */ li r3, -3
/* 8035726C 003541AC 48 00 00 74 */ b lbl_803572E0
lbl_80357270:
/* 80357270 003541B0 3B A0 00 00 */ li r29, 0
/* 80357274 003541B4 93 BF 00 24 */ stw r29, 0x24(r31)
/* 80357278 003541B8 38 00 00 01 */ li r0, 1
/* 8035727C 003541BC 38 7E 00 00 */ addi r3, r30, 0
/* 80357280 003541C0 90 1F 00 00 */ stw r0, 0(r31)
/* 80357284 003541C4 38 80 00 00 */ li r4, 0
/* 80357288 003541C8 4B FE C0 F5 */ bl EXISetExiCallback
/* 8035728C 003541CC 38 7F 00 E0 */ addi r3, r31, 0xe0
/* 80357290 003541D0 4B FE 39 AD */ bl OSCancelAlarm
/* 80357294 003541D4 93 BF 00 84 */ stw r29, 0x84(r31)
/* 80357298 003541D8 7F 83 E3 78 */ mr r3, r28
/* 8035729C 003541DC 93 BF 00 88 */ stw r29, 0x88(r31)
/* 803572A0 003541E0 4B FE 64 7D */ bl OSRestoreInterrupts
/* 803572A4 003541E4 3C 60 80 35 */ lis r3, __CARDMountCallback@ha
/* 803572A8 003541E8 38 03 70 1C */ addi r0, r3, __CARDMountCallback@l
.global __CARDUnlockedHandler
/* 803572AC 003541EC 3C 60 80 35 */ lis r3, __CARDUnlockedHandler@ha
/* 803572B0 003541F0 90 1F 00 DC */ stw r0, 0xdc(r31)
.global __CARDUnlockedHandler
/* 803572B4 003541F4 38 A3 2D 00 */ addi r5, r3, __CARDUnlockedHandler@l
/* 803572B8 003541F8 38 7E 00 00 */ addi r3, r30, 0
/* 803572BC 003541FC 38 80 00 00 */ li r4, 0
/* 803572C0 00354200 4B FE CD 69 */ bl EXILock
/* 803572C4 00354204 2C 03 00 00 */ cmpwi r3, 0
/* 803572C8 00354208 40 82 00 0C */ bne lbl_803572D4
/* 803572CC 0035420C 38 60 00 00 */ li r3, 0
/* 803572D0 00354210 48 00 00 10 */ b lbl_803572E0
lbl_803572D4:
/* 803572D4 00354214 93 BF 00 DC */ stw r29, 0xdc(r31)
/* 803572D8 00354218 7F C3 F3 78 */ mr r3, r30
/* 803572DC 0035421C 4B FF F8 ED */ bl DoMount
lbl_803572E0:
/* 803572E0 00354220 BB 41 00 18 */ lmw r26, 0x18(r1)
/* 803572E4 00354224 80 01 00 34 */ lwz r0, 0x34(r1)
/* 803572E8 00354228 38 21 00 30 */ addi r1, r1, 0x30
/* 803572EC 0035422C 7C 08 03 A6 */ mtlr r0
/* 803572F0 00354230 4E 80 00 20 */ blr
.global CARDMount
CARDMount:
/* 803572F4 00354234 7C 08 02 A6 */ mflr r0
.global __CARDSyncCallback
/* 803572F8 00354238 3C C0 80 35 */ lis r6, __CARDSyncCallback@ha
/* 803572FC 0035423C 90 01 00 04 */ stw r0, 4(r1)
.global __CARDSyncCallback
/* 80357300 00354240 38 C6 2A 34 */ addi r6, r6, __CARDSyncCallback@l
/* 80357304 00354244 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80357308 00354248 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8035730C 0035424C 3B E3 00 00 */ addi r31, r3, 0
/* 80357310 00354250 4B FF FE 45 */ bl CARDMountAsync
/* 80357314 00354254 2C 03 00 00 */ cmpwi r3, 0
/* 80357318 00354258 40 80 00 08 */ bge lbl_80357320
/* 8035731C 0035425C 48 00 00 0C */ b lbl_80357328
lbl_80357320:
/* 80357320 00354260 7F E3 FB 78 */ mr r3, r31
/* 80357324 00354264 4B FF CA FD */ bl __CARDSync
lbl_80357328:
/* 80357328 00354268 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8035732C 0035426C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80357330 00354270 38 21 00 20 */ addi r1, r1, 0x20
/* 80357334 00354274 7C 08 03 A6 */ mtlr r0
/* 80357338 00354278 4E 80 00 20 */ blr
.global DoUnmount
DoUnmount:
/* 8035733C 0035427C 7C 08 02 A6 */ mflr r0
/* 80357340 00354280 90 01 00 04 */ stw r0, 4(r1)
/* 80357344 00354284 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80357348 00354288 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8035734C 0035428C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80357350 00354290 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80357354 00354294 3B A4 00 00 */ addi r29, r4, 0
/* 80357358 00354298 93 81 00 10 */ stw r28, 0x10(r1)
/* 8035735C 0035429C 3B 83 00 00 */ addi r28, r3, 0
/* 80357360 003542A0 1C BC 01 10 */ mulli r5, r28, 0x110
/* 80357364 003542A4 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
/* 80357368 003542A8 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
/* 8035736C 003542AC 7F E0 2A 14 */ add r31, r0, r5
/* 80357370 003542B0 4B FE 63 85 */ bl __RAS_OSDisableInterrupts_begin
/* 80357374 003542B4 80 1F 00 00 */ lwz r0, 0(r31)
/* 80357378 003542B8 3B C3 00 00 */ addi r30, r3, 0
/* 8035737C 003542BC 2C 00 00 00 */ cmpwi r0, 0
/* 80357380 003542C0 41 82 00 30 */ beq lbl_803573B0
/* 80357384 003542C4 38 7C 00 00 */ addi r3, r28, 0
/* 80357388 003542C8 38 80 00 00 */ li r4, 0
/* 8035738C 003542CC 4B FE BF F1 */ bl EXISetExiCallback
/* 80357390 003542D0 7F 83 E3 78 */ mr r3, r28
/* 80357394 003542D4 4B FE C4 19 */ bl EXIDetach
/* 80357398 003542D8 38 7F 00 E0 */ addi r3, r31, 0xe0
/* 8035739C 003542DC 4B FE 38 A1 */ bl OSCancelAlarm
/* 803573A0 003542E0 38 00 00 00 */ li r0, 0
/* 803573A4 003542E4 90 1F 00 00 */ stw r0, 0(r31)
/* 803573A8 003542E8 93 BF 00 04 */ stw r29, 4(r31)
/* 803573AC 003542EC 90 1F 00 24 */ stw r0, 0x24(r31)
lbl_803573B0:
/* 803573B0 003542F0 7F C3 F3 78 */ mr r3, r30
/* 803573B4 003542F4 4B FE 63 69 */ bl OSRestoreInterrupts
/* 803573B8 003542F8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803573BC 003542FC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803573C0 00354300 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803573C4 00354304 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 803573C8 00354308 83 81 00 10 */ lwz r28, 0x10(r1)
/* 803573CC 0035430C 38 21 00 20 */ addi r1, r1, 0x20
/* 803573D0 00354310 7C 08 03 A6 */ mtlr r0
/* 803573D4 00354314 4E 80 00 20 */ blr
.global CARDUnmount
CARDUnmount:
/* 803573D8 00354318 7C 08 02 A6 */ mflr r0
/* 803573DC 0035431C 90 01 00 04 */ stw r0, 4(r1)
/* 803573E0 00354320 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803573E4 00354324 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803573E8 00354328 38 81 00 0C */ addi r4, r1, 0xc
/* 803573EC 0035432C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803573F0 00354330 93 A1 00 14 */ stw r29, 0x14(r1)
/* 803573F4 00354334 3B A3 00 00 */ addi r29, r3, 0
/* 803573F8 00354338 4B FF C7 BD */ bl __CARDGetControlBlock
/* 803573FC 0035433C 2C 03 00 00 */ cmpwi r3, 0
/* 80357400 00354340 40 80 00 08 */ bge lbl_80357408
/* 80357404 00354344 48 00 00 64 */ b lbl_80357468
lbl_80357408:
/* 80357408 00354348 1C 9D 01 10 */ mulli r4, r29, 0x110
/* 8035740C 0035434C 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
/* 80357410 00354350 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
/* 80357414 00354354 7F C0 22 14 */ add r30, r0, r4
/* 80357418 00354358 4B FE 62 DD */ bl __RAS_OSDisableInterrupts_begin
/* 8035741C 0035435C 80 1E 00 00 */ lwz r0, 0(r30)
/* 80357420 00354360 3B E3 00 00 */ addi r31, r3, 0
/* 80357424 00354364 2C 00 00 00 */ cmpwi r0, 0
/* 80357428 00354368 41 82 00 34 */ beq lbl_8035745C
/* 8035742C 0035436C 38 7D 00 00 */ addi r3, r29, 0
/* 80357430 00354370 38 80 00 00 */ li r4, 0
/* 80357434 00354374 4B FE BF 49 */ bl EXISetExiCallback
/* 80357438 00354378 7F A3 EB 78 */ mr r3, r29
/* 8035743C 0035437C 4B FE C3 71 */ bl EXIDetach
/* 80357440 00354380 38 7E 00 E0 */ addi r3, r30, 0xe0
/* 80357444 00354384 4B FE 37 F9 */ bl OSCancelAlarm
/* 80357448 00354388 38 60 00 00 */ li r3, 0
/* 8035744C 0035438C 90 7E 00 00 */ stw r3, 0(r30)
/* 80357450 00354390 38 00 FF FD */ li r0, -3
/* 80357454 00354394 90 1E 00 04 */ stw r0, 4(r30)
/* 80357458 00354398 90 7E 00 24 */ stw r3, 0x24(r30)
lbl_8035745C:
/* 8035745C 0035439C 7F E3 FB 78 */ mr r3, r31
/* 80357460 003543A0 4B FE 62 BD */ bl OSRestoreInterrupts
/* 80357464 003543A4 38 60 00 00 */ li r3, 0
lbl_80357468:
/* 80357468 003543A8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8035746C 003543AC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80357470 003543B0 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80357474 003543B4 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80357478 003543B8 38 21 00 20 */ addi r1, r1, 0x20
/* 8035747C 003543BC 7C 08 03 A6 */ mtlr r0
/* 80357480 003543C0 4E 80 00 20 */ blr