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

	.syntax unified

	.text

	thumb_func_start BuildStartMenuActions
BuildStartMenuActions: @ 809F440
	push {lr}
	ldr r0, =gUnknown_0203760F
	movs r1, 0
	strb r1, [r0]
	bl is_c1_link_related_active
	cmp r0, 0x1
	bne _0809F45C
	bl BuildStartMenuActions_LinkMode
	b _0809F4AC
	.pool
_0809F45C:
	bl InUnionRoom
	cmp r0, 0x1
	bne _0809F46A
	bl BuildStartMenuActions_UnionRoom
	b _0809F4AC
_0809F46A:
	bl GetSafariZoneFlag
	cmp r0, 0x1
	bne _0809F478
	bl BuildStartMenuActions_SafariZone
	b _0809F4AC
_0809F478:
	bl InBattlePike
	lsls r0, 24
	cmp r0, 0
	beq _0809F488
	bl BuildStartMenuActions_BattlePike
	b _0809F4AC
_0809F488:
	bl InBattlePyramid
	lsls r0, 24
	cmp r0, 0
	beq _0809F498
	bl BuildStartMenuActions_BattlePyramid
	b _0809F4AC
_0809F498:
	bl in_multi_battle_room_with_var_condition
	lsls r0, 24
	cmp r0, 0
	beq _0809F4A8
	bl BuildStartMenuActions_MultiBattleRoom
	b _0809F4AC
_0809F4A8:
	bl BuildStartMenuActions_Normal
_0809F4AC:
	pop {r0}
	bx r0
	thumb_func_end BuildStartMenuActions

	thumb_func_start AddStartMenuAction
@ void AddStartMenuAction(u8 entry)
AddStartMenuAction: @ 809F4B0
	push {lr}
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	ldr r0, =gUnknown_02037610
	ldr r1, =gUnknown_0203760F
	bl append_byte
	pop {r0}
	bx r0
	.pool
	thumb_func_end AddStartMenuAction

	thumb_func_start BuildStartMenuActions_Normal
BuildStartMenuActions_Normal: @ 809F4CC
	push {lr}
	ldr r0, =0x00000861
	bl FlagGet
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809F4E2
	movs r0, 0
	bl AddStartMenuAction
_0809F4E2:
	movs r0, 0x86
	lsls r0, 4
	bl FlagGet
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809F4F8
	movs r0, 0x1
	bl AddStartMenuAction
_0809F4F8:
	movs r0, 0x2
	bl AddStartMenuAction
	ldr r0, =0x00000862
	bl FlagGet
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809F512
	movs r0, 0x3
	bl AddStartMenuAction
_0809F512:
	movs r0, 0x4
	bl AddStartMenuAction
	movs r0, 0x5
	bl AddStartMenuAction
	movs r0, 0x6
	bl AddStartMenuAction
	movs r0, 0x7
	bl AddStartMenuAction
	pop {r0}
	bx r0
	.pool
	thumb_func_end BuildStartMenuActions_Normal

	thumb_func_start BuildStartMenuActions_SafariZone
BuildStartMenuActions_SafariZone: @ 809F538
	push {lr}
	movs r0, 0x8
	bl AddStartMenuAction
	movs r0, 0
	bl AddStartMenuAction
	movs r0, 0x1
	bl AddStartMenuAction
	movs r0, 0x2
	bl AddStartMenuAction
	movs r0, 0x4
	bl AddStartMenuAction
	movs r0, 0x6
	bl AddStartMenuAction
	movs r0, 0x7
	bl AddStartMenuAction
	pop {r0}
	bx r0
	thumb_func_end BuildStartMenuActions_SafariZone

	thumb_func_start BuildStartMenuActions_LinkMode
BuildStartMenuActions_LinkMode: @ 809F568
	push {lr}
	movs r0, 0x1
	bl AddStartMenuAction
	movs r0, 0x2
	bl AddStartMenuAction
	ldr r0, =0x00000862
	bl FlagGet
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809F58A
	movs r0, 0x3
	bl AddStartMenuAction
_0809F58A:
	movs r0, 0x9
	bl AddStartMenuAction
	movs r0, 0x6
	bl AddStartMenuAction
	movs r0, 0x7
	bl AddStartMenuAction
	pop {r0}
	bx r0
	.pool
	thumb_func_end BuildStartMenuActions_LinkMode

	thumb_func_start BuildStartMenuActions_UnionRoom
BuildStartMenuActions_UnionRoom: @ 809F5A4
	push {lr}
	movs r0, 0x1
	bl AddStartMenuAction
	movs r0, 0x2
	bl AddStartMenuAction
	ldr r0, =0x00000862
	bl FlagGet
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809F5C6
	movs r0, 0x3
	bl AddStartMenuAction
_0809F5C6:
	movs r0, 0x4
	bl AddStartMenuAction
	movs r0, 0x6
	bl AddStartMenuAction
	movs r0, 0x7
	bl AddStartMenuAction
	pop {r0}
	bx r0
	.pool
	thumb_func_end BuildStartMenuActions_UnionRoom

	thumb_func_start BuildStartMenuActions_BattlePike
BuildStartMenuActions_BattlePike: @ 809F5E0
	push {lr}
	movs r0, 0
	bl AddStartMenuAction
	movs r0, 0x1
	bl AddStartMenuAction
	movs r0, 0x4
	bl AddStartMenuAction
	movs r0, 0x6
	bl AddStartMenuAction
	movs r0, 0x7
	bl AddStartMenuAction
	pop {r0}
	bx r0
	thumb_func_end BuildStartMenuActions_BattlePike

	thumb_func_start BuildStartMenuActions_BattlePyramid
BuildStartMenuActions_BattlePyramid: @ 809F604
	push {lr}
	movs r0, 0x1
	bl AddStartMenuAction
	movs r0, 0xC
	bl AddStartMenuAction
	movs r0, 0x4
	bl AddStartMenuAction
	movs r0, 0xA
	bl AddStartMenuAction
	movs r0, 0xB
	bl AddStartMenuAction
	movs r0, 0x6
	bl AddStartMenuAction
	movs r0, 0x7
	bl AddStartMenuAction
	pop {r0}
	bx r0
	thumb_func_end BuildStartMenuActions_BattlePyramid

	thumb_func_start BuildStartMenuActions_MultiBattleRoom
BuildStartMenuActions_MultiBattleRoom: @ 809F634
	push {lr}
	movs r0, 0x1
	bl AddStartMenuAction
	movs r0, 0x4
	bl AddStartMenuAction
	movs r0, 0x6
	bl AddStartMenuAction
	movs r0, 0x7
	bl AddStartMenuAction
	pop {r0}
	bx r0
	thumb_func_end BuildStartMenuActions_MultiBattleRoom

	thumb_func_start sub_809F654
sub_809F654: @ 809F654
	push {r4,r5,lr}
	sub sp, 0xC
	ldr r4, =gUnknown_0203760C
	ldr r0, =gUnknown_08510508
	bl AddWindow
	strb r0, [r4]
	ldrb r0, [r4]
	bl PutWindowTilemap
	ldrb r0, [r4]
	movs r1, 0
	bl sub_81973FC
	ldr r0, =gUnknown_02021CC4
	ldr r1, =gUnknown_0203A04C
	ldrb r1, [r1]
	movs r2, 0x1
	movs r3, 0x2
	bl ConvertIntToDecimalString
	ldr r5, =gUnknown_02021FC4
	ldr r1, =gUnknown_085EE6FF
	adds r0, r5, 0
	bl ExpandStringRefs
	ldrb r0, [r4]
	movs r1, 0x1
	str r1, [sp]
	movs r1, 0xFF
	str r1, [sp, 0x4]
	movs r1, 0
	str r1, [sp, 0x8]
	movs r1, 0x1
	adds r2, r5, 0
	movs r3, 0
	bl Print
	ldrb r0, [r4]
	movs r1, 0x2
	bl CopyWindowToVram
	add sp, 0xC
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809F654

	thumb_func_start sub_809F6C8
sub_809F6C8: @ 809F6C8
	push {r4,r5,lr}
	sub sp, 0xC
	ldr r0, =gUnknown_03005D90
	ldr r0, [r0]
	ldr r1, =0x00000cb2
	adds r0, r1
	ldrh r0, [r0]
	cmp r0, 0x7
	bne _0809F6F0
	ldr r4, =gUnknown_0203760D
	ldr r0, =gUnknown_08510538
	b _0809F6F4
	.pool
_0809F6F0:
	ldr r4, =gUnknown_0203760D
	ldr r0, =gUnknown_08510530
_0809F6F4:
	bl AddWindow
	strb r0, [r4]
	ldr r4, =gUnknown_0203760D
	ldrb r0, [r4]
	bl PutWindowTilemap
	ldrb r0, [r4]
	movs r1, 0
	bl sub_81973FC
	ldr r0, =gUnknown_02021CC4
	ldr r2, =gUnknown_08510510
	ldr r1, =gUnknown_03005D90
	ldr r1, [r1]
	ldr r3, =0x00000cb2
	adds r1, r3
	ldrh r1, [r1]
	lsls r1, 2
	adds r1, r2
	ldr r1, [r1]
	bl CopyString
	ldr r5, =gUnknown_02021FC4
	ldr r1, =gUnknown_085EE716
	adds r0, r5, 0
	bl ExpandStringRefs
	ldrb r0, [r4]
	movs r1, 0x1
	str r1, [sp]
	movs r1, 0xFF
	str r1, [sp, 0x4]
	movs r1, 0
	str r1, [sp, 0x8]
	movs r1, 0x1
	adds r2, r5, 0
	movs r3, 0
	bl Print
	ldrb r0, [r4]
	movs r1, 0x2
	bl CopyWindowToVram
	add sp, 0xC
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809F6C8

	thumb_func_start RemoveExtraStartMenuWindows
RemoveExtraStartMenuWindows: @ 809F774
	push {r4,lr}
	bl GetSafariZoneFlag
	cmp r0, 0
	beq _0809F796
	ldr r4, =gUnknown_0203760C
	ldrb r0, [r4]
	movs r1, 0
	bl sub_8198070
	ldrb r0, [r4]
	movs r1, 0x2
	bl CopyWindowToVram
	ldrb r0, [r4]
	bl RemoveWindow
_0809F796:
	bl InBattlePyramid
	lsls r0, 24
	cmp r0, 0
	beq _0809F7B0
	ldr r4, =gUnknown_0203760D
	ldrb r0, [r4]
	movs r1, 0
	bl sub_8198070
	ldrb r0, [r4]
	bl RemoveWindow
_0809F7B0:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end RemoveExtraStartMenuWindows

	thumb_func_start PrintStartMenuActions
PrintStartMenuActions: @ 809F7C0
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0xC
	mov r8, r0
	adds r6, r1, 0
	ldrb r2, [r0]
	ldr r0, =gUnknown_08510540
	mov r9, r0
	ldr r1, =gUnknown_02021FC4
	mov r10, r1
_0809F7DA:
	ldr r0, =gUnknown_02037610
	lsls r2, 24
	asrs r4, r2, 24
	adds r5, r4, r0
	ldrb r0, [r5]
	lsls r3, r0, 3
	mov r0, r9
	adds r0, 0x4
	adds r0, r3, r0
	ldr r1, [r0]
	ldr r0, =StartMenu_PlayerName
	adds r7, r2, 0
	cmp r1, r0
	bne _0809F828
	bl get_start_menu_window_id_maybe
	lsls r0, 24
	lsrs r0, 24
	ldrb r1, [r5]
	lsls r1, 3
	add r1, r9
	ldr r1, [r1]
	lsls r3, r4, 4
	adds r3, 0x9
	lsls r3, 16
	lsrs r3, 16
	movs r2, 0x8
	bl sub_819A024
	b _0809F858
	.pool
_0809F828:
	mov r1, r9
	adds r0, r3, r1
	ldr r1, [r0]
	mov r0, r10
	bl ExpandStringRefs
	bl get_start_menu_window_id_maybe
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r4, 4
	adds r1, 0x9
	lsls r1, 24
	lsrs r1, 24
	str r1, [sp]
	movs r1, 0xFF
	str r1, [sp, 0x4]
	movs r1, 0
	str r1, [sp, 0x8]
	movs r1, 0x1
	mov r2, r10
	movs r3, 0x8
	bl Print
_0809F858:
	movs r0, 0x80
	lsls r0, 17
	adds r1, r7, r0
	lsrs r2, r1, 24
	asrs r1, 24
	ldr r0, =gUnknown_0203760F
	ldrb r0, [r0]
	cmp r1, r0
	bge _0809F87C
	subs r6, 0x1
	cmp r6, 0
	bne _0809F7DA
	mov r1, r8
	strb r2, [r1]
	movs r0, 0
	b _0809F882
	.pool
_0809F87C:
	mov r0, r8
	strb r2, [r0]
	movs r0, 0x1
_0809F882:
	add sp, 0xC
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end PrintStartMenuActions

	thumb_func_start sub_809F894
sub_809F894: @ 809F894
	push {r4,lr}
	sub sp, 0xC
	ldr r0, =gUnknown_02037619
	movs r1, 0
	ldrsb r1, [r0, r1]
	adds r2, r0, 0
	cmp r1, 0x5
	bhi _0809F98C
	lsls r0, r1, 2
	ldr r1, =_0809F8B8
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_0809F8B8:
	.4byte _0809F8D0
	.4byte _0809F8D8
	.4byte _0809F8E4
	.4byte _0809F90C
	.4byte _0809F930
	.4byte _0809F94C
_0809F8D0:
	ldrb r0, [r2]
	adds r0, 0x1
	strb r0, [r2]
	b _0809F98C
_0809F8D8:
	bl BuildStartMenuActions
	ldr r1, =gUnknown_02037619
	b _0809F940
	.pool
_0809F8E4:
	bl sub_81973A4
	ldr r0, =gUnknown_0203760F
	ldrb r0, [r0]
	bl sub_81979C4
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0
	bl sub_81973FC
	ldr r1, =gUnknown_02037619
	movs r0, 0
	strb r0, [r1, 0x1]
	b _0809F940
	.pool
_0809F90C:
	bl GetSafariZoneFlag
	cmp r0, 0
	beq _0809F918
	bl sub_809F654
_0809F918:
	bl InBattlePyramid
	lsls r0, 24
	cmp r0, 0
	beq _0809F926
	bl sub_809F6C8
_0809F926:
	ldr r1, =gUnknown_02037619
	b _0809F940
	.pool
_0809F930:
	ldr r4, =gUnknown_0203761A
	adds r0, r4, 0
	movs r1, 0x2
	bl PrintStartMenuActions
	cmp r0, 0
	beq _0809F98C
	subs r1, r4, 0x1
_0809F940:
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	b _0809F98C
	.pool
_0809F94C:
	bl get_start_menu_window_id_maybe
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0x10
	str r1, [sp]
	ldr r1, =gUnknown_0203760F
	ldrb r1, [r1]
	str r1, [sp, 0x4]
	ldr r4, =gUnknown_0203760E
	ldrb r1, [r4]
	str r1, [sp, 0x8]
	movs r1, 0x1
	movs r2, 0
	movs r3, 0x9
	bl sub_81983AC
	strb r0, [r4]
	bl get_start_menu_window_id_maybe
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0x1
	bl CopyWindowToVram
	movs r0, 0x1
	b _0809F98E
	.pool
_0809F98C:
	movs r0, 0
_0809F98E:
	add sp, 0xC
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_809F894

	thumb_func_start sub_809F998
sub_809F998: @ 809F998
	push {lr}
	ldr r1, =gUnknown_02037619
	movs r0, 0
	strb r0, [r1]
	strb r0, [r1, 0x1]
_0809F9A2:
	bl sub_809F894
	cmp r0, 0
	beq _0809F9A2
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809F998

	thumb_func_start task50_startmenu
task50_startmenu: @ 809F9B4
	push {r4,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	bl sub_809F894
	cmp r0, 0x1
	bne _0809F9C8
	adds r0, r4, 0
	bl SwitchTaskToFollowupFunc
_0809F9C8:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end task50_startmenu

	thumb_func_start sub_809F9D0
sub_809F9D0: @ 809F9D0
	push {r4,r5,lr}
	adds r5, r0, 0
	ldr r1, =gUnknown_02037619
	movs r0, 0
	strb r0, [r1]
	strb r0, [r1, 0x1]
	ldr r4, =task50_startmenu
	adds r0, r4, 0
	movs r1, 0x50
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	adds r1, r4, 0
	adds r2, r5, 0
	bl SetTaskFuncWithFollowupFunc
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809F9D0

	thumb_func_start sub_809FA00
sub_809FA00: @ 809FA00
	push {lr}
	bl sub_809F894
	cmp r0, 0
	beq _0809FA12
	bl sub_80AF688
	movs r0, 0x1
	b _0809FA14
_0809FA12:
	movs r0, 0
_0809FA14:
	pop {r1}
	bx r1
	thumb_func_end sub_809FA00

	thumb_func_start sub_809FA18
sub_809FA18: @ 809FA18
	ldr r1, =gUnknown_02037619
	movs r0, 0
	strb r0, [r1]
	strb r0, [r1, 0x1]
	ldr r1, =gUnknown_03005DB0
	ldr r0, =sub_809FA00
	str r0, [r1]
	bx lr
	.pool
	thumb_func_end sub_809FA18

	thumb_func_start sub_809FA34
sub_809FA34: @ 809FA34
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r5, r0, 24
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	ldr r1, =gTasks
	adds r4, r0, r1
	movs r1, 0x8
	ldrsh r0, [r4, r1]
	cmp r0, 0
	beq _0809FA58
	cmp r0, 0x1
	beq _0809FA7C
	b _0809FA92
	.pool
_0809FA58:
	bl InUnionRoom
	cmp r0, 0x1
	bne _0809FA64
	bl var_800D_set_xB
_0809FA64:
	ldr r1, =gUnknown_03005DF4
	ldr r0, =HandleStartMenuInput
	str r0, [r1]
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	b _0809FA92
	.pool
_0809FA7C:
	ldr r0, =gUnknown_03005DF4
	ldr r0, [r0]
	bl _call_via_r0
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809FA92
	adds r0, r5, 0
	bl DestroyTask
_0809FA92:
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809FA34

	thumb_func_start sub_809FA9C
sub_809FA9C: @ 809FA9C
	push {lr}
	bl is_c1_link_related_active
	cmp r0, 0
	bne _0809FAB2
	bl player_bitmagic
	bl sub_808B864
	bl sub_808BCF4
_0809FAB2:
	ldr r0, =sub_809FA34
	bl sub_809F9D0
	bl script_env_2_enable
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809FA9C

	thumb_func_start HandleStartMenuInput
HandleStartMenuInput: @ 809FAC4
	push {r4,lr}
	ldr r4, =gUnknown_030022C0
	ldrh r1, [r4, 0x2E]
	movs r0, 0x40
	ands r0, r1
	cmp r0, 0
	beq _0809FAE4
	movs r0, 0x5
	bl audio_play
	movs r0, 0x1
	negs r0, r0
	bl MoveMenuCursor
	ldr r1, =gUnknown_0203760E
	strb r0, [r1]
_0809FAE4:
	ldrh r1, [r4, 0x2E]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0809FAFE
	movs r0, 0x5
	bl audio_play
	movs r0, 0x1
	bl MoveMenuCursor
	ldr r1, =gUnknown_0203760E
	strb r0, [r1]
_0809FAFE:
	ldrh r1, [r4, 0x2E]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0809FB98
	movs r0, 0x5
	bl audio_play
	ldr r1, =gUnknown_08510540
	ldr r2, =gUnknown_02037610
	ldr r0, =gUnknown_0203760E
	ldrb r0, [r0]
	adds r0, r2
	ldrb r0, [r0]
	lsls r0, 3
	adds r1, 0x4
	adds r0, r1
	ldr r1, [r0]
	ldr r0, =StartMenu_Pokedex
	cmp r1, r0
	bne _0809FB34
	movs r0, 0
	bl pokedex_count
	lsls r0, 16
	cmp r0, 0
	beq _0809FBA0
_0809FB34:
	ldr r3, =gUnknown_03005DF4
	ldr r1, =gUnknown_08510540
	ldr r2, =gUnknown_02037610
	ldr r0, =gUnknown_0203760E
	ldrb r0, [r0]
	adds r0, r2
	ldrb r0, [r0]
	lsls r0, 3
	adds r1, 0x4
	adds r0, r1
	ldr r1, [r0]
	str r1, [r3]
	ldr r0, =StartMenu_Save
	cmp r1, r0
	beq _0809FBA0
	ldr r0, =StartMenu_Exit
	cmp r1, r0
	beq _0809FBA0
	ldr r0, =StartMenu_SafariZoneRetire
	cmp r1, r0
	beq _0809FBA0
	ldr r0, =StartMenu_BattlePyramidRetire
	cmp r1, r0
	beq _0809FBA0
	movs r0, 0x1
	movs r1, 0
	bl fade_screen
	b _0809FBA0
	.pool
_0809FB98:
	movs r0, 0xA
	ands r0, r1
	cmp r0, 0
	bne _0809FBA4
_0809FBA0:
	movs r0, 0
	b _0809FBAE
_0809FBA4:
	bl RemoveExtraStartMenuWindows
	bl sub_80A0934
	movs r0, 0x1
_0809FBAE:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end HandleStartMenuInput

	thumb_func_start StartMenu_Pokedex
StartMenu_Pokedex: @ 809FBB4
	push {lr}
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0809FBCC
	movs r0, 0
	b _0809FBE6
	.pool
_0809FBCC:
	movs r0, 0x29
	bl sav12_xor_increment
	bl play_some_sound
	bl RemoveExtraStartMenuWindows
	bl overworld_free_bg_tilemaps
	ldr r0, =sub_80BB534
	bl SetMainCallback2
	movs r0, 0x1
_0809FBE6:
	pop {r1}
	bx r1
	.pool
	thumb_func_end StartMenu_Pokedex

	thumb_func_start StartMenu_Pokemon
StartMenu_Pokemon: @ 809FBF0
	push {lr}
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0809FC08
	movs r0, 0
	b _0809FC1C
	.pool
_0809FC08:
	bl play_some_sound
	bl RemoveExtraStartMenuWindows
	bl overworld_free_bg_tilemaps
	ldr r0, =CB2_PartyMenuFromStartMenu
	bl SetMainCallback2
	movs r0, 0x1
_0809FC1C:
	pop {r1}
	bx r1
	.pool
	thumb_func_end StartMenu_Pokemon

	thumb_func_start StartMenu_Bag
StartMenu_Bag: @ 809FC24
	push {lr}
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0809FC3C
	movs r0, 0
	b _0809FC50
	.pool
_0809FC3C:
	bl play_some_sound
	bl RemoveExtraStartMenuWindows
	bl overworld_free_bg_tilemaps
	ldr r0, =CB2_BagMenuFromStartMenu
	bl SetMainCallback2
	movs r0, 0x1
_0809FC50:
	pop {r1}
	bx r1
	.pool
	thumb_func_end StartMenu_Bag

	thumb_func_start StartMenu_PokeNav
StartMenu_PokeNav: @ 809FC58
	push {lr}
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0809FC70
	movs r0, 0
	b _0809FC84
	.pool
_0809FC70:
	bl play_some_sound
	bl RemoveExtraStartMenuWindows
	bl overworld_free_bg_tilemaps
	ldr r0, =CB2_PokeNav
	bl SetMainCallback2
	movs r0, 0x1
_0809FC84:
	pop {r1}
	bx r1
	.pool
	thumb_func_end StartMenu_PokeNav

	thumb_func_start StartMenu_PlayerName
StartMenu_PlayerName: @ 809FC8C
	push {lr}
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0809FCF4
	bl play_some_sound
	bl RemoveExtraStartMenuWindows
	bl overworld_free_bg_tilemaps
	bl is_c1_link_related_active
	cmp r0, 0
	bne _0809FCB6
	bl InUnionRoom
	cmp r0, 0
	beq _0809FCC8
_0809FCB6:
	ldr r0, =sub_8086194
	bl sub_80C4DDC
	b _0809FCEA
	.pool
_0809FCC8:
	ldr r0, =0x000008d2
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _0809FCE4
	ldr r0, =sub_8086194
	bl sub_80C51C4
	b _0809FCEA
	.pool
_0809FCE4:
	ldr r0, =sub_8086194
	bl sub_80C4DDC
_0809FCEA:
	movs r0, 0x1
	b _0809FCF6
	.pool
_0809FCF4:
	movs r0, 0
_0809FCF6:
	pop {r1}
	bx r1
	thumb_func_end StartMenu_PlayerName

	thumb_func_start StartMenu_Save
StartMenu_Save: @ 809FCFC
	push {lr}
	bl InBattlePyramid
	lsls r0, 24
	cmp r0, 0
	beq _0809FD0C
	bl RemoveExtraStartMenuWindows
_0809FD0C:
	ldr r1, =gUnknown_03005DF4
	ldr r0, =sub_809FE28
	str r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end StartMenu_Save

	thumb_func_start StartMenu_Option
StartMenu_Option: @ 809FD20
	push {lr}
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0809FD38
	movs r0, 0
	b _0809FD52
	.pool
_0809FD38:
	bl play_some_sound
	bl RemoveExtraStartMenuWindows
	bl overworld_free_bg_tilemaps
	ldr r0, =CB2_OptionsMenu
	bl SetMainCallback2
	ldr r1, =gUnknown_030022C0
	ldr r0, =sub_8086194
	str r0, [r1, 0x8]
	movs r0, 0x1
_0809FD52:
	pop {r1}
	bx r1
	.pool
	thumb_func_end StartMenu_Option

	thumb_func_start StartMenu_Exit
StartMenu_Exit: @ 809FD64
	push {lr}
	bl RemoveExtraStartMenuWindows
	bl sub_80A0934
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end StartMenu_Exit

	thumb_func_start StartMenu_SafariZoneRetire
StartMenu_SafariZoneRetire: @ 809FD74
	push {lr}
	bl RemoveExtraStartMenuWindows
	bl sub_80A0934
	bl sub_80FC180
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end StartMenu_SafariZoneRetire

	thumb_func_start StartMenu_LinkModePlayerName
StartMenu_LinkModePlayerName: @ 809FD88
	push {lr}
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0809FDA0
	movs r0, 0
	b _0809FDB4
	.pool
_0809FDA0:
	bl play_some_sound
	bl overworld_free_bg_tilemaps
	ldr r0, =gUnknown_03005DB4
	ldrb r0, [r0]
	ldr r1, =sub_8086194
	bl sub_80C4E74
	movs r0, 0x1
_0809FDB4:
	pop {r1}
	bx r1
	.pool
	thumb_func_end StartMenu_LinkModePlayerName

	thumb_func_start StartMenu_BattlePyramidRetire
StartMenu_BattlePyramidRetire: @ 809FDC0
	ldr r1, =gUnknown_03005DF4
	ldr r0, =sub_809FE9C
	str r0, [r1]
	movs r0, 0
	bx lr
	.pool
	thumb_func_end StartMenu_BattlePyramidRetire

	thumb_func_start sub_809FDD4
sub_809FDD4: @ 809FDD4
	push {lr}
	movs r0, 0
	movs r1, 0
	bl sub_8197DF8
	bl sub_80984F4
	ldr r0, =sub_809FA34
	bl sub_809F9D0
	bl script_env_2_enable
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809FDD4

	thumb_func_start StartMenu_BattlePyramidBag
StartMenu_BattlePyramidBag: @ 809FDF4
	push {lr}
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _0809FE0C
	movs r0, 0
	b _0809FE20
	.pool
_0809FE0C:
	bl play_some_sound
	bl RemoveExtraStartMenuWindows
	bl overworld_free_bg_tilemaps
	ldr r0, =sub_81C4EFC
	bl SetMainCallback2
	movs r0, 0x1
_0809FE20:
	pop {r1}
	bx r1
	.pool
	thumb_func_end StartMenu_BattlePyramidBag

	thumb_func_start sub_809FE28
sub_809FE28: @ 809FE28
	push {lr}
	bl sub_809FF28
	ldr r1, =gUnknown_03005DF4
	ldr r0, =sub_809FE44
	str r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_809FE28

	thumb_func_start sub_809FE44
sub_809FE44: @ 809FE44
	push {lr}
	bl sub_809FF4C
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0809FE7C
	cmp r0, 0x1
	ble _0809FE94
	cmp r0, 0x2
	beq _0809FE60
	cmp r0, 0x3
	beq _0809FE7C
	b _0809FE94
_0809FE60:
	movs r0, 0
	movs r1, 0
	bl sub_8197DF8
	bl sub_809F998
	ldr r1, =gUnknown_03005DF4
	ldr r0, =HandleStartMenuInput
	str r0, [r1]
	b _0809FE94
	.pool
_0809FE7C:
	movs r0, 0
	movs r1, 0x1
	bl sub_8197DF8
	bl sub_80984F4
	bl script_env_2_disable
	bl sub_81A9EC8
	movs r0, 0x1
	b _0809FE96
_0809FE94:
	movs r0, 0
_0809FE96:
	pop {r1}
	bx r1
	thumb_func_end sub_809FE44

	thumb_func_start sub_809FE9C
sub_809FE9C: @ 809FE9C
	push {lr}
	bl sub_80A0340
	ldr r1, =gUnknown_03005DF4
	ldr r0, =sub_809FED4
	str r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_809FE9C

	thumb_func_start sub_809FEB8
sub_809FEB8: @ 809FEB8
	push {lr}
	bl sub_809F998
	ldr r1, =gUnknown_03005DF4
	ldr r0, =HandleStartMenuInput
	str r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_809FEB8

	thumb_func_start sub_809FED4
sub_809FED4: @ 809FED4
	push {lr}
	bl sub_809FF4C
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0809FEEC
	cmp r0, 0x1
	ble _0809FF20
	cmp r0, 0x2
	beq _0809FF00
	b _0809FF20
_0809FEEC:
	bl RemoveExtraStartMenuWindows
	ldr r1, =gUnknown_03005DF4
	ldr r0, =sub_809FEB8
	str r0, [r1]
	b _0809FF20
	.pool
_0809FF00:
	movs r0, 0
	movs r1, 0x1
	bl sub_8197DF8
	bl sub_80984F4
	bl script_env_2_disable
	ldr r0, =gUnknown_08252C88
	bl script_env_1_execute_new_script
	movs r0, 0x1
	b _0809FF22
	.pool
_0809FF20:
	movs r0, 0
_0809FF22:
	pop {r1}
	bx r1
	thumb_func_end sub_809FED4

	thumb_func_start sub_809FF28
sub_809FF28: @ 809FF28
	push {lr}
	bl save_serialize_map
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A00A0
	str r0, [r1]
	ldr r1, =gUnknown_02037621
	movs r0, 0
	strb r0, [r1]
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809FF28

	thumb_func_start sub_809FF4C
sub_809FF4C: @ 809FF4C
	push {lr}
	bl sub_8197224
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0x1
	beq _0809FF78
	ldr r1, =gUnknown_02037621
	movs r0, 0
	strb r0, [r1]
	ldr r0, =gUnknown_0203761C
	ldr r0, [r0]
	bl _call_via_r0
	lsls r0, 24
	lsrs r0, 24
	b _0809FF7A
	.pool
_0809FF78:
	movs r0, 0
_0809FF7A:
	pop {r1}
	bx r1
	thumb_func_end sub_809FF4C

	thumb_func_start sub_809FF80
sub_809FF80: @ 809FF80
	push {lr}
	bl sub_809FF28
	ldr r0, =task50_save_game
	movs r1, 0x50
	bl CreateTask
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809FF80

	thumb_func_start sub_809FF98
sub_809FF98: @ 809FF98
	push {r4,lr}
	adds r2, r0, 0
	adds r4, r1, 0
	ldr r0, =gUnknown_02021FC4
	adds r1, r2, 0
	bl ExpandStringRefs
	movs r0, 0
	movs r1, 0x1
	bl sub_819786C
	movs r0, 0x1
	bl AddTextPrinterForMessage_2
	ldr r1, =gUnknown_02037621
	movs r0, 0x1
	strb r0, [r1]
	ldr r0, =gUnknown_0203761C
	str r4, [r0]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809FF98

	thumb_func_start task50_save_game
task50_save_game: @ 809FFD0
	push {r4,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	bl sub_809FF4C
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x1
	beq _0809FFFC
	cmp r1, 0x1
	bgt _0809FFEC
	cmp r1, 0
	beq _080A000A
	b _080A0000
_0809FFEC:
	cmp r1, 0x3
	bgt _080A0000
	ldr r1, =gUnknown_020375F0
	movs r0, 0
	strh r0, [r1]
	b _080A0000
	.pool
_0809FFFC:
	ldr r0, =gUnknown_020375F0
	strh r1, [r0]
_080A0000:
	adds r0, r4, 0
	bl DestroyTask
	bl script_env_2_enable_and_set_ctx_running
_080A000A:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end task50_save_game

	thumb_func_start sub_80A0014
sub_80A0014: @ 80A0014
	push {lr}
	movs r0, 0
	movs r1, 0x1
	bl sub_8197434
	pop {r0}
	bx r0
	thumb_func_end sub_80A0014

	thumb_func_start sub_80A0024
sub_80A0024: @ 80A0024
	push {lr}
	bl sub_80A0888
	pop {r0}
	bx r0
	thumb_func_end sub_80A0024

	thumb_func_start sub_80A0030
sub_80A0030: @ 80A0030
	ldr r1, =gUnknown_02037620
	movs r0, 0x3C
	strb r0, [r1]
	bx lr
	.pool
	thumb_func_end sub_80A0030

	thumb_func_start sub_80A003C
sub_80A003C: @ 80A003C
	push {lr}
	ldr r1, =gUnknown_02037620
	ldrb r0, [r1]
	subs r2, r0, 0x1
	strb r2, [r1]
	ldr r0, =gUnknown_030022C0
	ldrh r1, [r0, 0x2C]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	bne _080A0064
	lsls r0, r2, 24
	cmp r0, 0
	beq _080A006A
	movs r0, 0
	b _080A006C
	.pool
_080A0064:
	movs r0, 0x5
	bl audio_play
_080A006A:
	movs r0, 0x1
_080A006C:
	pop {r1}
	bx r1
	thumb_func_end sub_80A003C

	thumb_func_start sub_80A0070
sub_80A0070: @ 80A0070
	push {lr}
	ldr r1, =gUnknown_02037620
	ldrb r0, [r1]
	cmp r0, 0
	bne _080A0094
	ldr r0, =gUnknown_030022C0
	ldrh r1, [r0, 0x2C]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _080A0098
	movs r0, 0x1
	b _080A009A
	.pool
_080A0094:
	subs r0, 0x1
	strb r0, [r1]
_080A0098:
	movs r0, 0
_080A009A:
	pop {r1}
	bx r1
	thumb_func_end sub_80A0070

	thumb_func_start sub_80A00A0
sub_80A00A0: @ 80A00A0
	push {lr}
	bl get_start_menu_window_id_maybe
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0
	bl sub_819746C
	bl remove_start_menu_window_maybe
	bl sub_80A06B4
	bl InBattlePyramid
	lsls r0, 24
	cmp r0, 0
	beq _080A00D4
	ldr r0, =gUnknown_08252CA7
	ldr r1, =sub_80A00EC
	bl sub_809FF98
	b _080A00DC
	.pool
_080A00D4:
	ldr r0, =gUnknown_082C87B4
	ldr r1, =sub_80A00EC
	bl sub_809FF98
_080A00DC:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A00A0

	thumb_func_start sub_80A00EC
sub_80A00EC: @ 80A00EC
	push {lr}
	bl sub_8197930
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A0108
	str r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A00EC

	thumb_func_start sub_80A0108
sub_80A0108: @ 80A0108
	push {lr}
	bl sub_8198C58
	lsls r0, 24
	asrs r1, r0, 24
	cmp r1, 0
	beq _080A012A
	cmp r1, 0
	bgt _080A0124
	movs r0, 0x1
	negs r0, r0
	cmp r1, r0
	beq _080A0168
	b _080A0174
_080A0124:
	cmp r1, 0x1
	beq _080A0168
	b _080A0174
_080A012A:
	ldr r0, =gUnknown_03006210
	ldrh r0, [r0]
	cmp r0, 0
	beq _080A0136
	cmp r0, 0x2
	bne _080A013E
_080A0136:
	ldr r0, =gUnknown_020322D4
	ldrb r0, [r0]
	cmp r0, 0
	bne _080A0158
_080A013E:
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A017C
	str r0, [r1]
	b _080A0174
	.pool
_080A0158:
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A0234
	str r0, [r1]
	b _080A0174
	.pool
_080A0168:
	bl sub_80A0024
	bl sub_80A0014
	movs r0, 0x2
	b _080A0176
_080A0174:
	movs r0, 0
_080A0176:
	pop {r1}
	bx r1
	thumb_func_end sub_80A0108

	thumb_func_start sub_80A017C
sub_80A017C: @ 80A017C
	push {lr}
	ldr r0, =gUnknown_020322D4
	ldrb r0, [r0]
	cmp r0, 0x1
	bne _080A019C
	ldr r0, =gUnknown_082C8845
	ldr r1, =sub_80A01B4
	bl sub_809FF98
	b _080A01A4
	.pool
_080A019C:
	ldr r0, =gUnknown_082C87D5
	ldr r1, =sub_80A01D0
	bl sub_809FF98
_080A01A4:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A017C

	thumb_func_start sub_80A01B4
sub_80A01B4: @ 80A01B4
	push {lr}
	movs r0, 0x1
	bl sub_8197948
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A01EC
	str r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A01B4

	thumb_func_start sub_80A01D0
sub_80A01D0: @ 80A01D0
	push {lr}
	bl sub_8197930
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A01EC
	str r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A01D0

	thumb_func_start sub_80A01EC
sub_80A01EC: @ 80A01EC
	push {lr}
	bl sub_8198C58
	lsls r0, 24
	asrs r1, r0, 24
	cmp r1, 0
	beq _080A020E
	cmp r1, 0
	bgt _080A0208
	movs r0, 0x1
	negs r0, r0
	cmp r1, r0
	beq _080A0220
	b _080A022C
_080A0208:
	cmp r1, 0x1
	beq _080A0220
	b _080A022C
_080A020E:
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A0234
	str r0, [r1]
	b _080A022C
	.pool
_080A0220:
	bl sub_80A0024
	bl sub_80A0014
	movs r0, 0x2
	b _080A022E
_080A022C:
	movs r0, 0
_080A022E:
	pop {r1}
	bx r1
	thumb_func_end sub_80A01EC

	thumb_func_start sub_80A0234
sub_80A0234: @ 80A0234
	push {lr}
	ldr r0, =gUnknown_082C8810
	ldr r1, =sub_80A024C
	bl sub_809FF98
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A0234

	thumb_func_start sub_80A024C
sub_80A024C: @ 80A024C
	push {r4,lr}
	movs r0, 0
	bl sav12_xor_increment
	bl sub_81A9E90
	ldr r4, =gUnknown_020322D4
	ldrb r0, [r4]
	cmp r0, 0x1
	bne _080A0274
	movs r0, 0x4
	bl save_game_when_memory_present
	lsls r0, 24
	lsrs r1, r0, 24
	movs r0, 0
	strb r0, [r4]
	b _080A027E
	.pool
_080A0274:
	movs r0, 0
	bl save_game_when_memory_present
	lsls r0, 24
	lsrs r1, r0, 24
_080A027E:
	cmp r1, 0x1
	bne _080A0294
	ldr r0, =gUnknown_082C8832
	ldr r1, =sub_80A02B0
	bl sub_809FF98
	b _080A029C
	.pool
_080A0294:
	ldr r0, =gUnknown_082C892A
	ldr r1, =sub_80A02FC
	bl sub_809FF98
_080A029C:
	bl sub_80A0030
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A024C

	thumb_func_start sub_80A02B0
sub_80A02B0: @ 80A02B0
	push {lr}
	movs r0, 0
	bl IsTextPrinterActive
	lsls r0, 16
	cmp r0, 0
	bne _080A02CA
	movs r0, 0x37
	bl audio_play
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A02D8
	str r0, [r1]
_080A02CA:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A02B0

	thumb_func_start sub_80A02D8
sub_80A02D8: @ 80A02D8
	push {lr}
	bl mplay_has_finished_maybe
	lsls r0, 24
	cmp r0, 0
	bne _080A02F6
	bl sub_80A003C
	lsls r0, 24
	cmp r0, 0
	beq _080A02F6
	bl sub_80A0024
	movs r0, 0x1
	b _080A02F8
_080A02F6:
	movs r0, 0
_080A02F8:
	pop {r1}
	bx r1
	thumb_func_end sub_80A02D8

	thumb_func_start sub_80A02FC
sub_80A02FC: @ 80A02FC
	push {lr}
	movs r0, 0
	bl IsTextPrinterActive
	lsls r0, 16
	cmp r0, 0
	bne _080A0316
	movs r0, 0x16
	bl audio_play
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A0324
	str r0, [r1]
_080A0316:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A02FC

	thumb_func_start sub_80A0324
sub_80A0324: @ 80A0324
	push {lr}
	bl sub_80A0070
	lsls r0, 24
	cmp r0, 0
	beq _080A0338
	bl sub_80A0024
	movs r0, 0x3
	b _080A033A
_080A0338:
	movs r0, 0
_080A033A:
	pop {r1}
	bx r1
	thumb_func_end sub_80A0324

	thumb_func_start sub_80A0340
sub_80A0340: @ 80A0340
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A035C
	str r0, [r1]
	ldr r1, =gUnknown_02037621
	movs r0, 0
	strb r0, [r1]
	bx lr
	.pool
	thumb_func_end sub_80A0340

	thumb_func_start sub_80A035C
sub_80A035C: @ 80A035C
	push {lr}
	bl get_start_menu_window_id_maybe
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0
	bl sub_819746C
	bl remove_start_menu_window_maybe
	ldr r0, =gUnknown_08252CFB
	ldr r1, =sub_80A0388
	bl sub_809FF98
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A035C

	thumb_func_start sub_80A0388
sub_80A0388: @ 80A0388
	push {lr}
	movs r0, 0x1
	bl sub_8197948
	ldr r1, =gUnknown_0203761C
	ldr r0, =sub_80A03A4
	str r0, [r1]
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80A0388

	thumb_func_start sub_80A03A4
sub_80A03A4: @ 80A03A4
	push {lr}
	bl sub_8198C58
	lsls r0, 24
	asrs r1, r0, 24
	cmp r1, 0
	beq _080A03C6
	cmp r1, 0
	bgt _080A03C0
	movs r0, 0x1
	negs r0, r0
	cmp r1, r0
	beq _080A03CA
	b _080A03D2
_080A03C0:
	cmp r1, 0x1
	beq _080A03CA
	b _080A03D2
_080A03C6:
	movs r0, 0x2
	b _080A03D4
_080A03CA:
	bl sub_80A0014
	movs r0, 0x1
	b _080A03D4
_080A03D2:
	movs r0, 0
_080A03D4:
	pop {r1}
	bx r1
	thumb_func_end sub_80A03A4

	thumb_func_start sub_80A03D8
sub_80A03D8: @ 80A03D8
	push {lr}
	bl copy_pal_bg_faded_to_pal_ram
	pop {r0}
	bx r0
	thumb_func_end sub_80A03D8

	thumb_func_start sub_80A03E4
sub_80A03E4: @ 80A03E4
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	mov r8, r0
	ldrb r0, [r0]
	cmp r0, 0x4
	bls _080A03F6
	b _080A04FC
_080A03F6:
	lsls r0, 2
	ldr r1, =_080A0404
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_080A0404:
	.4byte _080A0418
	.4byte _080A0490
	.4byte _080A04A2
	.4byte _080A04D4
	.4byte _080A04F8
_080A0418:
	movs r0, 0
	movs r1, 0
	bl SetGpuReg
	movs r0, 0
	bl SetVBlankCallback
	bl remove_some_task
	movs r2, 0xA0
	lsls r2, 19
	mov r1, sp
	movs r0, 0
	strh r0, [r1]
	ldr r1, =0x040000d4
	mov r0, sp
	str r0, [r1]
	str r2, [r1, 0x4]
	ldr r0, =0x81000200
	str r0, [r1, 0x8]
	ldr r0, [r1, 0x8]
	movs r2, 0xC0
	lsls r2, 19
	movs r3, 0xC0
	lsls r3, 9
	mov r4, sp
	movs r6, 0
	movs r5, 0x80
	lsls r5, 5
	ldr r7, =0x81000800
	movs r0, 0x81
	lsls r0, 24
	mov r12, r0
_080A045A:
	strh r6, [r4]
	mov r0, sp
	str r0, [r1]
	str r2, [r1, 0x4]
	str r7, [r1, 0x8]
	ldr r0, [r1, 0x8]
	adds r2, r5
	subs r3, r5
	cmp r3, r5
	bhi _080A045A
	strh r6, [r4]
	mov r0, sp
	str r0, [r1]
	str r2, [r1, 0x4]
	lsrs r0, r3, 1
	mov r2, r12
	orrs r0, r2
	str r0, [r1, 0x8]
	ldr r0, [r1, 0x8]
	b _080A04FC
	.pool
_080A0490:
	bl ResetAllObjectData
	bl ResetTasks
	bl sub_80A1A74
	bl dp12_8087EA4
	b _080A04FC
_080A04A2:
	movs r0, 0
	bl ResetBgsAndClearDma3BusyFlags
	ldr r1, =gUnknown_085105A8
	movs r0, 0
	movs r2, 0x1
	bl InitBgsFromTemplates
	ldr r0, =gUnknown_085105AC
	bl InitWindows
	movs r0, 0
	movs r1, 0x8
	movs r2, 0xE0
	bl box_border_load_tiles_and_pal
	movs r0, 0xF0
	bl sub_81978B0
	b _080A04FC
	.pool
_080A04D4:
	movs r0, 0
	bl ShowBg
	movs r0, 0x1
	negs r0, r0
	movs r1, 0x10
	movs r2, 0
	bl sub_80A2A20
	ldr r0, =sub_80A03D8
	bl SetVBlankCallback
	movs r0, 0x1
	bl EnableInterrupts
	b _080A04FC
	.pool
_080A04F8:
	movs r0, 0x1
	b _080A0506
_080A04FC:
	mov r1, r8
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	movs r0, 0
_080A0506:
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_80A03E4

	thumb_func_start sub_80A0514
sub_80A0514: @ 80A0514
	push {lr}
	ldr r0, =gUnknown_030026F8
	bl sub_80A03E4
	cmp r0, 0
	beq _080A052E
	ldr r0, =sub_80A0550
	movs r1, 0x50
	bl CreateTask
	ldr r0, =sub_80A0540
	bl SetMainCallback2
_080A052E:
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80A0514

	thumb_func_start sub_80A0540
sub_80A0540: @ 80A0540
	push {lr}
	bl RunTasks
	bl fade_and_return_progress_probably
	pop {r0}
	bx r0
	thumb_func_end sub_80A0540

	thumb_func_start sub_80A0550
sub_80A0550: @ 80A0550
	push {r4-r6,lr}
	sub sp, 0x10
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r0, r4, 2
	adds r0, r4
	lsls r0, 3
	ldr r1, =gTasks + 0x8
	adds r5, r0, r1
	ldr r0, =gUnknown_02037FD4
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	beq _080A0570
	b _080A06A8
_080A0570:
	movs r1, 0
	ldrsh r0, [r5, r1]
	cmp r0, 0x6
	bls _080A057A
	b _080A06A8
_080A057A:
	lsls r0, 2
	ldr r1, =_080A0590
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_080A0590:
	.4byte _080A05AC
	.4byte _080A0630
	.4byte _080A063C
	.4byte _080A065C
	.4byte _080A0670
	.4byte _080A0688
	.4byte _080A0698
_080A05AC:
	movs r0, 0
	movs r1, 0x11
	bl FillWindowPixelBuffer
	ldr r2, =gUnknown_082C8959
	movs r4, 0
	str r4, [sp]
	movs r0, 0x2
	str r0, [sp, 0x4]
	movs r6, 0x1
	str r6, [sp, 0x8]
	movs r0, 0x3
	str r0, [sp, 0xC]
	movs r0, 0
	movs r1, 0x1
	movs r3, 0xFF
	bl AddTextPrinterParametrized
	movs r0, 0
	movs r1, 0x8
	movs r2, 0xE
	bl sub_8098858
	movs r0, 0
	bl PutWindowTilemap
	movs r0, 0
	movs r1, 0x3
	bl CopyWindowToVram
	movs r0, 0x1
	negs r0, r0
	str r4, [sp]
	movs r1, 0
	movs r2, 0x10
	movs r3, 0
	bl pal_fade_maybe
	ldr r0, =gUnknown_030030FC
	ldrb r0, [r0]
	cmp r0, 0
	beq _080A0620
	bl InUnionRoom
	cmp r0, 0
	beq _080A0620
	bl sub_800A07C
	cmp r0, 0
	beq _080A061C
	strh r6, [r5]
	b _080A06A8
	.pool
_080A061C:
	movs r0, 0x5
	b _080A06A6
_080A0620:
	ldr r0, =gUnknown_03002700
	movs r1, 0x1
	strb r1, [r0]
	movs r0, 0x1
	b _080A06A6
	.pool
_080A0630:
	bl sub_8076D5C
	bl sub_8153430
	movs r0, 0x2
	b _080A06A6
_080A063C:
	bl sub_8153474
	lsls r0, 24
	cmp r0, 0
	beq _080A06A8
	bl sav2_gender2_inplace_and_xFE
	movs r0, 0x3
	strh r0, [r5]
	ldr r1, =gUnknown_03002700
	movs r0, 0
	strb r0, [r1]
	b _080A06A8
	.pool
_080A065C:
	movs r0, 0x1
	negs r0, r0
	movs r1, 0
	str r1, [sp]
	movs r2, 0
	movs r3, 0x10
	bl pal_fade_maybe
	movs r0, 0x4
	b _080A06A6
_080A0670:
	bl FreeAllWindowBuffers
	ldr r0, =gUnknown_030022C0
	ldr r0, [r0, 0x8]
	bl SetMainCallback2
	adds r0, r4, 0
	bl DestroyTask
	b _080A06A8
	.pool
_080A0688:
	ldr r0, =sub_8153688
	movs r1, 0x5
	bl CreateTask
	movs r0, 0x6
	b _080A06A6
	.pool
_080A0698:
	ldr r0, =sub_8153688
	bl FuncIsActiveTask
	lsls r0, 24
	cmp r0, 0
	bne _080A06A8
	movs r0, 0x3
_080A06A6:
	strh r0, [r5]
_080A06A8:
	add sp, 0x10
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80A0550

	thumb_func_start sub_80A06B4
sub_80A06B4: @ 80A06B4
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x14
	ldr r0, =gUnknown_085105BC
	ldr r1, [r0, 0x4]
	ldr r0, [r0]
	str r0, [sp, 0xC]
	str r1, [sp, 0x10]
	ldr r0, =0x00000861
	mov r10, r0
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	bne _080A06EC
	add r0, sp, 0xC
	ldrb r1, [r0, 0x4]
	subs r1, 0x2
	lsls r1, 24
	lsrs r1, 24
	ldr r2, =0xffffff00
	ldr r0, [sp, 0x10]
	ands r0, r2
	orrs r0, r1
	str r0, [sp, 0x10]
_080A06EC:
	ldr r6, =gUnknown_02037622
	add r0, sp, 0xC
	bl AddWindow
	strb r0, [r6]
	ldrb r0, [r6]
	movs r1, 0
	bl sub_81973FC
	ldr r0, =gUnknown_03005D90
	ldr r0, [r0]
	ldrb r0, [r0, 0x8]
	movs r1, 0x4
	mov r9, r1
	cmp r0, 0
	bne _080A0710
	movs r0, 0x8
	mov r9, r0
_080A0710:
	movs r4, 0x1
	ldr r5, =gUnknown_02021FC4
	movs r0, 0x3
	adds r1, r5, 0
	movs r2, 0x6
	bl sub_819A344
	ldrb r0, [r6]
	str r4, [sp]
	movs r1, 0xFF
	mov r8, r1
	str r1, [sp, 0x4]
	movs r7, 0
	str r7, [sp, 0x8]
	movs r1, 0x1
	adds r2, r5, 0
	movs r3, 0
	bl Print
	movs r4, 0x11
	ldrb r0, [r6]
	ldr r2, =gUnknown_085EED26
	str r4, [sp]
	mov r1, r8
	str r1, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x1
	movs r3, 0
	bl Print
	movs r0, 0
	adds r1, r5, 0
	mov r2, r9
	bl sub_819A344
	movs r0, 0x1
	adds r1, r5, 0
	movs r2, 0x70
	bl GetStringRightAlignXOffset
	adds r2, r0, 0
	ldrb r0, [r6]
	lsls r2, 16
	lsrs r2, 16
	adds r1, r5, 0
	movs r3, 0x11
	bl sub_819A024
	movs r4, 0x21
	ldrb r0, [r6]
	ldr r2, =gUnknown_085EED2D
	str r4, [sp]
	mov r1, r8
	str r1, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x1
	movs r3, 0
	bl Print
	movs r0, 0x4
	adds r1, r5, 0
	mov r2, r9
	bl sub_819A344
	movs r0, 0x1
	adds r1, r5, 0
	movs r2, 0x70
	bl GetStringRightAlignXOffset
	adds r2, r0, 0
	ldrb r0, [r6]
	lsls r3, r2, 24
	lsrs r3, 24
	str r4, [sp]
	mov r1, r8
	str r1, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x1
	adds r2, r5, 0
	bl Print
	mov r0, r10
	bl FlagGet
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _080A0802
	movs r4, 0x31
	ldrb r0, [r6]
	ldr r2, =gUnknown_085EED34
	str r4, [sp]
	mov r1, r8
	str r1, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x1
	movs r3, 0
	bl Print
	movs r0, 0x1
	adds r1, r5, 0
	mov r2, r9
	bl sub_819A344
	movs r0, 0x1
	adds r1, r5, 0
	movs r2, 0x70
	bl GetStringRightAlignXOffset
	adds r2, r0, 0
	ldrb r0, [r6]
	lsls r3, r2, 24
	lsrs r3, 24
	str r4, [sp]
	mov r1, r8
	str r1, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x1
	adds r2, r5, 0
	bl Print
_080A0802:
	adds r4, 0x10
	ldrb r0, [r6]
	ldr r2, =gUnknown_085EED3C
	lsls r4, 24
	lsrs r4, 24
	str r4, [sp]
	mov r1, r8
	str r1, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x1
	movs r3, 0
	bl Print
	movs r0, 0x2
	adds r1, r5, 0
	mov r2, r9
	bl sub_819A344
	movs r0, 0x1
	adds r1, r5, 0
	movs r2, 0x70
	bl GetStringRightAlignXOffset
	adds r2, r0, 0
	ldrb r0, [r6]
	lsls r3, r2, 24
	lsrs r3, 24
	str r4, [sp]
	mov r1, r8
	str r1, [sp, 0x4]
	str r7, [sp, 0x8]
	movs r1, 0x1
	adds r2, r5, 0
	bl Print
	ldrb r0, [r6]
	movs r1, 0x2
	bl CopyWindowToVram
	add sp, 0x14
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80A06B4

	thumb_func_start sub_80A0888
sub_80A0888: @ 80A0888
	push {r4,lr}
	ldr r4, =gUnknown_02037622
	ldrb r0, [r4]
	movs r1, 0
	bl sub_819746C
	ldrb r0, [r4]
	bl RemoveWindow
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80A0888

	thumb_func_start sub_80A08A4
sub_80A08A4: @ 80A08A4
	push {r4,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r0, =sub_8153688
	bl FuncIsActiveTask
	lsls r0, 24
	cmp r0, 0
	bne _080A08C0
	adds r0, r4, 0
	bl DestroyTask
	bl script_env_2_enable_and_set_ctx_running
_080A08C0:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80A08A4

	thumb_func_start sub_80A08CC
sub_80A08CC: @ 80A08CC
	push {r4,r5,lr}
	ldr r0, =sub_8153688
	movs r1, 0x5
	bl CreateTask
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	ldr r5, =gTasks
	lsls r0, r4, 2
	adds r0, r4
	lsls r0, 3
	adds r0, r5
	movs r1, 0x1
	strh r1, [r0, 0xC]
	ldr r0, =sub_80A08A4
	movs r1, 0x6
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	adds r1, r5
	strh r4, [r1, 0xA]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80A08CC

	thumb_func_start sub_80A0914
sub_80A0914: @ 80A0914
	push {lr}
	bl get_start_menu_window_id_maybe
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0x1
	bl sub_819746C
	bl remove_start_menu_window_maybe
	bl sub_80984F4
	bl script_env_2_disable
	pop {r0}
	bx r0
	thumb_func_end sub_80A0914

	thumb_func_start sub_80A0934
sub_80A0934: @ 80A0934
	push {lr}
	movs r0, 0x5
	bl audio_play
	bl sub_80A0914
	pop {r0}
	bx r0
	thumb_func_end sub_80A0934

	thumb_func_start append_byte
append_byte: @ 80A0944
	ldrb r3, [r1]
	adds r0, r3
	strb r2, [r0]
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	bx lr
	thumb_func_end append_byte

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