mirror of https://github.com/zeldaret/tp.git
269 lines
12 KiB
ArmAsm
269 lines
12 KiB
ArmAsm
.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
|
|
|