mirror of
https://github.com/encounter/oot-gc.git
synced 2026-07-10 12:18:42 -07:00
131 lines
5.5 KiB
ArmAsm
131 lines
5.5 KiB
ArmAsm
# CARDDelete.c
|
|
.include "macros.inc"
|
|
|
|
.section .text, "ax"
|
|
|
|
.balign 4
|
|
|
|
DeleteCallback:
|
|
/* 0BB8F0 800C0E90 7C0802A6 */ mflr r0
|
|
/* 0BB8F4 800C0E94 90010004 */ stw r0, 4(r1)
|
|
/* 0BB8F8 800C0E98 9421FFE0 */ stwu r1, -0x20(r1)
|
|
/* 0BB8FC 800C0E9C 93E1001C */ stw r31, 0x1c(r1)
|
|
/* 0BB900 800C0EA0 93C10018 */ stw r30, 0x18(r1)
|
|
/* 0BB904 800C0EA4 93A10014 */ stw r29, 0x14(r1)
|
|
/* 0BB908 800C0EA8 7C9D2379 */ or. r29, r4, r4
|
|
/* 0BB90C 800C0EAC 93810010 */ stw r28, 0x10(r1)
|
|
/* 0BB910 800C0EB0 3B830000 */ addi r28, r3, 0
|
|
/* 0BB914 800C0EB4 1CBC0110 */ mulli r5, r28, 0x110
|
|
/* 0BB918 800C0EB8 3C608013 */ lis r3, __CARDBlock@ha
|
|
/* 0BB91C 800C0EBC 380327D0 */ addi r0, r3, __CARDBlock@l
|
|
/* 0BB920 800C0EC0 7FE02A14 */ add r31, r0, r5
|
|
/* 0BB924 800C0EC4 83DF00D0 */ lwz r30, 0xd0(r31)
|
|
/* 0BB928 800C0EC8 38000000 */ li r0, 0
|
|
/* 0BB92C 800C0ECC 901F00D0 */ stw r0, 0xd0(r31)
|
|
/* 0BB930 800C0ED0 4180001C */ blt lbl_800C0EEC
|
|
/* 0BB934 800C0ED4 A09F00BE */ lhz r4, 0xbe(r31)
|
|
/* 0BB938 800C0ED8 387C0000 */ addi r3, r28, 0
|
|
/* 0BB93C 800C0EDC 38BE0000 */ addi r5, r30, 0
|
|
/* 0BB940 800C0EE0 4BFFC915 */ bl __CARDFreeBlock
|
|
/* 0BB944 800C0EE4 7C7D1B79 */ or. r29, r3, r3
|
|
/* 0BB948 800C0EE8 4080002C */ bge lbl_800C0F14
|
|
lbl_800C0EEC:
|
|
/* 0BB94C 800C0EEC 387F0000 */ addi r3, r31, 0
|
|
/* 0BB950 800C0EF0 389D0000 */ addi r4, r29, 0
|
|
/* 0BB954 800C0EF4 4BFFAE81 */ bl __CARDPutControlBlock
|
|
/* 0BB958 800C0EF8 281E0000 */ cmplwi r30, 0
|
|
/* 0BB95C 800C0EFC 41820018 */ beq lbl_800C0F14
|
|
/* 0BB960 800C0F00 399E0000 */ addi r12, r30, 0
|
|
/* 0BB964 800C0F04 7D8803A6 */ mtlr r12
|
|
/* 0BB968 800C0F08 387C0000 */ addi r3, r28, 0
|
|
/* 0BB96C 800C0F0C 389D0000 */ addi r4, r29, 0
|
|
/* 0BB970 800C0F10 4E800021 */ blrl
|
|
lbl_800C0F14:
|
|
/* 0BB974 800C0F14 80010024 */ lwz r0, 0x24(r1)
|
|
/* 0BB978 800C0F18 83E1001C */ lwz r31, 0x1c(r1)
|
|
/* 0BB97C 800C0F1C 83C10018 */ lwz r30, 0x18(r1)
|
|
/* 0BB980 800C0F20 83A10014 */ lwz r29, 0x14(r1)
|
|
/* 0BB984 800C0F24 83810010 */ lwz r28, 0x10(r1)
|
|
/* 0BB988 800C0F28 38210020 */ addi r1, r1, 0x20
|
|
/* 0BB98C 800C0F2C 7C0803A6 */ mtlr r0
|
|
/* 0BB990 800C0F30 4E800020 */ blr
|
|
|
|
glabel CARDDeleteAsync
|
|
/* 0BB994 800C0F34 7C0802A6 */ mflr r0
|
|
/* 0BB998 800C0F38 90010004 */ stw r0, 4(r1)
|
|
/* 0BB99C 800C0F3C 9421FFD0 */ stwu r1, -0x30(r1)
|
|
/* 0BB9A0 800C0F40 93E1002C */ stw r31, 0x2c(r1)
|
|
/* 0BB9A4 800C0F44 3BE30000 */ addi r31, r3, 0
|
|
/* 0BB9A8 800C0F48 93C10028 */ stw r30, 0x28(r1)
|
|
/* 0BB9AC 800C0F4C 3BC50000 */ addi r30, r5, 0
|
|
/* 0BB9B0 800C0F50 93A10024 */ stw r29, 0x24(r1)
|
|
/* 0BB9B4 800C0F54 3BA40000 */ addi r29, r4, 0
|
|
/* 0BB9B8 800C0F58 38810018 */ addi r4, r1, 0x18
|
|
/* 0BB9BC 800C0F5C 4BFFAD61 */ bl __CARDGetControlBlock
|
|
/* 0BB9C0 800C0F60 2C030000 */ cmpwi r3, 0
|
|
/* 0BB9C4 800C0F64 40800008 */ bge lbl_800C0F6C
|
|
/* 0BB9C8 800C0F68 480000C0 */ b lbl_800C1028
|
|
lbl_800C0F6C:
|
|
/* 0BB9CC 800C0F6C 80610018 */ lwz r3, 0x18(r1)
|
|
/* 0BB9D0 800C0F70 389D0000 */ addi r4, r29, 0
|
|
/* 0BB9D4 800C0F74 38A10014 */ addi r5, r1, 0x14
|
|
/* 0BB9D8 800C0F78 4BFFF159 */ bl __CARDGetFileNo
|
|
/* 0BB9DC 800C0F7C 7C641B79 */ or. r4, r3, r3
|
|
/* 0BB9E0 800C0F80 40800010 */ bge lbl_800C0F90
|
|
/* 0BB9E4 800C0F84 80610018 */ lwz r3, 0x18(r1)
|
|
/* 0BB9E8 800C0F88 4BFFADED */ bl __CARDPutControlBlock
|
|
/* 0BB9EC 800C0F8C 4800009C */ b lbl_800C1028
|
|
lbl_800C0F90:
|
|
/* 0BB9F0 800C0F90 80610018 */ lwz r3, 0x18(r1)
|
|
/* 0BB9F4 800C0F94 80810014 */ lwz r4, 0x14(r1)
|
|
/* 0BB9F8 800C0F98 4BFFF3F9 */ bl __CARDIsOpened
|
|
/* 0BB9FC 800C0F9C 2C030000 */ cmpwi r3, 0
|
|
/* 0BBA00 800C0FA0 41820014 */ beq lbl_800C0FB4
|
|
/* 0BBA04 800C0FA4 80610018 */ lwz r3, 0x18(r1)
|
|
/* 0BBA08 800C0FA8 3880FFFF */ li r4, -1
|
|
/* 0BBA0C 800C0FAC 4BFFADC9 */ bl __CARDPutControlBlock
|
|
/* 0BBA10 800C0FB0 48000078 */ b lbl_800C1028
|
|
lbl_800C0FB4:
|
|
/* 0BBA14 800C0FB4 80610018 */ lwz r3, 0x18(r1)
|
|
/* 0BBA18 800C0FB8 4BFFC985 */ bl __CARDGetDirBlock
|
|
/* 0BBA1C 800C0FBC 80010014 */ lwz r0, 0x14(r1)
|
|
/* 0BBA20 800C0FC0 388000FF */ li r4, 0xff
|
|
/* 0BBA24 800C0FC4 80C10018 */ lwz r6, 0x18(r1)
|
|
/* 0BBA28 800C0FC8 38A00040 */ li r5, 0x40
|
|
/* 0BBA2C 800C0FCC 54003032 */ slwi r0, r0, 6
|
|
/* 0BBA30 800C0FD0 7C630214 */ add r3, r3, r0
|
|
/* 0BBA34 800C0FD4 A0030036 */ lhz r0, 0x36(r3)
|
|
/* 0BBA38 800C0FD8 B00600BE */ sth r0, 0xbe(r6)
|
|
/* 0BBA3C 800C0FDC 4BF443F5 */ bl memset
|
|
/* 0BBA40 800C0FE0 281E0000 */ cmplwi r30, 0
|
|
/* 0BBA44 800C0FE4 4182000C */ beq lbl_800C0FF0
|
|
/* 0BBA48 800C0FE8 7FC0F378 */ mr r0, r30
|
|
/* 0BBA4C 800C0FEC 4800000C */ b lbl_800C0FF8
|
|
lbl_800C0FF0:
|
|
/* 0BBA50 800C0FF0 3C60800C */ lis r3, __CARDDefaultApiCallback@ha
|
|
/* 0BBA54 800C0FF4 3803AD5C */ addi r0, r3, __CARDDefaultApiCallback@l
|
|
lbl_800C0FF8:
|
|
/* 0BBA58 800C0FF8 80A10018 */ lwz r5, 0x18(r1)
|
|
/* 0BBA5C 800C0FFC 3C60800C */ lis r3, DeleteCallback@ha
|
|
/* 0BBA60 800C1000 38830E90 */ addi r4, r3, DeleteCallback@l
|
|
/* 0BBA64 800C1004 900500D0 */ stw r0, 0xd0(r5)
|
|
/* 0BBA68 800C1008 7FE3FB78 */ mr r3, r31
|
|
/* 0BBA6C 800C100C 4BFFCAD1 */ bl __CARDUpdateDir
|
|
/* 0BBA70 800C1010 7C7F1B79 */ or. r31, r3, r3
|
|
/* 0BBA74 800C1014 40800010 */ bge lbl_800C1024
|
|
/* 0BBA78 800C1018 80610018 */ lwz r3, 0x18(r1)
|
|
/* 0BBA7C 800C101C 7FE4FB78 */ mr r4, r31
|
|
/* 0BBA80 800C1020 4BFFAD55 */ bl __CARDPutControlBlock
|
|
lbl_800C1024:
|
|
/* 0BBA84 800C1024 7FE3FB78 */ mr r3, r31
|
|
lbl_800C1028:
|
|
/* 0BBA88 800C1028 80010034 */ lwz r0, 0x34(r1)
|
|
/* 0BBA8C 800C102C 83E1002C */ lwz r31, 0x2c(r1)
|
|
/* 0BBA90 800C1030 83C10028 */ lwz r30, 0x28(r1)
|
|
/* 0BBA94 800C1034 83A10024 */ lwz r29, 0x24(r1)
|
|
/* 0BBA98 800C1038 38210030 */ addi r1, r1, 0x30
|
|
/* 0BBA9C 800C103C 7C0803A6 */ mtlr r0
|
|
/* 0BBAA0 800C1040 4E800020 */ blr
|
|
|
|
|