prime/asm/MetroidPrime/ScriptObjects/CScriptSpawnPoint.s

317 lines
16 KiB
ArmAsm

.include "macros.inc"
.section .data
.balign 8
.global __vt__17CScriptSpawnPoint
__vt__17CScriptSpawnPoint:
# ROM: 0x3DC850
.4byte 0
.4byte 0
.4byte __dt__17CScriptSpawnPointFv
.4byte Accept__17CScriptSpawnPointFR8IVisitor
.4byte PreThink__7CEntityFfR13CStateManager
.4byte Think__7CEntityFfR13CStateManager
.4byte AcceptScriptMsg__17CScriptSpawnPointF20EScriptObjectMessage9TUniqueIdR13CStateManager
.4byte SetActive__7CEntityFb
.section .text, "ax"
.global Accept__17CScriptSpawnPointFR8IVisitor
Accept__17CScriptSpawnPointFR8IVisitor:
/* 800E2378 000DF2D8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E237C 000DF2DC 7C 08 02 A6 */ mflr r0
/* 800E2380 000DF2E0 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E2384 000DF2E4 7C 60 1B 78 */ mr r0, r3
/* 800E2388 000DF2E8 7C 83 23 78 */ mr r3, r4
/* 800E238C 000DF2EC 81 84 00 00 */ lwz r12, 0(r4)
/* 800E2390 000DF2F0 7C 04 03 78 */ mr r4, r0
/* 800E2394 000DF2F4 81 8C 00 B0 */ lwz r12, 0xb0(r12)
/* 800E2398 000DF2F8 7D 89 03 A6 */ mtctr r12
/* 800E239C 000DF2FC 4E 80 04 21 */ bctrl
/* 800E23A0 000DF300 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E23A4 000DF304 7C 08 03 A6 */ mtlr r0
/* 800E23A8 000DF308 38 21 00 10 */ addi r1, r1, 0x10
/* 800E23AC 000DF30C 4E 80 00 20 */ blr
.global AcceptScriptMsg__17CScriptSpawnPointF20EScriptObjectMessage9TUniqueIdR13CStateManager
AcceptScriptMsg__17CScriptSpawnPointF20EScriptObjectMessage9TUniqueIdR13CStateManager:
/* 800E23B0 000DF310 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 800E23B4 000DF314 7C 08 02 A6 */ mflr r0
/* 800E23B8 000DF318 90 01 00 44 */ stw r0, 0x44(r1)
/* 800E23BC 000DF31C BF 61 00 2C */ stmw r27, 0x2c(r1)
/* 800E23C0 000DF320 7C 7C 1B 78 */ mr r28, r3
/* 800E23C4 000DF324 7C 9B 23 78 */ mr r27, r4
/* 800E23C8 000DF328 7C DD 33 78 */ mr r29, r6
/* 800E23CC 000DF32C A0 05 00 00 */ lhz r0, 0(r5)
/* 800E23D0 000DF330 38 A1 00 08 */ addi r5, r1, 8
/* 800E23D4 000DF334 B0 01 00 08 */ sth r0, 8(r1)
/* 800E23D8 000DF338 4B F6 ED 85 */ bl AcceptScriptMsg__7CEntityF20EScriptObjectMessage9TUniqueIdR13CStateManager
/* 800E23DC 000DF33C 2C 1B 00 0D */ cmpwi r27, 0xd
/* 800E23E0 000DF340 41 82 00 70 */ beq lbl_800E2450
/* 800E23E4 000DF344 40 80 01 D0 */ bge lbl_800E25B4
/* 800E23E8 000DF348 2C 1B 00 0A */ cmpwi r27, 0xa
/* 800E23EC 000DF34C 41 82 00 08 */ beq lbl_800E23F4
/* 800E23F0 000DF350 48 00 01 C4 */ b lbl_800E25B4
lbl_800E23F4:
/* 800E23F4 000DF354 3B 60 00 00 */ li r27, 0
lbl_800E23F8:
/* 800E23F8 000DF358 80 BD 08 B8 */ lwz r5, 0x8b8(r29)
/* 800E23FC 000DF35C 7F 83 E3 78 */ mr r3, r28
/* 800E2400 000DF360 93 61 00 24 */ stw r27, 0x24(r1)
/* 800E2404 000DF364 38 81 00 24 */ addi r4, r1, 0x24
/* 800E2408 000DF368 83 C5 00 00 */ lwz r30, 0(r5)
/* 800E240C 000DF36C 48 00 01 BD */ bl GetPowerup__17CScriptSpawnPointCFRCQ212CPlayerState9EItemType
/* 800E2410 000DF370 7C 65 1B 78 */ mr r5, r3
/* 800E2414 000DF374 7F 64 DB 78 */ mr r4, r27
/* 800E2418 000DF378 7F C3 F3 78 */ mr r3, r30
/* 800E241C 000DF37C 4B FA FA 71 */ bl ReInitializePowerUp__12CPlayerStateFQ212CPlayerState9EItemTypei
/* 800E2420 000DF380 80 BD 08 B8 */ lwz r5, 0x8b8(r29)
/* 800E2424 000DF384 7F 83 E3 78 */ mr r3, r28
/* 800E2428 000DF388 38 81 00 24 */ addi r4, r1, 0x24
/* 800E242C 000DF38C 83 C5 00 00 */ lwz r30, 0(r5)
/* 800E2430 000DF390 48 00 01 99 */ bl GetPowerup__17CScriptSpawnPointCFRCQ212CPlayerState9EItemType
/* 800E2434 000DF394 7C 65 1B 78 */ mr r5, r3
/* 800E2438 000DF398 7F 64 DB 78 */ mr r4, r27
/* 800E243C 000DF39C 7F C3 F3 78 */ mr r3, r30
/* 800E2440 000DF3A0 4B FA F8 C1 */ bl ResetAndIncrPickUp__12CPlayerStateFQ212CPlayerState9EItemTypei
/* 800E2444 000DF3A4 3B 7B 00 01 */ addi r27, r27, 1
/* 800E2448 000DF3A8 2C 1B 00 29 */ cmpwi r27, 0x29
/* 800E244C 000DF3AC 41 80 FF AC */ blt lbl_800E23F8
lbl_800E2450:
/* 800E2450 000DF3B0 88 1C 00 30 */ lbz r0, 0x30(r28)
/* 800E2454 000DF3B4 54 00 CF FF */ rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 800E2458 000DF3B8 41 82 01 5C */ beq lbl_800E25B4
/* 800E245C 000DF3BC 80 BC 00 04 */ lwz r5, 4(r28)
/* 800E2460 000DF3C0 80 1D 08 CC */ lwz r0, 0x8cc(r29)
/* 800E2464 000DF3C4 90 A1 00 20 */ stw r5, 0x20(r1)
/* 800E2468 000DF3C8 7C 00 28 00 */ cmpw r0, r5
/* 800E246C 000DF3CC 83 FD 08 4C */ lwz r31, 0x84c(r29)
/* 800E2470 000DF3D0 90 01 00 1C */ stw r0, 0x1c(r1)
/* 800E2474 000DF3D4 41 82 00 F8 */ beq lbl_800E256C
/* 800E2478 000DF3D8 80 9D 08 50 */ lwz r4, 0x850(r29)
/* 800E247C 000DF3DC 54 A3 18 38 */ slwi r3, r5, 3
/* 800E2480 000DF3E0 38 03 00 04 */ addi r0, r3, 4
/* 800E2484 000DF3E4 90 A1 00 18 */ stw r5, 0x18(r1)
/* 800E2488 000DF3E8 80 64 00 20 */ lwz r3, 0x20(r4)
/* 800E248C 000DF3EC 3B C0 00 00 */ li r30, 0
/* 800E2490 000DF3F0 7F 63 00 2E */ lwzx r27, r3, r0
/* 800E2494 000DF3F4 88 1B 00 F0 */ lbz r0, 0xf0(r27)
/* 800E2498 000DF3F8 54 00 CF FF */ rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 800E249C 000DF3FC 41 82 00 10 */ beq lbl_800E24AC
/* 800E24A0 000DF400 80 7B 01 2C */ lwz r3, 0x12c(r27)
/* 800E24A4 000DF404 80 03 10 DC */ lwz r0, 0x10dc(r3)
/* 800E24A8 000DF408 48 00 00 08 */ b lbl_800E24B0
lbl_800E24AC:
/* 800E24AC 000DF40C 38 00 00 00 */ li r0, 0
lbl_800E24B0:
/* 800E24B0 000DF410 2C 00 00 00 */ cmpwi r0, 0
/* 800E24B4 000DF414 40 82 00 28 */ bne lbl_800E24DC
lbl_800E24B8:
/* 800E24B8 000DF418 7F 63 DB 78 */ mr r3, r27
/* 800E24BC 000DF41C 4B F7 C6 B5 */ bl TryTakingOutOfARAM__9CGameAreaFv
/* 800E24C0 000DF420 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 800E24C4 000DF424 41 82 FF F4 */ beq lbl_800E24B8
/* 800E24C8 000DF428 80 BD 08 50 */ lwz r5, 0x850(r29)
/* 800E24CC 000DF42C 7F 64 DB 78 */ mr r4, r27
/* 800E24D0 000DF430 38 60 00 01 */ li r3, 1
/* 800E24D4 000DF434 4B FE 1C 09 */ bl PropogateAreaChain__6CWorldFQ29CGameArea15EOcclusionStateP9CGameAreaP6CWorld
/* 800E24D8 000DF438 3B C0 00 01 */ li r30, 1
lbl_800E24DC:
/* 800E24DC 000DF43C 80 01 00 20 */ lwz r0, 0x20(r1)
/* 800E24E0 000DF440 7F A3 EB 78 */ mr r3, r29
/* 800E24E4 000DF444 38 81 00 14 */ addi r4, r1, 0x14
/* 800E24E8 000DF448 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E24EC 000DF44C 4B F6 9B E1 */ bl SetCurrentAreaId__13CStateManagerF7TAreaId
/* 800E24F0 000DF450 80 01 00 20 */ lwz r0, 0x20(r1)
/* 800E24F4 000DF454 7F A3 EB 78 */ mr r3, r29
/* 800E24F8 000DF458 7F E4 FB 78 */ mr r4, r31
/* 800E24FC 000DF45C 38 A1 00 10 */ addi r5, r1, 0x10
/* 800E2500 000DF460 90 01 00 10 */ stw r0, 0x10(r1)
/* 800E2504 000DF464 4B F6 2D 75 */ bl SetActorAreaId__13CStateManagerFR6CActor7TAreaId
/* 800E2508 000DF468 7F E3 FB 78 */ mr r3, r31
/* 800E250C 000DF46C 7F A5 EB 78 */ mr r5, r29
/* 800E2510 000DF470 38 9C 00 34 */ addi r4, r28, 0x34
/* 800E2514 000DF474 38 C0 00 01 */ li r6, 1
/* 800E2518 000DF478 48 1A 2B 85 */ bl Teleport__7CPlayerFRC12CTransform4fR13CStateManagerb
/* 800E251C 000DF47C 88 1C 01 0C */ lbz r0, 0x10c(r28)
/* 800E2520 000DF480 7F E3 FB 78 */ mr r3, r31
/* 800E2524 000DF484 7F A5 EB 78 */ mr r5, r29
/* 800E2528 000DF488 54 04 D7 FE */ rlwinm r4, r0, 0x1a, 0x1f, 0x1f
/* 800E252C 000DF48C 7C 04 00 D0 */ neg r0, r4
/* 800E2530 000DF490 7C 00 23 78 */ or r0, r0, r4
/* 800E2534 000DF494 54 04 0F FE */ srwi r4, r0, 0x1f
/* 800E2538 000DF498 4B F3 51 35 */ bl SetSpawnedMorphBallState__7CPlayerFQ27CPlayer21EPlayerMorphBallStateR13CStateManager
/* 800E253C 000DF49C 57 C0 06 3F */ clrlwi. r0, r30, 0x18
/* 800E2540 000DF4A0 41 82 00 60 */ beq lbl_800E25A0
/* 800E2544 000DF4A4 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 800E2548 000DF4A8 38 60 00 00 */ li r3, 0
/* 800E254C 000DF4AC 80 BD 08 50 */ lwz r5, 0x850(r29)
/* 800E2550 000DF4B0 54 04 18 38 */ slwi r4, r0, 3
/* 800E2554 000DF4B4 90 01 00 0C */ stw r0, 0xc(r1)
/* 800E2558 000DF4B8 80 C5 00 20 */ lwz r6, 0x20(r5)
/* 800E255C 000DF4BC 38 04 00 04 */ addi r0, r4, 4
/* 800E2560 000DF4C0 7C 86 00 2E */ lwzx r4, r6, r0
/* 800E2564 000DF4C4 4B FE 1B 79 */ bl PropogateAreaChain__6CWorldFQ29CGameArea15EOcclusionStateP9CGameAreaP6CWorld
/* 800E2568 000DF4C8 48 00 00 38 */ b lbl_800E25A0
lbl_800E256C:
/* 800E256C 000DF4CC 7F E3 FB 78 */ mr r3, r31
/* 800E2570 000DF4D0 7F A5 EB 78 */ mr r5, r29
/* 800E2574 000DF4D4 38 9C 00 34 */ addi r4, r28, 0x34
/* 800E2578 000DF4D8 38 C0 00 01 */ li r6, 1
/* 800E257C 000DF4DC 48 1A 2B 21 */ bl Teleport__7CPlayerFRC12CTransform4fR13CStateManagerb
/* 800E2580 000DF4E0 88 1C 01 0C */ lbz r0, 0x10c(r28)
/* 800E2584 000DF4E4 7F E3 FB 78 */ mr r3, r31
/* 800E2588 000DF4E8 7F A5 EB 78 */ mr r5, r29
/* 800E258C 000DF4EC 54 04 D7 FE */ rlwinm r4, r0, 0x1a, 0x1f, 0x1f
/* 800E2590 000DF4F0 7C 04 00 D0 */ neg r0, r4
/* 800E2594 000DF4F4 7C 00 23 78 */ or r0, r0, r4
/* 800E2598 000DF4F8 54 04 0F FE */ srwi r4, r0, 0x1f
/* 800E259C 000DF4FC 4B F3 50 D1 */ bl SetSpawnedMorphBallState__7CPlayerFQ27CPlayer21EPlayerMorphBallStateR13CStateManager
lbl_800E25A0:
/* 800E25A0 000DF500 7F 83 E3 78 */ mr r3, r28
/* 800E25A4 000DF504 7F A5 EB 78 */ mr r5, r29
/* 800E25A8 000DF508 38 80 00 09 */ li r4, 9
/* 800E25AC 000DF50C 38 C0 FF FF */ li r6, -1
/* 800E25B0 000DF510 4B F6 EB 11 */ bl SendScriptMsgs__7CEntityF18EScriptObjectStateR13CStateManager20EScriptObjectMessage
lbl_800E25B4:
/* 800E25B4 000DF514 BB 61 00 2C */ lmw r27, 0x2c(r1)
/* 800E25B8 000DF518 80 01 00 44 */ lwz r0, 0x44(r1)
/* 800E25BC 000DF51C 7C 08 03 A6 */ mtlr r0
/* 800E25C0 000DF520 38 21 00 40 */ addi r1, r1, 0x40
/* 800E25C4 000DF524 4E 80 00 20 */ blr
.global GetPowerup__17CScriptSpawnPointCFRCQ212CPlayerState9EItemType
GetPowerup__17CScriptSpawnPointCFRCQ212CPlayerState9EItemType:
/* 800E25C8 000DF528 80 04 00 00 */ lwz r0, 0(r4)
/* 800E25CC 000DF52C 2C 00 00 29 */ cmpwi r0, 0x29
/* 800E25D0 000DF530 40 80 00 0C */ bge lbl_800E25DC
/* 800E25D4 000DF534 2C 00 00 00 */ cmpwi r0, 0
/* 800E25D8 000DF538 40 80 00 0C */ bge lbl_800E25E4
lbl_800E25DC:
/* 800E25DC 000DF53C 80 63 00 68 */ lwz r3, 0x68(r3)
/* 800E25E0 000DF540 4E 80 00 20 */ blr
lbl_800E25E4:
/* 800E25E4 000DF544 54 00 10 3A */ slwi r0, r0, 2
/* 800E25E8 000DF548 7C 63 02 14 */ add r3, r3, r0
/* 800E25EC 000DF54C 80 63 00 68 */ lwz r3, 0x68(r3)
/* 800E25F0 000DF550 4E 80 00 20 */ blr
.global GetTransform__17CScriptSpawnPointCFv
GetTransform__17CScriptSpawnPointCFv:
/* 800E25F4 000DF554 38 63 00 34 */ addi r3, r3, 0x34
/* 800E25F8 000DF558 4E 80 00 20 */ blr
.global __dt__17CScriptSpawnPointFv
__dt__17CScriptSpawnPointFv:
/* 800E25FC 000DF55C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E2600 000DF560 7C 08 02 A6 */ mflr r0
/* 800E2604 000DF564 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E2608 000DF568 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800E260C 000DF56C 7C 9F 23 78 */ mr r31, r4
/* 800E2610 000DF570 93 C1 00 08 */ stw r30, 8(r1)
/* 800E2614 000DF574 7C 7E 1B 79 */ or. r30, r3, r3
/* 800E2618 000DF578 41 82 00 88 */ beq lbl_800E26A0
/* 800E261C 000DF57C 3C 60 80 3E */ lis r3, __vt__17CScriptSpawnPoint@ha
/* 800E2620 000DF580 34 1E 00 64 */ addic. r0, r30, 0x64
/* 800E2624 000DF584 38 03 F8 50 */ addi r0, r3, __vt__17CScriptSpawnPoint@l
/* 800E2628 000DF588 90 1E 00 00 */ stw r0, 0(r30)
/* 800E262C 000DF58C 41 82 00 58 */ beq lbl_800E2684
/* 800E2630 000DF590 80 BE 00 64 */ lwz r5, 0x64(r30)
/* 800E2634 000DF594 38 60 00 00 */ li r3, 0
/* 800E2638 000DF598 2C 05 00 00 */ cmpwi r5, 0
/* 800E263C 000DF59C 40 81 00 40 */ ble lbl_800E267C
/* 800E2640 000DF5A0 2C 05 00 08 */ cmpwi r5, 8
/* 800E2644 000DF5A4 38 85 FF F8 */ addi r4, r5, -8
/* 800E2648 000DF5A8 40 81 00 20 */ ble lbl_800E2668
/* 800E264C 000DF5AC 38 04 00 07 */ addi r0, r4, 7
/* 800E2650 000DF5B0 54 00 E8 FE */ srwi r0, r0, 3
/* 800E2654 000DF5B4 7C 09 03 A6 */ mtctr r0
/* 800E2658 000DF5B8 2C 04 00 00 */ cmpwi r4, 0
/* 800E265C 000DF5BC 40 81 00 0C */ ble lbl_800E2668
lbl_800E2660:
/* 800E2660 000DF5C0 38 63 00 08 */ addi r3, r3, 8
/* 800E2664 000DF5C4 42 00 FF FC */ bdnz lbl_800E2660
lbl_800E2668:
/* 800E2668 000DF5C8 7C 03 28 50 */ subf r0, r3, r5
/* 800E266C 000DF5CC 7C 09 03 A6 */ mtctr r0
/* 800E2670 000DF5D0 7C 03 28 00 */ cmpw r3, r5
/* 800E2674 000DF5D4 40 80 00 08 */ bge lbl_800E267C
lbl_800E2678:
/* 800E2678 000DF5D8 42 00 00 00 */ bdnz lbl_800E2678
lbl_800E267C:
/* 800E267C 000DF5DC 38 00 00 00 */ li r0, 0
/* 800E2680 000DF5E0 90 1E 00 64 */ stw r0, 0x64(r30)
lbl_800E2684:
/* 800E2684 000DF5E4 7F C3 F3 78 */ mr r3, r30
/* 800E2688 000DF5E8 38 80 00 00 */ li r4, 0
/* 800E268C 000DF5EC 4B F6 EB E9 */ bl __dt__7CEntityFv
/* 800E2690 000DF5F0 7F E0 07 35 */ extsh. r0, r31
/* 800E2694 000DF5F4 40 81 00 0C */ ble lbl_800E26A0
/* 800E2698 000DF5F8 7F C3 F3 78 */ mr r3, r30
/* 800E269C 000DF5FC 48 23 32 95 */ bl Free__7CMemoryFPCv
lbl_800E26A0:
/* 800E26A0 000DF600 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E26A4 000DF604 7F C3 F3 78 */ mr r3, r30
/* 800E26A8 000DF608 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800E26AC 000DF60C 83 C1 00 08 */ lwz r30, 8(r1)
/* 800E26B0 000DF610 7C 08 03 A6 */ mtlr r0
/* 800E26B4 000DF614 38 21 00 10 */ addi r1, r1, 0x10
/* 800E26B8 000DF618 4E 80 00 20 */ blr
.global "__ct__17CScriptSpawnPointF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRCQ24rstl21reserved_vector<i,41>bbb"
"__ct__17CScriptSpawnPointF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRCQ24rstl21reserved_vector<i,41>bbb":
/* 800E26BC 000DF61C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 800E26C0 000DF620 7C 08 02 A6 */ mflr r0
/* 800E26C4 000DF624 90 01 00 34 */ stw r0, 0x34(r1)
/* 800E26C8 000DF628 BF 61 00 1C */ stmw r27, 0x1c(r1)
/* 800E26CC 000DF62C 7C FB 3B 78 */ mr r27, r7
/* 800E26D0 000DF630 8B C1 00 3B */ lbz r30, 0x3b(r1)
/* 800E26D4 000DF634 7C 7F 1B 78 */ mr r31, r3
/* 800E26D8 000DF638 7D 1C 43 78 */ mr r28, r8
/* 800E26DC 000DF63C 7D 3D 4B 78 */ mr r29, r9
/* 800E26E0 000DF640 A0 04 00 00 */ lhz r0, 0(r4)
/* 800E26E4 000DF644 7C A4 2B 78 */ mr r4, r5
/* 800E26E8 000DF648 7C C5 33 78 */ mr r5, r6
/* 800E26EC 000DF64C 7D 46 53 78 */ mr r6, r10
/* 800E26F0 000DF650 B0 01 00 08 */ sth r0, 8(r1)
/* 800E26F4 000DF654 7C 87 23 78 */ mr r7, r4
/* 800E26F8 000DF658 38 81 00 08 */ addi r4, r1, 8
/* 800E26FC 000DF65C 4B F6 EC 29 */ bl "__ct__7CEntityF9TUniqueIdRC11CEntityInfobRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>"
/* 800E2700 000DF660 3C 60 80 3E */ lis r3, __vt__17CScriptSpawnPoint@ha
/* 800E2704 000DF664 7F 64 DB 78 */ mr r4, r27
/* 800E2708 000DF668 38 03 F8 50 */ addi r0, r3, __vt__17CScriptSpawnPoint@l
/* 800E270C 000DF66C 38 7F 00 34 */ addi r3, r31, 0x34
/* 800E2710 000DF670 90 1F 00 00 */ stw r0, 0(r31)
/* 800E2714 000DF674 48 23 04 61 */ bl __ct__12CTransform4fFRC12CTransform4f
/* 800E2718 000DF678 80 1C 00 00 */ lwz r0, 0(r28)
/* 800E271C 000DF67C 38 9F 00 68 */ addi r4, r31, 0x68
/* 800E2720 000DF680 38 7C 00 04 */ addi r3, r28, 4
/* 800E2724 000DF684 90 1F 00 64 */ stw r0, 0x64(r31)
/* 800E2728 000DF688 80 1F 00 64 */ lwz r0, 0x64(r31)
/* 800E272C 000DF68C 7C 09 03 A6 */ mtctr r0
/* 800E2730 000DF690 2C 00 00 00 */ cmpwi r0, 0
/* 800E2734 000DF694 40 81 00 20 */ ble lbl_800E2754
lbl_800E2738:
/* 800E2738 000DF698 28 04 00 00 */ cmplwi r4, 0
/* 800E273C 000DF69C 41 82 00 0C */ beq lbl_800E2748
/* 800E2740 000DF6A0 80 03 00 00 */ lwz r0, 0(r3)
/* 800E2744 000DF6A4 90 04 00 00 */ stw r0, 0(r4)
lbl_800E2748:
/* 800E2748 000DF6A8 38 84 00 04 */ addi r4, r4, 4
/* 800E274C 000DF6AC 38 63 00 04 */ addi r3, r3, 4
/* 800E2750 000DF6B0 42 00 FF E8 */ bdnz lbl_800E2738
lbl_800E2754:
/* 800E2754 000DF6B4 88 1F 01 0C */ lbz r0, 0x10c(r31)
/* 800E2758 000DF6B8 53 A0 3E 30 */ rlwimi r0, r29, 7, 0x18, 0x18
/* 800E275C 000DF6BC 7F E3 FB 78 */ mr r3, r31
/* 800E2760 000DF6C0 98 1F 01 0C */ stb r0, 0x10c(r31)
/* 800E2764 000DF6C4 88 1F 01 0C */ lbz r0, 0x10c(r31)
/* 800E2768 000DF6C8 53 C0 36 72 */ rlwimi r0, r30, 6, 0x19, 0x19
/* 800E276C 000DF6CC 98 1F 01 0C */ stb r0, 0x10c(r31)
/* 800E2770 000DF6D0 BB 61 00 1C */ lmw r27, 0x1c(r1)
/* 800E2774 000DF6D4 80 01 00 34 */ lwz r0, 0x34(r1)
/* 800E2778 000DF6D8 7C 08 03 A6 */ mtlr r0
/* 800E277C 000DF6DC 38 21 00 30 */ addi r1, r1, 0x30
/* 800E2780 000DF6E0 4E 80 00 20 */ blr