pokeheartgold/asm/unk_02056680.s
2023-07-09 09:34:22 +01:00

843 lines
16 KiB
ArmAsm

.include "asm/macros.inc"
.include "unk_02056680.inc"
.include "global.inc"
.rodata
_020FC790:
.word ov45_02229EE0, ov45_02229F70, ov45_02229F94, FS_OVERLAY_ID(OVY_45)
.text
thumb_func_start sub_02056680
sub_02056680: ; 0x02056680
push {r4, r5, r6, lr}
add r4, r0, #0
bl TaskManager_GetFieldSystem
add r5, r0, #0
add r0, r4, #0
bl TaskManager_GetEnv
add r4, r0, #0
ldrh r0, [r4, #2]
cmp r0, #0
beq _020566A2
cmp r0, #1
beq _020566C8
cmp r0, #2
beq _020566F0
b _020566F4
_020566A2:
bl ov01_021E90C0
str r0, [r4, #0x18]
ldr r0, [r5, #0x40]
bl GetPlayerXCoord
add r6, r0, #0
ldr r0, [r5, #0x40]
bl GetPlayerYCoord
add r1, r0, #0
ldr r2, [r4, #0x18]
add r0, r6, #0
bl ov01_021E90DC
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _020566F4
_020566C8:
ldr r0, [r5, #0x40]
ldr r6, [r4, #0x18]
bl PlayerAvatar_GetFacingDirection
add r2, r0, #0
lsl r2, r2, #0x18
add r0, r5, #0
add r1, r6, #0
lsr r2, r2, #0x18
bl ov01_021E971C
cmp r0, #0
beq _020566F4
ldr r0, [r4, #0x18]
bl ov01_021E90D4
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _020566F4
_020566F0:
mov r0, #1
pop {r4, r5, r6, pc}
_020566F4:
mov r0, #0
pop {r4, r5, r6, pc}
thumb_func_end sub_02056680
thumb_func_start sub_020566F8
sub_020566F8: ; 0x020566F8
push {r4, r5, r6, lr}
add r4, r0, #0
bl TaskManager_GetFieldSystem
add r5, r0, #0
add r0, r4, #0
bl TaskManager_GetEnv
add r4, r0, #0
ldrh r0, [r4, #2]
cmp r0, #3
bhi _020567AE
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0205671C: ; jump table
.short _02056724 - _0205671C - 2 ; case 0
.short _02056760 - _0205671C - 2 ; case 1
.short _0205679A - _0205671C - 2 ; case 2
.short _020567AA - _0205671C - 2 ; case 3
_02056724:
mov r0, #1
bl ov01_021E636C
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
add r6, r0, #0
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetFacingDirection
cmp r0, #2
bne _02056746
add r0, r6, #0
mov r1, #0xa
bl MapObject_SetHeldMovement
b _02056758
_02056746:
cmp r0, #3
bne _02056754
add r0, r6, #0
mov r1, #0xb
bl MapObject_SetHeldMovement
b _02056758
_02056754:
bl GF_AssertFail
_02056758:
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _020567AE
_02056760:
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
add r6, r0, #0
bl MapObject_IsMovementPaused
cmp r0, #1
bne _020567AE
add r0, r6, #0
bl MapObject_ClearHeldMovementIfActive
add r0, r5, #0
bl FollowingPokemon_IsActive
cmp r0, #0
beq _02056792
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetFacingDirection
add r1, r0, #0
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov01_02205790
_02056792:
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _020567AE
_0205679A:
bl IsPaletteFadeFinished
cmp r0, #0
beq _020567AE
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _020567AE
_020567AA:
mov r0, #1
pop {r4, r5, r6, pc}
_020567AE:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end sub_020566F8
thumb_func_start sub_020567B4
sub_020567B4: ; 0x020567B4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
bl TaskManager_GetFieldSystem
add r5, r0, #0
add r0, r6, #0
bl TaskManager_GetEnv
add r4, r0, #0
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
ldrh r0, [r4, #2]
cmp r0, #0
beq _020567D8
cmp r0, #1
beq _0205680A
b _02056814
_020567D8:
bl ov01_021E90C0
str r0, [r4, #0x18]
add r7, r0, #0
ldr r0, [r5, #0x40]
bl GetPlayerXCoord
str r0, [sp]
ldr r0, [r5, #0x40]
bl GetPlayerYCoord
add r1, r0, #0
ldr r0, [sp]
add r2, r7, #0
bl ov01_021E90DC
ldr r1, _02056818 ; =ov01_021E9C40
add r0, r6, #0
add r2, r7, #0
bl TaskManager_Call
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056814
_0205680A:
ldr r0, [r4, #0x18]
bl ov01_021E90D4
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02056814:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02056818: .word ov01_021E9C40
thumb_func_end sub_020567B4
thumb_func_start sub_0205681C
sub_0205681C: ; 0x0205681C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
bl TaskManager_GetFieldSystem
add r5, r0, #0
add r0, r4, #0
bl TaskManager_GetEnv
add r4, r0, #0
ldrh r0, [r4, #2]
cmp r0, #5
bhi _02056932
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02056842: ; jump table
.short _0205684E - _02056842 - 2 ; case 0
.short _0205686A - _02056842 - 2 ; case 1
.short _020568A8 - _02056842 - 2 ; case 2
.short _020568BE - _02056842 - 2 ; case 3
.short _020568DE - _02056842 - 2 ; case 4
.short _02056926 - _02056842 - 2 ; case 5
_0205684E:
mov r0, #0xb
mov r1, #8
bl AllocFromHeapAtEnd
str r0, [r4, #0x18]
mov r1, #0
str r1, [r0]
mov r0, #1
bl ov01_021E636C
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056932
_0205686A:
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
ldr r6, [r4, #0x18]
add r7, r0, #0
ldr r1, [r6]
add r1, r1, #1
str r1, [r6]
add r1, sp, #0
bl MapObject_GetPositionVec
mov r0, #2
ldr r1, [sp, #4]
lsl r0, r0, #0xc
add r0, r1, r0
str r0, [sp, #4]
add r0, r7, #0
add r1, sp, #0
bl MapObject_SetPositionVec
ldr r0, [r6]
cmp r0, #0x10
blt _02056932
ldr r0, [r5, #0x40]
mov r1, #1
bl PlayerAvatar_ToggleAutomaticHeightUpdating_NowApply
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056932
_020568A8:
ldr r0, [r5, #0x40]
mov r1, #1
bl Field_PlayerAvatar_OrrTransitionFlags
ldr r0, [r5, #0x40]
bl Field_PlayerAvatar_ApplyTransitionFlags
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056932
_020568BE:
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
add r5, r0, #0
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #0
beq _02056932
add r0, r5, #0
mov r1, #0xc
bl MapObject_SetHeldMovement
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056932
_020568DE:
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #0
beq _02056932
bl IsPaletteFadeFinished
cmp r0, #0
beq _02056932
add r0, r5, #0
bl FollowingPokemon_IsActive
cmp r0, #0
beq _0205691E
add r0, r5, #0
mov r1, #0
bl ov01_02205790
add r0, r5, #0
bl FollowingPokemon_GetMapObject
mov r1, #0x30
bl sub_0205FC94
add r0, r5, #0
bl FollowingPokemon_GetMapObject
mov r1, #1
bl sub_02069DC8
_0205691E:
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056932
_02056926:
ldr r0, [r4, #0x18]
bl FreeToHeap
add sp, #0xc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02056932:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end sub_0205681C
thumb_func_start sub_02056938
sub_02056938: ; 0x02056938
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
bl TaskManager_GetFieldSystem
add r5, r0, #0
add r0, r4, #0
bl TaskManager_GetEnv
add r4, r0, #0
ldrh r0, [r4, #2]
cmp r0, #5
bhi _02056A4E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0205695E: ; jump table
.short _0205696A - _0205695E - 2 ; case 0
.short _02056986 - _0205695E - 2 ; case 1
.short _020569C4 - _0205695E - 2 ; case 2
.short _020569DA - _0205695E - 2 ; case 3
.short _020569FA - _0205695E - 2 ; case 4
.short _02056A42 - _0205695E - 2 ; case 5
_0205696A:
mov r0, #0xb
mov r1, #8
bl AllocFromHeapAtEnd
str r0, [r4, #0x18]
mov r1, #0
str r1, [r0]
mov r0, #1
bl ov01_021E636C
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056A4E
_02056986:
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
ldr r6, [r4, #0x18]
add r7, r0, #0
ldr r1, [r6]
add r1, r1, #1
str r1, [r6]
add r1, sp, #0
bl MapObject_GetPositionVec
mov r0, #2
ldr r1, [sp, #4]
lsl r0, r0, #0xc
sub r0, r1, r0
str r0, [sp, #4]
add r0, r7, #0
add r1, sp, #0
bl MapObject_SetPositionVec
ldr r0, [r6]
cmp r0, #0x10
blt _02056A4E
ldr r0, [r5, #0x40]
mov r1, #1
bl PlayerAvatar_ToggleAutomaticHeightUpdating_NowApply
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056A4E
_020569C4:
ldr r0, [r5, #0x40]
mov r1, #1
bl Field_PlayerAvatar_OrrTransitionFlags
ldr r0, [r5, #0x40]
bl Field_PlayerAvatar_ApplyTransitionFlags
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056A4E
_020569DA:
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
add r5, r0, #0
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #0
beq _02056A4E
add r0, r5, #0
mov r1, #0xd
bl MapObject_SetHeldMovement
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056A4E
_020569FA:
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetMapObject
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #0
beq _02056A4E
bl IsPaletteFadeFinished
cmp r0, #0
beq _02056A4E
add r0, r5, #0
bl FollowingPokemon_IsActive
cmp r0, #0
beq _02056A3A
add r0, r5, #0
mov r1, #1
bl ov01_02205790
add r0, r5, #0
bl FollowingPokemon_GetMapObject
mov r1, #0x30
bl sub_0205FC94
add r0, r5, #0
bl FollowingPokemon_GetMapObject
mov r1, #1
bl sub_02069DC8
_02056A3A:
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
b _02056A4E
_02056A42:
ldr r0, [r4, #0x18]
bl FreeToHeap
add sp, #0xc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02056A4E:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end sub_02056938
thumb_func_start sub_02056A54
sub_02056A54: ; 0x02056A54
push {r3, r4, r5, r6, lr}
sub sp, #0x34
add r4, r0, #0
ldr r0, [r4, #0x24]
bl Camera_GetCurrentTarget
add r5, r0, #0
ldr r1, [r4, #0x24]
add r0, sp, #4
bl Camera_GetLookAtCamTarget
add r6, sp, #4
add r3, sp, #0x10
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, r5, #0
str r0, [r3]
add r0, r2, #0
add r2, sp, #0x1c
bl VEC_Subtract
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetFacingDirection
add r5, r0, #0
ldr r0, [r4, #0x40]
add r1, sp, #0x28
bl PlayerAvatar_GetPositionVec
cmp r5, #3
bne _02056AA2
mov r0, #1
ldr r1, [sp, #0x28]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x28]
b _02056AAC
_02056AA2:
mov r0, #1
ldr r1, [sp, #0x28]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #0x28]
_02056AAC:
mov r0, #0
str r0, [sp]
ldr r1, [sp, #0x2c]
ldr r2, [sp, #0x28]
ldr r3, [sp, #0x30]
add r0, r4, #0
bl sub_02054940
str r0, [sp, #0x2c]
ldr r0, [r4, #0x40]
add r1, sp, #0x28
add r2, r5, #0
bl sub_0205C810
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetPositionVecConst
ldr r1, [r4, #0x24]
bl Camera_SetLookAtTargetAndRecalcPos
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetPositionVecConst
ldr r1, [r4, #0x24]
bl Camera_SetFixedTarget
ldr r1, [r4, #0x24]
add r0, sp, #0x1c
bl Camera_OffsetLookAtPosAndTarget
add sp, #0x34
pop {r3, r4, r5, r6, pc}
thumb_func_end sub_02056A54
thumb_func_start sub_02056AEC
sub_02056AEC: ; 0x02056AEC
push {r3, r4, r5, r6, lr}
sub sp, #0x34
add r5, r0, #0
ldr r0, [r5, #0x24]
bl Camera_GetCurrentTarget
add r4, r0, #0
ldr r1, [r5, #0x24]
add r0, sp, #4
bl Camera_GetLookAtCamTarget
add r6, sp, #4
add r3, sp, #0x10
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, r4, #0
str r0, [r3]
add r0, r2, #0
add r2, sp, #0x1c
bl VEC_Subtract
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetFacingDirection
add r4, r0, #0
ldr r0, [r5, #0x40]
add r1, sp, #0x28
bl PlayerAvatar_GetPositionVec
ldr r0, [r5, #0x40]
bl GetPlayerXCoord
add r6, r0, #0
ldr r0, [r5, #0x40]
bl GetPlayerYCoord
add r2, r0, #0
add r0, r5, #0
add r1, r6, #0
bl GetMetatileBehaviorAt
add r6, r0, #0
bl sub_0205B810
cmp r0, #0
beq _02056B5A
mov r0, #1
ldr r1, [sp, #0x28]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #0x28]
mov r4, #2
b _02056B70
_02056B5A:
add r0, r6, #0
bl sub_0205B81C
cmp r0, #0
beq _02056B70
mov r0, #1
ldr r1, [sp, #0x28]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x28]
mov r4, #3
_02056B70:
mov r0, #0
str r0, [sp]
ldr r1, [sp, #0x2c]
ldr r2, [sp, #0x28]
ldr r3, [sp, #0x30]
add r0, r5, #0
bl sub_02054940
str r0, [sp, #0x2c]
ldr r0, [r5, #0x40]
add r1, sp, #0x28
add r2, r4, #0
bl sub_0205C810
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetPositionVecConst
ldr r1, [r5, #0x24]
bl Camera_SetLookAtTargetAndRecalcPos
ldr r0, [r5, #0x40]
bl PlayerAvatar_GetPositionVecConst
ldr r1, [r5, #0x24]
bl Camera_SetFixedTarget
ldr r1, [r5, #0x24]
add r0, sp, #0x1c
bl Camera_OffsetLookAtPosAndTarget
add r0, r5, #0
bl FollowingPokemon_IsActive
cmp r0, #0
beq _02056BC2
add r0, r5, #0
bl FollowingPokemon_GetMapObject
add r1, r4, #0
bl MapObject_ForceSetFacingDirection
_02056BC2:
add sp, #0x34
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end sub_02056AEC
thumb_func_start sub_02056BC8
sub_02056BC8: ; 0x02056BC8
push {r4, r5, r6, lr}
sub sp, #0x30
add r4, r0, #0
ldr r0, [r4, #0x24]
bl Camera_GetCurrentTarget
add r5, r0, #0
ldr r1, [r4, #0x24]
add r0, sp, #0
bl Camera_GetLookAtCamTarget
add r6, sp, #0
add r3, sp, #0xc
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, r5, #0
str r0, [r3]
add r0, r2, #0
add r2, sp, #0x18
bl VEC_Subtract
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetMapObject
add r5, r0, #0
ldr r0, [r4, #0x40]
add r1, sp, #0x24
bl PlayerAvatar_GetPositionVec
ldr r0, [r4, #0x40]
mov r1, #0
bl PlayerAvatar_ToggleAutomaticHeightUpdating
mov r0, #2
ldr r1, [sp, #0x28]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x28]
ldr r0, [r4, #0x40]
add r1, sp, #0x24
mov r2, #0
bl sub_0205C810
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetPositionVecConst
ldr r1, [r4, #0x24]
bl Camera_SetLookAtTargetAndRecalcPos
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetPositionVecConst
ldr r1, [r4, #0x24]
bl Camera_SetFixedTarget
ldr r1, [r4, #0x24]
add r0, sp, #0x18
bl Camera_OffsetLookAtPosAndTarget
add r0, r5, #0
bl MapObject_ClearHeldMovementIfActive
mov r1, #2
ldr r0, [r4, #0x40]
lsl r1, r1, #8
bl Field_PlayerAvatar_OrrTransitionFlags
ldr r0, [r4, #0x40]
bl Field_PlayerAvatar_ApplyTransitionFlags
add r0, r5, #0
mov r1, #0
bl sub_0205F328
add sp, #0x30
pop {r4, r5, r6, pc}
thumb_func_end sub_02056BC8
thumb_func_start sub_02056C64
sub_02056C64: ; 0x02056C64
push {r4, r5, r6, lr}
sub sp, #0x30
add r4, r0, #0
ldr r0, [r4, #0x24]
bl Camera_GetCurrentTarget
add r5, r0, #0
ldr r1, [r4, #0x24]
add r0, sp, #0
bl Camera_GetLookAtCamTarget
add r6, sp, #0
add r3, sp, #0xc
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, r5, #0
str r0, [r3]
add r0, r2, #0
add r2, sp, #0x18
bl VEC_Subtract
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetMapObject
add r5, r0, #0
ldr r0, [r4, #0x40]
add r1, sp, #0x24
bl PlayerAvatar_GetPositionVec
ldr r0, [r4, #0x40]
mov r1, #0
bl PlayerAvatar_ToggleAutomaticHeightUpdating
mov r0, #2
ldr r1, [sp, #0x28]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #0x28]
ldr r0, [r4, #0x40]
add r1, sp, #0x24
mov r2, #0
bl sub_0205C810
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetPositionVecConst
ldr r1, [r4, #0x24]
bl Camera_SetLookAtTargetAndRecalcPos
ldr r0, [r4, #0x40]
bl PlayerAvatar_GetPositionVecConst
ldr r1, [r4, #0x24]
bl Camera_SetFixedTarget
ldr r1, [r4, #0x24]
add r0, sp, #0x18
bl Camera_OffsetLookAtPosAndTarget
add r0, r5, #0
bl MapObject_ClearHeldMovementIfActive
mov r1, #2
ldr r0, [r4, #0x40]
lsl r1, r1, #8
bl Field_PlayerAvatar_OrrTransitionFlags
ldr r0, [r4, #0x40]
bl Field_PlayerAvatar_ApplyTransitionFlags
add r0, r5, #0
mov r1, #0
bl sub_0205F328
add sp, #0x30
pop {r4, r5, r6, pc}
thumb_func_end sub_02056C64
thumb_func_start sub_02056D00
sub_02056D00: ; 0x02056D00
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
mov r0, #0xb
mov r1, #0x10
bl AllocFromHeapAtEnd
add r2, r0, #0
add r3, r2, #0
mov r1, #0x10
mov r0, #0
_02056D16:
strb r0, [r3]
add r3, r3, #1
sub r1, r1, #1
bne _02056D16
ldr r1, _02056D2C ; =sub_02056D30
add r0, r5, #0
strh r4, [r2, #2]
bl TaskManager_Call
pop {r3, r4, r5, pc}
nop
_02056D2C: .word sub_02056D30
thumb_func_end sub_02056D00
thumb_func_start sub_02056D30
sub_02056D30: ; 0x02056D30
push {r4, r5, r6, lr}
add r6, r0, #0
bl TaskManager_GetFieldSystem
add r5, r0, #0
add r0, r6, #0
bl TaskManager_GetEnv
add r4, r0, #0
ldrh r1, [r4]
cmp r1, #0
beq _02056D4E
cmp r1, #1
beq _02056D6C
b _02056D74
_02056D4E:
ldr r0, [r5, #0xc]
add r5, #0xb4
str r0, [r4, #8]
ldrh r0, [r4, #2]
ldr r1, _02056D78 ; =_020FC790
add r2, r4, #4
str r0, [r4, #0xc]
str r5, [r4, #4]
add r0, r6, #0
bl CallApplicationAsTask
ldrh r0, [r4]
add r0, r0, #1
strh r0, [r4]
b _02056D74
_02056D6C:
bl FreeToHeap
mov r0, #1
pop {r4, r5, r6, pc}
_02056D74:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
_02056D78: .word _020FC790
thumb_func_end sub_02056D30