	.include "asm/macros.inc"
	.include "constants/constants.inc"

	.syntax unified

	.text

	thumb_func_start sub_80FB59C
sub_80FB59C: @ 80FB59C
	push {r4-r6,lr}
	sub sp, 0xC
	mov r4, sp
	adds r4, 0x5
	mov r5, sp
	adds r5, 0x6
	add r6, sp, 0x8
	add r0, sp, 0x4
	adds r1, r4, 0
	adds r2, r5, 0
	adds r3, r6, 0
	bl sub_8137FFC
	lsls r0, 24
	cmp r0, 0
	bne _080FB5DE
	add r0, sp, 0x4
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	movs r1, 0
	ldrsb r1, [r4, r1]
	movs r2, 0x1
	negs r2, r2
	movs r3, 0
	ldrsb r3, [r5, r3]
	movs r4, 0
	ldrsb r4, [r6, r4]
	str r4, [sp]
	bl warp1_set
	movs r0, 0x1
	b _080FB5E0
_080FB5DE:
	movs r0, 0
_080FB5E0:
	add sp, 0xC
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_80FB59C

	thumb_func_start sub_80FB5E8
sub_80FB5E8: @ 80FB5E8
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r5, r0, 24
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	ldr r1, =gTasks + 0x8
	adds r4, r0, r1
	ldr r0, =0x000040b4
	bl GetVarPointer
	adds r7, r0, 0
	ldr r0, =gSaveBlock1Ptr
	ldr r3, [r0]
	adds r6, r3, 0x4
	movs r0, 0
	ldrsh r2, [r4, r0]
	cmp r2, 0x1
	beq _080FB648
	cmp r2, 0x1
	bgt _080FB624
	cmp r2, 0
	beq _080FB62E
	b _080FB6E2
	.pool
_080FB624:
	cmp r2, 0x2
	beq _080FB68A
	cmp r2, 0x3
	beq _080FB6C4
	b _080FB6E2
_080FB62E:
	ldr r0, =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _080FB6E2
	strh r2, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r4]
	b _080FB6E2
	.pool
_080FB648:
	ldr r0, =gMain
	ldrh r1, [r0, 0x2E]
	adds r0, r2, 0
	ands r0, r1
	cmp r0, 0
	beq _080FB656
	strh r2, [r4, 0x2]
_080FB656:
	ldrb r1, [r6, 0x1]
	ldrb r2, [r3, 0x4]
	movs r0, 0xFF
	bl sub_80D3340
	lsls r0, 24
	cmp r0, 0
	beq _080FB6E2
	movs r0, 0x1
	bl sub_8137FC0
	cmp r0, 0x1
	bne _080FB686
	ldrh r0, [r7]
	cmp r0, 0x2
	bne _080FB680
	movs r0, 0x9
	b _080FB682
	.pool
_080FB680:
	movs r0, 0xA
_080FB682:
	strh r0, [r7]
	b _080FB692
_080FB686:
	movs r0, 0x2
	strh r0, [r4]
_080FB68A:
	movs r1, 0x2
	ldrsh r0, [r4, r1]
	cmp r0, 0
	beq _080FB698
_080FB692:
	movs r0, 0x3
	strh r0, [r4]
	b _080FB6E2
_080FB698:
	ldrh r0, [r7]
	cmp r0, 0x2
	bne _080FB6AC
	ldrb r1, [r6, 0x1]
	ldrb r2, [r6]
	ldr r3, =gUnknown_0858E8AB
	b _080FB6B2
	.pool
_080FB6AC:
	ldrb r1, [r6, 0x1]
	ldrb r2, [r6]
	ldr r3, =gUnknown_0858E8AD
_080FB6B2:
	movs r0, 0xFF
	bl exec_movement
	movs r0, 0x1
	strh r0, [r4]
	b _080FB6E2
	.pool
_080FB6C4:
	ldr r0, =0x00004001
	bl FlagReset
	movs r0, 0x80
	lsls r0, 7
	bl FlagReset
	movs r0, 0
	bl copy_saved_warp2_bank_and_enter_x_to_warp1
	bl sp13E_warp_to_last_warp
	adds r0, r5, 0
	bl DestroyTask
_080FB6E2:
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80FB5E8

	thumb_func_start sub_80FB6EC
sub_80FB6EC: @ 80FB6EC
	push {r4,lr}
	sub sp, 0x4
	ldr r1, =SpriteCallbackDummy
	movs r0, 0
	str r0, [sp]
	movs r0, 0x8C
	movs r2, 0x70
	movs r3, 0x50
	bl AddPseudoFieldObject
	lsls r0, 24
	lsrs r0, 24
	ldr r2, =gSprites
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r4, r1, r2
	adds r2, r4, 0
	adds r2, 0x3E
	ldrb r1, [r2]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldr r0, =0x000040b4
	bl VarGet
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0x2
	bne _080FB74C
	movs r0, 0x4
	bl FieldObjectDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
	b _080FB75E
	.pool
_080FB74C:
	movs r0, 0x3
	bl FieldObjectDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
_080FB75E:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_80FB6EC

	thumb_func_start sub_80FB768
sub_80FB768: @ 80FB768
	push {lr}
	bl sub_80FB6EC
	ldr r2, =gMapObjects
	ldr r0, =gPlayerAvatar
	ldrb r1, [r0, 0x5]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r1, [r0, 0x1]
	movs r2, 0x20
	orrs r1, r2
	strb r1, [r0, 0x1]
	bl pal_fill_black
	ldr r0, =sub_80FB5E8
	movs r1, 0x50
	bl CreateTask
	bl ScriptContext2_Enable
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80FB768

	thumb_func_start sub_80FB7A4
sub_80FB7A4: @ 80FB7A4
	push {lr}
	ldr r0, =0x0000088d
	bl FlagSet
	ldr r0, =0x00004001
	bl FlagSet
	movs r0, 0x80
	lsls r0, 7
	bl FlagSet
	ldr r0, =gSaveBlock1Ptr
	ldr r0, [r0]
	movs r1, 0x4
	ldrsb r1, [r0, r1]
	movs r2, 0x5
	ldrsb r2, [r0, r2]
	movs r3, 0x1
	negs r3, r3
	movs r0, 0
	bl saved_warp2_set
	bl sub_80FB59C
	bl sub_80AF8B8
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80FB7A4

	.align 2, 0 @ Don't pad with nop.
