summaryrefslogtreecommitdiff
path: root/asm/list_menu.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/list_menu.s')
-rwxr-xr-xasm/list_menu.s1643
1 files changed, 1643 insertions, 0 deletions
diff --git a/asm/list_menu.s b/asm/list_menu.s
new file mode 100755
index 000000000..5e6da159e
--- /dev/null
+++ b/asm/list_menu.s
@@ -0,0 +1,1643 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start ListMenuDummyTask
+@ void ListMenuDummyTask(u8 taskId)
+ListMenuDummyTask: @ 81AE458
+ bx lr
+ thumb_func_end ListMenuDummyTask
+
+ thumb_func_start DoMysteryGiftListMenu
+@ int DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, int a3, int a4, int a5)
+DoMysteryGiftListMenu: @ 81AE45C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ mov r12, r0
+ str r1, [sp]
+ ldr r0, [sp, 0x28]
+ lsls r2, 24
+ lsrs r6, r2, 24
+ mov r10, r6
+ lsls r3, 16
+ lsrs r7, r3, 16
+ str r7, [sp, 0x4]
+ lsls r0, 16
+ mov r8, r0
+ lsrs r0, 16
+ mov r9, r0
+ ldr r5, =gUnknown_0203CE84
+ ldrb r4, [r5, 0x4]
+ cmp r4, 0x1
+ beq _081AE4F4
+ cmp r4, 0x1
+ ble _081AE492
+ cmp r4, 0x2
+ beq _081AE558
+_081AE492:
+ mov r0, r12
+ bl AddWindow
+ strb r0, [r5, 0x5]
+ cmp r6, 0x1
+ beq _081AE4B0
+ cmp r6, 0x2
+ bne _081AE4C0
+ ldrb r0, [r5, 0x5]
+ mov r1, r9
+ lsls r2, r1, 24
+ lsrs r2, 24
+ adds r1, r7, 0
+ bl sub_809882C
+_081AE4B0:
+ ldrb r0, [r5, 0x5]
+ mov r3, r8
+ lsrs r2, r3, 20
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, [sp, 0x4]
+ bl sub_8098858
+_081AE4C0:
+ ldr r0, =gUnknown_03006310
+ adds r2, r0, 0
+ ldr r1, [sp]
+ ldm r1!, {r3-r5}
+ stm r2!, {r3-r5}
+ ldm r1!, {r3-r5}
+ stm r2!, {r3-r5}
+ ldr r4, =gUnknown_0203CE84
+ ldrb r1, [r4, 0x5]
+ strb r1, [r0, 0x10]
+ movs r1, 0
+ movs r2, 0
+ bl ListMenuInit
+ strb r0, [r4, 0x6]
+ ldrb r0, [r4, 0x5]
+ movs r1, 0x1
+ bl CopyWindowToVram
+ movs r0, 0x1
+ strb r0, [r4, 0x4]
+ b _081AE570
+ .pool
+_081AE4F4:
+ ldrb r0, [r5, 0x6]
+ bl ListMenuHandleInput
+ str r0, [r5]
+ ldr r1, =gMain
+ ldrh r0, [r1, 0x2E]
+ ands r4, r0
+ cmp r4, 0
+ beq _081AE50A
+ movs r0, 0x2
+ strb r0, [r5, 0x4]
+_081AE50A:
+ ldrh r1, [r1, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _081AE51E
+ movs r0, 0x2
+ negs r0, r0
+ str r0, [r5]
+ movs r0, 0x2
+ strb r0, [r5, 0x4]
+_081AE51E:
+ ldrb r0, [r5, 0x4]
+ cmp r0, 0x2
+ bne _081AE570
+ cmp r6, 0
+ bne _081AE534
+ ldrb r0, [r5, 0x5]
+ bl ClearWindowTilemap
+ b _081AE546
+ .pool
+_081AE534:
+ mov r4, r10
+ cmp r4, 0
+ blt _081AE546
+ cmp r4, 0x2
+ bgt _081AE546
+ ldrb r0, [r5, 0x5]
+ movs r1, 0
+ bl sub_819746C
+_081AE546:
+ ldr r0, =gUnknown_0203CE84
+ ldrb r0, [r0, 0x5]
+ movs r1, 0x1
+ bl CopyWindowToVram
+ b _081AE570
+ .pool
+_081AE558:
+ ldrb r0, [r5, 0x6]
+ movs r1, 0
+ movs r2, 0
+ bl sub_81AE6C8
+ ldrb r0, [r5, 0x5]
+ bl RemoveWindow
+ movs r0, 0
+ strb r0, [r5, 0x4]
+ ldr r0, [r5]
+ b _081AE574
+_081AE570:
+ movs r0, 0x1
+ negs r0, r0
+_081AE574:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end DoMysteryGiftListMenu
+
+ thumb_func_start ListMenuInit
+@ u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow)
+ListMenuInit: @ 81AE584
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ bl ListMenuInitInternal
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r5, 0x10]
+ bl PutWindowTilemap
+ ldrb r0, [r5, 0x10]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ adds r0, r4, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end ListMenuInit
+
+ thumb_func_start Unused_ListMenuInit2
+@ u8 Unused_ListMenuInit2(struct ListMenuTemplate *listMenuTemplate, int a2, u16 scrollOffset, u16 selectedRow)
+Unused_ListMenuInit2: @ 81AE5B0
+ push {r4-r7,lr}
+ sub sp, 0x8
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r1, r2, 0
+ adds r2, r3, 0
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ bl ListMenuInitInternal
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r4, 0x4]
+ cmp r0, 0xFF
+ beq _081AE5F0
+ adds r5, r4, 0
+_081AE5D4:
+ ldrb r0, [r6, 0x10]
+ ldrb r1, [r5]
+ ldrb r2, [r5, 0x1]
+ ldrb r3, [r5, 0x2]
+ ldrb r4, [r5, 0x3]
+ str r4, [sp]
+ ldrb r4, [r5, 0x4]
+ str r4, [sp, 0x4]
+ bl PutWindowRectTilemapOverridePalette
+ adds r5, 0x8
+ ldrb r0, [r5, 0x4]
+ cmp r0, 0xFF
+ bne _081AE5D4
+_081AE5F0:
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ adds r0, r7, 0
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end Unused_ListMenuInit2
+
+ thumb_func_start ListMenuHandleInput
+@ int ListMenuHandleInput(u8 taskId)
+ListMenuHandleInput: @ 81AE604
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, =gTasks + 0x8
+ adds r3, r1, r0
+ ldr r2, =gMain
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _081AE638
+ ldrh r0, [r3, 0x18]
+ ldrh r1, [r3, 0x1A]
+ adds r0, r1
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ b _081AE6C2
+ .pool
+_081AE638:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _081AE646
+ movs r0, 0x2
+ negs r0, r0
+ b _081AE6C2
+_081AE646:
+ ldrh r1, [r2, 0x30]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _081AE65A
+ adds r0, r3, 0
+ movs r1, 0x1
+ movs r2, 0x1
+ movs r3, 0
+ b _081AE6BA
+_081AE65A:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _081AE66A
+ adds r0, r3, 0
+ movs r1, 0x1
+ movs r2, 0x1
+ b _081AE6B8
+_081AE66A:
+ ldrb r0, [r3, 0x16]
+ lsrs r0, 6
+ cmp r0, 0x1
+ beq _081AE680
+ cmp r0, 0x1
+ ble _081AE67A
+ cmp r0, 0x2
+ beq _081AE68C
+_081AE67A:
+ movs r2, 0
+ movs r0, 0
+ b _081AE6A0
+_081AE680:
+ movs r0, 0x20
+ ands r0, r1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ movs r0, 0x10
+ b _081AE69A
+_081AE68C:
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ movs r0, 0x80
+ lsls r0, 1
+_081AE69A:
+ ands r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+_081AE6A0:
+ cmp r2, 0
+ beq _081AE6AE
+ ldrb r2, [r3, 0xE]
+ adds r0, r3, 0
+ movs r1, 0x1
+ movs r3, 0
+ b _081AE6BA
+_081AE6AE:
+ cmp r0, 0
+ beq _081AE6BE
+ ldrb r2, [r3, 0xE]
+ adds r0, r3, 0
+ movs r1, 0x1
+_081AE6B8:
+ movs r3, 0x1
+_081AE6BA:
+ bl ListMenuChangeSelection
+_081AE6BE:
+ movs r0, 0x1
+ negs r0, r0
+_081AE6C2:
+ pop {r1}
+ bx r1
+ thumb_func_end ListMenuHandleInput
+
+ thumb_func_start sub_81AE6C8
+sub_81AE6C8: @ 81AE6C8
+ push {r4,lr}
+ adds r3, r1, 0
+ 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 r1, r0, r1
+ cmp r3, 0
+ beq _081AE6E4
+ ldrh r0, [r1, 0x18]
+ strh r0, [r3]
+_081AE6E4:
+ cmp r2, 0
+ beq _081AE6EC
+ ldrh r0, [r1, 0x1A]
+ strh r0, [r2]
+_081AE6EC:
+ ldrb r0, [r1, 0x1E]
+ cmp r0, 0xFF
+ beq _081AE6FC
+ ldrb r1, [r1, 0x17]
+ lsrs r1, 6
+ subs r1, 0x2
+ bl ListMenuRemoveCursorObject
+_081AE6FC:
+ adds r0, r4, 0
+ bl DestroyTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81AE6C8
+
+ thumb_func_start sub_81AE70C
+sub_81AE70C: @ 81AE70C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, =gTasks + 0x8
+ adds r4, r0
+ ldrb r0, [r4, 0x10]
+ ldrb r2, [r4, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ bl FillWindowPixelBuffer
+ ldrh r1, [r4, 0x18]
+ ldrh r3, [r4, 0xE]
+ adds r0, r4, 0
+ movs r2, 0
+ bl ListMenuPrintEntries
+ adds r0, r4, 0
+ bl ListMenuDrawCursor
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81AE70C
+
+ thumb_func_start sub_81AE750
+sub_81AE750: @ 81AE750
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, =gTasks + 0x8
+ adds r4, r0
+ lsrs r1, 20
+ ldrb r6, [r4, 0x14]
+ movs r5, 0xF
+ adds r0, r5, 0
+ ands r0, r6
+ orrs r0, r1
+ strb r0, [r4, 0x14]
+ ands r2, r5
+ ldrb r1, [r4, 0x15]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r2
+ lsrs r3, 20
+ ands r0, r5
+ orrs r0, r3
+ strb r0, [r4, 0x15]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81AE750
+
+ thumb_func_start sub_81AE794
+sub_81AE794: @ 81AE794
+ push {r4,r5,lr}
+ adds r3, r1, 0
+ adds r5, r2, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, =gTasks + 0x8
+ adds r4, r0
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x1
+ adds r2, r3, 0
+ bl SetWindowAttribute
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x2
+ adds r2, r5, 0
+ bl SetWindowAttribute
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81AE794
+
+ thumb_func_start sub_81AE7D0
+sub_81AE7D0: @ 81AE7D0
+ push {r4-r7,lr}
+ sub sp, 0x20
+ mov r12, r2
+ ldr r5, [sp, 0x34]
+ lsls r3, 16
+ lsrs r3, 16
+ adds r4, r3, 0
+ mov r3, sp
+ ldm r0!, {r2,r6,r7}
+ stm r3!, {r2,r6,r7}
+ ldm r0!, {r2,r6,r7}
+ stm r3!, {r2,r6,r7}
+ mov r0, sp
+ movs r3, 0
+ strh r1, [r0, 0x18]
+ mov r1, r12
+ strh r1, [r0, 0x1A]
+ strb r3, [r0, 0x1C]
+ strb r3, [r0, 0x1D]
+ cmp r4, 0x40
+ bne _081AE804
+ movs r1, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl ListMenuChangeSelection
+_081AE804:
+ cmp r4, 0x80
+ bne _081AE814
+ mov r0, sp
+ movs r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl ListMenuChangeSelection
+_081AE814:
+ cmp r5, 0
+ beq _081AE81E
+ mov r0, sp
+ ldrh r0, [r0, 0x18]
+ strh r0, [r5]
+_081AE81E:
+ ldr r2, [sp, 0x38]
+ cmp r2, 0
+ beq _081AE82A
+ mov r0, sp
+ ldrh r0, [r0, 0x1A]
+ strh r0, [r2]
+_081AE82A:
+ movs r0, 0x1
+ negs r0, r0
+ add sp, 0x20
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81AE7D0
+
+ thumb_func_start sub_81AE838
+sub_81AE838: @ 81AE838
+ push {lr}
+ adds r2, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, =gTasks + 0x8
+ adds r1, r0
+ cmp r2, 0
+ beq _081AE856
+ ldrh r0, [r1, 0x1A]
+ ldrh r1, [r1, 0x18]
+ adds r0, r1
+ strh r0, [r2]
+_081AE856:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81AE838
+
+ thumb_func_start get_coro_args_x18_x1A
+get_coro_args_x18_x1A: @ 81AE860
+ push {lr}
+ adds r3, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, =gTasks + 0x8
+ adds r1, r0
+ cmp r3, 0
+ beq _081AE87A
+ ldrh r0, [r1, 0x18]
+ strh r0, [r3]
+_081AE87A:
+ cmp r2, 0
+ beq _081AE882
+ ldrh r0, [r1, 0x1A]
+ strh r0, [r2]
+_081AE882:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end get_coro_args_x18_x1A
+
+ thumb_func_start ListMenuGetYCoordForPrintingArrowCursor
+@ u8 ListMenuGetYCoordForPrintingArrowCursor(u8 taskId)
+ListMenuGetYCoordForPrintingArrowCursor: @ 81AE88C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, =gTasks + 0x8
+ adds r4, r0
+ ldrb r0, [r4, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl GetFontAttribute
+ ldrb r1, [r4, 0x16]
+ lsls r1, 26
+ lsrs r1, 29
+ adds r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x1A]
+ adds r2, r1, 0
+ muls r2, r0
+ adds r1, r2, 0
+ ldrb r0, [r4, 0x14]
+ lsls r0, 28
+ lsrs r0, 28
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end ListMenuGetYCoordForPrintingArrowCursor
+
+ thumb_func_start ListMenuInitInternal
+@ u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow)
+ListMenuInitInternal: @ 81AE8D4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ lsls r5, 16
+ lsrs r5, 16
+ lsls r6, 16
+ lsrs r6, 16
+ ldr r0, =ListMenuDummyTask
+ 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
+ adds r0, r7, 0
+ ldm r4!, {r1-r3}
+ stm r0!, {r1-r3}
+ ldm r4!, {r1-r3}
+ stm r0!, {r1-r3}
+ movs r1, 0
+ strh r5, [r7, 0x18]
+ strh r6, [r7, 0x1A]
+ strb r1, [r7, 0x1C]
+ strb r1, [r7, 0x1D]
+ movs r0, 0xFF
+ strb r0, [r7, 0x1E]
+ strb r1, [r7, 0x1F]
+ ldr r3, =gUnknown_03006300
+ ldrb r1, [r7, 0x14]
+ movs r5, 0xF
+ lsrs r1, 4
+ ldrb r4, [r3]
+ movs r2, 0x10
+ negs r2, r2
+ adds r0, r2, 0
+ ands r0, r4
+ orrs r0, r1
+ strb r0, [r3]
+ ldrb r1, [r7, 0x15]
+ lsls r1, 28
+ lsrs r1, 24
+ ands r0, r5
+ orrs r0, r1
+ strb r0, [r3]
+ ldrb r0, [r7, 0x15]
+ lsrs r0, 4
+ ands r5, r0
+ ldrb r0, [r3, 0x1]
+ ands r2, r0
+ orrs r2, r5
+ strb r2, [r3, 0x1]
+ ldrb r1, [r7, 0x16]
+ lsls r1, 29
+ lsrs r1, 17
+ ldr r0, [r3]
+ ldr r2, =0xfffc0fff
+ ands r0, r2
+ orrs r0, r1
+ str r0, [r3]
+ ldrb r0, [r7, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ strb r0, [r3, 0x3]
+ ldrh r0, [r7, 0xC]
+ ldrh r1, [r7, 0xE]
+ cmp r0, r1
+ bcs _081AE96C
+ strh r0, [r7, 0xE]
+_081AE96C:
+ ldrb r0, [r7, 0x10]
+ ldrb r2, [r7, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ bl FillWindowPixelBuffer
+ ldrh r1, [r7, 0x18]
+ ldrh r3, [r7, 0xE]
+ adds r0, r7, 0
+ movs r2, 0
+ bl ListMenuPrintEntries
+ adds r0, r7, 0
+ bl ListMenuDrawCursor
+ adds r0, r7, 0
+ movs r1, 0x1
+ bl ListMenuCallSelectionChangedCallback
+ mov r0, r8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end ListMenuInitInternal
+
+ thumb_func_start ListMenuPrint
+@ void ListMenuPrint(struct ListMenu *listMenu, u8 *str, u8 x, u8 y)
+ListMenuPrint: @ 81AE9B4
+ push {r4-r7,lr}
+ sub sp, 0x18
+ adds r4, r0, 0
+ adds r6, r1, 0
+ lsls r2, 24
+ lsrs r7, r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ mov r12, r3
+ ldr r5, =gUnknown_03006300
+ ldrb r1, [r5, 0x3]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0
+ beq _081AEA20
+ add r1, sp, 0x14
+ ldr r2, [r5]
+ lsls r0, r2, 24
+ lsrs r0, 28
+ movs r3, 0
+ strb r0, [r1]
+ lsls r0, r2, 28
+ lsrs r0, 28
+ strb r0, [r1, 0x1]
+ lsls r0, r2, 20
+ lsrs r0, 28
+ strb r0, [r1, 0x2]
+ ldrb r0, [r4, 0x10]
+ lsls r1, r2, 1
+ lsrs r1, 25
+ lsls r2, 14
+ lsrs r2, 26
+ str r2, [sp]
+ str r3, [sp, 0x4]
+ add r2, sp, 0x14
+ str r2, [sp, 0x8]
+ movs r2, 0x1
+ negs r2, r2
+ str r2, [sp, 0xC]
+ str r6, [sp, 0x10]
+ adds r2, r7, 0
+ mov r3, r12
+ bl AddTextPrinterParametrized2
+ ldrb r1, [r5, 0x3]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r5, 0x3]
+ b _081AEA5E
+ .pool
+_081AEA20:
+ add r2, sp, 0x14
+ ldrb r1, [r4, 0x15]
+ lsls r0, r1, 28
+ lsrs r0, 28
+ strb r0, [r2]
+ ldrb r0, [r4, 0x14]
+ lsrs r0, 4
+ strb r0, [r2, 0x1]
+ adds r0, r2, 0
+ lsls r1, 24
+ lsrs r1, 28
+ strb r1, [r0, 0x2]
+ ldrb r0, [r4, 0x10]
+ ldrb r1, [r4, 0x17]
+ lsls r1, 26
+ lsrs r1, 26
+ ldrb r2, [r4, 0x16]
+ lsls r2, 29
+ lsrs r2, 29
+ str r2, [sp]
+ str r3, [sp, 0x4]
+ add r2, sp, 0x14
+ str r2, [sp, 0x8]
+ movs r2, 0x1
+ negs r2, r2
+ str r2, [sp, 0xC]
+ str r6, [sp, 0x10]
+ adds r2, r7, 0
+ mov r3, r12
+ bl AddTextPrinterParametrized2
+_081AEA5E:
+ add sp, 0x18
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end ListMenuPrint
+
+ thumb_func_start ListMenuPrintEntries
+@ void ListMenuPrintEntries(struct ListMenu *listMenu, u16 startIndex, u16 yOffset, u16 count)
+ListMenuPrintEntries: @ 81AEA68
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r9, r1
+ lsls r2, 16
+ lsrs r2, 16
+ str r2, [sp]
+ lsls r3, 16
+ lsrs r3, 16
+ mov r10, r3
+ ldrb r0, [r4, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl GetFontAttribute
+ ldrb r1, [r4, 0x16]
+ lsls r1, 26
+ lsrs r1, 29
+ adds r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ movs r0, 0
+ mov r8, r0
+ cmp r8, r10
+ bge _081AEB10
+_081AEAAA:
+ ldr r0, [r4]
+ mov r2, r9
+ lsls r1, r2, 3
+ adds r0, r1, r0
+ ldr r2, [r0, 0x4]
+ movs r0, 0x3
+ negs r0, r0
+ adds r5, r1, 0
+ cmp r2, r0
+ beq _081AEAC2
+ ldrb r6, [r4, 0x12]
+ b _081AEAC4
+_081AEAC2:
+ ldrb r6, [r4, 0x11]
+_081AEAC4:
+ ldr r0, [sp]
+ add r0, r8
+ ldr r2, [sp, 0x4]
+ adds r1, r0, 0
+ muls r1, r2
+ ldrb r0, [r4, 0x14]
+ lsls r0, 28
+ lsrs r0, 28
+ adds r0, r1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ adds r7, r2, 0
+ ldr r3, [r4, 0x8]
+ cmp r3, 0
+ beq _081AEAEE
+ ldrb r0, [r4, 0x10]
+ ldr r1, [r4]
+ adds r1, r5, r1
+ ldr r1, [r1, 0x4]
+ bl _call_via_r3
+_081AEAEE:
+ ldr r0, [r4]
+ adds r0, r5, r0
+ ldr r1, [r0]
+ adds r0, r4, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl ListMenuPrint
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ movs r0, 0x1
+ add r8, r0
+ cmp r8, r10
+ blt _081AEAAA
+_081AEB10:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end ListMenuPrintEntries
+
+ thumb_func_start ListMenuDrawCursor
+@ void ListMenuDrawCursor(struct ListMenu *listMenu)
+ListMenuDrawCursor: @ 81AEB20
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ ldrb r0, [r6, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl GetFontAttribute
+ ldrb r1, [r6, 0x16]
+ lsls r1, 26
+ lsrs r1, 29
+ adds r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r6, 0x13]
+ mov r8, r1
+ ldrh r1, [r6, 0x1A]
+ muls r1, r0
+ ldrb r0, [r6, 0x14]
+ lsls r0, 28
+ lsrs r0, 28
+ adds r0, r1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r6, 0x17]
+ lsrs r0, 6
+ cmp r0, 0x1
+ beq _081AEC0C
+ cmp r0, 0x1
+ bgt _081AEB66
+ cmp r0, 0
+ beq _081AEB70
+ b _081AEC0C
+_081AEB66:
+ cmp r0, 0x2
+ beq _081AEB84
+ cmp r0, 0x3
+ beq _081AEBCC
+ b _081AEC0C
+_081AEB70:
+ ldr r1, =gText_SelectorArrow2
+ adds r0, r6, 0
+ mov r2, r8
+ adds r3, r7, 0
+ bl ListMenuPrint
+ b _081AEC0C
+ .pool
+_081AEB84:
+ ldrb r0, [r6, 0x1E]
+ cmp r0, 0xFF
+ bne _081AEB94
+ adds r0, r6, 0
+ movs r1, 0
+ bl ListMenuAddCursorObject
+ strb r0, [r6, 0x1E]
+_081AEB94:
+ ldrb r5, [r6, 0x1E]
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x1
+ bl GetWindowAttribute
+ adds r4, r0, 0
+ lsls r4, 19
+ ldr r0, =0xffff0000
+ adds r4, r0
+ lsrs r4, 16
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x2
+ bl GetWindowAttribute
+ adds r2, r0, 0
+ lsls r2, 3
+ adds r2, r7
+ subs r2, 0x1
+ lsls r2, 16
+ lsrs r2, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r3, 0
+ bl ListMenuUpdateCursorObject
+ b _081AEC0C
+ .pool
+_081AEBCC:
+ ldrb r0, [r6, 0x1E]
+ cmp r0, 0xFF
+ bne _081AEBDC
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl ListMenuAddCursorObject
+ strb r0, [r6, 0x1E]
+_081AEBDC:
+ ldrb r5, [r6, 0x1E]
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x1
+ bl GetWindowAttribute
+ adds r4, r0, 0
+ lsls r4, 3
+ add r4, r8
+ lsls r4, 16
+ lsrs r4, 16
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x2
+ bl GetWindowAttribute
+ adds r2, r0, 0
+ lsls r2, 3
+ adds r2, r7
+ lsls r2, 16
+ lsrs r2, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r3, 0x1
+ bl ListMenuUpdateCursorObject
+_081AEC0C:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end ListMenuDrawCursor
+
+ thumb_func_start ListMenuAddCursorObject
+ListMenuAddCursorObject: @ 81AEC18
+ push {r4,r5,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ adds r5, r1, 0
+ mov r1, sp
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0xA0
+ strb r0, [r1, 0x1]
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x3
+ bl GetWindowAttribute
+ mov r1, sp
+ lsls r0, 3
+ adds r0, 0x2
+ strh r0, [r1, 0x2]
+ ldrb r0, [r4, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl GetFontAttribute
+ mov r1, sp
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x2
+ strh r0, [r1, 0x4]
+ movs r0, 0x80
+ lsls r0, 7
+ strh r0, [r1, 0x6]
+ ldr r0, =0x0000ffff
+ strh r0, [r1, 0x8]
+ movs r0, 0xF
+ strb r0, [r1, 0xA]
+ mov r0, sp
+ adds r1, r5, 0
+ bl ListMenuAddCursorObjectInternal
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end ListMenuAddCursorObject
+
+ thumb_func_start ListMenuErasePrintedCursor
+ListMenuErasePrintedCursor: @ 81AEC78
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ adds r7, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ ldrb r1, [r7, 0x17]
+ lsrs r0, r1, 6
+ cmp r0, 0
+ bne _081AECF4
+ lsls r0, r1, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl GetFontAttribute
+ adds r4, r0, 0
+ ldrb r0, [r7, 0x16]
+ lsls r0, 26
+ lsrs r0, 29
+ adds r4, r0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r7, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0
+ bl GetMenuCursorDimensionByFont
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldrb r0, [r7, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl GetMenuCursorDimensionByFont
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r6, [r7, 0x10]
+ ldrb r2, [r7, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ ldrb r2, [r7, 0x13]
+ mov r3, r8
+ muls r3, r4
+ adds r4, r3, 0
+ ldrb r3, [r7, 0x14]
+ lsls r3, 28
+ lsrs r3, 28
+ adds r3, r4
+ lsls r3, 16
+ lsrs r3, 16
+ str r5, [sp]
+ str r0, [sp, 0x4]
+ adds r0, r6, 0
+ bl FillWindowPixelRect
+_081AECF4:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end ListMenuErasePrintedCursor
+
+ thumb_func_start ListMenuUpdateSelectedRowIndexAndScrollOffset
+@ u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(int, bool8 movingDown)
+ListMenuUpdateSelectedRowIndexAndScrollOffset: @ 81AED00
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ ldrh r3, [r4, 0x1A]
+ ldrh r5, [r4, 0x18]
+ cmp r1, 0
+ bne _081AED74
+ ldrh r0, [r4, 0xE]
+ cmp r0, 0x1
+ bne _081AED18
+ movs r2, 0
+ b _081AED2A
+_081AED18:
+ ldrh r0, [r4, 0xE]
+ lsrs r2, r0, 1
+ movs r1, 0x1
+ ands r1, r0
+ adds r2, r1
+ subs r0, r2
+ subs r0, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+_081AED2A:
+ cmp r5, 0
+ bne _081AED50
+ cmp r3, 0
+ beq _081AEDB6
+ ldr r1, [r4]
+ movs r2, 0x3
+ negs r2, r2
+_081AED38:
+ subs r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r0, r5, r3
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ cmp r0, r2
+ bne _081AEDBA
+ cmp r3, 0
+ bne _081AED38
+ b _081AEDB6
+_081AED50:
+ cmp r3, r2
+ bls _081AED70
+ ldr r1, [r4]
+ movs r6, 0x3
+ negs r6, r6
+_081AED5A:
+ subs r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r0, r5, r3
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ cmp r0, r6
+ bne _081AEDBA
+ cmp r3, r2
+ bhi _081AED5A
+_081AED70:
+ subs r0, r5, 0x1
+ b _081AEDE2
+_081AED74:
+ ldrh r0, [r4, 0xE]
+ cmp r0, 0x1
+ bne _081AED7E
+ movs r2, 0
+ b _081AED88
+_081AED7E:
+ ldrh r0, [r4, 0xE]
+ lsrs r2, r0, 1
+ movs r1, 0x1
+ ands r1, r0
+ adds r2, r1
+_081AED88:
+ adds r1, r0, 0
+ ldrh r0, [r4, 0xC]
+ subs r0, r1
+ cmp r5, r0
+ bne _081AEDC0
+ subs r0, r1, 0x1
+ cmp r3, r0
+ bge _081AEDB6
+ ldr r2, [r4]
+ movs r6, 0x3
+ negs r6, r6
+ adds r1, r0, 0
+_081AEDA0:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r0, r5, r3
+ lsls r0, 3
+ adds r0, r2
+ ldr r0, [r0, 0x4]
+ cmp r0, r6
+ bne _081AEDBA
+ cmp r3, r1
+ blt _081AEDA0
+_081AEDB6:
+ movs r0, 0
+ b _081AEDE8
+_081AEDBA:
+ strh r3, [r4, 0x1A]
+ movs r0, 0x1
+ b _081AEDE8
+_081AEDC0:
+ cmp r3, r2
+ bcs _081AEDE0
+ ldr r1, [r4]
+ movs r6, 0x3
+ negs r6, r6
+_081AEDCA:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r0, r5, r3
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ cmp r0, r6
+ bne _081AEDBA
+ cmp r3, r2
+ bcc _081AEDCA
+_081AEDE0:
+ adds r0, r5, 0x1
+_081AEDE2:
+ strh r2, [r4, 0x1A]
+ strh r0, [r4, 0x18]
+ movs r0, 0x2
+_081AEDE8:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end ListMenuUpdateSelectedRowIndexAndScrollOffset
+
+ thumb_func_start ListMenuScroll
+@ void ListMenuScroll(struct ListMenu *listMenu, int a2, bool8 movingDown)
+ListMenuScroll: @ 81AEDF0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ adds r7, r5, 0
+ lsls r2, 24
+ lsrs r2, 24
+ mov r8, r2
+ ldrh r0, [r6, 0xE]
+ cmp r5, r0
+ bcc _081AEE2A
+ ldrb r0, [r6, 0x10]
+ ldrb r2, [r6, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ bl FillWindowPixelBuffer
+ ldrh r1, [r6, 0x18]
+ ldrh r3, [r6, 0xE]
+ adds r0, r6, 0
+ movs r2, 0
+ bl ListMenuPrintEntries
+ b _081AEF1A
+_081AEE2A:
+ ldrb r0, [r6, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl GetFontAttribute
+ ldrb r1, [r6, 0x16]
+ lsls r1, 26
+ lsrs r1, 29
+ adds r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r1, r8
+ cmp r1, 0
+ bne _081AEEBC
+ ldrb r0, [r6, 0x10]
+ adds r2, r5, 0
+ muls r2, r4
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r1, [r6, 0x15]
+ lsls r1, 28
+ lsrs r3, r1, 4
+ orrs r3, r1
+ lsrs r3, 24
+ movs r1, 0x1
+ bl ScrollWindow
+ ldrh r1, [r6, 0x18]
+ adds r0, r6, 0
+ movs r2, 0
+ adds r3, r5, 0
+ bl ListMenuPrintEntries
+ ldrh r0, [r6, 0xE]
+ adds r1, r0, 0
+ muls r1, r4
+ adds r0, r1, 0
+ ldrb r4, [r6, 0x14]
+ lsls r4, 28
+ lsrs r4, 28
+ adds r4, r0
+ lsls r4, 16
+ lsrs r4, 16
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x3
+ bl GetWindowAttribute
+ adds r5, r0, 0
+ lsls r5, 19
+ lsrs r5, 16
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x4
+ bl GetWindowAttribute
+ lsls r0, 3
+ subs r0, r4
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r3, [r6, 0x10]
+ ldrb r2, [r6, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ str r5, [sp]
+ str r0, [sp, 0x4]
+ adds r0, r3, 0
+ movs r2, 0
+ adds r3, r4, 0
+ bl FillWindowPixelRect
+ b _081AEF1A
+_081AEEBC:
+ ldrb r0, [r6, 0x10]
+ adds r2, r7, 0
+ muls r2, r4
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r1, [r6, 0x15]
+ lsls r1, 28
+ lsrs r3, r1, 4
+ orrs r3, r1
+ lsrs r3, 24
+ movs r1, 0
+ bl ScrollWindow
+ ldrh r2, [r6, 0xE]
+ subs r2, r7
+ ldrh r1, [r6, 0x18]
+ adds r1, r2
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ adds r0, r6, 0
+ adds r3, r7, 0
+ bl ListMenuPrintEntries
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x3
+ bl GetWindowAttribute
+ lsls r0, 19
+ lsrs r0, 16
+ ldrb r3, [r6, 0x10]
+ ldrb r2, [r6, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ str r0, [sp]
+ ldrb r0, [r6, 0x14]
+ lsls r0, 28
+ lsrs r0, 28
+ str r0, [sp, 0x4]
+ adds r0, r3, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillWindowPixelRect
+_081AEF1A:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end ListMenuScroll
+
+ thumb_func_start ListMenuChangeSelection
+@ bool8 ListMenuChangeSelection(struct ListMenu *listMenu, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown)
+ListMenuChangeSelection: @ 81AEF28
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r8, r2
+ lsls r3, 24
+ lsrs r3, 24
+ mov r9, r3
+ ldrh r0, [r4, 0x1A]
+ mov r10, r0
+ movs r7, 0
+ movs r5, 0
+ movs r0, 0
+ cmp r7, r8
+ bcs _081AEF90
+_081AEF56:
+ adds r6, r0, 0x1
+ b _081AEF76
+_081AEF5A:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrh r0, [r4, 0x18]
+ ldrh r1, [r4, 0x1A]
+ adds r0, r1
+ ldr r1, [r4]
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, [r0, 0x4]
+ movs r0, 0x3
+ negs r0, r0
+ cmp r1, r0
+ bne _081AEF88
+_081AEF76:
+ adds r0, r4, 0
+ mov r1, r9
+ bl ListMenuUpdateSelectedRowIndexAndScrollOffset
+ lsls r0, 24
+ lsrs r0, 24
+ orrs r5, r0
+ cmp r0, 0x2
+ beq _081AEF5A
+_081AEF88:
+ lsls r0, r6, 24
+ lsrs r0, 24
+ cmp r0, r8
+ bcc _081AEF56
+_081AEF90:
+ ldr r0, [sp]
+ cmp r0, 0
+ beq _081AEFEE
+ cmp r5, 0x1
+ beq _081AEFA6
+ cmp r5, 0x1
+ ble _081AEFA2
+ cmp r5, 0x3
+ ble _081AEFC6
+_081AEFA2:
+ movs r0, 0x1
+ b _081AEFF0
+_081AEFA6:
+ adds r0, r4, 0
+ mov r1, r10
+ bl ListMenuErasePrintedCursor
+ adds r0, r4, 0
+ bl ListMenuDrawCursor
+ adds r0, r4, 0
+ movs r1, 0
+ bl ListMenuCallSelectionChangedCallback
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ b _081AEFEE
+_081AEFC6:
+ adds r0, r4, 0
+ mov r1, r10
+ bl ListMenuErasePrintedCursor
+ adds r0, r4, 0
+ adds r1, r7, 0
+ mov r2, r9
+ bl ListMenuScroll
+ adds r0, r4, 0
+ bl ListMenuDrawCursor
+ adds r0, r4, 0
+ movs r1, 0
+ bl ListMenuCallSelectionChangedCallback
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x2
+ bl CopyWindowToVram
+_081AEFEE:
+ movs r0, 0
+_081AEFF0:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end ListMenuChangeSelection
+
+ thumb_func_start ListMenuCallSelectionChangedCallback
+@ void ListMenuCallSelectionChangedCallback(struct ListMenu *listMenu, u8 a2)
+ListMenuCallSelectionChangedCallback: @ 81AF000
+ push {r4,lr}
+ adds r2, r0, 0
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldr r3, [r2, 0x4]
+ cmp r3, 0
+ beq _081AF022
+ ldrh r0, [r2, 0x18]
+ ldrh r1, [r2, 0x1A]
+ adds r0, r1
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ adds r1, r4, 0
+ bl _call_via_r3
+_081AF022:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end ListMenuCallSelectionChangedCallback
+
+ thumb_func_start sub_81AF028
+sub_81AF028: @ 81AF028
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r6, =gUnknown_03006300
+ movs r5, 0xF
+ ands r0, r5
+ ldrb r3, [r6]
+ mov r8, r3
+ movs r4, 0x10
+ negs r4, r4
+ adds r3, r4, 0
+ mov r7, r8
+ ands r3, r7
+ orrs r3, r0
+ lsrs r1, 20
+ ands r3, r5
+ orrs r3, r1
+ strb r3, [r6]
+ ands r2, r5
+ ldrb r0, [r6, 0x1]
+ ands r4, r0
+ orrs r4, r2
+ strb r4, [r6, 0x1]
+ ldrb r0, [r6, 0x3]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r6, 0x3]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81AF028
+
+ thumb_func_start sub_81AF078
+sub_81AF078: @ 81AF078
+ push {lr}
+ lsls r1, 24
+ cmp r1, 0
+ bne _081AF086
+ movs r0, 0x5
+ bl PlaySE
+_081AF086:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81AF078
+
+ .align 2, 0 @ Don't pad with nop.