prime/asm/Dolphin/card/CARDDelete.s

215 lines
10 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax"
.global DeleteCallback
DeleteCallback:
/* 803BDC74 003BABD4 7C 08 02 A6 */ mflr r0
/* 803BDC78 003BABD8 90 01 00 04 */ stw r0, 4(r1)
/* 803BDC7C 003BABDC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803BDC80 003BABE0 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803BDC84 003BABE4 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803BDC88 003BABE8 93 A1 00 14 */ stw r29, 0x14(r1)
/* 803BDC8C 003BABEC 7C 9D 23 79 */ or. r29, r4, r4
/* 803BDC90 003BABF0 93 81 00 10 */ stw r28, 0x10(r1)
/* 803BDC94 003BABF4 3B 83 00 00 */ addi r28, r3, 0
/* 803BDC98 003BABF8 1C BC 01 10 */ mulli r5, r28, 0x110
/* 803BDC9C 003BABFC 3C 60 80 57 */ lis r3, lbl_80569A58@ha
/* 803BDCA0 003BAC00 38 03 9A 58 */ addi r0, r3, lbl_80569A58@l
/* 803BDCA4 003BAC04 7F E0 2A 14 */ add r31, r0, r5
/* 803BDCA8 003BAC08 83 DF 00 D0 */ lwz r30, 0xd0(r31)
/* 803BDCAC 003BAC0C 38 00 00 00 */ li r0, 0
/* 803BDCB0 003BAC10 90 1F 00 D0 */ stw r0, 0xd0(r31)
/* 803BDCB4 003BAC14 41 80 00 1C */ blt lbl_803BDCD0
/* 803BDCB8 003BAC18 A0 9F 00 BE */ lhz r4, 0xbe(r31)
/* 803BDCBC 003BAC1C 38 7C 00 00 */ addi r3, r28, 0
/* 803BDCC0 003BAC20 38 BE 00 00 */ addi r5, r30, 0
/* 803BDCC4 003BAC24 4B FF CB 65 */ bl __CARDFreeBlock
/* 803BDCC8 003BAC28 7C 7D 1B 79 */ or. r29, r3, r3
/* 803BDCCC 003BAC2C 40 80 00 2C */ bge lbl_803BDCF8
lbl_803BDCD0:
/* 803BDCD0 003BAC30 38 7F 00 00 */ addi r3, r31, 0
/* 803BDCD4 003BAC34 38 9D 00 00 */ addi r4, r29, 0
/* 803BDCD8 003BAC38 4B FF B1 81 */ bl __CARDPutControlBlock
/* 803BDCDC 003BAC3C 28 1E 00 00 */ cmplwi r30, 0
/* 803BDCE0 003BAC40 41 82 00 18 */ beq lbl_803BDCF8
/* 803BDCE4 003BAC44 39 9E 00 00 */ addi r12, r30, 0
/* 803BDCE8 003BAC48 7D 88 03 A6 */ mtlr r12
/* 803BDCEC 003BAC4C 38 7C 00 00 */ addi r3, r28, 0
/* 803BDCF0 003BAC50 38 9D 00 00 */ addi r4, r29, 0
/* 803BDCF4 003BAC54 4E 80 00 21 */ blrl
lbl_803BDCF8:
/* 803BDCF8 003BAC58 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803BDCFC 003BAC5C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803BDD00 003BAC60 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803BDD04 003BAC64 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 803BDD08 003BAC68 83 81 00 10 */ lwz r28, 0x10(r1)
/* 803BDD0C 003BAC6C 38 21 00 20 */ addi r1, r1, 0x20
/* 803BDD10 003BAC70 7C 08 03 A6 */ mtlr r0
/* 803BDD14 003BAC74 4E 80 00 20 */ blr
.global CARDFastDeleteAsync
CARDFastDeleteAsync:
/* 803BDD18 003BAC78 7C 08 02 A6 */ mflr r0
/* 803BDD1C 003BAC7C 90 01 00 04 */ stw r0, 4(r1)
/* 803BDD20 003BAC80 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803BDD24 003BAC84 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803BDD28 003BAC88 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803BDD2C 003BAC8C 3B C5 00 00 */ addi r30, r5, 0
/* 803BDD30 003BAC90 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803BDD34 003BAC94 7C 9D 23 79 */ or. r29, r4, r4
/* 803BDD38 003BAC98 93 81 00 18 */ stw r28, 0x18(r1)
/* 803BDD3C 003BAC9C 3B 83 00 00 */ addi r28, r3, 0
/* 803BDD40 003BACA0 41 80 00 0C */ blt lbl_803BDD4C
/* 803BDD44 003BACA4 2C 1D 00 7F */ cmpwi r29, 0x7f
/* 803BDD48 003BACA8 41 80 00 0C */ blt lbl_803BDD54
lbl_803BDD4C:
/* 803BDD4C 003BACAC 38 60 FF 80 */ li r3, -128
/* 803BDD50 003BACB0 48 00 00 D4 */ b lbl_803BDE24
lbl_803BDD54:
/* 803BDD54 003BACB4 38 7C 00 00 */ addi r3, r28, 0
/* 803BDD58 003BACB8 38 81 00 14 */ addi r4, r1, 0x14
/* 803BDD5C 003BACBC 4B FF B0 45 */ bl __CARDGetControlBlock
/* 803BDD60 003BACC0 2C 03 00 00 */ cmpwi r3, 0
/* 803BDD64 003BACC4 40 80 00 08 */ bge lbl_803BDD6C
/* 803BDD68 003BACC8 48 00 00 BC */ b lbl_803BDE24
lbl_803BDD6C:
/* 803BDD6C 003BACCC 80 61 00 14 */ lwz r3, 0x14(r1)
/* 803BDD70 003BACD0 4B FF CC 01 */ bl __CARDGetDirBlock
/* 803BDD74 003BACD4 57 A0 30 32 */ slwi r0, r29, 6
/* 803BDD78 003BACD8 7F E3 02 14 */ add r31, r3, r0
/* 803BDD7C 003BACDC 80 61 00 14 */ lwz r3, 0x14(r1)
/* 803BDD80 003BACE0 7F E4 FB 78 */ mr r4, r31
/* 803BDD84 003BACE4 4B FF F0 51 */ bl __CARDAccess
/* 803BDD88 003BACE8 7C 64 1B 79 */ or. r4, r3, r3
/* 803BDD8C 003BACEC 40 80 00 10 */ bge lbl_803BDD9C
/* 803BDD90 003BACF0 80 61 00 14 */ lwz r3, 0x14(r1)
/* 803BDD94 003BACF4 4B FF B0 C5 */ bl __CARDPutControlBlock
/* 803BDD98 003BACF8 48 00 00 8C */ b lbl_803BDE24
lbl_803BDD9C:
/* 803BDD9C 003BACFC 80 61 00 14 */ lwz r3, 0x14(r1)
/* 803BDDA0 003BAD00 7F A4 EB 78 */ mr r4, r29
/* 803BDDA4 003BAD04 4B FF F4 15 */ bl __CARDIsOpened
/* 803BDDA8 003BAD08 2C 03 00 00 */ cmpwi r3, 0
/* 803BDDAC 003BAD0C 41 82 00 14 */ beq lbl_803BDDC0
/* 803BDDB0 003BAD10 80 61 00 14 */ lwz r3, 0x14(r1)
/* 803BDDB4 003BAD14 38 80 FF FF */ li r4, -1
/* 803BDDB8 003BAD18 4B FF B0 A1 */ bl __CARDPutControlBlock
/* 803BDDBC 003BAD1C 48 00 00 68 */ b lbl_803BDE24
lbl_803BDDC0:
/* 803BDDC0 003BAD20 A0 1F 00 36 */ lhz r0, 0x36(r31)
/* 803BDDC4 003BAD24 7F E3 FB 78 */ mr r3, r31
/* 803BDDC8 003BAD28 80 C1 00 14 */ lwz r6, 0x14(r1)
/* 803BDDCC 003BAD2C 38 80 00 FF */ li r4, 0xff
/* 803BDDD0 003BAD30 38 A0 00 40 */ li r5, 0x40
/* 803BDDD4 003BAD34 B0 06 00 BE */ sth r0, 0xbe(r6)
/* 803BDDD8 003BAD38 4B C4 55 D1 */ bl memset
/* 803BDDDC 003BAD3C 28 1E 00 00 */ cmplwi r30, 0
/* 803BDDE0 003BAD40 41 82 00 0C */ beq lbl_803BDDEC
/* 803BDDE4 003BAD44 7F C0 F3 78 */ mr r0, r30
/* 803BDDE8 003BAD48 48 00 00 0C */ b lbl_803BDDF4
lbl_803BDDEC:
/* 803BDDEC 003BAD4C 3C 60 80 3B */ lis r3, __CARDDefaultApiCallback@ha
/* 803BDDF0 003BAD50 38 03 7E 74 */ addi r0, r3, __CARDDefaultApiCallback@l
lbl_803BDDF4:
/* 803BDDF4 003BAD54 80 A1 00 14 */ lwz r5, 0x14(r1)
/* 803BDDF8 003BAD58 3C 60 80 3C */ lis r3, DeleteCallback@ha
/* 803BDDFC 003BAD5C 38 83 DC 74 */ addi r4, r3, DeleteCallback@l
/* 803BDE00 003BAD60 90 05 00 D0 */ stw r0, 0xd0(r5)
/* 803BDE04 003BAD64 7F 83 E3 78 */ mr r3, r28
/* 803BDE08 003BAD68 4B FF CD 09 */ bl __CARDUpdateDir
/* 803BDE0C 003BAD6C 7C 7F 1B 79 */ or. r31, r3, r3
/* 803BDE10 003BAD70 40 80 00 10 */ bge lbl_803BDE20
/* 803BDE14 003BAD74 80 61 00 14 */ lwz r3, 0x14(r1)
/* 803BDE18 003BAD78 7F E4 FB 78 */ mr r4, r31
/* 803BDE1C 003BAD7C 4B FF B0 3D */ bl __CARDPutControlBlock
lbl_803BDE20:
/* 803BDE20 003BAD80 7F E3 FB 78 */ mr r3, r31
lbl_803BDE24:
/* 803BDE24 003BAD84 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803BDE28 003BAD88 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803BDE2C 003BAD8C 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803BDE30 003BAD90 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803BDE34 003BAD94 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803BDE38 003BAD98 38 21 00 28 */ addi r1, r1, 0x28
/* 803BDE3C 003BAD9C 7C 08 03 A6 */ mtlr r0
/* 803BDE40 003BADA0 4E 80 00 20 */ blr
.global CARDDeleteAsync
CARDDeleteAsync:
/* 803BDE44 003BADA4 7C 08 02 A6 */ mflr r0
/* 803BDE48 003BADA8 90 01 00 04 */ stw r0, 4(r1)
/* 803BDE4C 003BADAC 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 803BDE50 003BADB0 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 803BDE54 003BADB4 3B E3 00 00 */ addi r31, r3, 0
/* 803BDE58 003BADB8 93 C1 00 28 */ stw r30, 0x28(r1)
/* 803BDE5C 003BADBC 3B C5 00 00 */ addi r30, r5, 0
/* 803BDE60 003BADC0 93 A1 00 24 */ stw r29, 0x24(r1)
/* 803BDE64 003BADC4 3B A4 00 00 */ addi r29, r4, 0
/* 803BDE68 003BADC8 38 81 00 18 */ addi r4, r1, 0x18
/* 803BDE6C 003BADCC 4B FF AF 35 */ bl __CARDGetControlBlock
/* 803BDE70 003BADD0 2C 03 00 00 */ cmpwi r3, 0
/* 803BDE74 003BADD4 40 80 00 08 */ bge lbl_803BDE7C
/* 803BDE78 003BADD8 48 00 00 C0 */ b lbl_803BDF38
lbl_803BDE7C:
/* 803BDE7C 003BADDC 80 61 00 18 */ lwz r3, 0x18(r1)
/* 803BDE80 003BADE0 38 9D 00 00 */ addi r4, r29, 0
/* 803BDE84 003BADE4 38 A1 00 14 */ addi r5, r1, 0x14
/* 803BDE88 003BADE8 4B FF F0 15 */ bl sub_803bce9c
/* 803BDE8C 003BADEC 7C 64 1B 79 */ or. r4, r3, r3
/* 803BDE90 003BADF0 40 80 00 10 */ bge lbl_803BDEA0
/* 803BDE94 003BADF4 80 61 00 18 */ lwz r3, 0x18(r1)
/* 803BDE98 003BADF8 4B FF AF C1 */ bl __CARDPutControlBlock
/* 803BDE9C 003BADFC 48 00 00 9C */ b lbl_803BDF38
lbl_803BDEA0:
/* 803BDEA0 003BAE00 80 61 00 18 */ lwz r3, 0x18(r1)
/* 803BDEA4 003BAE04 80 81 00 14 */ lwz r4, 0x14(r1)
/* 803BDEA8 003BAE08 4B FF F3 11 */ bl __CARDIsOpened
/* 803BDEAC 003BAE0C 2C 03 00 00 */ cmpwi r3, 0
/* 803BDEB0 003BAE10 41 82 00 14 */ beq lbl_803BDEC4
/* 803BDEB4 003BAE14 80 61 00 18 */ lwz r3, 0x18(r1)
/* 803BDEB8 003BAE18 38 80 FF FF */ li r4, -1
/* 803BDEBC 003BAE1C 4B FF AF 9D */ bl __CARDPutControlBlock
/* 803BDEC0 003BAE20 48 00 00 78 */ b lbl_803BDF38
lbl_803BDEC4:
/* 803BDEC4 003BAE24 80 61 00 18 */ lwz r3, 0x18(r1)
/* 803BDEC8 003BAE28 4B FF CA A9 */ bl __CARDGetDirBlock
/* 803BDECC 003BAE2C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803BDED0 003BAE30 38 80 00 FF */ li r4, 0xff
/* 803BDED4 003BAE34 80 C1 00 18 */ lwz r6, 0x18(r1)
/* 803BDED8 003BAE38 38 A0 00 40 */ li r5, 0x40
/* 803BDEDC 003BAE3C 54 00 30 32 */ slwi r0, r0, 6
/* 803BDEE0 003BAE40 7C 63 02 14 */ add r3, r3, r0
/* 803BDEE4 003BAE44 A0 03 00 36 */ lhz r0, 0x36(r3)
/* 803BDEE8 003BAE48 B0 06 00 BE */ sth r0, 0xbe(r6)
/* 803BDEEC 003BAE4C 4B C4 54 BD */ bl memset
/* 803BDEF0 003BAE50 28 1E 00 00 */ cmplwi r30, 0
/* 803BDEF4 003BAE54 41 82 00 0C */ beq lbl_803BDF00
/* 803BDEF8 003BAE58 7F C0 F3 78 */ mr r0, r30
/* 803BDEFC 003BAE5C 48 00 00 0C */ b lbl_803BDF08
lbl_803BDF00:
/* 803BDF00 003BAE60 3C 60 80 3B */ lis r3, __CARDDefaultApiCallback@ha
/* 803BDF04 003BAE64 38 03 7E 74 */ addi r0, r3, __CARDDefaultApiCallback@l
lbl_803BDF08:
/* 803BDF08 003BAE68 80 A1 00 18 */ lwz r5, 0x18(r1)
/* 803BDF0C 003BAE6C 3C 60 80 3C */ lis r3, DeleteCallback@ha
/* 803BDF10 003BAE70 38 83 DC 74 */ addi r4, r3, DeleteCallback@l
/* 803BDF14 003BAE74 90 05 00 D0 */ stw r0, 0xd0(r5)
/* 803BDF18 003BAE78 7F E3 FB 78 */ mr r3, r31
/* 803BDF1C 003BAE7C 4B FF CB F5 */ bl __CARDUpdateDir
/* 803BDF20 003BAE80 7C 7F 1B 79 */ or. r31, r3, r3
/* 803BDF24 003BAE84 40 80 00 10 */ bge lbl_803BDF34
/* 803BDF28 003BAE88 80 61 00 18 */ lwz r3, 0x18(r1)
/* 803BDF2C 003BAE8C 7F E4 FB 78 */ mr r4, r31
/* 803BDF30 003BAE90 4B FF AF 29 */ bl __CARDPutControlBlock
lbl_803BDF34:
/* 803BDF34 003BAE94 7F E3 FB 78 */ mr r3, r31
lbl_803BDF38:
/* 803BDF38 003BAE98 80 01 00 34 */ lwz r0, 0x34(r1)
/* 803BDF3C 003BAE9C 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 803BDF40 003BAEA0 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 803BDF44 003BAEA4 83 A1 00 24 */ lwz r29, 0x24(r1)
/* 803BDF48 003BAEA8 38 21 00 30 */ addi r1, r1, 0x30
/* 803BDF4C 003BAEAC 7C 08 03 A6 */ mtlr r0
/* 803BDF50 003BAEB0 4E 80 00 20 */ blr