mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
269 lines
13 KiB
ArmAsm
269 lines
13 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .text, "ax" # 80358108
|
|
|
|
|
|
.global CreateCallbackFat
|
|
CreateCallbackFat:
|
|
/* 80358108 00355048 7C 08 02 A6 */ mflr r0
|
|
/* 8035810C 0035504C 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 80358110 00355050 94 21 FF D8 */ stwu r1, -0x28(r1)
|
|
/* 80358114 00355054 BF 61 00 14 */ stmw r27, 0x14(r1)
|
|
/* 80358118 00355058 3B 83 00 00 */ addi r28, r3, 0
|
|
/* 8035811C 0035505C 3C 60 80 45 */ lis r3, lbl_8044CBC0@ha
|
|
/* 80358120 00355060 1C BC 01 10 */ mulli r5, r28, 0x110
|
|
/* 80358124 00355064 38 03 CB C0 */ addi r0, r3, lbl_8044CBC0@l
|
|
/* 80358128 00355068 7F E0 2A 14 */ add r31, r0, r5
|
|
/* 8035812C 0035506C 83 BF 00 D0 */ lwz r29, 0xd0(r31)
|
|
/* 80358130 00355070 3B 60 00 00 */ li r27, 0
|
|
/* 80358134 00355074 7C 9E 23 79 */ or. r30, r4, r4
|
|
/* 80358138 00355078 93 7F 00 D0 */ stw r27, 0xd0(r31)
|
|
/* 8035813C 0035507C 41 80 00 C0 */ blt lbl_803581FC
|
|
/* 80358140 00355080 7F E3 FB 78 */ mr r3, r31
|
|
/* 80358144 00355084 4B FF D6 39 */ bl __CARDGetDirBlock
|
|
/* 80358148 00355088 A0 1F 00 BC */ lhz r0, 0xbc(r31)
|
|
/* 8035814C 0035508C 38 A0 00 04 */ li r5, 4
|
|
/* 80358150 00355090 80 9F 01 0C */ lwz r4, 0x10c(r31)
|
|
/* 80358154 00355094 54 00 30 32 */ slwi r0, r0, 6
|
|
/* 80358158 00355098 7F C3 02 14 */ add r30, r3, r0
|
|
/* 8035815C 0035509C 38 7E 00 00 */ addi r3, r30, 0
|
|
/* 80358160 003550A0 4B CA B3 E1 */ bl memcpy
|
|
/* 80358164 003550A4 80 9F 01 0C */ lwz r4, 0x10c(r31)
|
|
/* 80358168 003550A8 38 7E 00 04 */ addi r3, r30, 4
|
|
/* 8035816C 003550AC 38 A0 00 02 */ li r5, 2
|
|
/* 80358170 003550B0 38 84 00 04 */ addi r4, r4, 4
|
|
/* 80358174 003550B4 4B CA B3 CD */ bl memcpy
|
|
/* 80358178 003550B8 38 00 00 04 */ li r0, 4
|
|
/* 8035817C 003550BC 98 1E 00 34 */ stb r0, 0x34(r30)
|
|
/* 80358180 003550C0 38 00 FF FF */ li r0, -1
|
|
/* 80358184 003550C4 3C 60 80 00 */ lis r3, 0x800000F8@ha
|
|
/* 80358188 003550C8 9B 7E 00 35 */ stb r27, 0x35(r30)
|
|
/* 8035818C 003550CC A0 9F 00 BE */ lhz r4, 0xbe(r31)
|
|
/* 80358190 003550D0 B0 9E 00 36 */ sth r4, 0x36(r30)
|
|
/* 80358194 003550D4 9B 7E 00 07 */ stb r27, 7(r30)
|
|
/* 80358198 003550D8 90 1E 00 2C */ stw r0, 0x2c(r30)
|
|
/* 8035819C 003550DC B3 7E 00 30 */ sth r27, 0x30(r30)
|
|
/* 803581A0 003550E0 B3 7E 00 32 */ sth r27, 0x32(r30)
|
|
/* 803581A4 003550E4 90 1E 00 3C */ stw r0, 0x3c(r30)
|
|
/* 803581A8 003550E8 A0 1E 00 32 */ lhz r0, 0x32(r30)
|
|
/* 803581AC 003550EC 54 00 00 3A */ rlwinm r0, r0, 0, 0, 0x1d
|
|
/* 803581B0 003550F0 60 00 00 01 */ ori r0, r0, 1
|
|
/* 803581B4 003550F4 B0 1E 00 32 */ sth r0, 0x32(r30)
|
|
/* 803581B8 003550F8 80 9F 00 C0 */ lwz r4, 0xc0(r31)
|
|
/* 803581BC 003550FC 93 64 00 08 */ stw r27, 8(r4)
|
|
/* 803581C0 00355100 A0 1E 00 36 */ lhz r0, 0x36(r30)
|
|
/* 803581C4 00355104 80 9F 00 C0 */ lwz r4, 0xc0(r31)
|
|
/* 803581C8 00355108 B0 04 00 10 */ sth r0, 0x10(r4)
|
|
/* 803581CC 0035510C 80 03 00 F8 */ lwz r0, 0x800000F8@l(r3)
|
|
/* 803581D0 00355110 54 1B F0 BE */ srwi r27, r0, 2
|
|
/* 803581D4 00355114 4B FE A5 29 */ bl OSGetTime
|
|
/* 803581D8 00355118 38 DB 00 00 */ addi r6, r27, 0
|
|
/* 803581DC 0035511C 38 A0 00 00 */ li r5, 0
|
|
/* 803581E0 00355120 48 00 A1 45 */ bl func_80362324
|
|
/* 803581E4 00355124 90 9E 00 28 */ stw r4, 0x28(r30)
|
|
/* 803581E8 00355128 38 7C 00 00 */ addi r3, r28, 0
|
|
/* 803581EC 0035512C 38 9D 00 00 */ addi r4, r29, 0
|
|
/* 803581F0 00355130 4B FF D7 2D */ bl __CARDUpdateDir
|
|
/* 803581F4 00355134 7C 7E 1B 79 */ or. r30, r3, r3
|
|
/* 803581F8 00355138 40 80 00 2C */ bge lbl_80358224
|
|
lbl_803581FC:
|
|
/* 803581FC 0035513C 38 7F 00 00 */ addi r3, r31, 0
|
|
/* 80358200 00355140 38 9E 00 00 */ addi r4, r30, 0
|
|
/* 80358204 00355144 4B FF BA 69 */ bl __CARDPutControlBlock
|
|
/* 80358208 00355148 28 1D 00 00 */ cmplwi r29, 0
|
|
/* 8035820C 0035514C 41 82 00 18 */ beq lbl_80358224
|
|
/* 80358210 00355150 39 9D 00 00 */ addi r12, r29, 0
|
|
/* 80358214 00355154 7D 88 03 A6 */ mtlr r12
|
|
/* 80358218 00355158 38 7C 00 00 */ addi r3, r28, 0
|
|
/* 8035821C 0035515C 38 9E 00 00 */ addi r4, r30, 0
|
|
/* 80358220 00355160 4E 80 00 21 */ blrl
|
|
lbl_80358224:
|
|
/* 80358224 00355164 BB 61 00 14 */ lmw r27, 0x14(r1)
|
|
/* 80358228 00355168 80 01 00 2C */ lwz r0, 0x2c(r1)
|
|
/* 8035822C 0035516C 38 21 00 28 */ addi r1, r1, 0x28
|
|
/* 80358230 00355170 7C 08 03 A6 */ mtlr r0
|
|
/* 80358234 00355174 4E 80 00 20 */ blr
|
|
|
|
.global CARDCreateAsync
|
|
CARDCreateAsync:
|
|
/* 80358238 00355178 7C 08 02 A6 */ mflr r0
|
|
/* 8035823C 0035517C 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 80358240 00355180 94 21 FF B8 */ stwu r1, -0x48(r1)
|
|
/* 80358244 00355184 BE E1 00 24 */ stmw r23, 0x24(r1)
|
|
/* 80358248 00355188 3B 44 00 00 */ addi r26, r4, 0
|
|
/* 8035824C 0035518C 3B 23 00 00 */ addi r25, r3, 0
|
|
/* 80358250 00355190 3B 65 00 00 */ addi r27, r5, 0
|
|
/* 80358254 00355194 3B 86 00 00 */ addi r28, r6, 0
|
|
/* 80358258 00355198 3B A7 00 00 */ addi r29, r7, 0
|
|
/* 8035825C 0035519C 38 7A 00 00 */ addi r3, r26, 0
|
|
/* 80358260 003551A0 48 01 09 85 */ bl func_80368BE4
|
|
/* 80358264 003551A4 28 03 00 20 */ cmplwi r3, 0x20
|
|
/* 80358268 003551A8 40 81 00 0C */ ble lbl_80358274
|
|
/* 8035826C 003551AC 38 60 FF F4 */ li r3, -12
|
|
/* 80358270 003551B0 48 00 01 D4 */ b lbl_80358444
|
|
lbl_80358274:
|
|
/* 80358274 003551B4 38 79 00 00 */ addi r3, r25, 0
|
|
/* 80358278 003551B8 38 81 00 1C */ addi r4, r1, 0x1c
|
|
/* 8035827C 003551BC 4B FF B9 39 */ bl __CARDGetControlBlock
|
|
/* 80358280 003551C0 2C 03 00 00 */ cmpwi r3, 0
|
|
/* 80358284 003551C4 40 80 00 08 */ bge lbl_8035828C
|
|
/* 80358288 003551C8 48 00 01 BC */ b lbl_80358444
|
|
lbl_8035828C:
|
|
/* 8035828C 003551CC 28 1B 00 00 */ cmplwi r27, 0
|
|
/* 80358290 003551D0 41 82 00 1C */ beq lbl_803582AC
|
|
/* 80358294 003551D4 80 61 00 1C */ lwz r3, 0x1c(r1)
|
|
/* 80358298 003551D8 80 83 00 0C */ lwz r4, 0xc(r3)
|
|
/* 8035829C 003551DC 7C 1B 23 96 */ divwu r0, r27, r4
|
|
/* 803582A0 003551E0 7C 00 21 D6 */ mullw r0, r0, r4
|
|
/* 803582A4 003551E4 7C 00 D8 51 */ subf. r0, r0, r27
|
|
/* 803582A8 003551E8 41 82 00 0C */ beq lbl_803582B4
|
|
lbl_803582AC:
|
|
/* 803582AC 003551EC 38 60 FF 80 */ li r3, -128
|
|
/* 803582B0 003551F0 48 00 01 94 */ b lbl_80358444
|
|
lbl_803582B4:
|
|
/* 803582B4 003551F4 3C 80 00 01 */ lis r4, 0x0000FFFF@ha
|
|
/* 803582B8 003551F8 3B C4 FF FF */ addi r30, r4, 0x0000FFFF@l
|
|
/* 803582BC 003551FC 4B FF D4 C1 */ bl __CARDGetDirBlock
|
|
/* 803582C0 00355200 3B E3 00 00 */ addi r31, r3, 0
|
|
/* 803582C4 00355204 3B 1F 00 00 */ addi r24, r31, 0
|
|
/* 803582C8 00355208 3A E0 00 00 */ li r23, 0
|
|
/* 803582CC 0035520C 48 00 00 8C */ b lbl_80358358
|
|
lbl_803582D0:
|
|
/* 803582D0 00355210 88 18 00 00 */ lbz r0, 0(r24)
|
|
/* 803582D4 00355214 28 00 00 FF */ cmplwi r0, 0xff
|
|
/* 803582D8 00355218 40 82 00 18 */ bne lbl_803582F0
|
|
/* 803582DC 0035521C 57 C0 04 3E */ clrlwi r0, r30, 0x10
|
|
/* 803582E0 00355220 28 00 FF FF */ cmplwi r0, 0xffff
|
|
/* 803582E4 00355224 40 82 00 6C */ bne lbl_80358350
|
|
/* 803582E8 00355228 7E FE BB 78 */ mr r30, r23
|
|
/* 803582EC 0035522C 48 00 00 64 */ b lbl_80358350
|
|
lbl_803582F0:
|
|
/* 803582F0 00355230 80 81 00 1C */ lwz r4, 0x1c(r1)
|
|
/* 803582F4 00355234 38 78 00 00 */ addi r3, r24, 0
|
|
/* 803582F8 00355238 38 A0 00 04 */ li r5, 4
|
|
/* 803582FC 0035523C 80 84 01 0C */ lwz r4, 0x10c(r4)
|
|
/* 80358300 00355240 48 00 DD 8D */ bl func_8036608C
|
|
/* 80358304 00355244 2C 03 00 00 */ cmpwi r3, 0
|
|
/* 80358308 00355248 40 82 00 48 */ bne lbl_80358350
|
|
/* 8035830C 0035524C 80 81 00 1C */ lwz r4, 0x1c(r1)
|
|
/* 80358310 00355250 38 78 00 04 */ addi r3, r24, 4
|
|
/* 80358314 00355254 38 A0 00 02 */ li r5, 2
|
|
/* 80358318 00355258 80 84 01 0C */ lwz r4, 0x10c(r4)
|
|
/* 8035831C 0035525C 38 84 00 04 */ addi r4, r4, 4
|
|
/* 80358320 00355260 48 00 DD 6D */ bl func_8036608C
|
|
/* 80358324 00355264 2C 03 00 00 */ cmpwi r3, 0
|
|
/* 80358328 00355268 40 82 00 28 */ bne lbl_80358350
|
|
/* 8035832C 0035526C 38 78 00 00 */ addi r3, r24, 0
|
|
/* 80358330 00355270 38 9A 00 00 */ addi r4, r26, 0
|
|
/* 80358334 00355274 4B FF F9 41 */ bl __CARDCompareFileName
|
|
/* 80358338 00355278 2C 03 00 00 */ cmpwi r3, 0
|
|
/* 8035833C 0035527C 41 82 00 14 */ beq lbl_80358350
|
|
/* 80358340 00355280 80 61 00 1C */ lwz r3, 0x1c(r1)
|
|
/* 80358344 00355284 38 80 FF F9 */ li r4, -7
|
|
/* 80358348 00355288 4B FF B9 25 */ bl __CARDPutControlBlock
|
|
/* 8035834C 0035528C 48 00 00 F8 */ b lbl_80358444
|
|
lbl_80358350:
|
|
/* 80358350 00355290 3B 18 00 40 */ addi r24, r24, 0x40
|
|
/* 80358354 00355294 3A F7 00 01 */ addi r23, r23, 1
|
|
lbl_80358358:
|
|
/* 80358358 00355298 56 E0 04 3E */ clrlwi r0, r23, 0x10
|
|
/* 8035835C 0035529C 28 00 00 7F */ cmplwi r0, 0x7f
|
|
/* 80358360 003552A0 41 80 FF 70 */ blt lbl_803582D0
|
|
/* 80358364 003552A4 57 C0 04 3E */ clrlwi r0, r30, 0x10
|
|
/* 80358368 003552A8 28 00 FF FF */ cmplwi r0, 0xffff
|
|
/* 8035836C 003552AC 40 82 00 14 */ bne lbl_80358380
|
|
/* 80358370 003552B0 80 61 00 1C */ lwz r3, 0x1c(r1)
|
|
/* 80358374 003552B4 38 80 FF F8 */ li r4, -8
|
|
/* 80358378 003552B8 4B FF B8 F5 */ bl __CARDPutControlBlock
|
|
/* 8035837C 003552BC 48 00 00 C8 */ b lbl_80358444
|
|
lbl_80358380:
|
|
/* 80358380 003552C0 80 61 00 1C */ lwz r3, 0x1c(r1)
|
|
/* 80358384 003552C4 4B FF D0 91 */ bl __CARDGetFatBlock
|
|
/* 80358388 003552C8 80 81 00 1C */ lwz r4, 0x1c(r1)
|
|
/* 8035838C 003552CC A0 03 00 06 */ lhz r0, 6(r3)
|
|
/* 80358390 003552D0 80 64 00 0C */ lwz r3, 0xc(r4)
|
|
/* 80358394 003552D4 7C 03 01 D6 */ mullw r0, r3, r0
|
|
/* 80358398 003552D8 7C 00 D8 40 */ cmplw r0, r27
|
|
/* 8035839C 003552DC 40 80 00 14 */ bge lbl_803583B0
|
|
/* 803583A0 003552E0 38 64 00 00 */ addi r3, r4, 0
|
|
/* 803583A4 003552E4 38 80 FF F7 */ li r4, -9
|
|
/* 803583A8 003552E8 4B FF B8 C5 */ bl __CARDPutControlBlock
|
|
/* 803583AC 003552EC 48 00 00 98 */ b lbl_80358444
|
|
lbl_803583B0:
|
|
/* 803583B0 003552F0 28 1D 00 00 */ cmplwi r29, 0
|
|
/* 803583B4 003552F4 41 82 00 0C */ beq lbl_803583C0
|
|
/* 803583B8 003552F8 7F A0 EB 78 */ mr r0, r29
|
|
/* 803583BC 003552FC 48 00 00 0C */ b lbl_803583C8
|
|
lbl_803583C0:
|
|
.global __CARDDefaultApiCallback
|
|
/* 803583C0 00355300 3C 60 80 35 */ lis r3, __CARDDefaultApiCallback@ha
|
|
.global __CARDDefaultApiCallback
|
|
/* 803583C4 00355304 38 03 2A 30 */ addi r0, r3, __CARDDefaultApiCallback@l
|
|
lbl_803583C8:
|
|
/* 803583C8 00355308 90 04 00 D0 */ stw r0, 0xd0(r4)
|
|
/* 803583CC 0035530C 57 C0 32 B2 */ rlwinm r0, r30, 6, 0xa, 0x19
|
|
/* 803583D0 00355310 7C FF 02 14 */ add r7, r31, r0
|
|
/* 803583D4 00355314 80 61 00 1C */ lwz r3, 0x1c(r1)
|
|
/* 803583D8 00355318 57 DD 04 3E */ clrlwi r29, r30, 0x10
|
|
/* 803583DC 0035531C 38 9A 00 00 */ addi r4, r26, 0
|
|
/* 803583E0 00355320 B3 C3 00 BC */ sth r30, 0xbc(r3)
|
|
/* 803583E4 00355324 38 67 00 08 */ addi r3, r7, 8
|
|
/* 803583E8 00355328 38 A0 00 20 */ li r5, 0x20
|
|
/* 803583EC 0035532C 80 C1 00 1C */ lwz r6, 0x1c(r1)
|
|
/* 803583F0 00355330 80 06 00 0C */ lwz r0, 0xc(r6)
|
|
/* 803583F4 00355334 7C 1B 03 96 */ divwu r0, r27, r0
|
|
/* 803583F8 00355338 B0 07 00 38 */ sth r0, 0x38(r7)
|
|
/* 803583FC 0035533C 48 01 06 ED */ bl func_80368AE8
|
|
/* 80358400 00355340 80 81 00 1C */ lwz r4, 0x1c(r1)
|
|
.global CreateCallbackFat
|
|
/* 80358404 00355344 3C 60 80 36 */ lis r3, CreateCallbackFat@ha
|
|
.global CreateCallbackFat
|
|
/* 80358408 00355348 38 A3 81 08 */ addi r5, r3, CreateCallbackFat@l
|
|
/* 8035840C 0035534C 93 84 00 C0 */ stw r28, 0xc0(r4)
|
|
/* 80358410 00355350 7F 23 CB 78 */ mr r3, r25
|
|
/* 80358414 00355354 93 3C 00 00 */ stw r25, 0(r28)
|
|
/* 80358418 00355358 93 BC 00 04 */ stw r29, 4(r28)
|
|
/* 8035841C 0035535C 80 81 00 1C */ lwz r4, 0x1c(r1)
|
|
/* 80358420 00355360 80 04 00 0C */ lwz r0, 0xc(r4)
|
|
/* 80358424 00355364 7C 9B 03 96 */ divwu r4, r27, r0
|
|
/* 80358428 00355368 4B FF D1 91 */ bl __CARDAllocBlock
|
|
/* 8035842C 0035536C 7C 64 1B 79 */ or. r4, r3, r3
|
|
/* 80358430 00355370 40 80 00 10 */ bge lbl_80358440
|
|
/* 80358434 00355374 80 61 00 1C */ lwz r3, 0x1c(r1)
|
|
/* 80358438 00355378 4B FF B8 35 */ bl __CARDPutControlBlock
|
|
/* 8035843C 0035537C 48 00 00 08 */ b lbl_80358444
|
|
lbl_80358440:
|
|
/* 80358440 00355380 7C 83 23 78 */ mr r3, r4
|
|
lbl_80358444:
|
|
/* 80358444 00355384 BA E1 00 24 */ lmw r23, 0x24(r1)
|
|
/* 80358448 00355388 80 01 00 4C */ lwz r0, 0x4c(r1)
|
|
/* 8035844C 0035538C 38 21 00 48 */ addi r1, r1, 0x48
|
|
/* 80358450 00355390 7C 08 03 A6 */ mtlr r0
|
|
/* 80358454 00355394 4E 80 00 20 */ blr
|
|
|
|
.global CARDCreate
|
|
CARDCreate:
|
|
/* 80358458 00355398 7C 08 02 A6 */ mflr r0
|
|
.global __CARDSyncCallback
|
|
/* 8035845C 0035539C 3C E0 80 35 */ lis r7, __CARDSyncCallback@ha
|
|
/* 80358460 003553A0 90 01 00 04 */ stw r0, 4(r1)
|
|
.global __CARDSyncCallback
|
|
/* 80358464 003553A4 38 E7 2A 34 */ addi r7, r7, __CARDSyncCallback@l
|
|
/* 80358468 003553A8 94 21 FF E0 */ stwu r1, -0x20(r1)
|
|
/* 8035846C 003553AC 93 E1 00 1C */ stw r31, 0x1c(r1)
|
|
/* 80358470 003553B0 3B E3 00 00 */ addi r31, r3, 0
|
|
/* 80358474 003553B4 4B FF FD C5 */ bl CARDCreateAsync
|
|
/* 80358478 003553B8 2C 03 00 00 */ cmpwi r3, 0
|
|
/* 8035847C 003553BC 40 80 00 08 */ bge lbl_80358484
|
|
/* 80358480 003553C0 48 00 00 0C */ b lbl_8035848C
|
|
lbl_80358484:
|
|
/* 80358484 003553C4 7F E3 FB 78 */ mr r3, r31
|
|
/* 80358488 003553C8 4B FF B9 99 */ bl __CARDSync
|
|
lbl_8035848C:
|
|
/* 8035848C 003553CC 80 01 00 24 */ lwz r0, 0x24(r1)
|
|
/* 80358490 003553D0 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
|
/* 80358494 003553D4 38 21 00 20 */ addi r1, r1, 0x20
|
|
/* 80358498 003553D8 7C 08 03 A6 */ mtlr r0
|
|
/* 8035849C 003553DC 4E 80 00 20 */ blr
|
|
|