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

	.syntax unified

	.text

	thumb_func_start sub_809C954
sub_809C954: @ 809C954
	push {lr}
	adds r1, r0, 0
	movs r0, 0x1
	movs r2, 0
	bl GetStringWidth
	adds r1, r0, 0
	adds r0, r1, 0x7
	cmp r0, 0
	bge _0809C96A
	adds r0, 0x7
_0809C96A:
	lsls r0, 13
	lsrs r0, 16
	pop {r1}
	bx r1
	thumb_func_end sub_809C954

	thumb_func_start sub_809C974
sub_809C974: @ 809C974
	push {r4-r7,lr}
	adds r7, r0, 0
	lsls r4, r1, 24
	lsrs r4, 24
	ldr r0, [r7]
	bl sub_809C954
	lsls r0, 24
	lsrs r6, r0, 24
	movs r5, 0x1
	cmp r5, r4
	bcs _0809C9AA
_0809C98C:
	lsls r0, r5, 3
	adds r0, r7
	ldr r0, [r0]
	bl sub_809C954
	lsls r0, 24
	lsrs r0, 24
	cmp r6, r0
	bcs _0809C9A0
	adds r6, r0, 0
_0809C9A0:
	adds r0, r5, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	cmp r5, r4
	bcc _0809C98C
_0809C9AA:
	adds r0, r6, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_809C974

	thumb_func_start ScriptMenu_Multichoice
ScriptMenu_Multichoice: @ 809C9B4
	push {r4-r7,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r7, r0, 24
	lsls r1, 24
	lsrs r6, r1, 24
	lsls r2, 24
	lsrs r5, r2, 24
	lsls r3, 24
	lsrs r4, r3, 24
	ldr r0, _0809C9F0 @ =sub_809CC98
	bl FuncIsActiveTask
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0809C9F8
	ldr r0, _0809C9F4 @ =gUnknown_20370D0
	movs r1, 0xFF
	strh r1, [r0]
	movs r0, 0
	str r0, [sp]
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl sub_809CA64
	movs r0, 0x1
	b _0809C9FA
	.align 2, 0
_0809C9F0: .4byte sub_809CC98
_0809C9F4: .4byte gUnknown_20370D0
_0809C9F8:
	movs r0, 0
_0809C9FA:
	add sp, 0x4
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end ScriptMenu_Multichoice

	thumb_func_start ScriptMenu_MultichoiceWithDefault
ScriptMenu_MultichoiceWithDefault: @ 809CA04
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	ldr r4, [sp, 0x1C]
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	lsls r1, 24
	lsrs r7, r1, 24
	lsls r2, 24
	lsrs r6, r2, 24
	lsls r3, 24
	lsrs r5, r3, 24
	lsls r4, 24
	lsrs r4, 24
	ldr r0, _0809CA4C @ =sub_809CC98
	bl FuncIsActiveTask
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0809CA54
	ldr r1, _0809CA50 @ =gUnknown_20370D0
	movs r0, 0xFF
	strh r0, [r1]
	str r4, [sp]
	mov r0, r8
	adds r1, r7, 0
	adds r2, r6, 0
	adds r3, r5, 0
	bl sub_809CA64
	movs r0, 0x1
	b _0809CA56
	.align 2, 0
_0809CA4C: .4byte sub_809CC98
_0809CA50: .4byte gUnknown_20370D0
_0809CA54:
	movs r0, 0
_0809CA56:
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end ScriptMenu_MultichoiceWithDefault

	thumb_func_start sub_809CA64
sub_809CA64: @ 809CA64
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x20
	ldr r4, [sp, 0x40]
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
	lsls r1, 24
	lsrs r1, 24
	str r1, [sp, 0x14]
	lsls r2, 24
	lsrs r2, 24
	mov r10, r2
	lsls r3, 24
	lsrs r3, 24
	str r3, [sp, 0x18]
	lsls r4, 24
	lsrs r4, 24
	str r4, [sp, 0x1C]
	movs r0, 0x2
	ands r0, r3
	cmp r0, 0
	bne _0809CAA6
	ldr r0, _0809CB54 @ =sub_809D6D4
	bl sub_81119D4
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0809CBA2
_0809CAA6:
	movs r0, 0x1
	ldr r1, [sp, 0x18]
	ands r1, r0
	str r1, [sp, 0x18]
	ldr r1, _0809CB58 @ =gUnknown_83E04B0
	mov r2, r10
	lsls r0, r2, 3
	adds r0, r1
	ldrb r7, [r0, 0x4]
	ldr r0, [r0]
	mov r8, r0
	movs r6, 0
	cmp r6, r7
	bge _0809CADE
	mov r5, r8
	adds r4, r7, 0
_0809CAC6:
	ldr r1, [r5]
	movs r0, 0x2
	movs r2, 0
	bl GetStringWidth
	cmp r0, r6
	ble _0809CAD6
	adds r6, r0, 0
_0809CAD6:
	adds r5, 0x8
	subs r4, 0x1
	cmp r4, 0
	bne _0809CAC6
_0809CADE:
	adds r0, r6, 0
	adds r0, 0x9
	cmp r0, 0
	bge _0809CAE8
	adds r0, 0x7
_0809CAE8:
	asrs r0, 3
	adds r0, 0x1
	lsls r0, 24
	lsrs r5, r0, 24
	mov r1, r9
	adds r0, r1, r5
	cmp r0, 0x1C
	ble _0809CB02
	movs r0, 0x1C
	subs r0, r5
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
_0809CB02:
	adds r0, r7, 0
	bl sub_809CBB4
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	mov r0, r9
	ldr r1, [sp, 0x14]
	adds r2, r5, 0
	bl CreateWindowFromRect
	lsls r0, 24
	lsrs r5, r0, 24
	adds r0, r5, 0
	movs r1, 0
	bl sub_80F7750
	mov r2, r10
	cmp r2, 0x1E
	beq _0809CB32
	cmp r2, 0xD
	beq _0809CB32
	cmp r2, 0x29
	bne _0809CB5C
_0809CB32:
	movs r0, 0xE
	str r0, [sp]
	str r7, [sp, 0x4]
	mov r0, r8
	str r0, [sp, 0x8]
	movs r0, 0
	str r0, [sp, 0xC]
	movs r0, 0x2
	str r0, [sp, 0x10]
	adds r0, r5, 0
	movs r1, 0x2
	movs r2, 0x8
	movs r3, 0x2
	bl sub_810FBE8
	b _0809CB7A
	.align 2, 0
_0809CB54: .4byte sub_809D6D4
_0809CB58: .4byte gUnknown_83E04B0
_0809CB5C:
	movs r0, 0xE
	str r0, [sp]
	str r7, [sp, 0x4]
	mov r1, r8
	str r1, [sp, 0x8]
	movs r0, 0
	str r0, [sp, 0xC]
	movs r0, 0x2
	str r0, [sp, 0x10]
	adds r0, r5, 0
	movs r1, 0x2
	movs r2, 0x8
	movs r3, 0x2
	bl sub_810FBE8
_0809CB7A:
	movs r0, 0xE
	str r0, [sp]
	str r7, [sp, 0x4]
	ldr r2, [sp, 0x1C]
	str r2, [sp, 0x8]
	adds r0, r5, 0
	movs r1, 0x2
	movs r2, 0
	movs r3, 0x2
	bl sub_810F7D8
	ldr r0, [sp, 0x18]
	adds r1, r7, 0
	adds r2, r5, 0
	mov r3, r10
	bl sub_809CC18
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
_0809CBA2:
	add sp, 0x20
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_809CA64

	thumb_func_start sub_809CBB4
sub_809CBB4: @ 809CBB4
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x8
	bhi _0809CC10
	lsls r0, 2
	ldr r1, _0809CBC8 @ =_0809CBCC
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.align 2, 0
_0809CBC8: .4byte _0809CBCC
	.align 2, 0
_0809CBCC:
	.4byte _0809CC10
	.4byte _0809CBF0
	.4byte _0809CBF4
	.4byte _0809CBF8
	.4byte _0809CBFC
	.4byte _0809CC00
	.4byte _0809CC04
	.4byte _0809CC08
	.4byte _0809CC0C
_0809CBF0:
	movs r0, 0x2
	b _0809CC12
_0809CBF4:
	movs r0, 0x4
	b _0809CC12
_0809CBF8:
	movs r0, 0x6
	b _0809CC12
_0809CBFC:
	movs r0, 0x7
	b _0809CC12
_0809CC00:
	movs r0, 0x9
	b _0809CC12
_0809CC04:
	movs r0, 0xB
	b _0809CC12
_0809CC08:
	movs r0, 0xD
	b _0809CC12
_0809CC0C:
	movs r0, 0xE
	b _0809CC12
_0809CC10:
	movs r0, 0x1
_0809CC12:
	pop {r1}
	bx r1
	thumb_func_end sub_809CBB4

	thumb_func_start sub_809CC18
sub_809CC18: @ 809CC18
	push {r4-r7,lr}
	lsls r0, 24
	lsrs r6, r0, 24
	lsls r1, 24
	lsrs r5, r1, 24
	lsls r2, 24
	lsrs r7, r2, 24
	lsls r3, 24
	lsrs r4, r3, 24
	cmp r4, 0x27
	beq _0809CC36
	cmp r4, 0x2F
	beq _0809CC36
	cmp r4, 0x32
	bne _0809CC40
_0809CC36:
	ldr r1, _0809CC3C @ =gUnknown_2039988
	movs r0, 0xC
	b _0809CC44
	.align 2, 0
_0809CC3C: .4byte gUnknown_2039988
_0809CC40:
	ldr r1, _0809CC68 @ =gUnknown_2039988
	movs r0, 0
_0809CC44:
	strb r0, [r1]
	ldr r0, _0809CC6C @ =sub_809CC98
	movs r1, 0x50
	bl CreateTask
	lsls r0, 24
	lsrs r2, r0, 24
	ldr r1, _0809CC70 @ =gTasks
	lsls r0, r2, 2
	adds r0, r2
	lsls r0, 3
	adds r1, r0, r1
	strh r6, [r1, 0x10]
	cmp r5, 0x3
	bls _0809CC74
	movs r0, 0x1
	b _0809CC76
	.align 2, 0
_0809CC68: .4byte gUnknown_2039988
_0809CC6C: .4byte sub_809CC98
_0809CC70: .4byte gTasks
_0809CC74:
	movs r0, 0
_0809CC76:
	strh r0, [r1, 0x12]
	ldr r1, _0809CC94 @ =gTasks
	lsls r0, r2, 2
	adds r0, r2
	lsls r0, 3
	adds r0, r1
	strh r7, [r0, 0x14]
	strh r4, [r0, 0x16]
	adds r0, r4, 0
	bl sub_809CD48
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0809CC94: .4byte gTasks
	thumb_func_end sub_809CC18

	thumb_func_start sub_809CC98
sub_809CC98: @ 809CC98
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r6, r0, 24
	lsls r0, r6, 2
	adds r0, r6
	lsls r0, 3
	ldr r1, _0809CCC4 @ =gTasks+0x8
	adds r5, r0, r1
	ldr r0, _0809CCC8 @ =gPaletteFade
	ldrb r1, [r0, 0x7]
	movs r0, 0x80
	ands r0, r1
	cmp r0, 0
	bne _0809CD3C
	ldr r1, _0809CCCC @ =gUnknown_2039988
	ldrb r0, [r1]
	cmp r0, 0
	beq _0809CCD0
	subs r0, 0x1
	strb r0, [r1]
	b _0809CD3C
	.align 2, 0
_0809CCC4: .4byte gTasks+0x8
_0809CCC8: .4byte gPaletteFade
_0809CCCC: .4byte gUnknown_2039988
_0809CCD0:
	movs r1, 0xA
	ldrsh r0, [r5, r1]
	cmp r0, 0
	bne _0809CCDE
	bl ProcessMenuInputNoWrapAround
	b _0809CCE2
_0809CCDE:
	bl ProcessMenuInput
_0809CCE2:
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r0, _0809CD20 @ =gMain
	ldrh r1, [r0, 0x2E]
	movs r0, 0xC0
	ands r0, r1
	cmp r0, 0
	beq _0809CCF8
	ldrb r0, [r5, 0xE]
	bl sub_809CD48
_0809CCF8:
	lsls r0, r4, 24
	asrs r1, r0, 24
	movs r0, 0x2
	negs r0, r0
	cmp r1, r0
	beq _0809CD3C
	adds r0, 0x1
	cmp r1, r0
	bne _0809CD28
	movs r1, 0x8
	ldrsh r0, [r5, r1]
	cmp r0, 0
	bne _0809CD3C
	movs r0, 0x5
	bl PlaySE
	ldr r1, _0809CD24 @ =gUnknown_20370D0
	movs r0, 0x7F
	strh r0, [r1]
	b _0809CD2C
	.align 2, 0
_0809CD20: .4byte gMain
_0809CD24: .4byte gUnknown_20370D0
_0809CD28:
	ldr r0, _0809CD44 @ =gUnknown_20370D0
	strh r1, [r0]
_0809CD2C:
	ldrb r0, [r5, 0xC]
	bl sub_809D6B0
	adds r0, r6, 0
	bl DestroyTask
	bl EnableBothScriptContexts
_0809CD3C:
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_0809CD44: .4byte gUnknown_20370D0
	thumb_func_end sub_809CC98

	thumb_func_start sub_809CD48
sub_809CD48: @ 809CD48
	push {r4,lr}
	sub sp, 0x10
	lsls r0, 24
	lsrs r0, 24
	adds r1, r0, 0
	cmp r0, 0x2F
	beq _0809CD78
	cmp r0, 0x2F
	bgt _0809CD60
	cmp r0, 0x27
	beq _0809CD66
	b _0809CDE0
_0809CD60:
	cmp r1, 0x32
	beq _0809CDB0
	b _0809CDE0
_0809CD66:
	movs r0, 0
	movs r1, 0x11
	bl FillWindowPixelBuffer
	ldr r4, _0809CD74 @ =gUnknown_83E072C
	b _0809CD82
	.align 2, 0
_0809CD74: .4byte gUnknown_83E072C
_0809CD78:
	movs r0, 0
	movs r1, 0x11
	bl FillWindowPixelBuffer
	ldr r4, _0809CDAC @ =gUnknown_83E0738
_0809CD82:
	bl GetMenuCursorPos
	lsls r0, 24
	lsrs r0, 22
	adds r0, r4
	ldr r2, [r0]
	movs r0, 0
	str r0, [sp]
	movs r0, 0x2
	str r0, [sp, 0x4]
	movs r0, 0x1
	str r0, [sp, 0x8]
	movs r0, 0x3
	str r0, [sp, 0xC]
	movs r0, 0
	movs r1, 0x2
	movs r3, 0
	bl AddTextPrinterParametrized
	b _0809CDE0
	.align 2, 0
_0809CDAC: .4byte gUnknown_83E0738
_0809CDB0:
	movs r0, 0
	movs r1, 0x11
	bl FillWindowPixelBuffer
	ldr r4, _0809CDE8 @ =gUnknown_83E0748
	bl GetMenuCursorPos
	lsls r0, 24
	lsrs r0, 22
	adds r0, r4
	ldr r2, [r0]
	movs r0, 0
	str r0, [sp]
	movs r0, 0x2
	str r0, [sp, 0x4]
	movs r0, 0x1
	str r0, [sp, 0x8]
	movs r0, 0x3
	str r0, [sp, 0xC]
	movs r0, 0
	movs r1, 0x2
	movs r3, 0
	bl AddTextPrinterParametrized
_0809CDE0:
	add sp, 0x10
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0809CDE8: .4byte gUnknown_83E0748
	thumb_func_end sub_809CD48

	thumb_func_start sub_809CDEC
sub_809CDEC: @ 809CDEC
	push {r4,lr}
	ldr r4, _0809CE04 @ =task_yes_no_maybe
	adds r0, r4, 0
	bl FuncIsActiveTask
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809CE08
	movs r0, 0
	b _0809CE28
	.align 2, 0
_0809CE04: .4byte task_yes_no_maybe
_0809CE08:
	ldr r1, _0809CE30 @ =gUnknown_20370D0
	movs r0, 0xFF
	strh r0, [r1]
	ldr r0, _0809CE34 @ =sub_809D6D4
	bl sub_81119D4
	lsls r0, 24
	cmp r0, 0
	bne _0809CE26
	bl sub_80F7858
	adds r0, r4, 0
	movs r1, 0x50
	bl CreateTask
_0809CE26:
	movs r0, 0x1
_0809CE28:
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0809CE30: .4byte gUnknown_20370D0
_0809CE34: .4byte sub_809D6D4
	thumb_func_end sub_809CDEC

	thumb_func_start sub_809CE38
sub_809CE38: @ 809CE38
	push {lr}
	ldr r0, _0809CE48 @ =gUnknown_20370D0
	ldrh r0, [r0]
	cmp r0, 0xFF
	beq _0809CE4C
	movs r0, 0x1
	b _0809CE4E
	.align 2, 0
_0809CE48: .4byte gUnknown_20370D0
_0809CE4C:
	movs r0, 0
_0809CE4E:
	pop {r1}
	bx r1
	thumb_func_end sub_809CE38

	thumb_func_start task_yes_no_maybe
task_yes_no_maybe: @ 809CE54
	push {r4,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _0809CE74 @ =gTasks
	lsls r0, r4, 2
	adds r0, r4
	lsls r0, 3
	adds r1, r0, r1
	ldrh r2, [r1, 0xC]
	movs r3, 0xC
	ldrsh r0, [r1, r3]
	cmp r0, 0x4
	bgt _0809CE78
	adds r0, r2, 0x1
	strh r0, [r1, 0xC]
	b _0809CEBC
	.align 2, 0
_0809CE74: .4byte gTasks
_0809CE78:
	bl ProcessMenuInputNoWrap_
	lsls r0, 24
	asrs r1, r0, 24
	movs r0, 0x1
	negs r0, r0
	cmp r1, r0
	beq _0809CE9C
	cmp r1, r0
	bgt _0809CE94
	subs r0, 0x1
	cmp r1, r0
	beq _0809CEBC
	b _0809CEB2
_0809CE94:
	cmp r1, 0
	beq _0809CEAC
	cmp r1, 0x1
	bne _0809CEB2
_0809CE9C:
	movs r0, 0x5
	bl PlaySE
	ldr r1, _0809CEA8 @ =gUnknown_20370D0
	movs r0, 0
	b _0809CEB0
	.align 2, 0
_0809CEA8: .4byte gUnknown_20370D0
_0809CEAC:
	ldr r1, _0809CEC4 @ =gUnknown_20370D0
	movs r0, 0x1
_0809CEB0:
	strh r0, [r1]
_0809CEB2:
	adds r0, r4, 0
	bl DestroyTask
	bl EnableBothScriptContexts
_0809CEBC:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0809CEC4: .4byte gUnknown_20370D0
	thumb_func_end task_yes_no_maybe

	thumb_func_start sub_809CEC8
sub_809CEC8: @ 809CEC8
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x18
	ldr r4, [sp, 0x38]
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp, 0x10]
	lsls r1, 24
	lsrs r1, 24
	str r1, [sp, 0x14]
	lsls r2, 24
	lsrs r5, r2, 24
	lsls r3, 24
	lsrs r3, 24
	mov r10, r3
	lsls r4, 24
	lsrs r7, r4, 24
	ldr r0, _0809CF04 @ =sub_809CFDC
	mov r9, r0
	bl FuncIsActiveTask
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809CF08
	movs r0, 0
	b _0809CFBA
	.align 2, 0
_0809CF04: .4byte sub_809CFDC
_0809CF08:
	ldr r1, _0809CFCC @ =gUnknown_20370D0
	movs r0, 0xFF
	strh r0, [r1]
	ldr r0, _0809CFD0 @ =sub_809D6D4
	bl sub_81119D4
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0809CFB8
	ldr r1, _0809CFD4 @ =gUnknown_83E04B0
	lsls r0, r5, 3
	adds r0, r1
	ldr r1, [r0]
	mov r8, r1
	ldrb r4, [r0, 0x4]
	mov r0, r8
	adds r1, r4, 0
	bl sub_809C974
	adds r5, r0, 0
	adds r5, 0x1
	lsls r5, 24
	lsrs r5, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl __udivsi3
	adds r6, r0, 0
	lsls r6, 24
	lsrs r6, 24
	mov r0, r9
	movs r1, 0x50
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0809CFD8 @ =gTasks
	lsls r4, r0, 2
	adds r4, r0
	lsls r4, 3
	adds r4, r1
	movs r0, 0
	mov r9, r0
	mov r1, r10
	strh r1, [r4, 0x10]
	adds r2, r5, 0
	muls r2, r7
	lsls r2, 24
	lsrs r2, 24
	lsls r3, r6, 25
	lsrs r3, 24
	ldr r0, [sp, 0x10]
	ldr r1, [sp, 0x14]
	bl CreateWindowFromRect
	lsls r0, 24
	lsrs r0, 24
	strh r0, [r4, 0x14]
	movs r1, 0
	bl sub_80F7750
	ldrb r0, [r4, 0x14]
	lsls r5, 27
	lsrs r5, 24
	str r7, [sp]
	str r6, [sp, 0x4]
	mov r1, r8
	str r1, [sp, 0x8]
	movs r1, 0x1
	adds r2, r5, 0
	movs r3, 0x10
	bl sub_8110104
	ldrb r0, [r4, 0x14]
	str r5, [sp]
	str r7, [sp, 0x4]
	str r6, [sp, 0x8]
	mov r1, r9
	str r1, [sp, 0xC]
	movs r1, 0x1
	movs r2, 0
	movs r3, 0x1
	bl sub_811030C
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
_0809CFB8:
	movs r0, 0x1
_0809CFBA:
	add sp, 0x18
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_0809CFCC: .4byte gUnknown_20370D0
_0809CFD0: .4byte sub_809D6D4
_0809CFD4: .4byte gUnknown_83E04B0
_0809CFD8: .4byte gTasks
	thumb_func_end sub_809CEC8

	thumb_func_start sub_809CFDC
sub_809CFDC: @ 809CFDC
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r0, r4, 2
	adds r0, r4
	lsls r0, 3
	ldr r1, _0809D018 @ =gTasks+0x8
	adds r5, r0, r1
	bl sub_8110650
	lsls r0, 24
	asrs r1, r0, 24
	movs r0, 0x2
	negs r0, r0
	cmp r1, r0
	beq _0809D034
	adds r0, 0x1
	cmp r1, r0
	bne _0809D020
	movs r1, 0x8
	ldrsh r0, [r5, r1]
	cmp r0, 0
	bne _0809D034
	movs r0, 0x5
	bl PlaySE
	ldr r1, _0809D01C @ =gUnknown_20370D0
	movs r0, 0x7F
	strh r0, [r1]
	b _0809D024
	.align 2, 0
_0809D018: .4byte gTasks+0x8
_0809D01C: .4byte gUnknown_20370D0
_0809D020:
	ldr r0, _0809D03C @ =gUnknown_20370D0
	strh r1, [r0]
_0809D024:
	ldrb r0, [r5, 0xC]
	bl sub_809D6B0
	adds r0, r4, 0
	bl DestroyTask
	bl EnableBothScriptContexts
_0809D034:
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0809D03C: .4byte gUnknown_20370D0
	thumb_func_end sub_809CFDC

	thumb_func_start sp109_CreatePCMenu
sp109_CreatePCMenu: @ 809D040
	push {lr}
	ldr r0, _0809D060 @ =sub_809CC98
	bl FuncIsActiveTask
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0809D068
	ldr r1, _0809D064 @ =gUnknown_20370D0
	movs r0, 0xFF
	strh r0, [r1]
	bl sub_809D070
	movs r0, 0x1
	b _0809D06A
	.align 2, 0
_0809D060: .4byte sub_809CC98
_0809D064: .4byte gUnknown_20370D0
_0809D068:
	movs r0, 0
_0809D06A:
	pop {r1}
	bx r1
	thumb_func_end sp109_CreatePCMenu

	thumb_func_start sub_809D070
sub_809D070: @ 809D070
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	sub sp, 0xC
	movs r0, 0x2
	movs r1, 0
	bl GetMenuCursorDimensionByFont
	lsls r0, 24
	lsrs r7, r0, 24
	movs r0, 0x2
	movs r1, 0x1
	bl GetFontAttribute
	ldr r0, _0809D11C @ =gUnknown_8417BB6
	bl sub_809C954
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0xA
	bgt _0809D0A0
	cmp r0, 0x9
	bge _0809D0AE
_0809D0A0:
	ldr r0, _0809D120 @ =0x00000829
	bl FlagGet
	lsls r0, 24
	movs r4, 0xD
	cmp r0, 0
	beq _0809D0B0
_0809D0AE:
	movs r4, 0xE
_0809D0B0:
	ldr r0, _0809D124 @ =0x0000082c
	bl FlagGet
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0
	beq _0809D134
	movs r0, 0x5
	mov r9, r0
	movs r0, 0
	movs r1, 0
	adds r2, r4, 0
	movs r3, 0xA
	bl CreateWindowFromRect
	lsls r0, 24
	lsrs r6, r0, 24
	adds r0, r6, 0
	movs r1, 0
	bl sub_80F7750
	ldr r2, _0809D128 @ =gUnknown_8417BD3
	movs r0, 0x22
	str r0, [sp]
	movs r5, 0xFF
	str r5, [sp, 0x4]
	movs r4, 0
	str r4, [sp, 0x8]
	adds r0, r6, 0
	movs r1, 0x2
	adds r3, r7, 0
	bl AddTextPrinterParameterized
	ldr r2, _0809D12C @ =gUnknown_8417BBE
	movs r0, 0x32
	str r0, [sp]
	str r5, [sp, 0x4]
	str r4, [sp, 0x8]
	adds r0, r6, 0
	movs r1, 0x2
	adds r3, r7, 0
	bl AddTextPrinterParameterized
	ldr r2, _0809D130 @ =gUnknown_8417BCB
	movs r0, 0x42
	str r0, [sp]
	str r5, [sp, 0x4]
	str r4, [sp, 0x8]
	adds r0, r6, 0
	movs r1, 0x2
	adds r3, r7, 0
	bl AddTextPrinterParameterized
	b _0809D1A8
	.align 2, 0
_0809D11C: .4byte gUnknown_8417BB6
_0809D120: .4byte 0x00000829
_0809D124: .4byte 0x0000082c
_0809D128: .4byte gUnknown_8417BD3
_0809D12C: .4byte gUnknown_8417BBE
_0809D130: .4byte gUnknown_8417BCB
_0809D134:
	ldr r1, _0809D1D0 @ =0x00000829
	mov r8, r1
	mov r0, r8
	bl FlagGet
	lsls r0, 24
	movs r1, 0x3
	mov r9, r1
	cmp r0, 0
	beq _0809D14C
	movs r0, 0x4
	mov r9, r0
_0809D14C:
	mov r1, r9
	lsls r3, r1, 1
	movs r0, 0
	movs r1, 0
	adds r2, r4, 0
	bl CreateWindowFromRect
	lsls r0, 24
	lsrs r6, r0, 24
	adds r0, r6, 0
	movs r1, 0
	bl sub_80F7750
	mov r0, r8
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _0809D188
	ldr r2, _0809D1D4 @ =gUnknown_8417BD3
	movs r0, 0x22
	str r0, [sp]
	movs r0, 0xFF
	str r0, [sp, 0x4]
	str r5, [sp, 0x8]
	adds r0, r6, 0
	movs r1, 0x2
	adds r3, r7, 0
	bl AddTextPrinterParameterized
_0809D188:
	ldr r2, _0809D1D8 @ =gUnknown_8417BCB
	mov r0, r9
	subs r0, 0x1
	lsls r0, 4
	adds r0, 0x2
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	movs r0, 0xFF
	str r0, [sp, 0x4]
	str r5, [sp, 0x8]
	adds r0, r6, 0
	movs r1, 0x2
	adds r3, r7, 0
	bl AddTextPrinterParameterized
_0809D1A8:
	ldr r0, _0809D1DC @ =0x00000834
	bl FlagGet
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	beq _0809D1E4
	ldr r2, _0809D1E0 @ =gUnknown_8417BAC
	movs r0, 0x2
	str r0, [sp]
	movs r0, 0xFF
	str r0, [sp, 0x4]
	movs r0, 0
	str r0, [sp, 0x8]
	adds r0, r6, 0
	movs r1, 0x2
	adds r3, r7, 0
	bl AddTextPrinterParameterized
	b _0809D1FA
	.align 2, 0
_0809D1D0: .4byte 0x00000829
_0809D1D4: .4byte gUnknown_8417BD3
_0809D1D8: .4byte gUnknown_8417BCB
_0809D1DC: .4byte 0x00000834
_0809D1E0: .4byte gUnknown_8417BAC
_0809D1E4:
	ldr r2, _0809D248 @ =gUnknown_8417B9F
	movs r0, 0x2
	str r0, [sp]
	movs r0, 0xFF
	str r0, [sp, 0x4]
	str r1, [sp, 0x8]
	adds r0, r6, 0
	movs r1, 0x2
	adds r3, r7, 0
	bl AddTextPrinterParameterized
_0809D1FA:
	ldr r4, _0809D24C @ =gStringVar4
	ldr r1, _0809D250 @ =gUnknown_8417BB6
	adds r0, r4, 0
	bl StringExpandPlaceholders
	adds r0, r6, 0
	adds r1, r4, 0
	adds r2, r7, 0
	movs r3, 0x12
	bl sub_812E6DC
	movs r0, 0x10
	str r0, [sp]
	mov r0, r9
	str r0, [sp, 0x4]
	movs r0, 0
	str r0, [sp, 0x8]
	adds r0, r6, 0
	movs r1, 0x2
	movs r2, 0
	movs r3, 0x2
	bl sub_810F7D8
	movs r0, 0
	mov r1, r9
	adds r2, r6, 0
	movs r3, 0xFF
	bl sub_809CC18
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
	add sp, 0xC
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0809D248: .4byte gUnknown_8417B9F
_0809D24C: .4byte gStringVar4
_0809D250: .4byte gUnknown_8417BB6
	thumb_func_end sub_809D070

	thumb_func_start sub_809D254
sub_809D254: @ 809D254
	push {lr}
	sub sp, 0x10
	movs r0, 0
	movs r1, 0x1
	bl sub_80F7768
	ldr r2, _0809D284 @ =gUnknown_81A508A
	movs r0, 0
	str r0, [sp]
	movs r0, 0x2
	str r0, [sp, 0x4]
	movs r0, 0x1
	str r0, [sp, 0x8]
	movs r0, 0x3
	str r0, [sp, 0xC]
	movs r0, 0
	movs r1, 0x2
	movs r3, 0
	bl AddTextPrinterParametrized
	add sp, 0x10
	pop {r0}
	bx r0
	.align 2, 0
_0809D284: .4byte gUnknown_81A508A
	thumb_func_end sub_809D254

	thumb_func_start sub_809D288
sub_809D288: @ 809D288
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r5, r0, 24
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	ldr r1, _0809D2AC @ =gTasks
	adds r4, r0, r1
	movs r1, 0x8
	ldrsh r0, [r4, r1]
	cmp r0, 0x1
	beq _0809D2E8
	cmp r0, 0x1
	bgt _0809D2B0
	cmp r0, 0
	beq _0809D2CE
	b _0809D2E8
	.align 2, 0
_0809D2AC: .4byte gTasks
_0809D2B0:
	cmp r0, 0x2
	beq _0809D2BA
	cmp r0, 0x3
	beq _0809D2DC
	b _0809D2E8
_0809D2BA:
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0809D2D8 @ =gSprites
	adds r0, r1
	ldrb r1, [r4, 0xC]
	bl sub_8083A5C
_0809D2CE:
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	b _0809D2E8
	.align 2, 0
_0809D2D8: .4byte gSprites
_0809D2DC:
	ldrb r0, [r4, 0x12]
	bl sub_809D6B0
	adds r0, r5, 0
	bl DestroyTask
_0809D2E8:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_809D288

	thumb_func_start sub_809D2F0
sub_809D2F0: @ 809D2F0
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 16
	lsrs r0, 16
	mov r8, r0
	lsls r1, 24
	lsrs r7, r1, 24
	lsls r2, 24
	lsrs r6, r2, 24
	ldr r0, _0809D318 @ =sub_809D6D4
	bl sub_81119D4
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809D31C
	movs r0, 0x1
	b _0809D3C2
	.align 2, 0
_0809D318: .4byte sub_809D6D4
_0809D31C:
	ldr r4, _0809D3B0 @ =sub_809D288
	adds r0, r4, 0
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	bne _0809D3C0
	lsls r1, r7, 19
	movs r0, 0xA0
	lsls r0, 14
	adds r1, r0
	asrs r1, 16
	lsls r2, r6, 19
	adds r2, r0
	asrs r2, 16
	mov r0, r8
	movs r3, 0
	bl sub_8083970
	adds r5, r0, 0
	lsls r5, 24
	lsrs r5, 24
	adds r0, r4, 0
	movs r1, 0x50
	bl CreateTask
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	adds r0, r7, 0
	adds r1, r6, 0
	movs r2, 0x8
	movs r3, 0x8
	bl CreateWindowFromRect
	ldr r1, _0809D3B4 @ =gTasks
	lsls r3, r4, 2
	adds r3, r4
	lsls r3, 3
	adds r3, r1
	lsls r0, 24
	lsrs r0, 24
	movs r1, 0
	strh r0, [r3, 0x12]
	strh r1, [r3, 0x8]
	mov r0, r8
	strh r0, [r3, 0xA]
	strh r5, [r3, 0xC]
	ldr r4, _0809D3B8 @ =gSprites
	lsls r1, r5, 4
	adds r1, r5
	lsls r1, 2
	adds r0, r4, 0
	adds r0, 0x1C
	adds r0, r1, r0
	ldr r2, _0809D3BC @ =SpriteCallbackDummy
	str r2, [r0]
	adds r1, r4
	ldrb r2, [r1, 0x5]
	movs r0, 0xD
	negs r0, r0
	ands r0, r2
	strb r0, [r1, 0x5]
	ldrb r0, [r3, 0x12]
	movs r1, 0x1
	bl sub_80F7750
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
	movs r0, 0x1
	b _0809D3C2
	.align 2, 0
_0809D3B0: .4byte sub_809D288
_0809D3B4: .4byte gTasks
_0809D3B8: .4byte gSprites
_0809D3BC: .4byte SpriteCallbackDummy
_0809D3C0:
	movs r0, 0
_0809D3C2:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_809D2F0

	thumb_func_start sub_809D3CC
sub_809D3CC: @ 809D3CC
	push {lr}
	ldr r0, _0809D3F0 @ =sub_809D288
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0xFF
	beq _0809D3FC
	ldr r0, _0809D3F4 @ =gTasks
	lsls r1, r2, 2
	adds r1, r2
	lsls r1, 3
	adds r1, r0
	ldrh r0, [r1, 0x8]
	adds r0, 0x1
	strh r0, [r1, 0x8]
	ldr r0, _0809D3F8 @ =sub_809D404
	b _0809D3FE
	.align 2, 0
_0809D3F0: .4byte sub_809D288
_0809D3F4: .4byte gTasks
_0809D3F8: .4byte sub_809D404
_0809D3FC:
	movs r0, 0
_0809D3FE:
	pop {r1}
	bx r1
	thumb_func_end sub_809D3CC

	thumb_func_start sub_809D404
sub_809D404: @ 809D404
	push {lr}
	ldr r0, _0809D418 @ =sub_809D288
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	beq _0809D41C
	movs r0, 0
	b _0809D41E
	.align 2, 0
_0809D418: .4byte sub_809D288
_0809D41C:
	movs r0, 0x1
_0809D41E:
	pop {r1}
	bx r1
	thumb_func_end sub_809D404

	thumb_func_start sub_809D424
sub_809D424: @ 809D424
	push {r4,r5,lr}
	ldr r0, _0809D450 @ =sub_809D288
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0xFF
	beq _0809D48C
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	ldr r1, _0809D454 @ =gTasks
	adds r4, r0, r1
	movs r1, 0x8
	ldrsh r0, [r4, r1]
	cmp r0, 0
	blt _0809D48C
	cmp r0, 0x2
	ble _0809D458
	cmp r0, 0x3
	beq _0809D480
	b _0809D48C
	.align 2, 0
_0809D450: .4byte sub_809D288
_0809D454: .4byte gTasks
_0809D458:
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0809D47C @ =gSprites
	adds r0, r1
	ldrb r1, [r4, 0xC]
	bl sub_8083A5C
	ldrb r0, [r4, 0x12]
	bl sub_809D6B0
	adds r0, r5, 0
	bl DestroyTask
	b _0809D48C
	.align 2, 0
_0809D47C: .4byte gSprites
_0809D480:
	ldrb r0, [r4, 0x12]
	bl sub_809D6B0
	adds r0, r5, 0
	bl DestroyTask
_0809D48C:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_809D424

	thumb_func_start sub_809D494
sub_809D494: @ 809D494
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r5, r0, 24
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	ldr r1, _0809D4B8 @ =gTasks
	adds r4, r0, r1
	movs r1, 0x8
	ldrsh r0, [r4, r1]
	cmp r0, 0x1
	beq _0809D4FC
	cmp r0, 0x1
	bgt _0809D4BC
	cmp r0, 0
	beq _0809D4DE
	b _0809D4FC
	.align 2, 0
_0809D4B8: .4byte gTasks
_0809D4BC:
	cmp r0, 0x2
	beq _0809D4C6
	cmp r0, 0x3
	beq _0809D4F0
	b _0809D4FC
_0809D4C6:
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0809D4E8 @ =gSprites
	adds r0, r1
	bl DestroySprite
	ldr r0, _0809D4EC @ =0x00001b58
	bl FreeSpriteTilesByTag
_0809D4DE:
	ldrh r0, [r4, 0x8]
	adds r0, 0x1
	strh r0, [r4, 0x8]
	b _0809D4FC
	.align 2, 0
_0809D4E8: .4byte gSprites
_0809D4EC: .4byte 0x00001b58
_0809D4F0:
	ldrb r0, [r4, 0x12]
	bl sub_809D6B0
	adds r0, r5, 0
	bl DestroyTask
_0809D4FC:
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_809D494

	thumb_func_start sub_809D504
sub_809D504: @ 809D504
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	ldr r0, _0809D544 @ =sub_809D6D4
	bl sub_81119D4
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0809D5F2
	ldr r0, _0809D548 @ =sub_809D494
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	bne _0809D55C
	ldr r0, _0809D54C @ =gUnknown_20370C0
	ldrh r0, [r0]
	cmp r0, 0x8D
	bne _0809D558
	ldr r0, _0809D550 @ =gUnknown_83E17C0
	bl LoadSpriteSheets
	ldr r0, _0809D554 @ =gUnknown_83E17A0
	movs r1, 0xE8
	lsls r1, 1
	movs r2, 0x20
	bl LoadPalette
	b _0809D572
	.align 2, 0
_0809D544: .4byte sub_809D6D4
_0809D548: .4byte sub_809D494
_0809D54C: .4byte gUnknown_20370C0
_0809D550: .4byte gUnknown_83E17C0
_0809D554: .4byte gUnknown_83E17A0
_0809D558:
	cmp r0, 0x8E
	beq _0809D560
_0809D55C:
	movs r0, 0
	b _0809D5F4
_0809D560:
	ldr r0, _0809D600 @ =gUnknown_83E17D0
	bl LoadSpriteSheets
	ldr r0, _0809D604 @ =gUnknown_83E0F80
	movs r1, 0xE8
	lsls r1, 1
	movs r2, 0x20
	bl LoadPalette
_0809D572:
	ldr r0, _0809D608 @ =gUnknown_83E0768
	ldr r1, _0809D60C @ =gSpecialVar_0x8005
	mov r8, r1
	ldrh r1, [r1]
	lsls r1, 19
	movs r2, 0xA0
	lsls r2, 14
	adds r1, r2
	asrs r1, 16
	ldr r6, _0809D610 @ =gUnknown_20370C4
	ldrh r2, [r6]
	lsls r2, 19
	movs r3, 0xA0
	lsls r3, 14
	adds r2, r3
	asrs r2, 16
	movs r3, 0
	bl CreateSprite
	adds r5, r0, 0
	lsls r5, 24
	lsrs r5, 24
	ldr r1, _0809D614 @ =gSprites
	lsls r0, r5, 4
	adds r0, r5
	lsls r0, 2
	adds r0, r1
	ldrb r2, [r0, 0x5]
	movs r1, 0xF
	ands r1, r2
	movs r2, 0xD0
	orrs r1, r2
	strb r1, [r0, 0x5]
	ldr r0, _0809D618 @ =sub_809D494
	movs r1, 0x50
	bl CreateTask
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	mov r1, r8
	ldrb r0, [r1]
	ldrb r1, [r6]
	movs r2, 0x8
	movs r3, 0x8
	bl CreateWindowFromRect
	ldr r2, _0809D61C @ =gTasks
	lsls r1, r4, 2
	adds r1, r4
	lsls r1, 3
	adds r1, r2
	lsls r0, 24
	lsrs r0, 24
	movs r2, 0
	strh r0, [r1, 0x12]
	strh r2, [r1, 0x8]
	strh r5, [r1, 0xC]
	movs r1, 0x1
	bl sub_80F7750
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
_0809D5F2:
	movs r0, 0x1
_0809D5F4:
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_0809D600: .4byte gUnknown_83E17D0
_0809D604: .4byte gUnknown_83E0F80
_0809D608: .4byte gUnknown_83E0768
_0809D60C: .4byte gSpecialVar_0x8005
_0809D610: .4byte gUnknown_20370C4
_0809D614: .4byte gSprites
_0809D618: .4byte sub_809D494
_0809D61C: .4byte gTasks
	thumb_func_end sub_809D504

	thumb_func_start sub_809D620
sub_809D620: @ 809D620
	push {lr}
	ldr r0, _0809D644 @ =sub_809D494
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0xFF
	beq _0809D64C
	ldr r0, _0809D648 @ =gTasks
	lsls r1, r2, 2
	adds r1, r2
	lsls r1, 3
	adds r1, r0
	ldrh r0, [r1, 0x8]
	adds r0, 0x1
	strh r0, [r1, 0x8]
	movs r0, 0x1
	b _0809D64E
	.align 2, 0
_0809D644: .4byte sub_809D494
_0809D648: .4byte gTasks
_0809D64C:
	movs r0, 0
_0809D64E:
	pop {r1}
	bx r1
	thumb_func_end sub_809D620

	thumb_func_start CreateWindowFromRect
CreateWindowFromRect: @ 809D654
	push {r4,r5,lr}
	sub sp, 0x20
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r4, 24
	lsls r5, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x80
	lsls r0, 17
	adds r4, r0
	lsrs r4, 24
	adds r5, r0
	lsrs r5, 24
	str r2, [sp]
	str r3, [sp, 0x4]
	movs r0, 0xF
	str r0, [sp, 0x8]
	movs r0, 0x38
	str r0, [sp, 0xC]
	add r0, sp, 0x10
	movs r1, 0
	adds r2, r4, 0
	adds r3, r5, 0
	bl SetWindowTemplateFields
	ldr r0, [sp, 0x10]
	ldr r1, [sp, 0x14]
	str r0, [sp, 0x18]
	str r1, [sp, 0x1C]
	add r0, sp, 0x18
	bl AddWindow
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	adds r0, r4, 0
	bl PutWindowTilemap
	adds r0, r4, 0
	add sp, 0x20
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end CreateWindowFromRect

	thumb_func_start sub_809D6B0
sub_809D6B0: @ 809D6B0
	push {r4,lr}
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	adds r0, r4, 0
	bl ClearWindowTilemap
	adds r0, r4, 0
	movs r1, 0x1
	bl sub_810F4D8
	adds r0, r4, 0
	bl RemoveWindow
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_809D6B0

	thumb_func_start sub_809D6D4
sub_809D6D4: @ 809D6D4
	push {lr}
	ldr r0, _0809D74C @ =gUnknown_81A7AE0
	bl ScriptContext1_SetupScript
	ldr r0, _0809D750 @ =sub_809D288
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0xFF
	beq _0809D710
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	ldr r1, _0809D754 @ =gTasks+0x8
	adds r2, r0, r1
	movs r1, 0
	ldrsh r0, [r2, r1]
	cmp r0, 0x1
	bgt _0809D710
	movs r0, 0x4
	ldrsh r1, [r2, r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0809D758 @ =gSprites
	adds r0, r1
	ldrb r1, [r2, 0x4]
	bl sub_8083A5C
_0809D710:
	ldr r0, _0809D75C @ =sub_809D494
	bl FindTaskIdByFunc
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0xFF
	beq _0809D748
	lsls r0, r1, 2
	adds r0, r1
	lsls r0, 3
	ldr r1, _0809D754 @ =gTasks+0x8
	adds r2, r0, r1
	movs r1, 0
	ldrsh r0, [r2, r1]
	cmp r0, 0x1
	bgt _0809D748
	movs r0, 0x4
	ldrsh r1, [r2, r0]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0809D758 @ =gSprites
	adds r0, r1
	bl DestroySprite
	ldr r0, _0809D760 @ =0x00001b58
	bl FreeSpriteTilesByTag
_0809D748:
	pop {r0}
	bx r0
	.align 2, 0
_0809D74C: .4byte gUnknown_81A7AE0
_0809D750: .4byte sub_809D288
_0809D754: .4byte gTasks+0x8
_0809D758: .4byte gSprites
_0809D75C: .4byte sub_809D494
_0809D760: .4byte 0x00001b58
	thumb_func_end sub_809D6D4

	thumb_func_start sub_809D764
sub_809D764: @ 809D764
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	sub sp, 0xC
	ldr r1, _0809D7A0 @ =gUnknown_20370D0
	movs r0, 0xFF
	strh r0, [r1]
	ldr r0, _0809D7A4 @ =sub_809D6D4
	bl sub_81119D4
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0809D784
	b _0809D8A8
_0809D784:
	ldr r0, _0809D7A8 @ =gSpecialVar_0x8005
	ldrh r0, [r0]
	cmp r0, 0x1
	bne _0809D7B0
	ldr r0, _0809D7AC @ =gUnknown_20370C0
	ldrh r0, [r0]
	movs r4, 0x4
	cmp r0, 0x4
	bhi _0809D798
	movs r4, 0x5
_0809D798:
	movs r0, 0x5
	mov r9, r0
	movs r5, 0x2
	b _0809D7B8
	.align 2, 0
_0809D7A0: .4byte gUnknown_20370D0
_0809D7A4: .4byte sub_809D6D4
_0809D7A8: .4byte gSpecialVar_0x8005
_0809D7AC: .4byte gUnknown_20370C0
_0809D7B0:
	movs r4, 0
	movs r0, 0x6
	mov r9, r0
	movs r5, 0
_0809D7B8:
	movs r0, 0x2
	movs r1, 0
	bl GetMenuCursorDimensionByFont
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	movs r0, 0x2
	movs r1, 0x1
	bl GetFontAttribute
	mov r0, r9
	lsls r3, r0, 1
	movs r0, 0x11
	adds r1, r5, 0
	movs r2, 0xB
	bl CreateWindowFromRect
	lsls r0, 24
	lsrs r7, r0, 24
	adds r0, r7, 0
	movs r1, 0
	bl sub_80F7750
	movs r6, 0
	mov r5, r9
	subs r5, 0x2
	cmp r6, r5
	bge _0809D844
_0809D7F2:
	ldr r0, _0809D820 @ =gUnknown_20370C0
	ldrh r0, [r0]
	cmp r4, r0
	beq _0809D828
	ldr r1, _0809D824 @ =gUnknown_83E17E0
	lsls r0, r4, 2
	adds r0, r1
	ldr r2, [r0]
	lsls r0, r6, 4
	adds r0, 0x2
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	movs r0, 0xFF
	str r0, [sp, 0x4]
	movs r0, 0
	str r0, [sp, 0x8]
	adds r0, r7, 0
	movs r1, 0x2
	mov r3, r8
	bl AddTextPrinterParameterized
	b _0809D82E
	.align 2, 0
_0809D820: .4byte gUnknown_20370C0
_0809D824: .4byte gUnknown_83E17E0
_0809D828:
	subs r0, r6, 0x1
	lsls r0, 24
	lsrs r6, r0, 24
_0809D82E:
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0x8
	bne _0809D83A
	movs r4, 0
_0809D83A:
	adds r0, r6, 0x1
	lsls r0, 24
	lsrs r6, r0, 24
	cmp r6, r5
	blt _0809D7F2
_0809D844:
	ldr r2, _0809D8B8 @ =gUnknown_8417DED
	lsls r0, r6, 4
	adds r0, 0x2
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	movs r5, 0xFF
	str r5, [sp, 0x4]
	movs r4, 0
	str r4, [sp, 0x8]
	adds r0, r7, 0
	movs r1, 0x2
	mov r3, r8
	bl AddTextPrinterParameterized
	adds r0, r6, 0x1
	lsls r0, 24
	ldr r2, _0809D8BC @ =gUnknown_84161C8
	lsrs r0, 20
	adds r0, 0x2
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	str r5, [sp, 0x4]
	str r4, [sp, 0x8]
	adds r0, r7, 0
	movs r1, 0x2
	mov r3, r8
	bl AddTextPrinterParameterized
	movs r0, 0x10
	str r0, [sp]
	mov r0, r9
	str r0, [sp, 0x4]
	str r4, [sp, 0x8]
	adds r0, r7, 0
	movs r1, 0x2
	movs r2, 0
	movs r3, 0x2
	bl sub_810F7D8
	movs r0, 0
	mov r1, r9
	adds r2, r7, 0
	movs r3, 0xFF
	bl sub_809CC18
	movs r0, 0
	bl schedule_bg_copy_tilemap_to_vram
_0809D8A8:
	add sp, 0xC
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0809D8B8: .4byte gUnknown_8417DED
_0809D8BC: .4byte gUnknown_84161C8
	thumb_func_end sub_809D764

	thumb_func_start sub_809D8C0
sub_809D8C0: @ 809D8C0
	push {lr}
	ldr r3, _0809D8EC @ =gUnknown_20370D0
	ldrh r2, [r3]
	adds r1, r2, 0
	cmp r1, 0x7F
	beq _0809D930
	ldr r0, _0809D8F0 @ =gSpecialVar_0x8005
	ldrh r0, [r0]
	cmp r0, 0x1
	bne _0809D924
	cmp r1, 0x3
	beq _0809D928
	cmp r1, 0x4
	beq _0809D930
	cmp r1, 0
	bne _0809D8F8
	ldr r0, _0809D8F4 @ =gUnknown_20370C0
	ldrh r0, [r0]
	cmp r0, 0x4
	bls _0809D904
	movs r0, 0x4
	b _0809D94E
	.align 2, 0
_0809D8EC: .4byte gUnknown_20370D0
_0809D8F0: .4byte gSpecialVar_0x8005
_0809D8F4: .4byte gUnknown_20370C0
_0809D8F8:
	cmp r1, 0x1
	bne _0809D90C
	ldr r0, _0809D908 @ =gUnknown_20370C0
	ldrh r0, [r0]
	cmp r0, 0x5
	bls _0809D918
_0809D904:
	movs r0, 0x5
	b _0809D94E
	.align 2, 0
_0809D908: .4byte gUnknown_20370C0
_0809D90C:
	cmp r1, 0x2
	bne _0809D94C
	ldr r0, _0809D91C @ =gUnknown_20370C0
	ldrh r0, [r0]
	cmp r0, 0x6
	bls _0809D920
_0809D918:
	movs r0, 0x6
	b _0809D94E
	.align 2, 0
_0809D91C: .4byte gUnknown_20370C0
_0809D920:
	movs r0, 0x7
	b _0809D94E
_0809D924:
	cmp r1, 0x4
	bne _0809D92C
_0809D928:
	movs r0, 0xFE
	b _0809D94E
_0809D92C:
	cmp r1, 0x5
	bne _0809D934
_0809D930:
	movs r0, 0x7F
	b _0809D94E
_0809D934:
	ldr r0, _0809D944 @ =gUnknown_20370C0
	ldrh r0, [r0]
	cmp r1, r0
	bcc _0809D948
	adds r0, r2, 0x1
	lsls r0, 16
	lsrs r0, 16
	b _0809D94E
	.align 2, 0
_0809D944: .4byte gUnknown_20370C0
_0809D948:
	ldrh r0, [r3]
	b _0809D94E
_0809D94C:
	movs r0, 0
_0809D94E:
	pop {r1}
	bx r1
	thumb_func_end sub_809D8C0

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