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

	.syntax unified

	.text

	thumb_func_start sub_81AF08C
sub_81AF08C: @ 81AF08C
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r3, r1, 24
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	ldr r0, =gTasks + 0x8
	adds r2, r1, r0
	cmp r3, 0x10
	bhi _081AF154
	lsls r0, r3, 2
	ldr r1, =_081AF0B8
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_081AF0B8:
	.4byte _081AF0FC
	.4byte _081AF0FC
	.4byte _081AF100
	.4byte _081AF104
	.4byte _081AF108
	.4byte _081AF10C
	.4byte _081AF110
	.4byte _081AF114
	.4byte _081AF118
	.4byte _081AF11C
	.4byte _081AF122
	.4byte _081AF12A
	.4byte _081AF130
	.4byte _081AF138
	.4byte _081AF140
	.4byte _081AF146
	.4byte _081AF14E
_081AF0FC:
	ldr r0, [r2, 0x4]
	b _081AF158
_081AF100:
	ldrh r0, [r2, 0xC]
	b _081AF158
_081AF104:
	ldrh r0, [r2, 0xE]
	b _081AF158
_081AF108:
	ldrb r0, [r2, 0x10]
	b _081AF158
_081AF10C:
	ldrb r0, [r2, 0x11]
	b _081AF158
_081AF110:
	ldrb r0, [r2, 0x12]
	b _081AF158
_081AF114:
	ldrb r0, [r2, 0x13]
	b _081AF158
_081AF118:
	ldrb r0, [r2, 0x14]
	b _081AF124
_081AF11C:
	ldrb r0, [r2, 0x14]
	lsrs r0, 4
	b _081AF158
_081AF122:
	ldrb r0, [r2, 0x15]
_081AF124:
	lsls r0, 28
	lsrs r0, 28
	b _081AF158
_081AF12A:
	ldrb r0, [r2, 0x15]
	lsrs r0, 4
	b _081AF158
_081AF130:
	ldrb r0, [r2, 0x16]
	lsls r0, 29
	lsrs r0, 29
	b _081AF158
_081AF138:
	ldrb r0, [r2, 0x16]
	lsls r0, 26
	lsrs r0, 29
	b _081AF158
_081AF140:
	ldrb r0, [r2, 0x16]
	lsrs r0, 6
	b _081AF158
_081AF146:
	ldrb r0, [r2, 0x17]
	lsls r0, 26
	lsrs r0, 26
	b _081AF158
_081AF14E:
	ldrb r0, [r2, 0x17]
	lsrs r0, 6
	b _081AF158
_081AF154:
	movs r0, 0x1
	negs r0, r0
_081AF158:
	pop {r1}
	bx r1
	thumb_func_end sub_81AF08C

	thumb_func_start sub_81AF15C
sub_81AF15C: @ 81AF15C
	push {r4,lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r4, r1, 24
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	ldr r0, =gTasks + 0x8
	adds r3, r1, r0
	cmp r4, 0x10
	bhi _081AF25C
	lsls r0, r4, 2
	ldr r1, =_081AF188
	adds r0, r1
	ldr r0, [r0]
	mov pc, r0
	.pool
	.align 2, 0
_081AF188:
	.4byte _081AF1CC
	.4byte _081AF1CC
	.4byte _081AF1D0
	.4byte _081AF1D4
	.4byte _081AF1D8
	.4byte _081AF1DC
	.4byte _081AF1E0
	.4byte _081AF1E4
	.4byte _081AF1E8
	.4byte _081AF1F4
	.4byte _081AF202
	.4byte _081AF20E
	.4byte _081AF21C
	.4byte _081AF228
	.4byte _081AF236
	.4byte _081AF244
	.4byte _081AF250
_081AF1CC:
	str r2, [r3, 0x4]
	b _081AF25C
_081AF1D0:
	strh r2, [r3, 0xC]
	b _081AF25C
_081AF1D4:
	strh r2, [r3, 0xE]
	b _081AF25C
_081AF1D8:
	strb r2, [r3, 0x10]
	b _081AF25C
_081AF1DC:
	strb r2, [r3, 0x11]
	b _081AF25C
_081AF1E0:
	strb r2, [r3, 0x12]
	b _081AF25C
_081AF1E4:
	strb r2, [r3, 0x13]
	b _081AF25C
_081AF1E8:
	movs r0, 0xF
	ands r2, r0
	ldrb r1, [r3, 0x14]
	movs r0, 0x10
	negs r0, r0
	b _081AF1FA
_081AF1F4:
	lsls r2, 4
	ldrb r1, [r3, 0x14]
	movs r0, 0xF
_081AF1FA:
	ands r0, r1
	orrs r0, r2
	strb r0, [r3, 0x14]
	b _081AF25C
_081AF202:
	movs r0, 0xF
	ands r2, r0
	ldrb r1, [r3, 0x15]
	movs r0, 0x10
	negs r0, r0
	b _081AF214
_081AF20E:
	lsls r2, 4
	ldrb r1, [r3, 0x15]
	movs r0, 0xF
_081AF214:
	ands r0, r1
	orrs r0, r2
	strb r0, [r3, 0x15]
	b _081AF25C
_081AF21C:
	movs r0, 0x7
	ands r2, r0
	ldrb r1, [r3, 0x16]
	movs r0, 0x8
	negs r0, r0
	b _081AF23C
_081AF228:
	movs r0, 0x7
	ands r2, r0
	lsls r2, 3
	ldrb r1, [r3, 0x16]
	movs r0, 0x39
	negs r0, r0
	b _081AF23C
_081AF236:
	lsls r2, 6
	ldrb r1, [r3, 0x16]
	movs r0, 0x3F
_081AF23C:
	ands r0, r1
	orrs r0, r2
	strb r0, [r3, 0x16]
	b _081AF25C
_081AF244:
	movs r0, 0x3F
	ands r2, r0
	ldrb r1, [r3, 0x17]
	movs r0, 0x40
	negs r0, r0
	b _081AF256
_081AF250:
	lsls r2, 6
	ldrb r1, [r3, 0x17]
	movs r0, 0x3F
_081AF256:
	ands r0, r1
	orrs r0, r2
	strb r0, [r3, 0x17]
_081AF25C:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_81AF15C

	thumb_func_start sub_81AF264
sub_81AF264: @ 81AF264
	push {r4,lr}
	adds r4, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r4, r1]
	cmp r0, 0
	beq _081AF276
	cmp r0, 0x1
	beq _081AF28A
	b _081AF2E4
_081AF276:
	ldrh r1, [r4, 0x30]
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
	ldrh r0, [r4, 0x2E]
	adds r0, 0x1
	strh r0, [r4, 0x2E]
	b _081AF2E4
_081AF28A:
	movs r1, 0x32
	ldrsh r0, [r4, r1]
	cmp r0, 0
	beq _081AF29A
	cmp r0, 0x1
	beq _081AF2C0
	ldrh r2, [r4, 0x38]
	b _081AF2DE
_081AF29A:
	movs r0, 0x34
	ldrsh r3, [r4, r0]
	ldr r1, =gSineTable
	ldrh r2, [r4, 0x38]
	lsls r0, r2, 24
	lsrs r0, 23
	adds r0, r1
	movs r1, 0
	ldrsh r0, [r0, r1]
	muls r0, r3
	cmp r0, 0
	bge _081AF2B4
	adds r0, 0xFF
_081AF2B4:
	asrs r0, 8
	strh r0, [r4, 0x24]
	b _081AF2DE
	.pool
_081AF2C0:
	movs r0, 0x34
	ldrsh r3, [r4, r0]
	ldr r1, =gSineTable
	ldrh r2, [r4, 0x38]
	lsls r0, r2, 24
	lsrs r0, 23
	adds r0, r1
	movs r1, 0
	ldrsh r0, [r0, r1]
	muls r0, r3
	cmp r0, 0
	bge _081AF2DA
	adds r0, 0xFF
_081AF2DA:
	asrs r0, 8
	strh r0, [r4, 0x26]
_081AF2DE:
	ldrh r0, [r4, 0x36]
	adds r0, r2, r0
	strh r0, [r4, 0x38]
_081AF2E4:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_81AF264

	thumb_func_start AddScrollIndicatorArrowObject
AddScrollIndicatorArrowObject: @ 81AF2F0
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x18
	adds r6, r0, 0
	ldr r5, [sp, 0x30]
	lsls r6, 24
	lsrs r6, 24
	mov r8, r6
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r5, 16
	lsrs r5, 16
	mov r12, r5
	mov r4, sp
	ldr r0, =gUnknown_08614244
	ldm r0!, {r5-r7}
	stm r4!, {r5-r7}
	ldm r0!, {r5-r7}
	stm r4!, {r5-r7}
	mov r0, sp
	movs r4, 0
	strh r3, [r0]
	mov r3, r12
	strh r3, [r0, 0x2]
	movs r3, 0
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r1, =gSprites
	lsls r3, r0, 4
	adds r3, r0
	lsls r3, 2
	adds r3, r1
	adds r5, r3, 0
	adds r5, 0x3E
	ldrb r1, [r5]
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r5]
	strh r4, [r3, 0x2E]
	ldr r1, =gUnknown_086141FC
	mov r5, r8
	lsls r6, r5, 2
	adds r6, r1
	ldrb r2, [r6]
	lsls r1, r2, 28
	lsrs r1, 28
	strh r1, [r3, 0x30]
	lsrs r2, 4
	strh r2, [r3, 0x32]
	ldrb r1, [r6, 0x1]
	strh r1, [r3, 0x34]
	ldrh r1, [r6, 0x2]
	strh r1, [r3, 0x36]
	strh r4, [r3, 0x38]
	add sp, 0x18
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end AddScrollIndicatorArrowObject

	thumb_func_start AddScrollIndicatorArrowPair
AddScrollIndicatorArrowPair: @ 81AF380
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	sub sp, 0x14
	adds r6, r0, 0
	mov r9, r1
	ldr r0, =gUnknown_086142C8
	str r0, [sp, 0x4]
	ldr r5, =0xffff0000
	ldr r0, [sp, 0x8]
	ands r0, r5
	movs r1, 0x80
	lsls r1, 1
	orrs r0, r1
	ldrh r1, [r6, 0xA]
	lsls r1, 16
	ldr r4, =0x0000ffff
	ands r0, r4
	orrs r0, r1
	str r0, [sp, 0x8]
	add r0, sp, 0x4
	bl LoadCompressedObjectPic
	ldrh r2, [r6, 0xC]
	cmp r2, r4
	bne _081AF3DC
	ldr r0, =gUnknown_086142A8
	ldrb r1, [r6, 0xE]
	lsls r1, 20
	movs r2, 0x80
	lsls r2, 17
	adds r1, r2
	lsrs r1, 16
	movs r2, 0x20
	bl LoadPalette
	b _081AF3EE
	.pool
_081AF3DC:
	ldr r0, =gUnknown_086142A8
	str r0, [sp, 0xC]
	add r0, sp, 0xC
	ldr r1, [r0, 0x4]
	ands r1, r5
	orrs r1, r2
	str r1, [r0, 0x4]
	bl LoadSpritePalette
_081AF3EE:
	ldr r0, =Task_ScrollIndicatorArrowPair
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	lsls r0, 2
	add r0, r8
	lsls r0, 3
	ldr r1, =gTasks + 0x8
	adds r7, r0, r1
	movs r0, 0
	strb r0, [r7]
	mov r0, r9
	str r0, [r7, 0x4]
	ldrh r0, [r6, 0x6]
	strh r0, [r7, 0x8]
	ldrh r0, [r6, 0x8]
	strh r0, [r7, 0xA]
	ldrh r0, [r6, 0xA]
	strh r0, [r7, 0xE]
	ldrh r0, [r6, 0xC]
	strh r0, [r7, 0x10]
	ldrb r0, [r6]
	ldrb r1, [r6, 0x1]
	ldrb r2, [r6, 0x2]
	ldrh r3, [r6, 0xA]
	ldrh r4, [r6, 0xC]
	str r4, [sp]
	bl AddScrollIndicatorArrowObject
	strb r0, [r7, 0xC]
	ldrb r0, [r6, 0x3]
	ldrb r1, [r6, 0x4]
	ldrb r2, [r6, 0x5]
	ldrh r3, [r6, 0xA]
	ldrh r4, [r6, 0xC]
	str r4, [sp]
	bl AddScrollIndicatorArrowObject
	strb r0, [r7, 0xD]
	ldrh r1, [r6, 0xC]
	ldr r0, =0x0000ffff
	cmp r1, r0
	bne _081AF47C
	ldr r5, =gSprites
	ldrb r0, [r7, 0xC]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r5
	ldrb r3, [r6, 0xE]
	lsls r3, 4
	ldrb r4, [r1, 0x5]
	movs r2, 0xF
	adds r0, r2, 0
	ands r0, r4
	orrs r0, r3
	strb r0, [r1, 0x5]
	ldrb r1, [r7, 0xD]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r5
	ldrb r1, [r6, 0xE]
	lsls r1, 4
	ldrb r3, [r0, 0x5]
	ands r2, r3
	orrs r2, r1
	strb r2, [r0, 0x5]
_081AF47C:
	mov r0, r8
	add sp, 0x14
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end AddScrollIndicatorArrowPair

	thumb_func_start AddScrollIndicatorArrowPairParametrized
AddScrollIndicatorArrowPairParametrized: @ 81AF4A0
	push {r4,lr}
	adds r4, r1, 0
	subs r0, 0x2
	cmp r0, 0x1
	bhi _081AF4C4
	ldr r0, =gUnknown_0203CE8C
	movs r1, 0x2
	strb r1, [r0]
	strb r4, [r0, 0x1]
	strb r2, [r0, 0x2]
	movs r1, 0x3
	strb r1, [r0, 0x3]
	strb r4, [r0, 0x4]
	strb r3, [r0, 0x5]
	b _081AF4D6
	.pool
_081AF4C4:
	ldr r0, =gUnknown_0203CE8C
	movs r1, 0
	strb r1, [r0]
	strb r2, [r0, 0x1]
	strb r4, [r0, 0x2]
	movs r1, 0x1
	strb r1, [r0, 0x3]
	strb r3, [r0, 0x4]
	strb r4, [r0, 0x5]
_081AF4D6:
	adds r2, r0, 0
	movs r1, 0
	movs r0, 0
	strh r0, [r2, 0x6]
	ldr r0, [sp, 0x8]
	strh r0, [r2, 0x8]
	ldr r0, [sp, 0xC]
	strh r0, [r2, 0xA]
	ldr r0, [sp, 0x10]
	strh r0, [r2, 0xC]
	strb r1, [r2, 0xE]
	adds r0, r2, 0
	ldr r1, [sp, 0x14]
	bl AddScrollIndicatorArrowPair
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end AddScrollIndicatorArrowPairParametrized

	thumb_func_start Task_ScrollIndicatorArrowPair
Task_ScrollIndicatorArrowPair: @ 81AF504
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	ldr r0, =gTasks + 0x8
	adds r4, r1, r0
	ldr r0, [r4, 0x4]
	ldrh r5, [r0]
	ldrh r0, [r4, 0x8]
	cmp r5, r0
	bne _081AF548
	ldr r0, =0x0000ffff
	cmp r5, r0
	beq _081AF548
	ldr r3, =gSprites
	ldrb r1, [r4, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	adds r0, 0x3E
	ldrb r1, [r0]
	movs r2, 0x4
	orrs r1, r2
	b _081AF55E
	.pool
_081AF548:
	ldr r3, =gSprites
	ldrb r1, [r4, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	adds r0, 0x3E
	ldrb r2, [r0]
	movs r1, 0x5
	negs r1, r1
	ands r1, r2
_081AF55E:
	strb r1, [r0]
	ldrh r0, [r4, 0xA]
	cmp r5, r0
	bne _081AF580
	ldrb r1, [r4, 0xD]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	adds r0, 0x3E
	ldrb r1, [r0]
	movs r2, 0x4
	orrs r1, r2
	b _081AF594
	.pool
_081AF580:
	ldrb r1, [r4, 0xD]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	adds r0, 0x3E
	ldrb r2, [r0]
	movs r1, 0x5
	negs r1, r1
	ands r1, r2
_081AF594:
	strb r1, [r0]
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end Task_ScrollIndicatorArrowPair

	thumb_func_start Task_ScrollIndicatorArrowPairOnMainMenu
Task_ScrollIndicatorArrowPairOnMainMenu: @ 81AF59C
	push {r4,lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, r0, 2
	adds r1, r0
	lsls r1, 3
	ldr r0, =gTasks + 0x8
	adds r4, r1, r0
	movs r1, 0x1E
	ldrsh r0, [r4, r1]
	cmp r0, 0
	beq _081AF5E8
	ldr r3, =gSprites
	ldrb r1, [r4, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	adds r0, 0x3E
	ldrb r2, [r0]
	movs r1, 0x5
	negs r1, r1
	ands r1, r2
	strb r1, [r0]
	ldrb r1, [r4, 0xD]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	adds r0, 0x3E
	ldrb r1, [r0]
	movs r2, 0x4
	orrs r1, r2
	b _081AF612
	.pool
_081AF5E8:
	ldr r3, =gSprites
	ldrb r1, [r4, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	adds r0, 0x3E
	ldrb r1, [r0]
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0]
	ldrb r1, [r4, 0xD]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	adds r0, 0x3E
	ldrb r2, [r0]
	movs r1, 0x5
	negs r1, r1
	ands r1, r2
_081AF612:
	strb r1, [r0]
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end Task_ScrollIndicatorArrowPairOnMainMenu

	thumb_func_start RemoveScrollIndicatorArrowPair
RemoveScrollIndicatorArrowPair: @ 81AF620
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r0, 24
	adds r6, r0, 0
	lsls r0, r6, 2
	adds r0, r6
	lsls r0, 3
	ldr r1, =gTasks + 0x8
	adds r5, r0, r1
	ldrh r0, [r5, 0xE]
	ldr r4, =0x0000ffff
	cmp r0, r4
	beq _081AF63E
	bl FreeSpriteTilesByTag
_081AF63E:
	ldrh r0, [r5, 0x10]
	cmp r0, r4
	beq _081AF648
	bl FreeSpritePaletteByTag
_081AF648:
	ldrb r1, [r5, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r4, =gSprites
	adds r0, r4
	bl DestroySprite
	ldrb r1, [r5, 0xD]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	bl DestroySprite
	adds r0, r6, 0
	bl DestroyTask
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end RemoveScrollIndicatorArrowPair

	thumb_func_start ListMenuAddCursorObjectInternal
ListMenuAddCursorObjectInternal: @ 81AF680
	push {lr}
	cmp r1, 0
	beq _081AF68A
	cmp r1, 0x1
	beq _081AF690
_081AF68A:
	bl ListMenuAddRedOutlineCursorObject
	b _081AF694
_081AF690:
	bl ListMenuAddRedArrowCursorObject
_081AF694:
	lsls r0, 24
	lsrs r0, 24
	pop {r1}
	bx r1
	thumb_func_end ListMenuAddCursorObjectInternal

	thumb_func_start ListMenuUpdateCursorObject
@ void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 a4)
ListMenuUpdateCursorObject: @ 81AF69C
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 16
	lsrs r1, 16
	lsls r2, 16
	lsrs r2, 16
	cmp r3, 0
	beq _081AF6B4
	cmp r3, 0x1
	beq _081AF6BA
	b _081AF6BE
_081AF6B4:
	bl ListMenuUpdateRedOutlineCursorObject
	b _081AF6BE
_081AF6BA:
	bl ListMenuUpdateRedArrowCursorObject
_081AF6BE:
	pop {r0}
	bx r0
	thumb_func_end ListMenuUpdateCursorObject

	thumb_func_start ListMenuRemoveCursorObject
ListMenuRemoveCursorObject: @ 81AF6C4
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	cmp r1, 0
	beq _081AF6D4
	cmp r1, 0x1
	beq _081AF6DA
	b _081AF6DE
_081AF6D4:
	bl ListMenuRemoveRedOutlineCursorObject
	b _081AF6DE
_081AF6DA:
	bl ListMenuRemoveRedArrowCursorObject
_081AF6DE:
	pop {r0}
	bx r0
	thumb_func_end ListMenuRemoveCursorObject

	thumb_func_start Task_RedOutlineCursor
Task_RedOutlineCursor: @ 81AF6E4
	bx lr
	thumb_func_end Task_RedOutlineCursor

	thumb_func_start ListMenuGetRedOutlineCursorSpriteCount
ListMenuGetRedOutlineCursorSpriteCount: @ 81AF6E8
	push {lr}
	lsls r0, 16
	lsrs r0, 16
	lsls r1, 16
	lsrs r1, 16
	movs r3, 0x4
	cmp r0, 0x10
	bls _081AF708
	movs r2, 0x8
	subs r0, 0x8
	cmp r2, r0
	bge _081AF708
_081AF700:
	adds r3, 0x2
	adds r2, 0x8
	cmp r2, r0
	blt _081AF700
_081AF708:
	cmp r1, 0x10
	bls _081AF71C
	movs r2, 0x8
	subs r1, 0x8
	cmp r2, r1
	bge _081AF71C
_081AF714:
	adds r3, 0x2
	adds r2, 0x8
	cmp r2, r1
	blt _081AF714
_081AF71C:
	lsls r0, r3, 24
	lsrs r0, 24
	pop {r1}
	bx r1
	thumb_func_end ListMenuGetRedOutlineCursorSpriteCount

	thumb_func_start ListMenuSetUpRedOutlineCursorSpriteOamTable
ListMenuSetUpRedOutlineCursorSpriteOamTable: @ 81AF724
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	adds r3, r2, 0
	lsls r0, 16
	lsrs r0, 16
	mov r8, r0
	lsls r1, 16
	lsrs r1, 16
	mov r9, r1
	ldr r0, =gUnknown_0861425C
	ldr r0, [r0]
	str r0, [r3]
	movs r1, 0x88
	strb r1, [r3]
	strb r1, [r3, 0x1]
	ldr r0, =gUnknown_08614260
	ldr r0, [r0]
	str r0, [r3, 0x4]
	mov r2, r8
	adds r2, 0x80
	strb r2, [r3, 0x4]
	strb r1, [r3, 0x5]
	ldr r0, =gUnknown_08614274
	ldr r0, [r0]
	str r0, [r3, 0x8]
	strb r1, [r3, 0x8]
	mov r4, r9
	adds r4, 0x80
	strb r4, [r3, 0x9]
	ldr r0, =gUnknown_08614278
	ldr r0, [r0]
	str r0, [r3, 0xC]
	strb r2, [r3, 0xC]
	strb r4, [r3, 0xD]
	movs r0, 0x4
	mov r12, r0
	mov r2, r8
	cmp r2, 0x10
	bls _081AF7B8
	movs r2, 0x8
	mov r5, r8
	subs r5, 0x8
	cmp r2, r5
	bge _081AF7B8
	ldr r0, =gUnknown_08614264
	ldr r0, [r0]
	str r0, [sp]
	ldr r0, =gUnknown_08614270
	ldr r6, [r0]
	adds r1, r3, 0
	adds r1, 0x10
	movs r7, 0x88
	mov r10, r7
_081AF796:
	ldr r0, [sp]
	str r0, [r1]
	adds r0, r2, 0
	subs r0, 0x78
	strb r0, [r1]
	mov r7, r10
	strb r7, [r1, 0x1]
	adds r1, 0x4
	str r6, [r1]
	strb r0, [r1]
	strb r4, [r1, 0x1]
	adds r1, 0x4
	movs r0, 0x2
	add r12, r0
	adds r2, 0x8
	cmp r2, r5
	blt _081AF796
_081AF7B8:
	mov r2, r9
	cmp r2, 0x10
	bls _081AF7F6
	movs r1, 0x8
	mov r4, r9
	subs r4, 0x8
	cmp r1, r4
	bge _081AF7F6
	ldr r0, =gUnknown_08614268
	ldr r6, [r0]
	ldr r0, =gUnknown_0861426C
	ldr r5, [r0]
	mov r7, r12
	lsls r0, r7, 2
	adds r2, r0, r3
	movs r7, 0x88
	mov r3, r8
	adds r3, 0x80
_081AF7DC:
	str r6, [r2]
	strb r7, [r2]
	adds r0, r1, 0
	subs r0, 0x78
	strb r0, [r2, 0x1]
	adds r2, 0x4
	str r5, [r2]
	strb r3, [r2]
	strb r0, [r2, 0x1]
	adds r2, 0x4
	adds r1, 0x8
	cmp r1, r4
	blt _081AF7DC
_081AF7F6:
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.pool
	thumb_func_end ListMenuSetUpRedOutlineCursorSpriteOamTable

	thumb_func_start ListMenuAddRedOutlineCursorObject
ListMenuAddRedOutlineCursorObject: @ 81AF828
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x28
	adds r6, r0, 0
	ldr r0, =gUnknown_08614338
	str r0, [sp, 0x18]
	ldr r5, =0xffff0000
	add r0, sp, 0x18
	ldr r1, [r0, 0x4]
	ands r1, r5
	movs r2, 0x80
	lsls r2, 1
	orrs r1, r2
	ldrh r2, [r6, 0x6]
	lsls r2, 16
	ldr r3, =0x0000ffff
	ands r1, r3
	orrs r1, r2
	str r1, [r0, 0x4]
	bl LoadCompressedObjectPic
	ldrh r2, [r6, 0x8]
	ldr r7, =0x0000ffff
	cmp r2, r7
	bne _081AF884
	ldr r0, =gUnknown_086142A8
	ldrb r1, [r6, 0xA]
	lsls r1, 20
	movs r2, 0x80
	lsls r2, 17
	adds r1, r2
	lsrs r1, 16
	movs r2, 0x20
	bl LoadPalette
	b _081AF896
	.pool
_081AF884:
	ldr r0, =gUnknown_086142A8
	str r0, [sp, 0x20]
	add r0, sp, 0x20
	ldr r1, [r0, 0x4]
	ands r1, r5
	orrs r1, r2
	str r1, [r0, 0x4]
	bl LoadSpritePalette
_081AF896:
	ldr r0, =Task_RedOutlineCursor
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	adds r4, r0, 0
	lsls r0, r4, 2
	adds r0, r4
	lsls r0, 3
	ldr r1, =gTasks + 0x8
	adds r5, r0, r1
	ldrh r0, [r6, 0x6]
	movs r3, 0
	mov r8, r3
	strh r0, [r5, 0xE]
	ldrh r0, [r6, 0x8]
	strh r0, [r5, 0x10]
	ldrh r0, [r6, 0x2]
	ldrh r1, [r6, 0x4]
	bl ListMenuGetRedOutlineCursorSpriteCount
	strb r0, [r5]
	ldrb r0, [r5]
	lsls r0, 2
	bl Alloc
	adds r2, r0, 0
	str r2, [r5, 0x8]
	str r2, [r5, 0x4]
	ldrh r0, [r6, 0x2]
	ldrh r1, [r6, 0x4]
	bl ListMenuSetUpRedOutlineCursorSpriteOamTable
	mov r1, sp
	ldr r0, =gDummySpriteTemplate
	ldm r0!, {r2,r3,r7}
	stm r1!, {r2,r3,r7}
	ldm r0!, {r2,r3,r7}
	stm r1!, {r2,r3,r7}
	mov r1, sp
	ldrh r0, [r6, 0x6]
	strh r0, [r1]
	ldrh r0, [r6, 0x8]
	strh r0, [r1, 0x2]
	ldrb r1, [r6]
	adds r1, 0x78
	ldrb r2, [r6, 0x1]
	adds r2, 0x78
	mov r0, sp
	movs r3, 0
	bl CreateSprite
	strb r0, [r5, 0xC]
	ldrb r1, [r5, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r7, =gSprites
	adds r0, r7
	adds r1, r5, 0
	bl SetSubspriteTables
	ldrb r0, [r5, 0xC]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r7
	ldrb r2, [r1, 0x5]
	movs r0, 0xD
	negs r0, r0
	ands r0, r2
	strb r0, [r1, 0x5]
	ldrb r1, [r5, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r7
	adds r0, 0x43
	mov r1, r8
	strb r1, [r0]
	ldrb r1, [r5, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r7
	adds r0, 0x42
	ldrb r2, [r0]
	movs r1, 0x40
	negs r1, r1
	ands r1, r2
	strb r1, [r0]
	ldrh r1, [r6, 0x8]
	ldr r0, =0x0000ffff
	cmp r1, r0
	bne _081AF96E
	ldrb r0, [r5, 0xC]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r7
	ldrb r2, [r6, 0xA]
	lsls r2, 4
	ldrb r3, [r1, 0x5]
	movs r0, 0xF
	ands r0, r3
	orrs r0, r2
	strb r0, [r1, 0x5]
_081AF96E:
	adds r0, r4, 0
	add sp, 0x28
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end ListMenuAddRedOutlineCursorObject

	thumb_func_start ListMenuUpdateRedOutlineCursorObject
@ void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y)
ListMenuUpdateRedOutlineCursorObject: @ 81AF994
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 16
	lsrs r1, 16
	lsls r2, 16
	lsrs r2, 16
	lsls r3, r0, 2
	adds r3, r0
	lsls r3, 3
	ldr r0, =gTasks + 0x8
	adds r3, r0
	ldr r5, =gSprites
	ldrb r4, [r3, 0xC]
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	adds r0, r5
	adds r1, 0x78
	strh r1, [r0, 0x20]
	ldrb r1, [r3, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r5
	adds r2, 0x78
	strh r2, [r0, 0x22]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end ListMenuUpdateRedOutlineCursorObject

	thumb_func_start ListMenuRemoveRedOutlineCursorObject
ListMenuRemoveRedOutlineCursorObject: @ 81AF9D8
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r0, 24
	adds r5, r0, 0
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	ldr r1, =gTasks + 0x8
	adds r4, r0, r1
	ldr r0, [r4, 0x8]
	bl Free
	ldrh r0, [r4, 0xE]
	ldr r6, =0x0000ffff
	cmp r0, r6
	beq _081AF9FC
	bl FreeSpriteTilesByTag
_081AF9FC:
	ldrh r0, [r4, 0x10]
	cmp r0, r6
	beq _081AFA06
	bl FreeSpritePaletteByTag
_081AFA06:
	ldrb r1, [r4, 0xC]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	adds r0, r5, 0
	bl DestroyTask
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end ListMenuRemoveRedOutlineCursorObject

	thumb_func_start ObjectCB_RedArrowCursor
ObjectCB_RedArrowCursor: @ 81AFA30
	push {lr}
	adds r2, r0, 0
	ldr r1, =gSineTable
	ldrh r3, [r2, 0x2E]
	lsls r0, r3, 24
	lsrs r0, 23
	adds r0, r1
	movs r1, 0
	ldrsh r0, [r0, r1]
	cmp r0, 0
	bge _081AFA48
	adds r0, 0x3F
_081AFA48:
	asrs r0, 6
	strh r0, [r2, 0x24]
	adds r0, r3, 0
	adds r0, 0x8
	strh r0, [r2, 0x2E]
	pop {r0}
	bx r0
	.pool
	thumb_func_end ObjectCB_RedArrowCursor

	thumb_func_start Task_RedArrowCursor
Task_RedArrowCursor: @ 81AFA5C
	bx lr
	thumb_func_end Task_RedArrowCursor

	thumb_func_start ListMenuAddRedArrowCursorObject
ListMenuAddRedArrowCursorObject: @ 81AFA60
	push {r4-r7,lr}
	sub sp, 0x28
	adds r5, r0, 0
	ldr r0, =gUnknown_08614378
	str r0, [sp, 0x18]
	ldr r6, =0xffff0000
	add r0, sp, 0x18
	ldr r1, [r0, 0x4]
	ands r1, r6
	movs r2, 0x80
	orrs r1, r2
	ldrh r2, [r5, 0x6]
	lsls r2, 16
	ldr r4, =0x0000ffff
	ands r1, r4
	orrs r1, r2
	str r1, [r0, 0x4]
	bl LoadCompressedObjectPic
	ldrh r2, [r5, 0x8]
	cmp r2, r4
	bne _081AFAB4
	ldr r0, =gUnknown_086142A8
	ldrb r1, [r5, 0xA]
	lsls r1, 20
	movs r2, 0x80
	lsls r2, 17
	adds r1, r2
	lsrs r1, 16
	movs r2, 0x20
	bl LoadPalette
	b _081AFAC6
	.pool
_081AFAB4:
	ldr r0, =gUnknown_086142A8
	str r0, [sp, 0x20]
	add r0, sp, 0x20
	ldr r1, [r0, 0x4]
	ands r1, r6
	orrs r1, r2
	str r1, [r0, 0x4]
	bl LoadSpritePalette
_081AFAC6:
	ldr r0, =Task_RedArrowCursor
	movs r1, 0
	bl CreateTask
	lsls r0, 24
	lsrs r0, 24
	adds r6, r0, 0
	lsls r0, r6, 2
	adds r0, r6
	lsls r0, 3
	ldr r1, =gTasks + 0x8
	adds r4, r0, r1
	ldrh r0, [r5, 0x6]
	strh r0, [r4, 0x2]
	ldrh r0, [r5, 0x8]
	strh r0, [r4, 0x4]
	mov r1, sp
	ldr r0, =gUnknown_08614290
	ldm r0!, {r2,r3,r7}
	stm r1!, {r2,r3,r7}
	ldm r0!, {r2,r3,r7}
	stm r1!, {r2,r3,r7}
	mov r1, sp
	ldrh r0, [r5, 0x6]
	strh r0, [r1]
	ldrh r0, [r5, 0x8]
	strh r0, [r1, 0x2]
	ldrb r1, [r5]
	ldrb r2, [r5, 0x1]
	mov r0, sp
	movs r3, 0
	bl CreateSprite
	strb r0, [r4]
	ldr r3, =gSprites
	ldrb r1, [r4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	movs r2, 0x8
	strh r2, [r0, 0x24]
	ldrb r1, [r4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	strh r2, [r0, 0x26]
	ldrh r1, [r5, 0x8]
	ldr r0, =0x0000ffff
	cmp r1, r0
	bne _081AFB46
	ldrb r0, [r4]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r3
	ldrb r2, [r5, 0xA]
	lsls r2, 4
	ldrb r3, [r1, 0x5]
	movs r0, 0xF
	ands r0, r3
	orrs r0, r2
	strb r0, [r1, 0x5]
_081AFB46:
	adds r0, r6, 0
	add sp, 0x28
	pop {r4-r7}
	pop {r1}
	bx r1
	.pool
	thumb_func_end ListMenuAddRedArrowCursorObject

	thumb_func_start ListMenuUpdateRedArrowCursorObject
@ void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y)
ListMenuUpdateRedArrowCursorObject: @ 81AFB68
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r3, r0, 2
	adds r3, r0
	lsls r3, 3
	ldr r0, =gTasks + 0x8
	adds r3, r0
	ldr r5, =gSprites
	ldrb r4, [r3]
	lsls r0, r4, 4
	adds r0, r4
	lsls r0, 2
	adds r0, r5
	strh r1, [r0, 0x20]
	ldrb r1, [r3]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r5
	strh r2, [r0, 0x22]
	pop {r4,r5}
	pop {r0}
	bx r0
	.pool
	thumb_func_end ListMenuUpdateRedArrowCursorObject

	thumb_func_start ListMenuRemoveRedArrowCursorObject
ListMenuRemoveRedArrowCursorObject: @ 81AFBA0
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r0, 24
	adds r5, r0, 0
	lsls r0, r5, 2
	adds r0, r5
	lsls r0, 3
	ldr r1, =gTasks + 0x8
	adds r4, r0, r1
	ldrh r0, [r4, 0x2]
	ldr r6, =0x0000ffff
	cmp r0, r6
	beq _081AFBBE
	bl FreeSpriteTilesByTag
_081AFBBE:
	ldrh r0, [r4, 0x4]
	cmp r0, r6
	beq _081AFBC8
	bl FreeSpritePaletteByTag
_081AFBC8:
	ldrb r1, [r4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	bl DestroySprite
	adds r0, r5, 0
	bl DestroyTask
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end ListMenuRemoveRedArrowCursorObject

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