mirror of https://github.com/zeldaret/tp.git
252 lines
12 KiB
ArmAsm
252 lines
12 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .text, "ax" # 80355414
|
|
|
|
|
|
.global __CARDGetFatBlock
|
|
__CARDGetFatBlock:
|
|
/* 80355414 00352354 80 63 00 88 */ lwz r3, 0x88(r3)
|
|
/* 80355418 00352358 4E 80 00 20 */ blr
|
|
WriteCallback:
|
|
/* 8035541C 0035235C 7C 08 02 A6 */ mflr r0
|
|
/* 80355420 00352360 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 80355424 00352364 94 21 FF E0 */ stwu r1, -0x20(r1)
|
|
/* 80355428 00352368 93 E1 00 1C */ stw r31, 0x1c(r1)
|
|
/* 8035542C 0035236C 93 C1 00 18 */ stw r30, 0x18(r1)
|
|
/* 80355430 00352370 7C 9E 23 79 */ or. r30, r4, r4
|
|
/* 80355434 00352374 93 A1 00 14 */ stw r29, 0x14(r1)
|
|
/* 80355438 00352378 3B A3 00 00 */ addi r29, r3, 0
|
|
/* 8035543C 0035237C 1C BD 01 10 */ mulli r5, r29, 0x110
|
|
/* 80355440 00352380 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
|
|
/* 80355444 00352384 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
|
|
/* 80355448 00352388 7F E0 2A 14 */ add r31, r0, r5
|
|
/* 8035544C 0035238C 41 80 00 48 */ blt lbl_80355494
|
|
/* 80355450 00352390 80 7F 00 80 */ lwz r3, 0x80(r31)
|
|
/* 80355454 00352394 80 1F 00 88 */ lwz r0, 0x88(r31)
|
|
/* 80355458 00352398 38 83 60 00 */ addi r4, r3, 0x6000
|
|
/* 8035545C 0035239C 7C 00 20 40 */ cmplw r0, r4
|
|
/* 80355460 003523A0 3C A3 00 01 */ addis r5, r3, 1
|
|
/* 80355464 003523A4 38 A5 80 00 */ addi r5, r5, -32768
|
|
/* 80355468 003523A8 40 82 00 18 */ bne lbl_80355480
|
|
/* 8035546C 003523AC 90 BF 00 88 */ stw r5, 0x88(r31)
|
|
/* 80355470 003523B0 38 65 00 00 */ addi r3, r5, 0
|
|
/* 80355474 003523B4 38 A0 20 00 */ li r5, 0x2000
|
|
/* 80355478 003523B8 4B CA E0 C9 */ bl memcpy
|
|
/* 8035547C 003523BC 48 00 00 18 */ b lbl_80355494
|
|
lbl_80355480:
|
|
/* 80355480 003523C0 90 9F 00 88 */ stw r4, 0x88(r31)
|
|
/* 80355484 003523C4 38 64 00 00 */ addi r3, r4, 0
|
|
/* 80355488 003523C8 38 85 00 00 */ addi r4, r5, 0
|
|
/* 8035548C 003523CC 38 A0 20 00 */ li r5, 0x2000
|
|
/* 80355490 003523D0 4B CA E0 B1 */ bl memcpy
|
|
lbl_80355494:
|
|
/* 80355494 003523D4 80 1F 00 D0 */ lwz r0, 0xd0(r31)
|
|
/* 80355498 003523D8 28 00 00 00 */ cmplwi r0, 0
|
|
/* 8035549C 003523DC 40 82 00 10 */ bne lbl_803554AC
|
|
/* 803554A0 003523E0 38 7F 00 00 */ addi r3, r31, 0
|
|
/* 803554A4 003523E4 38 9E 00 00 */ addi r4, r30, 0
|
|
/* 803554A8 003523E8 4B FF E7 C5 */ bl __CARDPutControlBlock
|
|
lbl_803554AC:
|
|
/* 803554AC 003523EC 80 1F 00 D8 */ lwz r0, 0xd8(r31)
|
|
/* 803554B0 003523F0 28 00 00 00 */ cmplwi r0, 0
|
|
/* 803554B4 003523F4 7C 0C 03 78 */ mr r12, r0
|
|
/* 803554B8 003523F8 41 82 00 1C */ beq lbl_803554D4
|
|
/* 803554BC 003523FC 38 00 00 00 */ li r0, 0
|
|
/* 803554C0 00352400 7D 88 03 A6 */ mtlr r12
|
|
/* 803554C4 00352404 90 1F 00 D8 */ stw r0, 0xd8(r31)
|
|
/* 803554C8 00352408 38 7D 00 00 */ addi r3, r29, 0
|
|
/* 803554CC 0035240C 38 9E 00 00 */ addi r4, r30, 0
|
|
/* 803554D0 00352410 4E 80 00 21 */ blrl
|
|
lbl_803554D4:
|
|
/* 803554D4 00352414 80 01 00 24 */ lwz r0, 0x24(r1)
|
|
/* 803554D8 00352418 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
|
/* 803554DC 0035241C 83 C1 00 18 */ lwz r30, 0x18(r1)
|
|
/* 803554E0 00352420 83 A1 00 14 */ lwz r29, 0x14(r1)
|
|
/* 803554E4 00352424 38 21 00 20 */ addi r1, r1, 0x20
|
|
/* 803554E8 00352428 7C 08 03 A6 */ mtlr r0
|
|
/* 803554EC 0035242C 4E 80 00 20 */ blr
|
|
EraseCallback:
|
|
/* 803554F0 00352430 7C 08 02 A6 */ mflr r0
|
|
/* 803554F4 00352434 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 803554F8 00352438 94 21 FF D8 */ stwu r1, -0x28(r1)
|
|
/* 803554FC 0035243C 93 E1 00 24 */ stw r31, 0x24(r1)
|
|
/* 80355500 00352440 3B E3 00 00 */ addi r31, r3, 0
|
|
/* 80355504 00352444 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
|
|
/* 80355508 00352448 93 C1 00 20 */ stw r30, 0x20(r1)
|
|
/* 8035550C 0035244C 1C BF 01 10 */ mulli r5, r31, 0x110
|
|
/* 80355510 00352450 93 A1 00 1C */ stw r29, 0x1c(r1)
|
|
/* 80355514 00352454 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
|
|
/* 80355518 00352458 7C 9D 23 79 */ or. r29, r4, r4
|
|
/* 8035551C 0035245C 7F C0 2A 14 */ add r30, r0, r5
|
|
/* 80355520 00352460 41 80 00 3C */ blt lbl_8035555C
|
|
/* 80355524 00352464 80 BE 00 88 */ lwz r5, 0x88(r30)
|
|
/* 80355528 00352468 3C 60 80 35 */ lis r3, WriteCallback@ha
|
|
/* 8035552C 0035246C 80 1E 00 80 */ lwz r0, 0x80(r30)
|
|
/* 80355530 00352470 38 E3 54 1C */ addi r7, r3, WriteCallback@l
|
|
/* 80355534 00352474 80 7E 00 0C */ lwz r3, 0xc(r30)
|
|
/* 80355538 00352478 7C 00 28 50 */ subf r0, r0, r5
|
|
/* 8035553C 0035247C 54 00 9B 7E */ srwi r0, r0, 0xd
|
|
/* 80355540 00352480 7C 83 01 D6 */ mullw r4, r3, r0
|
|
/* 80355544 00352484 38 C5 00 00 */ addi r6, r5, 0
|
|
/* 80355548 00352488 38 7F 00 00 */ addi r3, r31, 0
|
|
/* 8035554C 0035248C 38 A0 20 00 */ li r5, 0x2000
|
|
/* 80355550 00352490 4B FF FE 5D */ bl __CARDWrite
|
|
/* 80355554 00352494 7C 7D 1B 79 */ or. r29, r3, r3
|
|
/* 80355558 00352498 40 80 00 44 */ bge lbl_8035559C
|
|
lbl_8035555C:
|
|
/* 8035555C 0035249C 80 1E 00 D0 */ lwz r0, 0xd0(r30)
|
|
/* 80355560 003524A0 28 00 00 00 */ cmplwi r0, 0
|
|
/* 80355564 003524A4 40 82 00 10 */ bne lbl_80355574
|
|
/* 80355568 003524A8 38 7E 00 00 */ addi r3, r30, 0
|
|
/* 8035556C 003524AC 38 9D 00 00 */ addi r4, r29, 0
|
|
/* 80355570 003524B0 4B FF E6 FD */ bl __CARDPutControlBlock
|
|
lbl_80355574:
|
|
/* 80355574 003524B4 80 1E 00 D8 */ lwz r0, 0xd8(r30)
|
|
/* 80355578 003524B8 28 00 00 00 */ cmplwi r0, 0
|
|
/* 8035557C 003524BC 7C 0C 03 78 */ mr r12, r0
|
|
/* 80355580 003524C0 41 82 00 1C */ beq lbl_8035559C
|
|
/* 80355584 003524C4 38 00 00 00 */ li r0, 0
|
|
/* 80355588 003524C8 7D 88 03 A6 */ mtlr r12
|
|
/* 8035558C 003524CC 90 1E 00 D8 */ stw r0, 0xd8(r30)
|
|
/* 80355590 003524D0 38 7F 00 00 */ addi r3, r31, 0
|
|
/* 80355594 003524D4 38 9D 00 00 */ addi r4, r29, 0
|
|
/* 80355598 003524D8 4E 80 00 21 */ blrl
|
|
lbl_8035559C:
|
|
/* 8035559C 003524DC 80 01 00 2C */ lwz r0, 0x2c(r1)
|
|
/* 803555A0 003524E0 83 E1 00 24 */ lwz r31, 0x24(r1)
|
|
/* 803555A4 003524E4 83 C1 00 20 */ lwz r30, 0x20(r1)
|
|
/* 803555A8 003524E8 83 A1 00 1C */ lwz r29, 0x1c(r1)
|
|
/* 803555AC 003524EC 38 21 00 28 */ addi r1, r1, 0x28
|
|
/* 803555B0 003524F0 7C 08 03 A6 */ mtlr r0
|
|
/* 803555B4 003524F4 4E 80 00 20 */ blr
|
|
|
|
.global __CARDAllocBlock
|
|
__CARDAllocBlock:
|
|
/* 803555B8 003524F8 7C 08 02 A6 */ mflr r0
|
|
/* 803555BC 003524FC 1C E3 01 10 */ mulli r7, r3, 0x110
|
|
/* 803555C0 00352500 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 803555C4 00352504 94 21 FF E0 */ stwu r1, -0x20(r1)
|
|
/* 803555C8 00352508 3C C0 80 45 */ lis r6, lbl_8044CBC0@ha
|
|
/* 803555CC 0035250C 38 06 CB C0 */ addi r0, r6, lbl_8044CBC0@l
|
|
/* 803555D0 00352510 93 E1 00 1C */ stw r31, 0x1c(r1)
|
|
/* 803555D4 00352514 7D 20 3A 14 */ add r9, r0, r7
|
|
/* 803555D8 00352518 93 C1 00 18 */ stw r30, 0x18(r1)
|
|
/* 803555DC 0035251C 80 09 00 00 */ lwz r0, 0(r9)
|
|
/* 803555E0 00352520 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 803555E4 00352524 40 82 00 0C */ bne lbl_803555F0
|
|
/* 803555E8 00352528 38 60 FF FD */ li r3, -3
|
|
/* 803555EC 0035252C 48 00 00 CC */ b lbl_803556B8
|
|
lbl_803555F0:
|
|
/* 803555F0 00352530 81 09 00 88 */ lwz r8, 0x88(r9)
|
|
/* 803555F4 00352534 A0 08 00 06 */ lhz r0, 6(r8)
|
|
/* 803555F8 00352538 7C 00 20 40 */ cmplw r0, r4
|
|
/* 803555FC 0035253C 40 80 00 0C */ bge lbl_80355608
|
|
/* 80355600 00352540 38 60 FF F7 */ li r3, -9
|
|
/* 80355604 00352544 48 00 00 B4 */ b lbl_803556B8
|
|
lbl_80355608:
|
|
/* 80355608 00352548 7C 04 00 50 */ subf r0, r4, r0
|
|
/* 8035560C 0035254C B0 08 00 06 */ sth r0, 6(r8)
|
|
/* 80355610 00352550 3C C0 00 01 */ lis r6, 0x0000FFFF@ha
|
|
/* 80355614 00352554 39 86 FF FF */ addi r12, r6, 0x0000FFFF@l
|
|
/* 80355618 00352558 A1 68 00 08 */ lhz r11, 8(r8)
|
|
/* 8035561C 0035255C 38 0C 00 00 */ addi r0, r12, 0
|
|
/* 80355620 00352560 3B C0 00 00 */ li r30, 0
|
|
/* 80355624 00352564 48 00 00 7C */ b lbl_803556A0
|
|
lbl_80355628:
|
|
/* 80355628 00352568 A1 49 00 10 */ lhz r10, 0x10(r9)
|
|
/* 8035562C 0035256C 3B DE 00 01 */ addi r30, r30, 1
|
|
/* 80355630 00352570 57 C6 04 3E */ clrlwi r6, r30, 0x10
|
|
/* 80355634 00352574 38 EA FF FB */ addi r7, r10, -5
|
|
/* 80355638 00352578 7C 07 30 00 */ cmpw r7, r6
|
|
/* 8035563C 0035257C 40 80 00 0C */ bge lbl_80355648
|
|
/* 80355640 00352580 38 60 FF FA */ li r3, -6
|
|
/* 80355644 00352584 48 00 00 74 */ b lbl_803556B8
|
|
lbl_80355648:
|
|
/* 80355648 00352588 39 6B 00 01 */ addi r11, r11, 1
|
|
/* 8035564C 0035258C 55 66 04 3E */ clrlwi r6, r11, 0x10
|
|
/* 80355650 00352590 28 06 00 05 */ cmplwi r6, 5
|
|
/* 80355654 00352594 41 80 00 0C */ blt lbl_80355660
|
|
/* 80355658 00352598 7C 06 50 40 */ cmplw r6, r10
|
|
/* 8035565C 0035259C 41 80 00 08 */ blt lbl_80355664
|
|
lbl_80355660:
|
|
/* 80355660 003525A0 39 60 00 05 */ li r11, 5
|
|
lbl_80355664:
|
|
/* 80355664 003525A4 55 66 0B FC */ rlwinm r6, r11, 1, 0xf, 0x1e
|
|
/* 80355668 003525A8 7C E8 32 14 */ add r7, r8, r6
|
|
/* 8035566C 003525AC A0 C7 00 00 */ lhz r6, 0(r7)
|
|
/* 80355670 003525B0 28 06 00 00 */ cmplwi r6, 0
|
|
/* 80355674 003525B4 40 82 00 2C */ bne lbl_803556A0
|
|
/* 80355678 003525B8 55 86 04 3E */ clrlwi r6, r12, 0x10
|
|
/* 8035567C 003525BC 28 06 FF FF */ cmplwi r6, 0xffff
|
|
/* 80355680 003525C0 40 82 00 0C */ bne lbl_8035568C
|
|
/* 80355684 003525C4 7D 6C 5B 78 */ mr r12, r11
|
|
/* 80355688 003525C8 48 00 00 0C */ b lbl_80355694
|
|
lbl_8035568C:
|
|
/* 8035568C 003525CC 57 E6 0B FC */ rlwinm r6, r31, 1, 0xf, 0x1e
|
|
/* 80355690 003525D0 7D 68 33 2E */ sthx r11, r8, r6
|
|
lbl_80355694:
|
|
/* 80355694 003525D4 B0 07 00 00 */ sth r0, 0(r7)
|
|
/* 80355698 003525D8 3B EB 00 00 */ addi r31, r11, 0
|
|
/* 8035569C 003525DC 38 84 FF FF */ addi r4, r4, -1
|
|
lbl_803556A0:
|
|
/* 803556A0 003525E0 28 04 00 00 */ cmplwi r4, 0
|
|
/* 803556A4 003525E4 40 82 FF 84 */ bne lbl_80355628
|
|
/* 803556A8 003525E8 B1 68 00 08 */ sth r11, 8(r8)
|
|
/* 803556AC 003525EC 7D 04 43 78 */ mr r4, r8
|
|
/* 803556B0 003525F0 B1 89 00 BE */ sth r12, 0xbe(r9)
|
|
/* 803556B4 003525F4 48 00 00 1D */ bl __CARDUpdateFatBlock
|
|
lbl_803556B8:
|
|
/* 803556B8 003525F8 80 01 00 24 */ lwz r0, 0x24(r1)
|
|
/* 803556BC 003525FC 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
|
/* 803556C0 00352600 83 C1 00 18 */ lwz r30, 0x18(r1)
|
|
/* 803556C4 00352604 38 21 00 20 */ addi r1, r1, 0x20
|
|
/* 803556C8 00352608 7C 08 03 A6 */ mtlr r0
|
|
/* 803556CC 0035260C 4E 80 00 20 */ blr
|
|
|
|
.global __CARDUpdateFatBlock
|
|
__CARDUpdateFatBlock:
|
|
/* 803556D0 00352610 7C 08 02 A6 */ mflr r0
|
|
/* 803556D4 00352614 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 803556D8 00352618 94 21 FF D8 */ stwu r1, -0x28(r1)
|
|
/* 803556DC 0035261C 93 E1 00 24 */ stw r31, 0x24(r1)
|
|
/* 803556E0 00352620 93 C1 00 20 */ stw r30, 0x20(r1)
|
|
/* 803556E4 00352624 3B C5 00 00 */ addi r30, r5, 0
|
|
/* 803556E8 00352628 93 A1 00 1C */ stw r29, 0x1c(r1)
|
|
/* 803556EC 0035262C 3B A4 00 00 */ addi r29, r4, 0
|
|
/* 803556F0 00352630 38 BD 00 00 */ addi r5, r29, 0
|
|
/* 803556F4 00352634 93 81 00 18 */ stw r28, 0x18(r1)
|
|
/* 803556F8 00352638 3B 83 00 00 */ addi r28, r3, 0
|
|
/* 803556FC 0035263C 38 DD 00 02 */ addi r6, r29, 2
|
|
/* 80355700 00352640 A0 64 00 04 */ lhz r3, 4(r4)
|
|
/* 80355704 00352644 1C 9C 01 10 */ mulli r4, r28, 0x110
|
|
/* 80355708 00352648 38 03 00 01 */ addi r0, r3, 1
|
|
/* 8035570C 0035264C 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
|
|
/* 80355710 00352650 B0 1D 00 04 */ sth r0, 4(r29)
|
|
/* 80355714 00352654 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
|
|
/* 80355718 00352658 7F E0 22 14 */ add r31, r0, r4
|
|
/* 8035571C 0035265C 38 7D 00 04 */ addi r3, r29, 4
|
|
/* 80355720 00352660 38 80 1F FC */ li r4, 0x1ffc
|
|
/* 80355724 00352664 48 00 02 BD */ bl __CARDCheckSum
|
|
/* 80355728 00352668 38 7D 00 00 */ addi r3, r29, 0
|
|
/* 8035572C 0035266C 38 80 20 00 */ li r4, 0x2000
|
|
/* 80355730 00352670 4B FE 5E AD */ bl DCStoreRange
|
|
/* 80355734 00352674 93 DF 00 D8 */ stw r30, 0xd8(r31)
|
|
/* 80355738 00352678 3C 60 80 35 */ lis r3, EraseCallback@ha
|
|
/* 8035573C 0035267C 38 A3 54 F0 */ addi r5, r3, EraseCallback@l
|
|
/* 80355740 00352680 80 1F 00 80 */ lwz r0, 0x80(r31)
|
|
/* 80355744 00352684 7F 83 E3 78 */ mr r3, r28
|
|
/* 80355748 00352688 80 9F 00 0C */ lwz r4, 0xc(r31)
|
|
/* 8035574C 0035268C 7C 00 E8 50 */ subf r0, r0, r29
|
|
/* 80355750 00352690 54 00 9B 7E */ srwi r0, r0, 0xd
|
|
/* 80355754 00352694 7C 84 01 D6 */ mullw r4, r4, r0
|
|
/* 80355758 00352698 4B FF E2 61 */ bl __CARDEraseSector
|
|
/* 8035575C 0035269C 80 01 00 2C */ lwz r0, 0x2c(r1)
|
|
/* 80355760 003526A0 83 E1 00 24 */ lwz r31, 0x24(r1)
|
|
/* 80355764 003526A4 83 C1 00 20 */ lwz r30, 0x20(r1)
|
|
/* 80355768 003526A8 83 A1 00 1C */ lwz r29, 0x1c(r1)
|
|
/* 8035576C 003526AC 83 81 00 18 */ lwz r28, 0x18(r1)
|
|
/* 80355770 003526B0 38 21 00 28 */ addi r1, r1, 0x28
|
|
/* 80355774 003526B4 7C 08 03 A6 */ mtlr r0
|
|
/* 80355778 003526B8 4E 80 00 20 */ blr
|
|
|