Files
ph/asm/ov00/Player/LinkStateInteract.s
T
2024-04-16 18:18:21 +02:00

2229 lines
50 KiB
ArmAsm

.include "macros/function.inc"
.include "ov00/Player/LinkStateInteract.inc"
.text
.global _ZN17LinkStateInteract8vfunc_00Ev
thumb_func_start _ZN17LinkStateInteract8vfunc_00Ev
_ZN17LinkStateInteract8vfunc_00Ev: ; 0x020aa32c
bx lr
.align 2, 0
thumb_func_end _ZN17LinkStateInteract8vfunc_00Ev
.global _ZN17LinkStateInteract5GetIdEv
arm_func_start _ZN17LinkStateInteract5GetIdEv
_ZN17LinkStateInteract5GetIdEv: ; 0x020aa330
mov r0, #2
bx lr
arm_func_end _ZN17LinkStateInteract5GetIdEv
.global _ZN17LinkStateInteract20CreateDebugHierarchyEv
arm_func_start _ZN17LinkStateInteract20CreateDebugHierarchyEv
_ZN17LinkStateInteract20CreateDebugHierarchyEv: ; 0x020aa338
ldr r1, [r0, #4]
cmp r1, #7
cmpne r1, #8
cmpne r1, #9
bne _020aa354
ldr r0, [r0, #0x10]
bx lr
_020aa354:
mvn r0, #0
bx lr
arm_func_end _ZN17LinkStateInteract20CreateDebugHierarchyEv
.global _ZN17LinkStateInteract14GetGrabActorIdEv
thumb_func_start _ZN17LinkStateInteract14GetGrabActorIdEv
_ZN17LinkStateInteract14GetGrabActorIdEv: ; 0x020aa35c
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
ldr r6, _020aa4f0 ; =data_ov00_020e59b8
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
ldr r3, [r0]
ldr r1, _020aa4f4 ; =0x4c475242
ldr r2, _020aa4f8 ; =data_ov00_020e5940
ldr r3, [r3, #0x3c]
add r4, r0, #0
blx r3
ldr r0, _020aa4f8 ; =data_ov00_020e5940
mov r1, #0
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
mov r0, #3
str r1, [sp, #8]
lsl r0, r0, #0xc
str r0, [sp, #0xc]
str r1, [sp, #0x10]
add r0, r4, #0
ldr r4, [r0]
ldr r3, _020aa4f4 ; =0x4c475242
ldr r4, [r4, #0x34]
mov r1, #1
add r2, r6, #0
blx r4
ldr r0, _020aa4fc ; =data_ov00_020e5908
ldr r7, _020aa500 ; =data_ov00_020e59cc
ldr r1, [r0, #0x40]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r4, r0, #1
add r0, r5, #0
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
ldr r3, [r0]
ldr r1, _020aa4f4 ; =0x4c475242
ldr r2, _020aa504 ; =data_ov00_020e5944
ldr r3, [r3, #0x3c]
add r6, r0, #0
blx r3
ldr r0, _020aa504 ; =data_ov00_020e5944
ldr r3, _020aa4f4 ; =0x4c475242
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
str r4, [sp, #0xc]
str r0, [sp, #0x10]
add r0, r6, #0
ldr r4, [r0]
mov r1, #1
ldr r4, [r4, #0x34]
add r2, r7, #0
blx r4
ldr r0, _020aa4fc ; =data_ov00_020e5908
ldr r7, _020aa508 ; =data_ov00_020e59e4
ldr r4, [r0, #0x40]
add r0, r5, #0
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
ldr r3, [r0]
ldr r1, _020aa4f4 ; =0x4c475242
ldr r2, _020aa50c ; =data_ov00_020e5948
ldr r3, [r3, #0x3c]
add r6, r0, #0
blx r3
ldr r0, _020aa50c ; =data_ov00_020e5948
ldr r3, _020aa4f4 ; =0x4c475242
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
lsr r0, r4, #0x1f
add r0, r4, r0
asr r0, r0, #1
str r0, [sp, #8]
str r4, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
add r0, r6, #0
ldr r4, [r0]
mov r1, #1
ldr r4, [r4, #0x34]
add r2, r7, #0
blx r4
ldr r1, _020aa4fc ; =data_ov00_020e5908
add r0, r5, #0
ldr r1, [r1, #0x54]
blx _ZN13LinkStateBase26PlayerControlData_vfunc_14Ei
add r6, r0, #0
add r0, r5, #0
ldr r7, _020aa510 ; =data_ov00_020e59fc
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
ldr r3, [r0]
ldr r1, _020aa4f4 ; =0x4c475242
ldr r2, _020aa514 ; =data_ov00_020e5960
ldr r3, [r3, #0x3c]
add r4, r0, #0
blx r3
ldr r0, _020aa514 ; =data_ov00_020e5960
mov r1, #0
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
mov r0, #3
str r1, [sp, #8]
lsl r0, r0, #0xc
str r0, [sp, #0xc]
str r1, [sp, #0x10]
add r0, r4, #0
ldr r4, [r0]
ldr r3, _020aa4f4 ; =0x4c475242
ldr r4, [r4, #0x34]
mov r1, #1
add r2, r7, #0
blx r4
add r0, r5, #0
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
ldr r3, [r0]
ldr r1, _020aa4f4 ; =0x4c475242
ldr r2, _020aa518 ; =data_ov00_020e5964
ldr r3, [r3, #0x3c]
add r7, r0, #0
blx r3
lsr r0, r6, #0x1f
add r0, r6, r0
asr r4, r0, #1
ldr r0, _020aa518 ; =data_ov00_020e5964
ldr r2, _020aa51c ; =data_ov00_020e5a0c
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
str r4, [sp, #0xc]
str r0, [sp, #0x10]
add r0, r7, #0
ldr r7, [r0]
ldr r3, _020aa4f4 ; =0x4c475242
ldr r7, [r7, #0x34]
mov r1, #1
blx r7
add r0, r5, #0
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
ldr r3, [r0]
ldr r1, _020aa4f4 ; =0x4c475242
ldr r2, _020aa520 ; =data_ov00_020e5968
ldr r3, [r3, #0x3c]
add r7, r0, #0
blx r3
ldr r0, _020aa520 ; =data_ov00_020e5968
ldr r2, _020aa524 ; =data_ov00_020e5a20
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
str r4, [sp, #8]
str r6, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
add r0, r7, #0
ldr r4, [r0]
ldr r3, _020aa4f4 ; =0x4c475242
ldr r4, [r4, #0x34]
mov r1, #1
blx r4
add r0, r5, #0
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
ldr r0, _020aa4fc ; =data_ov00_020e5908
ldr r6, _020aa528 ; =data_ov00_020e5a34
ldr r0, [r0, #0x20]
lsl r4, r0, #1
add r0, r5, #0
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
ldr r1, _020aa52c ; =data_ov00_020e5928
ldr r3, _020aa530 ; =0x4c505348
str r1, [sp]
mov r1, #6
str r1, [sp, #4]
mov r1, #0
str r1, [sp, #8]
str r4, [sp, #0xc]
str r1, [sp, #0x10]
ldr r4, [r0]
add r2, r6, #0
ldr r4, [r4, #0x34]
blx r4
add r0, r5, #0
blx _ZN13LinkStateBase18GetDebugHierarchy0Ev
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
thumb_func_end _ZN17LinkStateInteract14GetGrabActorIdEv
_020aa4f0: .word data_ov00_020e59b8
_020aa4f4: .word 0x4c475242
_020aa4f8: .word data_ov00_020e5940
_020aa4fc: .word data_ov00_020e5908
_020aa500: .word data_ov00_020e59cc
_020aa504: .word data_ov00_020e5944
_020aa508: .word data_ov00_020e59e4
_020aa50c: .word data_ov00_020e5948
_020aa510: .word data_ov00_020e59fc
_020aa514: .word data_ov00_020e5960
_020aa518: .word data_ov00_020e5964
_020aa51c: .word data_ov00_020e5a0c
_020aa520: .word data_ov00_020e5968
_020aa524: .word data_ov00_020e5a20
_020aa528: .word data_ov00_020e5a34
_020aa52c: .word data_ov00_020e5928
_020aa530: .word 0x4c505348
.global _ZN17LinkStateInteract12OnStateEnterEv
arm_func_start _ZN17LinkStateInteract12OnStateEnterEv
_ZN17LinkStateInteract12OnStateEnterEv: ; 0x020aa534
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r4, r0
ldr r1, [r4, #4]
cmp r1, #6
beq _020aa558
bl _ZN13LinkStateBase18func_ov00_020a82acEv
mov r0, r4
bl _ZN13LinkStateBase18EquipItem_vfunc_28Ev
_020aa558:
ldr r0, [r4, #4]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _020aa76c
_020aa568: ; jump table
b _020aa590 ; case 0
b _020aa5a0 ; case 1
b _020aa5c0 ; case 2
b _020aa5d4 ; case 3
b _020aa5d4 ; case 4
b _020aa634 ; case 5
b _020aa75c ; case 6
b _020aa684 ; case 7
b _020aa704 ; case 8
b _020aa730 ; case 9
_020aa590:
mov r0, r4
mov r1, #0
bl _ZN13LinkStateBase15ChangeLinkStateEi
b _020aa778
_020aa5a0:
ldr r0, _020aa78c ; =data_027e0fb8
ldr r0, [r0]
bl _ZN13PlayerControl9SetUnk_80Ev
ldr r1, _020aa790 ; =data_ov00_020e592c
mov r0, r4
mov r2, #1
bl _ZN13LinkStateBase18func_ov00_020a8a4cEii
b _020aa778
_020aa5c0:
ldr r1, _020aa794 ; =data_ov00_020e593c
mov r0, r4
mov r2, #1
bl _ZN13LinkStateBase18func_ov00_020a8a4cEii
b _020aa778
_020aa5d4:
mov r0, r4
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
mov r0, r4
beq _020aa62c
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r2, r0
ldr r0, _020aa798 ; =data_ov00_020eec9c
ldr r1, _020aa79c ; =0x00000125
bl func_ov00_020d7b20
ldr r0, [r4, #0x18]
ldr r1, [r4, #0x20]
bl func_01ffa0f4
mov r5, r0
mov r0, r4
bl _ZN13LinkStateBase14GetPlayerAngleEv
strh r5, [r0]
ldr r1, _020aa7a0 ; =data_ov00_020e595c
mov r0, r4
mov r2, #1
bl _ZN13LinkStateBase18func_ov00_020a89bcEii
b _020aa778
_020aa62c:
bl _ZN13LinkStateBase18func_ov00_020a8994Ev
b _020aa778
_020aa634:
mov r0, r4
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
beq _020aa674
ldr r0, [r4, #0x18]
ldr r1, [r4, #0x20]
bl func_01ffa0f4
mov r5, r0
mov r0, r4
bl _ZN13LinkStateBase14GetPlayerAngleEv
strh r5, [r0]
ldr r1, _020aa7a4 ; =data_ov00_020e594c
mov r0, r4
mov r2, #1
bl _ZN13LinkStateBase18func_ov00_020a8a4cEii
b _020aa778
_020aa674:
mov r0, r4
mov r1, #0
bl _ZN13LinkStateBase15ChangeLinkStateEi
b _020aa778
_020aa684:
ldr r0, _020aa78c ; =data_027e0fb8
ldr r0, [r0]
bl _ZN13PlayerControl9SetUnk_80Ev
ldr r0, _020aa7a8 ; =data_027e0fe4
add r1, r4, #0x10
ldr r0, [r0]
bl _ZN12ActorManager8GetActorEP8ActorRef
cmp r0, #0
mov r0, r4
beq _020aa6bc
bl _ZN13LinkStateBase24Get_PlayerLinkBase_Unk44Ev
mov r1, #0
str r1, [r0]
b _020aa6c4
_020aa6bc:
mov r1, #0
bl _ZN13LinkStateBase15ChangeLinkStateEi
_020aa6c4:
mov r2, #0
str r2, [sp]
mov r3, r2
add r0, r4, #0x24
mov r1, #1
str r2, [sp, #4]
bl func_020350b4
mov r1, #0
mov r2, r1
mov r3, r1
add r0, r4, #0x24
str r1, [sp]
bl func_020351b8
mov r0, #0
strb r0, [r4, #0xb2]
b _020aa778
_020aa704:
ldrb r0, [r4, #0xb0]
cmp r0, #0
beq _020aa720
mov r0, r4
bl _ZN13LinkStateBase24Get_PlayerLinkBase_Unk44Ev
mov r1, #1
str r1, [r0]
_020aa720:
ldr r0, _020aa7ac ; =data_ov00_020e5908
ldr r0, [r0, #0x20]
str r0, [r4, #0xc]
b _020aa778
_020aa730:
ldrb r0, [r4, #0xb1]
cmp r0, #0
beq _020aa74c
mov r0, r4
bl _ZN13LinkStateBase24Get_PlayerLinkBase_Unk44Ev
mvn r1, #0
str r1, [r0]
_020aa74c:
ldr r0, _020aa7ac ; =data_ov00_020e5908
ldr r0, [r0, #0x20]
str r0, [r4, #0xc]
b _020aa778
_020aa75c:
ldr r0, _020aa78c ; =data_027e0fb8
ldr r0, [r0]
bl _ZN13PlayerControl9SetUnk_80Ev
b _020aa778
_020aa76c:
mov r0, r4
mov r1, #0
bl _ZN13LinkStateBase15ChangeLinkStateEi
_020aa778:
ldr r0, [r4, #4]
cmp r0, #7
strne r0, [r4, #0xac]
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract12OnStateEnterEv
_020aa78c: .word data_027e0fb8
_020aa790: .word data_ov00_020e592c
_020aa794: .word data_ov00_020e593c
_020aa798: .word data_ov00_020eec9c
_020aa79c: .word 0x00000125
_020aa7a0: .word data_ov00_020e595c
_020aa7a4: .word data_ov00_020e594c
_020aa7a8: .word data_027e0fe4
_020aa7ac: .word data_ov00_020e5908
.global _ZN17LinkStateInteract12OnStateLeaveEi
arm_func_start _ZN17LinkStateInteract12OnStateLeaveEi
_ZN17LinkStateInteract12OnStateLeaveEi: ; 0x020aa7b0
stmdb sp!, {r4, lr}
mov r4, r0
bl _ZN13LinkStateBase12OnStateLeaveEi
ldr r0, _020aa814 ; =data_027e0fb8
ldr r0, [r0]
ldrb r1, [r0, #0x80]
cmp r1, #0
beq _020aa7d4
bl _ZN13PlayerControl13StopFollowingEv
_020aa7d4:
mov r0, r4
bl _ZN13LinkStateBase12GetGrabActorEv
ldr r1, [r4, #4]
cmp r1, #1
ldmneia sp!, {r4, pc}
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldrb r0, [r0, #0x11b]
cmp r0, #0
ldmneia sp!, {r4, pc}
mov r0, r4
bl _ZN13LinkStateBase15GetGrabActorRefEv
mvn r1, #0
str r1, [r0]
str r1, [r0, #4]
ldmia sp!, {r4, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract12OnStateLeaveEi
_020aa814: .word data_027e0fb8
.global _ZN17LinkStateInteract18func_ov00_020aa818Ev
arm_func_start _ZN17LinkStateInteract18func_ov00_020aa818Ev
_ZN17LinkStateInteract18func_ov00_020aa818Ev: ; 0x020aa818
stmdb sp!, {r4, lr}
ldr r0, _020aa840 ; =gItemManager
ldr r4, [r0]
mov r0, r4
bl _ZNK11ItemManager16GetEquippedFairyEv
mov r1, r0
mov r0, r4
bl _ZNK11ItemManager8GetFairyEi
bl func_ov00_020ba458
ldmia sp!, {r4, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract18func_ov00_020aa818Ev
_020aa840: .word gItemManager
.global _ZN17LinkStateInteract18func_ov00_020aa844EP5Actor
arm_func_start _ZN17LinkStateInteract18func_ov00_020aa844EP5Actor
_ZN17LinkStateInteract18func_ov00_020aa844EP5Actor: ; 0x020aa844
stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
sub sp, sp, #0x2c
mov r4, r1
mov r5, r0
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r1, r0
add r2, sp, #0x20
add r0, r4, #0x48
bl func_01ff9bf8
mov r0, r5
bl _ZN13LinkStateBase14GetPlayerAngleEv
ldrh r6, [r0]
mov r0, r5
bl _ZN13LinkStateBase14GetPlayerAngleEv
ldrh r1, [r0]
mov r0, r6, asr #0x4
mov r2, r0, lsl #0x2
mov r0, r1, asr #0x4
mov r0, r0, lsl #0x1
add r0, r0, #1
ldr r3, _020aabd0 ; =data_02050f54
mov r1, r0, lsl #0x1
ldrsh r1, [r3, r1]
ldrsh r9, [r3, r2]
ldr r6, [sp, #0x20]
str r1, [sp]
mov r1, r1, asr #0x1f
str r1, [sp, #4]
ldr r1, [sp]
mov r0, r4
rsb r1, r1, #0
str r1, [sp, #8]
ldr r2, [sp, #8]
mov r1, r1, asr #0x1f
smull r3, r2, r6, r2
adds r4, r3, #0x800
adc r3, r2, #0
mov r2, r4, lsr #0xc
str r1, [sp, #0xc]
ldr r7, [sp, #0x28]
orr r2, r2, r3, lsl #20
smull r4, r3, r7, r9
adds r4, r4, #0x800
adc r3, r3, #0
mov r4, r4, lsr #0xc
orr r4, r4, r3, lsl #20
add r1, sp, #0x10
mov r8, r9, asr #0x1f
add r4, r2, r4
bl _ZN5Actor9GetHitboxEP8Cylinder
smull r1, r0, r6, r9
adds r1, r1, #0x800
adc r0, r0, #0
mov r2, r1, lsr #0xc
orr r2, r2, r0, lsl #20
ldr r0, [sp]
smull r1, r0, r7, r0
adds r1, r1, #0x800
adc r0, r0, #0
mov r1, r1, lsr #0xc
orr r1, r1, r0, lsl #20
add r2, r2, r1
ldr r1, [sp, #0x1c]
mov r0, r5
add r1, r1, #0x66
add r1, r1, #0x600
sub r7, r2, r1
bl _ZN13LinkStateBase12GetPlayerVelEv
mov r1, #0
str r1, [r0]
mov r0, r5
bl _ZN13LinkStateBase12GetPlayerVelEv
mov r1, #0
cmp r4, #0
str r1, [r0, #8]
ble _020aaa04
ldr r6, _020aabd4 ; =0x00000155
mov r0, r5
cmp r4, r6
movle r6, r4
bl _ZN13LinkStateBase12GetPlayerVelEv
ldr r1, [sp, #8]
mov r2, r6, asr #0x1f
umull ip, r3, r6, r1
ldr r1, [sp, #0xc]
mla r3, r6, r1, r3
ldr r1, [sp, #8]
adds r6, ip, #0x800
mla r3, r2, r1, r3
adc r2, r3, #0
mov r3, r6, lsr #0xc
ldr r1, _020aabd4 ; =0x00000155
ldr r6, [r0]
orr r3, r3, r2, lsl #20
add r2, r6, r3
str r2, [r0]
cmp r4, r1
movgt r4, r1
mov r0, r5
bl _ZN13LinkStateBase12GetPlayerVelEv
umull r3, r2, r4, r9
mla r2, r4, r8, r2
mov r1, r4, asr #0x1f
mla r2, r1, r9, r2
adds r3, r3, #0x800
adc r1, r2, #0
mov r2, r3, lsr #0xc
ldr r3, [r0, #8]
orr r2, r2, r1, lsl #20
add r1, r3, r2
str r1, [r0, #8]
b _020aaa98
_020aaa04:
cmp r4, #0
bge _020aaa98
mvn r6, #0x154
cmp r4, r6
mov r0, r5
movge r6, r4
bl _ZN13LinkStateBase12GetPlayerVelEv
ldr r1, [sp, #8]
mov r2, r6, asr #0x1f
umull ip, r3, r6, r1
ldr r1, [sp, #0xc]
mla r3, r6, r1, r3
ldr r1, [sp, #8]
adds r6, ip, #0x800
mla r3, r2, r1, r3
adc r2, r3, #0
mov r3, r6, lsr #0xc
mvn r1, #0x154
cmp r4, r1
ldr r6, [r0]
orr r3, r3, r2, lsl #20
add r2, r6, r3
str r2, [r0]
movlt r4, r1
mov r0, r5
bl _ZN13LinkStateBase12GetPlayerVelEv
umull r3, r2, r4, r9
mla r2, r4, r8, r2
mov r1, r4, asr #0x1f
mla r2, r1, r9, r2
adds r3, r3, #0x800
adc r1, r2, #0
mov r2, r3, lsr #0xc
ldr r3, [r0, #8]
orr r2, r2, r1, lsl #20
add r1, r3, r2
str r1, [r0, #8]
_020aaa98:
cmp r7, #0
ble _020aab34
ldr r4, _020aabd4 ; =0x00000155
mov r0, r5
cmp r7, r4
movle r4, r7
bl _ZN13LinkStateBase12GetPlayerVelEv
umull r3, r2, r4, r9
adds r3, r3, #0x800
mla r2, r4, r8, r2
mov r1, r4, asr #0x1f
mla r2, r1, r9, r2
adc r2, r2, #0
mov r3, r3, lsr #0xc
ldr r1, _020aabd4 ; =0x00000155
ldr r4, [r0]
orr r3, r3, r2, lsl #20
add r2, r4, r3
str r2, [r0]
cmp r7, r1
mov r0, r5
movgt r7, r1
bl _ZN13LinkStateBase12GetPlayerVelEv
ldr r1, [sp]
mov r2, r7, asr #0x1f
umull r4, r3, r7, r1
ldr r1, [sp, #4]
adds r4, r4, #0x800
mla r3, r7, r1, r3
ldr r1, [sp]
add sp, sp, #0x2c
mla r3, r2, r1, r3
adc r1, r3, #0
mov r2, r4, lsr #0xc
ldr r3, [r0, #8]
orr r2, r2, r1, lsl #20
add r1, r3, r2
str r1, [r0, #8]
ldmia sp!, {r4, r5, r6, r7, r8, r9, pc}
_020aab34:
addge sp, sp, #0x2c
ldmgeia sp!, {r4, r5, r6, r7, r8, r9, pc}
mvn r4, #0x154
cmp r7, r4
movge r4, r7
mov r0, r5
bl _ZN13LinkStateBase12GetPlayerVelEv
umull r3, r2, r4, r9
adds r3, r3, #0x800
mla r2, r4, r8, r2
mov r1, r4, asr #0x1f
mla r2, r1, r9, r2
adc r2, r2, #0
mov r3, r3, lsr #0xc
mvn r1, #0x154
cmp r7, r1
ldr r4, [r0]
orr r3, r3, r2, lsl #20
add r2, r4, r3
str r2, [r0]
mov r0, r5
movlt r7, r1
bl _ZN13LinkStateBase12GetPlayerVelEv
ldr r1, [sp]
mov r2, r7, asr #0x1f
umull r4, r3, r7, r1
ldr r1, [sp, #4]
adds r4, r4, #0x800
mla r3, r7, r1, r3
ldr r1, [sp]
mla r3, r2, r1, r3
adc r1, r3, #0
mov r2, r4, lsr #0xc
ldr r3, [r0, #8]
orr r2, r2, r1, lsl #20
add r1, r3, r2
str r1, [r0, #8]
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, r9, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract18func_ov00_020aa844EP5Actor
_020aabd0: .word data_02050f54
_020aabd4: .word 0x00000155
.global _ZN17LinkStateInteract8vfunc_20Ei
arm_func_start _ZN17LinkStateInteract8vfunc_20Ei
_ZN17LinkStateInteract8vfunc_20Ei: ; 0x020aabd8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xc8
mov r6, r1
mov r1, #2
mov r4, r0
bl _ZN13LinkStateBase29HasFlags_PlayerLinkBase_Unk48Et
cmp r0, #0
bne _020aac08
mov r0, r4
bl _ZN13LinkStateBase18func_ov00_020a8b80Ev
cmp r0, #0
bne _020aac14
_020aac08:
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020aac14:
mov r0, r4
bl _ZN13LinkStateBase12GetGrabActorEv
movs r5, r0
beq _020aadbc
cmp r6, #0
bne _020aadbc
ldr r0, _020ab3bc ; =gItemManager
mov r6, #0
ldr r0, [r0]
ldr r0, [r0]
sub r0, r0, #9
cmp r0, #1
bhi _020aacf4
ldr r1, _020ab3c0 ; =data_027e0d0c
mov r0, r4
ldr r2, [r1]
str r2, [r4, #0x18]
ldr r2, [r1, #4]
str r2, [r4, #0x1c]
ldr r1, [r1, #8]
str r1, [r4, #0x20]
bl _ZN13LinkStateBase14GetPlayerAngleEv
ldrh r1, [r0]
ldr r2, _020ab3c4 ; =data_02050f54
ldr r0, _020ab3c8 ; =0x000004cd
mov r1, r1, asr #0x4
mov r3, r1, lsl #0x1
mov r1, r3, lsl #0x1
ldrsh ip, [r2, r1]
add r1, r3, #1
mov r1, r1, lsl #0x1
ldrsh r2, [r2, r1]
mov r1, r6
umull r7, lr, ip, r0
mla lr, ip, r1, lr
umull r6, r3, r2, r0
mla r3, r2, r1, r3
mov ip, ip, asr #0x1f
mov r1, r2, asr #0x1f
adds r8, r7, #0x800
mla lr, ip, r0, lr
mla r3, r1, r0, r3
adc r7, lr, #0
mov r8, r8, lsr #0xc
adds r6, r6, #0x800
mov r1, r6, lsr #0xc
ldr r0, [r4, #0x18]
orr r8, r8, r7, lsl #20
add r0, r0, r8
str r0, [r4, #0x18]
adc r0, r3, #0
ldr r2, [r4, #0x20]
orr r1, r1, r0, lsl #20
add r0, r2, r1
str r0, [r4, #0x20]
mov r6, #1
_020aacf4:
mov r0, r5
ldr r1, [r0]
ldr r1, [r1, #0x2c]
blx r1
mvn r1, #0
cmp r0, r1
movne r5, #1
moveq r5, #0
cmp r5, #0
bne _020aad64
cmp r6, #0
bne _020aad3c
ldr r0, _020ab3cc ; =data_027e0fb8
add r1, r4, #0x18
ldr r0, [r0]
bl _ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p
cmp r0, #0
beq _020aad64
_020aad3c:
ldr r0, _020ab3cc ; =data_027e0fb8
mov r1, #0
ldr r2, [r0]
mov r0, #5
strb r1, [r2, #0x79]
strb r1, [r2, #0x7b]
str r0, [r4, #4]
add sp, sp, #0xc8
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020aad64:
cmp r6, #0
bne _020aad88
ldr r0, _020ab3cc ; =data_027e0fb8
mov r2, r5
ldr r0, [r0]
add r1, r4, #0x18
bl _ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb
cmp r0, #0
beq _020aadb0
_020aad88:
ldr r0, _020ab3cc ; =data_027e0fb8
mov r1, #0
ldr r2, [r0]
mov r0, #3
strb r1, [r2, #0x79]
strb r1, [r2, #0x7b]
str r0, [r4, #4]
add sp, sp, #0xc8
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020aadb0:
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020aadbc:
ldr r1, _020ab3cc ; =data_027e0fb8
ldr r0, _020ab3d0 ; =data_027e0fe4
ldr r3, [r1]
ldr r0, [r0]
ldr r2, [r3, #0x84]
add r1, sp, #0x14
str r2, [sp, #0x14]
ldr r2, [r3, #0x88]
str r2, [sp, #0x18]
bl _ZN12ActorManager8GetActorEP8ActorRef
movs r6, r0
bne _020aae38
mov r0, r4
bl _ZN13LinkStateBase18func_ov00_020a8d40Ev
ldr r2, _020ab3cc ; =data_027e0fb8
ldr r1, [r0, #0xe0]
ldr r0, [r2]
bl _ZN13PlayerControl18func_ov00_020b0ad0EP5Actor
cmp r0, #0
beq _020aae2c
mov r0, r4
bl _ZN13LinkStateBase18func_ov00_020a8d40Ev
ldr r6, [r0, #0xe0]
ldr r0, [r6, #8]
str r0, [sp, #0x14]
ldr r0, [r6, #0xc]
str r0, [sp, #0x18]
b _020aae54
_020aae2c:
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020aae38:
ldr r0, _020ab3cc ; =data_027e0fb8
ldr r0, [r0]
ldrb r0, [r0, #0x80]
cmp r0, #0
addne sp, sp, #0xc8
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
_020aae54:
ldr r0, _020ab3cc ; =data_027e0fb8
cmp r5, #0
movne r2, #1
ldr r1, [r6, #0x12c]
ldr r0, [r0]
moveq r2, #0
bl _ZN13PlayerControl18func_ov00_020afe88Eib
cmp r0, #0
bne _020aae90
ldr r0, _020ab3cc ; =data_027e0fb8
ldr r0, [r0]
bl _ZN13PlayerControl13StopFollowingEv
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020aae90:
ldr r0, [r6, #0x12c]
cmp r0, #2
bne _020aaf78
mov r0, r4
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
bne _020aaf78
add r3, sp, #0x5c
add r1, r6, #0x60
add r2, r6, #0x48
mov r0, #0x6000
bl func_01ff9e64
mov r0, #0
ldr r1, _020ab3d4 ; =0x0000ffff
strh r0, [sp, #0x94]
strb r0, [sp, #0xb6]
strb r0, [sp, #0xb7]
strb r0, [sp, #0xb8]
strb r0, [sp, #0xb9]
strb r0, [sp, #0xc0]
strb r0, [sp, #0xc1]
strb r0, [sp, #0xc2]
strb r0, [sp, #0xc3]
strb r0, [sp, #0xc4]
strb r0, [sp, #0xc5]
strh r1, [sp, #0x8c]
strh r1, [sp, #0x8e]
strh r1, [sp, #0x90]
strh r1, [sp, #0x92]
ldr r1, [r6, #0x48]
add r2, r6, #0x8c
str r1, [sp, #0x28]
ldr r1, [r6, #0x4c]
ldr r5, _020ab3d8 ; =data_027e0e60
str r1, [sp, #0x2c]
ldr r3, [r6, #0x50]
add r1, sp, #0x68
str r3, [sp, #0x30]
str r2, [sp]
ldr r3, [r6, #8]
add r2, sp, #0x5c
str r3, [sp, #4]
ldrh ip, [r6, #0x9c]
add r3, sp, #0x28
str ip, [sp, #8]
str r0, [sp, #0xc]
str r0, [sp, #0x10]
ldr r0, [r5]
bl func_01ffbe78
cmp r0, #0
beq _020aaf88
ldr r2, [sp, #0x68]
ldr r1, [sp, #0x6c]
ldr r0, [sp, #0x70]
str r2, [sp, #0x5c]
str r1, [sp, #0x60]
str r0, [sp, #0x64]
b _020aaf88
_020aaf78:
add r1, sp, #0x5c
mov r0, r4
mov r2, r6
bl _ZN17LinkStateInteract18func_ov00_020ab7bcEP5Vec3pP5Actor
_020aaf88:
mov r0, r4
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r1, r0
add r0, sp, #0x5c
add r2, sp, #0x50
bl func_01ff9bf8
add r1, sp, #0x40
mov r0, r6
bl _ZN5Actor9GetHitboxEP8Cylinder
ldr r0, [r6, #0x12c]
cmp r0, #6
addls pc, pc, r0, lsl #2
b _020ab3b0
_020aafbc: ; jump table
b _020ab3b0 ; case 0
b _020aafd8 ; case 1
b _020ab000 ; case 2
b _020ab1e4 ; case 3
b _020ab2b0 ; case 4
b _020ab32c ; case 5
b _020ab398 ; case 6
_020aafd8:
add r0, sp, #0x50
bl func_01ff9cec
cmp r0, #0x800
bge _020aaff4
ldr r0, _020ab3cc ; =data_027e0fb8
ldr r0, [r0]
bl _ZN13PlayerControl9SetUnk_80Ev
_020aaff4:
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab000:
bl _ZN10PlayerBase13GetEquipSwordEv
ldr r2, [r0]
mov r1, #1
ldr r2, [r2, #0x14]
blx r2
cmp r0, #0
addeq sp, sp, #0xc8
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r4
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
bne _020ab170
mov r0, r4
bl _ZN13LinkStateBase19GetCurrentCharacterEv
cmp r0, #1
bne _020ab060
bl _ZN17LinkStateInteract16GetLinkStateRollEv
add r2, sp, #0x50
mov r1, r6
bl func_ov23_02171410
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab060:
add r0, sp, #0x50
bl func_01ff9cec
ldr r1, [sp, #0x4c]
mov r5, r0
add r0, r1, #0x3800
cmp r5, r0
bge _020ab1d8
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x58]
bl func_01ffa0f4
ldr r1, _020ab3dc ; =0x00001ccd
mov r0, r0, lsl #0x10
cmp r5, r1
mov r6, r0, asr #0x10
bge _020ab0fc
mov r0, r4
bl _ZN13LinkStateBase14GetPlayerAngleEv
ldrsh r0, [r0]
add r2, sp, #0x5c
sub r0, r6, r0
mov r0, r0, lsl #0x10
mov r1, r0, asr #0x10
cmp r1, #0x4000
ble _020ab0d0
mov r0, r4
mov r1, #1
bl _ZN13LinkStateBase18func_ov00_020a81b8Eii
b _020ab160
_020ab0d0:
mov r0, #0x4000
rsb r0, r0, #0
cmp r1, r0
mov r0, r4
blt _020ab0f0
mov r1, #0
bl _ZN13LinkStateBase18func_ov00_020a81b8Eii
b _020ab160
_020ab0f0:
mov r1, #2
bl _ZN13LinkStateBase18func_ov00_020a81b8Eii
b _020ab160
_020ab0fc:
rsb r0, r1, #0x4800
cmp r5, r0
bge _020ab134
ldr r1, [sp, #0x54]
ldr r0, _020ab3e0 ; =0x00001333
cmp r1, #0
rsblt r1, r1, #0
cmp r1, r0
bge _020ab134
add r2, sp, #0x5c
mov r0, r4
mov r1, #3
bl _ZN13LinkStateBase18func_ov00_020a81b8Eii
b _020ab160
_020ab134:
mov r0, r4
bl _ZN13LinkStateBase18func_ov00_020a8d40Ev
ldrsh r0, [r0, #0x5a]
cmp r0, #0
addne sp, sp, #0xc8
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
add r2, sp, #0x5c
mov r0, r4
mov r1, #4
bl _ZN13LinkStateBase18func_ov00_020a81b8Eii
_020ab160:
mov r0, r4
bl _ZN13LinkStateBase14GetPlayerAngleEv
strh r6, [r0]
b _020ab1d8
_020ab170:
add r0, sp, #0x50
bl func_01ff9cec
cmp r0, #0x4000
bge _020ab1d8
mov r0, r4
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r1, r0
add r0, r6, #0x48
add r2, r4, #0x18
bl func_01ff9bf8
ldr r0, _020ab3cc ; =data_027e0fb8
mov r1, #0
ldr r2, [r0]
strb r1, [r2, #0x79]
strb r1, [r2, #0x7b]
ldr r0, [r0]
bl _ZN13PlayerControl9SetUnk_80Ev
mov r0, #3
str r0, [r4, #4]
ldr r1, [sp, #0x14]
mov r0, #1
str r1, [r4, #0x10]
ldr r1, [sp, #0x18]
add sp, sp, #0xc8
str r1, [r4, #0x14]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab1d8:
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab1e4:
add r0, sp, #0x50
bl func_01ff9cec
cmp r0, #0x400
bge _020ab2a4
mov r0, r4
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r1, r0
add r0, sp, #0x40
add r2, sp, #0x34
bl func_01ff9bf8
ldr r0, [sp, #0x34]
cmp r0, #0
ldreq r0, [sp, #0x3c]
cmpeq r0, #0
beq _020ab278
ldr r0, [sp, #0x34]
ldr r1, [sp, #0x3c]
bl func_01ffa0f4
mov r6, r0, lsl #0x10
mov r0, r6, asr #0x10
bl func_0202bbbc
bl func_0202bba8
mov r5, r0
rsb r0, r5, r6, asr #16
mov r0, r0, lsl #0x10
movs r1, r0, asr #0x10
rsbmi r0, r1, #0
movmi r0, r0, lsl #0x10
movmi r1, r0, asr #0x10
ldr r0, _020ab3e4 ; =0x000018e4
cmp r1, r0
addgt sp, sp, #0xc8
movgt r0, #0
ldmgtia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r4
bl _ZN13LinkStateBase14GetPlayerAngleEv
strh r5, [r0]
_020ab278:
mov r0, #7
str r0, [r4, #4]
mov r0, #0
str r0, [r4, #0xc]
ldr r1, [sp, #0x14]
mov r0, #1
str r1, [r4, #0x10]
ldr r1, [sp, #0x18]
add sp, sp, #0xc8
str r1, [r4, #0x14]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab2a4:
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab2b0:
add r0, sp, #0x50
bl func_01ff9cec
ldr r1, [sp, #0x4c]
add r1, r1, #0xc00
cmp r0, r1
bge _020ab320
mov r0, r4
bl func_ov05_0211139c
cmp r0, #0
bne _020ab320
mov r0, r4
bl _ZN13LinkStateBase15GetGrabActorRefEv
ldr r1, [r6, #8]
mov r2, #1
str r1, [r0]
ldr r3, [r6, #0xc]
add r1, r6, #0x48
str r3, [r0, #4]
mov r0, r4
str r2, [r4, #4]
bl _ZN13LinkStateBase6LookAtEP5Vec3p
ldr r1, [sp, #0x14]
mov r0, #1
str r1, [r4, #0x10]
ldr r1, [sp, #0x18]
add sp, sp, #0xc8
str r1, [r4, #0x14]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab320:
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab32c:
mov r0, r6
ldr r1, [r0]
ldr r1, [r1, #0x3c]
blx r1
cmp r0, #0
beq _020ab38c
mov r0, r4
bl func_ov05_021113b4
cmp r0, #0
beq _020ab38c
mov r0, r6
mov r1, #1
bl _ZN5Actor10SetUnk_11cEc
mov r0, #6
str r0, [r4, #4]
ldr r1, [sp, #0x14]
mov r0, r4
str r1, [r4, #0x10]
ldr r1, [sp, #0x18]
str r1, [r4, #0x14]
bl _ZN13LinkStateBase18EquipItem_vfunc_28Ev
add sp, sp, #0xc8
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab38c:
add sp, sp, #0xc8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab398:
ldr r0, _020ab3cc ; =data_027e0fb8
ldr r0, [r0]
bl _ZN13PlayerControl13StopFollowingEv
add sp, sp, #0xc8
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020ab3b0:
mov r0, #0
add sp, sp, #0xc8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract8vfunc_20Ei
_020ab3bc: .word gItemManager
_020ab3c0: .word data_027e0d0c
_020ab3c4: .word data_02050f54
_020ab3c8: .word 0x000004cd
_020ab3cc: .word data_027e0fb8
_020ab3d0: .word data_027e0fe4
_020ab3d4: .word 0x0000ffff
_020ab3d8: .word data_027e0e60
_020ab3dc: .word 0x00001ccd
_020ab3e0: .word 0x00001333
_020ab3e4: .word 0x000018e4
.global _ZN17LinkStateInteract16GetLinkStateRollEv
arm_func_start _ZN17LinkStateInteract16GetLinkStateRollEv
_ZN17LinkStateInteract16GetLinkStateRollEv: ; 0x020ab3e8
ldr ip, _020ab3f4 ; =func_01fffcd8
mov r0, #4
bx ip
.align 2, 0
arm_func_end _ZN17LinkStateInteract16GetLinkStateRollEv
_020ab3f4: .word func_01fffcd8
.global _ZN17LinkStateInteract8vfunc_24Ei
arm_func_start _ZN17LinkStateInteract8vfunc_24Ei
_ZN17LinkStateInteract8vfunc_24Ei: ; 0x020ab3f8
stmdb sp!, {r3, lr}
cmp r1, #5
addls pc, pc, r1, lsl #2
b _020ab47c
_020ab408: ; jump table
b _020ab47c ; case 0
b _020ab484 ; case 1
b _020ab484 ; case 2
b _020ab484 ; case 3
b _020ab420 ; case 4
b _020ab434 ; case 5
_020ab420:
ldr r2, [r0, #4]
cmp r2, #6
bne _020ab484
bl _ZN13LinkStateBase8vfunc_24Ei
ldmia sp!, {r3, pc}
_020ab434:
ldr r2, [r0, #4]
cmp r2, #9
addls pc, pc, r2, lsl #2
b _020ab474
_020ab444: ; jump table
b _020ab474 ; case 0
b _020ab474 ; case 1
b _020ab474 ; case 2
b _020ab46c ; case 3
b _020ab46c ; case 4
b _020ab474 ; case 5
b _020ab474 ; case 6
b _020ab474 ; case 7
b _020ab46c ; case 8
b _020ab46c ; case 9
_020ab46c:
mov r0, #0
ldmia sp!, {r3, pc}
_020ab474:
bl _ZN13LinkStateBase8vfunc_24Ei
ldmia sp!, {r3, pc}
_020ab47c:
mov r0, #0
ldmia sp!, {r3, pc}
_020ab484:
ldr r2, [r0, #4]
cmp r2, #1
cmpne r2, #7
bne _020ab49c
bl _ZN13LinkStateBase8vfunc_24Ei
ldmia sp!, {r3, pc}
_020ab49c:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end _ZN17LinkStateInteract8vfunc_24Ei
.global _ZN17LinkStateInteract8vfunc_34EP5Vec3p
arm_func_start _ZN17LinkStateInteract8vfunc_34EP5Vec3p
_ZN17LinkStateInteract8vfunc_34EP5Vec3p: ; 0x020ab4a4
stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
mov r6, r0
mov r4, r1
bl _ZN13LinkStateBase28Get_PlayerControlData_Unk120Ev
cmp r0, #0x1e
bne _020ab5f4
mov r0, r6
bl _ZN13LinkStateBase18func_ov00_020a8d50Ev
cmp r0, #0x2000
movlt r5, #0
blt _020ab4ec
cmp r0, #0x7000
movge r5, #0x1000
bge _020ab4ec
sub r0, r0, #0x2000
mov r1, #0x5000
bl Divide
mov r5, r0
_020ab4ec:
mov r0, r6
bl _ZN13LinkStateBase14GetPlayerAngleEv
mov r1, r5, asr #0x1f
mov r2, r1, lsl #0xe
mov r1, #0x800
adds r3, r1, r5, lsl #14
orr r2, r2, r5, lsr #18
adc r1, r2, #0
mov r2, r3, lsr #0xc
orr r2, r2, r1, lsl #20
mov r1, r2, lsl #0x10
mov r1, r1, lsr #0x10
mov r1, r1, asr #0x4
mov r5, r1, lsl #0x1
add r1, r5, #1
ldr ip, _020ab60c ; =data_02050f54
mov r1, r1, lsl #0x1
ldrsh r3, [ip, r1]
ldr r6, _020ab610 ; =0x00000b33
ldrh r0, [r0]
umull r1, lr, r3, r6
mov r7, #0
mov r0, r0, asr #0x4
mov r8, r0, lsl #0x1
mov r2, r8, lsl #0x1
mov r0, r5, lsl #0x1
ldrsh r9, [ip, r0]
adds r5, r1, #0x800
add r8, r8, #1
umull r1, r0, r9, r6
mov r5, r5, lsr #0xc
ldrsh r2, [ip, r2]
mov r8, r8, lsl #0x1
ldrsh ip, [ip, r8]
mla lr, r3, r7, lr
mov r3, r3, asr #0x1f
mla lr, r3, r6, lr
adc r3, lr, #0
orr r5, r5, r3, lsl #20
mla r0, r9, r7, r0
mov r3, r9, asr #0x1f
mla r0, r3, r6, r0
smull r7, r6, r2, r5
smull r3, r2, ip, r5
adds r7, r7, #0x800
adc r5, r6, #0
mov r6, r7, lsr #0xc
orr r6, r6, r5, lsl #20
adds r1, r1, #0x800
adc r0, r0, #0
mov r5, r1, lsr #0xc
orr r5, r5, r0, lsl #20
adds r1, r3, #0x800
adc r0, r2, #0
mov r1, r1, lsr #0xc
orr r1, r1, r0, lsl #20
ldr r0, [r4]
add r0, r0, r6
str r0, [r4]
ldr r0, [r4, #4]
add r0, r0, r5
str r0, [r4, #4]
ldr r0, [r4, #8]
add r0, r0, r1
str r0, [r4, #8]
b _020ab604
_020ab5f4:
ldr r0, [r4, #4]
add r0, r0, #0x33
add r0, r0, #0xb00
str r0, [r4, #4]
_020ab604:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract8vfunc_34EP5Vec3p
_020ab60c: .word data_02050f54
_020ab610: .word 0x00000b33
.global _ZN17LinkStateInteract20SetGrabActorVelocityEP5Vec3p
arm_func_start _ZN17LinkStateInteract20SetGrabActorVelocityEP5Vec3p
_ZN17LinkStateInteract20SetGrabActorVelocityEP5Vec3p: ; 0x020ab614
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r5, r0
mov r4, r1
bl _ZN13LinkStateBase12GetGrabActorEv
movs ip, r0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, pc}
ldr r0, _020ab67c ; =data_027e0d0c
add r3, sp, #0
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r0, ip
ldr r2, [r0]
cmp r4, #0
moveq r4, r3
ldr r2, [r2, #0x5c]
mov r1, r4
blx r2
mov r0, r5
bl _ZN13LinkStateBase15GetGrabActorRefEv
mvn r1, #0
str r1, [r0]
str r1, [r0, #4]
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract20SetGrabActorVelocityEP5Vec3p
_020ab67c: .word data_027e0d0c
.global _ZN17LinkStateInteract15SetBombVelocityEP5Vec3p
arm_func_start _ZN17LinkStateInteract15SetBombVelocityEP5Vec3p
_ZN17LinkStateInteract15SetBombVelocityEP5Vec3p: ; 0x020ab680
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, [r0, #4]
ldr r0, _020ab6c0 ; =0x424f4d42
cmp r1, r0
ldrne r0, _020ab6c4 ; =0x4b4f4b4f
cmpne r1, r0
ldmneia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, r4
bl _ZN17LinkStateInteract20SetGrabActorVelocityEP5Vec3p
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract15SetBombVelocityEP5Vec3p
_020ab6c0: .word 0x424f4d42
_020ab6c4: .word 0x4b4f4b4f
.global _ZN17LinkStateInteract18func_ov00_020ab6c8Ev
arm_func_start _ZN17LinkStateInteract18func_ov00_020ab6c8Ev
_ZN17LinkStateInteract18func_ov00_020ab6c8Ev: ; 0x020ab6c8
stmdb sp!, {r4, lr}
mov r4, r0
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r2, [r0, #4]
ldr r1, _020ab758 ; =0x4b4f4b4f
cmp r2, r1
bhi _020ab714
bhs _020ab740
ldr r1, _020ab75c ; =0x424f4d42
cmp r2, r1
bhi _020ab704
beq _020ab740
b _020ab748
_020ab704:
ldr r1, _020ab760 ; =0x4452554d
cmp r2, r1
beq _020ab740
b _020ab748
_020ab714:
ldr r1, _020ab764 ; =0x54415255
cmp r2, r1
bhi _020ab734
bhs _020ab740
ldr r1, _020ab768 ; =0x53544e45
cmp r2, r1
beq _020ab740
b _020ab748
_020ab734:
ldr r1, _020ab76c ; =0x54535542
cmp r2, r1
bne _020ab748
_020ab740:
bl _ZN5Actor4KillEv
ldmia sp!, {r4, pc}
_020ab748:
mov r0, r4
mov r1, #0
bl _ZN17LinkStateInteract20SetGrabActorVelocityEP5Vec3p
ldmia sp!, {r4, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract18func_ov00_020ab6c8Ev
_020ab758: .word 0x4b4f4b4f
_020ab75c: .word 0x424f4d42
_020ab760: .word 0x4452554d
_020ab764: .word 0x54415255
_020ab768: .word 0x53544e45
_020ab76c: .word 0x54535542
.global _ZN17LinkStateInteract18func_ov00_020ab770EP5Vec3p
arm_func_start _ZN17LinkStateInteract18func_ov00_020ab770EP5Vec3p
_ZN17LinkStateInteract18func_ov00_020ab770EP5Vec3p: ; 0x020ab770
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _020ab7b8 ; =data_027e0fb8
mov r6, r0
ldr r0, [r2]
mov r5, r1
bl _ZN13PlayerControl14GetFollowActorEv
movs r4, r0
beq _020ab7a8
mov r0, r6
mov r1, r5
mov r2, r4
bl _ZN17LinkStateInteract18func_ov00_020ab7bcEP5Vec3pP5Actor
cmp r0, #0
bne _020ab7b0
_020ab7a8:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
_020ab7b0:
ldr r0, [r4, #0x12c]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract18func_ov00_020ab770EP5Vec3p
_020ab7b8: .word data_027e0fb8
.global _ZN17LinkStateInteract18func_ov00_020ab7bcEP5Vec3pP5Actor
arm_func_start _ZN17LinkStateInteract18func_ov00_020ab7bcEP5Vec3pP5Actor
_ZN17LinkStateInteract18func_ov00_020ab7bcEP5Vec3pP5Actor: ; 0x020ab7bc
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x1c
ldr r3, [r2, #0x48]
mov r5, r1
str r3, [r5]
ldr r1, [r2, #0x4c]
mov r4, r0
str r1, [r5, #4]
ldr r0, [r2, #0x50]
str r0, [r5, #8]
ldr r0, [r2, #0x12c]
cmp r0, #2
beq _020ab7fc
cmp r0, #3
beq _020ab818
b _020ab8c0
_020ab7fc:
bl _ZN10PlayerBase13GetEquipSwordEv
ldr r2, [r0]
mov r1, #1
ldr r2, [r2, #0x14]
blx r2
add sp, sp, #0x1c
ldmia sp!, {r4, r5, pc}
_020ab818:
add r1, sp, #0
mov r0, r2
bl _ZN5Actor9GetHitboxEP8Cylinder
mov r0, r4
bl _ZN13LinkStateBase12GetPlayerPosEv
add r2, sp, #0x10
mov r1, r5
bl func_01ff9bf8
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
add r2, r1, #0x66
ldr r1, [sp, #0x18]
add r4, r2, #0x600
bl func_01ffa0f4
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl func_0202bbbc
cmp r0, #3
addls pc, pc, r0, lsl #2
b _020ab8b4
_020ab868: ; jump table
b _020ab878 ; case 0
b _020ab888 ; case 1
b _020ab898 ; case 2
b _020ab8a8 ; case 3
_020ab878:
ldr r0, [r5]
add r0, r0, r4
str r0, [r5]
b _020ab8b4
_020ab888:
ldr r0, [r5]
sub r0, r0, r4
str r0, [r5]
b _020ab8b4
_020ab898:
ldr r0, [r5, #8]
add r0, r0, r4
str r0, [r5, #8]
b _020ab8b4
_020ab8a8:
ldr r0, [r5, #8]
sub r0, r0, r4
str r0, [r5, #8]
_020ab8b4:
add sp, sp, #0x1c
mov r0, #1
ldmia sp!, {r4, r5, pc}
_020ab8c0:
mov r0, #1
add sp, sp, #0x1c
ldmia sp!, {r4, r5, pc}
arm_func_end _ZN17LinkStateInteract18func_ov00_020ab7bcEP5Vec3pP5Actor
.global _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p
arm_func_start _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p
_ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p: ; 0x020ab8cc
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r1, r0
mov r0, r4
add r2, r5, #0x18
bl func_01ff9bf8
add r0, r5, #0x18
mov r2, r0
mov r1, #0x1000
bl func_0202da8c
mov r0, #5
str r0, [r5, #4]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p
.global _ZN17LinkStateInteract14SetThrowOffsetEP5Vec3p
arm_func_start _ZN17LinkStateInteract14SetThrowOffsetEP5Vec3p
_ZN17LinkStateInteract14SetThrowOffsetEP5Vec3p: ; 0x020ab908
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r1, r0
mov r0, r4
add r2, r5, #0x18
bl func_01ff9bf8
mov r0, #3
str r0, [r5, #4]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _ZN17LinkStateInteract14SetThrowOffsetEP5Vec3p
.global _ZN17LinkStateInteract18func_ov00_020ab934EP5Vec3p
arm_func_start _ZN17LinkStateInteract18func_ov00_020ab934EP5Vec3p
_ZN17LinkStateInteract18func_ov00_020ab934EP5Vec3p: ; 0x020ab934
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r1, r0
mov r0, r4
add r2, r5, #0x18
bl func_01ff9bf8
mov r2, #3
mov r0, r5
mov r1, #2
str r2, [r5, #4]
bl _ZN13LinkStateBase15ChangeLinkStateEi
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _ZN17LinkStateInteract18func_ov00_020ab934EP5Vec3p
.global _ZN17LinkStateInteract18func_ov00_020ab97cEP5Vec3p
arm_func_start _ZN17LinkStateInteract18func_ov00_020ab97cEP5Vec3p
_ZN17LinkStateInteract18func_ov00_020ab97cEP5Vec3p: ; 0x020ab97c
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r1, r0
mov r0, r4
add r2, r5, #0x18
bl func_01ff9bf8
mov r0, #4
str r0, [r5, #4]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _ZN17LinkStateInteract18func_ov00_020ab97cEP5Vec3p
.global _ZN17LinkStateInteract18func_ov00_020ab9b8Ejb
arm_func_start _ZN17LinkStateInteract18func_ov00_020ab9b8Ejb
_ZN17LinkStateInteract18func_ov00_020ab9b8Ejb: ; 0x020ab9b8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x18
mov r7, r0
mov r6, r1
mov r5, r2
bl _ZN13LinkStateBase12GetGrabActorEv
movs r4, r0
addeq sp, sp, #0x18
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
cmp r5, #0
mov r5, #1
beq _020aba70
mov r0, r7
bl _ZN13LinkStateBase12GetPlayerPosEv
add r3, sp, #0xc
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r0, r7
bl _ZN13LinkStateBase12GetPlayerPosEv
add r2, sp, #0xc
add r1, r7, #0x18
bl func_01ff9bc4
ldr r1, [r4, #4]
ldr r0, _020abb64 ; =0x424b4559
cmp r1, r0
beq _020aba30
ldr r0, _020abb68 ; =0x464f5243
cmp r1, r0
beq _020aba54
b _020aba70
_020aba30:
add r1, sp, #0xc
mov r0, r4
bl func_ov17_0215dff0
cmp r0, #0
beq _020aba70
mov r0, r7
mov r5, #0
bl _ZN17LinkStateInteract18func_ov00_020aa818Ev
b _020aba70
_020aba54:
add r1, sp, #0xc
mov r0, r4
bl func_ov17_0215e338
cmp r0, #0
beq _020aba70
mov r0, r7
bl _ZN17LinkStateInteract18func_ov00_020aa818Ev
_020aba70:
cmp r5, #0
beq _020abb30
mov r1, #0
mov r0, r7
str r1, [sp]
str r1, [sp, #4]
str r1, [sp, #8]
bl _ZN13LinkStateBase14GetPlayerAngleEv
ldrh r5, [r0]
ldr r2, _020abb6c ; =0x0000028f
mov r3, #0
umull r1, r0, r6, r2
mla r0, r6, r3, r0
mov r3, r6, asr #0x1f
mov r5, r5, asr #0x4
mov ip, r5, lsl #0x1
mla r0, r3, r2, r0
adds r1, r1, #0x800
add r5, ip, #1
ldr r6, _020abb70 ; =data_02050f54
mov r3, ip, lsl #0x1
mov r2, r5, lsl #0x1
ldrsh r3, [r6, r3]
adc r0, r0, #0
mov r1, r1, lsr #0xc
orr r1, r1, r0, lsl #20
smull r0, r5, r3, r1
adds r3, r0, #0x800
ldrsh r2, [r6, r2]
mov r3, r3, lsr #0xc
smull r1, r0, r2, r1
adc r2, r5, #0
adds r1, r1, #0x800
orr r3, r3, r2, lsl #20
ldr r5, [sp]
adc r0, r0, #0
mov r1, r1, lsr #0xc
orr r1, r1, r0, lsl #20
ldr r2, [sp, #8]
add r3, r5, r3
add r1, r2, r1
str r1, [sp, #8]
mov r0, r4
str r3, [sp]
ldr r2, [r0]
add r1, sp, #0
ldr r2, [r2, #0x5c]
blx r2
_020abb30:
mov r0, r7
bl _ZN13LinkStateBase15GetGrabActorRefEv
mvn r1, #0
str r1, [r0]
str r1, [r0, #4]
mov r0, r7
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r2, r0
ldr r0, _020abb74 ; =data_ov00_020eec9c
mov r1, #0xcc
bl func_ov00_020d7a84
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract18func_ov00_020ab9b8Ejb
_020abb64: .word 0x424b4559
_020abb68: .word 0x464f5243
_020abb6c: .word 0x0000028f
_020abb70: .word data_02050f54
_020abb74: .word data_ov00_020eec9c
.global _ZN17LinkStateInteract4GrabEP8ActorRef
arm_func_start _ZN17LinkStateInteract4GrabEP8ActorRef
_ZN17LinkStateInteract4GrabEP8ActorRef: ; 0x020abb78
stmdb sp!, {r3, lr}
ldr r3, [r1]
mov r2, #6
str r3, [r0, #0x10]
ldr r3, [r1, #4]
mov r1, #2
str r3, [r0, #0x14]
bl _ZN13LinkStateBase18ChangeLinkSubStateEii
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end _ZN17LinkStateInteract4GrabEP8ActorRef
.global _ZN17LinkStateInteract18func_ov00_020abba0EP8ActorRef
arm_func_start _ZN17LinkStateInteract18func_ov00_020abba0EP8ActorRef
_ZN17LinkStateInteract18func_ov00_020abba0EP8ActorRef: ; 0x020abba0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl _ZN17LinkStateInteract18func_ov00_020abc40Ev
cmp r0, #0
beq _020abbc8
mov r0, r5
mov r1, r4
bl _ZN17LinkStateInteract4GrabEP8ActorRef
ldmia sp!, {r3, r4, r5, pc}
_020abbc8:
ldr r0, [r4]
str r0, [r5, #0x10]
ldr r0, [r4, #4]
str r0, [r5, #0x14]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _ZN17LinkStateInteract18func_ov00_020abba0EP8ActorRef
.global _ZN17LinkStateInteract18func_ov00_020abbdcEP8ActorRef
arm_func_start _ZN17LinkStateInteract18func_ov00_020abbdcEP8ActorRef
_ZN17LinkStateInteract18func_ov00_020abbdcEP8ActorRef: ; 0x020abbdc
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl _ZN17LinkStateInteract18func_ov00_020abc40Ev
cmp r0, #0
beq _020abc04
mov r0, r5
mov r1, r4
bl _ZN17LinkStateInteract4GrabEP8ActorRef
ldmia sp!, {r3, r4, r5, pc}
_020abc04:
ldr r0, [r4]
str r0, [r5, #0x10]
ldr r0, [r4, #4]
str r0, [r5, #0x14]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _ZN17LinkStateInteract18func_ov00_020abbdcEP8ActorRef
.global _ZN17LinkStateInteract18func_ov00_020abc18EP8ActorRef
arm_func_start _ZN17LinkStateInteract18func_ov00_020abc18EP8ActorRef
_ZN17LinkStateInteract18func_ov00_020abc18EP8ActorRef: ; 0x020abc18
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl _ZN17LinkStateInteract18func_ov00_020abc40Ev
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, r4
bl _ZN17LinkStateInteract4GrabEP8ActorRef
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _ZN17LinkStateInteract18func_ov00_020abc18EP8ActorRef
.global _ZN17LinkStateInteract18func_ov00_020abc40Ev
arm_func_start _ZN17LinkStateInteract18func_ov00_020abc40Ev
_ZN17LinkStateInteract18func_ov00_020abc40Ev: ; 0x020abc40
stmdb sp!, {r4, lr}
mov r4, r0
bl _ZN13LinkStateBase10GetStateIdEv
cmp r0, #2
ldreq r0, [r4, #4]
cmpeq r0, #6
beq _020abc70
mov r0, r4
bl _ZN13LinkStateBase10GetStateIdEv
cmp r0, #6
movne r0, #1
ldmneia sp!, {r4, pc}
_020abc70:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end _ZN17LinkStateInteract18func_ov00_020abc40Ev
.global _ZN17LinkStateInteract18func_ov00_020abc78EP8ActorRef
arm_func_start _ZN17LinkStateInteract18func_ov00_020abc78EP8ActorRef
_ZN17LinkStateInteract18func_ov00_020abc78EP8ActorRef: ; 0x020abc78
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r4, r1
bl _ZN13LinkStateBase18func_ov00_020a8b80Ev
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r5
bl _ZN13LinkStateBase12GetGrabActorEv
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r5
bl _ZN13LinkStateBase10GetStateIdEv
cmp r0, #0
beq _020abce0
cmp r0, #1
bne _020abcd8
ldr r0, _020abd6c ; =data_027e0fb8
mov r1, #0
ldr r0, [r0]
strb r1, [r0, #0x79]
strb r1, [r0, #0x7b]
b _020abce0
_020abcd8:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
_020abce0:
ldr r0, _020abd70 ; =data_027e0fe4
mov r1, r4
ldr r0, [r0]
bl _ZN12ActorManager8GetActorEP8ActorRef
mov r6, r0
mov r0, r5
bl _ZN13LinkStateBase15GetGrabActorRefEv
ldr r2, [r4]
add r1, r6, #0x48
str r2, [r0]
ldr r2, [r4, #4]
str r2, [r0, #4]
mov r0, r5
bl _ZN13LinkStateBase6LookAtEP5Vec3p
ldr r1, [r4]
mov r0, r5
str r1, [r5, #0x10]
ldr r1, [r4, #4]
str r1, [r5, #0x14]
bl _ZN13LinkStateBase12GetPlayerPosEv
mov r2, r0
ldr r0, _020abd74 ; =data_ov00_020eec9c
mov r1, #0xcb
bl func_ov00_020d7a84
mov r0, r5
bl _ZN13LinkStateBase12GetGrabActorEv
ldr r1, [r0]
ldr r1, [r1, #0x58]
blx r1
mov r0, r5
mov r1, #2
mov r2, r1
bl _ZN13LinkStateBase18ChangeLinkSubStateEii
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
arm_func_end _ZN17LinkStateInteract18func_ov00_020abc78EP8ActorRef
_020abd6c: .word data_027e0fb8
_020abd70: .word data_027e0fe4
_020abd74: .word data_ov00_020eec9c
.rodata
.global data_ov00_020dc528
data_ov00_020dc528: ; 0x020dc528
.ascii "zdf_link_ice"
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020dc538
data_ov00_020dc538: ; 0x020dc538
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020dc53c
data_ov00_020dc53c: ; 0x020dc53c
.ascii "zdf_link_ice"
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020dc54c
data_ov00_020dc54c: ; 0x020dc54c
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020dc550
data_ov00_020dc550: ; 0x020dc550
.byte 0xec, 0x01, 0x00, 0x00
.global data_ov00_020dc554
data_ov00_020dc554: ; 0x020dc554
.byte 0x3c, 0x00, 0x00, 0x00
.global data_ov00_020dc558
data_ov00_020dc558: ; 0x020dc558
.byte 0xae, 0x13, 0x00, 0x00
.global data_ov00_020dc55c
data_ov00_020dc55c: ; 0x020dc55c
.byte 0x0f, 0x00, 0x00, 0x00
.global data_ov00_020dc560
.data
.global data_ov00_020e58e8
data_ov00_020e58e8: ; 0x020e58e8
.ascii "brg"
.byte 0x00
.global data_ov00_020e58ec
data_ov00_020e58ec: ; 0x020e58ec
.ascii "fnl"
.byte 0x00
.global data_ov00_020e58f0
data_ov00_020e58f0: ; 0x020e58f0
.ascii "pdl"
.byte 0x00
.global data_ov00_020e58f4
data_ov00_020e58f4: ; 0x020e58f4
.ascii "dco"
.byte 0x00
.global data_ov00_020e58f8
data_ov00_020e58f8: ; 0x020e58f8
.ascii "can"
.byte 0x00
.global data_ov00_020e58fc
data_ov00_020e58fc: ; 0x020e58fc
.ascii "hul"
.byte 0x00
.global data_ov00_020e5900
data_ov00_020e5900: ; 0x020e5900
.ascii "bow"
.byte 0x00
.global data_ov00_020e5904
data_ov00_020e5904: ; 0x020e5904
.ascii "anc"
.byte 0x00
.global data_ov00_020e5908
data_ov00_020e5908: ; 0x020e5908
.word data_ov00_020e5904
.global data_ov00_020e590c
data_ov00_020e590c: ; 0x020e590c
.word data_ov00_020e5900
.global data_ov00_020e5910
data_ov00_020e5910: ; 0x020e5910
.word data_ov00_020e58fc
.global data_ov00_020e5914
data_ov00_020e5914: ; 0x020e5914
.word data_ov00_020e58f8
.global data_ov00_020e5918
data_ov00_020e5918: ; 0x020e5918
.word data_ov00_020e58f4
.global data_ov00_020e591c
data_ov00_020e591c: ; 0x020e591c
.word data_ov00_020e58f0
.global data_ov00_020e5920
data_ov00_020e5920: ; 0x020e5920
.word data_ov00_020e58ec
.global data_ov00_020e5924
data_ov00_020e5924: ; 0x020e5924
.word data_ov00_020e58e8
.global data_ov00_020e5928
data_ov00_020e5928: ; 0x020e5928
.byte 0x02, 0x00, 0x00, 0x00
.global data_ov00_020e592c
data_ov00_020e592c: ; 0x020e592c
.byte 0x1d, 0x00, 0x00, 0x00
.global data_ov00_020e5930
data_ov00_020e5930: ; 0x020e5930
.byte 0x66, 0x16, 0x00, 0x00
.global data_ov00_020e5934
data_ov00_020e5934: ; 0x020e5934
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020e5938
data_ov00_020e5938: ; 0x020e5938
.byte 0x00, 0x50, 0x00, 0x00
.global data_ov00_020e593c
data_ov00_020e593c: ; 0x020e593c
.byte 0x1e, 0x00, 0x00, 0x00
.global data_ov00_020e5940
data_ov00_020e5940: ; 0x020e5940
.byte 0x99, 0x19, 0x00, 0x00
.global data_ov00_020e5944
data_ov00_020e5944: ; 0x020e5944
.byte 0x00, 0x20, 0x00, 0x00
.global data_ov00_020e5948
data_ov00_020e5948: ; 0x020e5948
.byte 0x00, 0xa0, 0x00, 0x00
.global data_ov00_020e594c
data_ov00_020e594c: ; 0x020e594c
.byte 0x1e, 0x00
.global data_ov00_020e594e
data_ov00_020e594e: ; 0x020e594e
.byte 0x00, 0x00
.global data_ov00_020e5950
data_ov00_020e5950: ; 0x020e5950
.byte 0x00, 0xe8
.global data_ov00_020e5952
data_ov00_020e5952: ; 0x020e5952
.byte 0xff, 0xff
.global data_ov00_020e5954
data_ov00_020e5954: ; 0x020e5954
.byte 0x00, 0xa0
.global data_ov00_020e5956
data_ov00_020e5956: ; 0x020e5956
.byte 0x00, 0x00
.global data_ov00_020e5958
data_ov00_020e5958: ; 0x020e5958
.byte 0x00, 0x00
.global data_ov00_020e595a
data_ov00_020e595a: ; 0x020e595a
.byte 0x00, 0x00
.global data_ov00_020e595c
data_ov00_020e595c: ; 0x020e595c
.byte 0x22, 0x00, 0x00, 0x00
.global data_ov00_020e5960
data_ov00_020e5960: ; 0x020e5960
.byte 0x00, 0x10, 0x00, 0x00
.global data_ov00_020e5964
data_ov00_020e5964: ; 0x020e5964
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020e5968
data_ov00_020e5968: ; 0x020e5968
.byte 0x00, 0xf0, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global _ZTV17LinkStateInteract
_ZTV17LinkStateInteract: ; 0x020e5974
.word _ZN17LinkStateInteract8vfunc_00Ev
.word func_ov04_0210ab88 ; data_ov07_0210ab88
.word func_ov04_0210ab9c ; data_ov07_0210ab9c
.word _ZN17LinkStateInteract5GetIdEv - 1
.word _ZN17LinkStateInteract14GetGrabActorIdEv
.word _ZN17LinkStateInteract12OnStateEnterEv - 1
.word _ZN17LinkStateInteract12OnStateLeaveEi - 1
.word func_ov05_0210a648 ; data_ov07_0210a648
.word _ZN17LinkStateInteract8vfunc_20Ei - 1
.word _ZN17LinkStateInteract8vfunc_24Ei - 1
.word _ZN13LinkStateBase8vfunc_28Ev
.word func_ov05_0210b3bc ; data_ov07_0210b3bc
.word func_ov05_0210f708
.word _ZN17LinkStateInteract8vfunc_34EP5Vec3p - 1
.word func_ov05_0210f70c
.word func_ov05_0210f714
.word func_ov05_0210f71c
.global data_ov00_020e59b8
data_ov00_020e59b8: ; 0x020e59b8
.ascii "Đx"
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020e59cc
data_ov00_020e59cc: ; 0x020e59cc
.ascii "Jnt["
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020e59e4
data_ov00_020e59e4: ; 0x020e59e4
.ascii "It["
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020e59fc
data_ov00_020e59fc: ; 0x020e59fc
.ascii "Đx"
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020e5a0c
data_ov00_020e5a0c: ; 0x020e5a0c
.ascii "Jnt["
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020e5a20
data_ov00_020e5a20: ; 0x020e5a20
.ascii "It["
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov00_020e5a34
data_ov00_020e5a34: ; 0x020e5a34
.ascii "~"
.byte 0x00, 0x00, 0x00, 0x00