summaryrefslogtreecommitdiff
path: root/asm/dodrio_berry_picking.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/dodrio_berry_picking.s')
-rw-r--r--asm/dodrio_berry_picking.s11411
1 files changed, 11411 insertions, 0 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
new file mode 100644
index 000000000..160208493
--- /dev/null
+++ b/asm/dodrio_berry_picking.s
@@ -0,0 +1,11411 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_81507FC
+sub_81507FC: @ 81507FC
+ push {r4-r6,lr}
+ adds r5, r1, 0
+ lsls r0, 16
+ lsrs r6, r0, 16
+ ldr r1, _081508A4 @ =gUnknown_3002044
+ movs r0, 0
+ str r0, [r1]
+ ldr r0, _081508A8 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _081508CC
+ ldr r4, _081508AC @ =gUnknown_203F3E0
+ ldr r0, _081508B0 @ =0x00003330
+ bl AllocZeroed
+ str r0, [r4]
+ cmp r0, 0
+ beq _081508CC
+ bl sub_81508D8
+ ldr r0, [r4]
+ bl sub_81508EC
+ ldr r0, [r4]
+ str r5, [r0]
+ bl GetMultiplayerId
+ ldr r1, [r4]
+ adds r1, 0x28
+ strb r0, [r1]
+ ldr r1, [r4]
+ ldr r2, _081508B4 @ =0x000032cc
+ adds r0, r1, r2
+ adds r2, r1, 0
+ adds r2, 0x28
+ ldrb r3, [r2]
+ lsls r2, r3, 4
+ subs r2, r3
+ lsls r2, 2
+ adds r1, r2
+ ldr r2, _081508B8 @ =0x000031a0
+ adds r1, r2
+ movs r2, 0x3C
+ bl memcpy
+ ldr r0, [r4]
+ adds r1, r0, 0
+ adds r1, 0x28
+ ldrb r1, [r1]
+ lsls r1, 2
+ ldr r2, _081508BC @ =0x0000318c
+ adds r1, r2
+ adds r0, r1
+ movs r1, 0x64
+ muls r1, r6
+ ldr r2, _081508C0 @ =gPlayerParty
+ adds r1, r2
+ bl sub_8152048
+ ldr r0, _081508C4 @ =sub_8150A84
+ movs r1, 0x1
+ bl CreateTask
+ ldr r0, _081508C8 @ =sub_815201C
+ bl SetMainCallback2
+ bl sub_8153150
+ ldr r2, [r4]
+ adds r0, r2, 0
+ adds r0, 0x24
+ ldrb r0, [r0]
+ adds r1, r2, 0
+ adds r1, 0x44
+ adds r2, 0x48
+ bl sub_81529A4
+ bl StopMapMusic
+ movs r0, 0xA5
+ lsls r0, 1
+ bl PlayNewMapMusic
+ b _081508D2
+ .align 2, 0
+_081508A4: .4byte gUnknown_3002044
+_081508A8: .4byte gReceivedRemoteLinkPlayers
+_081508AC: .4byte gUnknown_203F3E0
+_081508B0: .4byte 0x00003330
+_081508B4: .4byte 0x000032cc
+_081508B8: .4byte 0x000031a0
+_081508BC: .4byte 0x0000318c
+_081508C0: .4byte gPlayerParty
+_081508C4: .4byte sub_8150A84
+_081508C8: .4byte sub_815201C
+_081508CC:
+ adds r0, r5, 0
+ bl SetMainCallback2
+_081508D2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81507FC
+
+ thumb_func_start sub_81508D8
+sub_81508D8: @ 81508D8
+ push {lr}
+ bl ResetTasks
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81508D8
+
+ thumb_func_start sub_81508EC
+sub_81508EC: @ 81508EC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x28
+ adds r2, r0, 0
+ movs r0, 0
+ strb r0, [r2, 0xC]
+ strb r0, [r2, 0x10]
+ strb r0, [r2, 0x14]
+ strb r0, [r2, 0x18]
+ strb r0, [r2, 0x1C]
+ movs r3, 0x8E
+ lsls r3, 1
+ adds r1, r2, r3
+ str r0, [r1]
+ movs r7, 0x90
+ lsls r7, 1
+ adds r1, r2, r7
+ str r0, [r1]
+ adds r1, r2, 0
+ adds r1, 0x30
+ strb r0, [r1]
+ adds r1, 0x10
+ strb r0, [r1]
+ subs r1, 0x4
+ strb r0, [r1]
+ adds r3, 0x10
+ adds r1, r2, r3
+ str r0, [r1]
+ movs r5, 0
+ adds r1, r2, 0
+ adds r1, 0x98
+ movs r3, 0
+_08150932:
+ adds r0, r1, r5
+ strb r3, [r0]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3
+ bls _08150932
+ movs r5, 0
+ adds r7, r2, 0
+ adds r7, 0xA8
+ str r7, [sp]
+ adds r0, r2, 0
+ adds r0, 0xB0
+ str r0, [sp, 0xC]
+ movs r1, 0x4A
+ adds r1, r2
+ mov r10, r1
+ movs r3, 0x4C
+ adds r3, r2
+ mov r9, r3
+ movs r7, 0x4E
+ adds r7, r2
+ mov r12, r7
+ subs r0, 0x60
+ str r0, [sp, 0x24]
+ adds r6, r2, 0
+ adds r6, 0x54
+ adds r1, r2, 0
+ adds r1, 0xD0
+ str r1, [sp, 0x1C]
+ adds r3, r2, 0
+ adds r3, 0xDC
+ str r3, [sp, 0x20]
+ adds r7, r2, 0
+ adds r7, 0xC4
+ str r7, [sp, 0x14]
+ adds r0, 0xA4
+ str r0, [sp, 0x4]
+ adds r1, 0x25
+ str r1, [sp, 0x8]
+ subs r3, 0xBC
+ str r3, [sp, 0x10]
+ movs r7, 0x24
+ adds r7, r2
+ mov r8, r7
+ subs r0, 0xC0
+ str r0, [sp, 0x18]
+ movs r3, 0
+ movs r1, 0x86
+ lsls r1, 1
+ adds r4, r2, r1
+ movs r7, 0x98
+ lsls r7, 1
+ adds r2, r7
+_0815099E:
+ ldr r1, [sp]
+ adds r0, r1, r5
+ strb r3, [r0]
+ ldr r7, [sp, 0xC]
+ adds r0, r7, r5
+ strb r3, [r0]
+ lsls r0, r5, 1
+ adds r0, r5
+ lsls r0, 2
+ mov r7, r10
+ adds r1, r7, r0
+ strh r3, [r1]
+ mov r7, r9
+ adds r1, r7, r0
+ strh r3, [r1]
+ mov r7, r12
+ adds r1, r7, r0
+ strh r3, [r1]
+ ldr r7, [sp, 0x24]
+ adds r1, r7, r0
+ strh r3, [r1]
+ adds r0, r6, r0
+ strh r3, [r0]
+ adds r0, r4, r5
+ strb r3, [r0]
+ lsls r0, r5, 2
+ adds r0, r2, r0
+ str r3, [r0]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x4
+ bls _0815099E
+ movs r5, 0
+ movs r3, 0
+ movs r4, 0xFF
+ ldr r6, [sp, 0x1C]
+_081509E8:
+ adds r0, r6, r5
+ strb r3, [r0]
+ ldr r1, [sp, 0x20]
+ adds r0, r1, r5
+ strb r3, [r0]
+ ldr r7, [sp, 0x14]
+ adds r0, r7, r5
+ strb r3, [r0]
+ lsls r1, r5, 1
+ ldr r0, [sp, 0x4]
+ adds r2, r0, r1
+ ldrb r0, [r2]
+ orrs r0, r4
+ strb r0, [r2]
+ ldr r7, [sp, 0x8]
+ adds r1, r7, r1
+ ldrb r0, [r1]
+ orrs r0, r4
+ strb r0, [r1]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xA
+ bls _081509E8
+ bl GetMultiplayerId
+ movs r1, 0
+ lsls r0, 24
+ cmp r0, 0
+ bne _08150A26
+ movs r1, 0x1
+_08150A26:
+ ldr r0, [sp, 0x10]
+ strb r1, [r0]
+ bl GetLinkPlayerCount
+ mov r1, r8
+ strb r0, [r1]
+ bl GetMultiplayerId
+ ldr r3, [sp, 0x18]
+ strb r0, [r3]
+ movs r5, 0x1
+ mov r7, r8
+ ldrb r7, [r7]
+ cmp r5, r7
+ bcs _08150A72
+ ldr r7, [sp, 0x18]
+ mov r6, r8
+_08150A48:
+ adds r4, r7, r5
+ subs r0, r5, 0x1
+ adds r0, r7, r0
+ ldrb r0, [r0]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldrb r2, [r4]
+ ldrb r1, [r6]
+ subs r0, r1, 0x1
+ cmp r2, r0
+ ble _08150A66
+ adds r0, r2, 0
+ bl __umodsi3
+ strb r0, [r4]
+_08150A66:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrb r0, [r6]
+ cmp r5, r0
+ bcc _08150A48
+_08150A72:
+ add sp, 0x28
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81508EC
+
+ thumb_func_start sub_8150A84
+sub_8150A84: @ 8150A84
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r0, _08150AA4 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ ldrb r0, [r0, 0xC]
+ cmp r0, 0x7
+ bls _08150A98
+ b _08150BF0
+_08150A98:
+ lsls r0, 2
+ ldr r1, _08150AA8 @ =_08150AAC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08150AA4: .4byte gUnknown_203F3E0
+_08150AA8: .4byte _08150AAC
+ .align 2, 0
+_08150AAC:
+ .4byte _08150ACC
+ .4byte _08150AE0
+ .4byte _08150B08
+ .4byte _08150B16
+ .4byte _08150B3C
+ .4byte _08150B90
+ .4byte _08150BA2
+ .4byte _08150BCC
+_08150ACC:
+ movs r0, 0
+ bl SetVBlankCallback
+ ldr r0, _08150ADC @ =sub_8151750
+ movs r1, 0x4
+ bl sub_815205C
+ b _08150BDC
+ .align 2, 0
+_08150ADC: .4byte sub_8151750
+_08150AE0:
+ ldr r0, _08150B00 @ =sub_8151750
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ beq _08150AEE
+ b _08150BFC
+_08150AEE:
+ ldr r4, _08150B04 @ =gUnknown_203F3E0
+ ldr r0, [r4]
+ movs r1, 0xB0
+ lsls r1, 1
+ adds r0, r1
+ bl sub_8154968
+ ldr r1, [r4]
+ b _08150BE0
+ .align 2, 0
+_08150B00: .4byte sub_8151750
+_08150B04: .4byte gUnknown_203F3E0
+_08150B08:
+ bl sub_8155E68
+ cmp r0, 0
+ bne _08150BFC
+ bl sub_80FA42C
+ b _08150BDC
+_08150B16:
+ bl sub_800A4BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08150BFC
+ ldr r0, _08150B38 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08150BDC
+ bl sub_80FCEA8
+ movs r0, 0
+ movs r1, 0
+ bl sub_80FCD74
+ b _08150BDC
+ .align 2, 0
+_08150B38: .4byte gReceivedRemoteLinkPlayers
+_08150B3C:
+ ldr r0, _08150B88 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x24
+ ldrb r5, [r0]
+ bl sub_8153A9C
+ movs r4, 0
+ cmp r4, r5
+ bcs _08150B76
+_08150B4E:
+ ldr r0, _08150B88 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x34
+ adds r0, r4
+ ldrb r2, [r0]
+ lsls r0, r2, 2
+ ldr r3, _08150B8C @ =0x0000318c
+ adds r0, r3
+ adds r0, r1, r0
+ adds r1, 0x24
+ ldrb r3, [r1]
+ adds r1, r4, 0
+ bl sub_8153AFC
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _08150B4E
+_08150B76:
+ ldr r4, _08150B88 @ =gUnknown_203F3E0
+ ldr r0, [r4]
+ adds r0, 0x24
+ ldrb r1, [r0]
+ movs r0, 0
+ bl sub_8153D80
+ ldr r1, [r4]
+ b _08150BE0
+ .align 2, 0
+_08150B88: .4byte gUnknown_203F3E0
+_08150B8C: .4byte 0x0000318c
+_08150B90:
+ bl sub_8154128
+ bl sub_815417C
+ bl sub_8154438
+ bl sub_8153E28
+ b _08150BDC
+_08150BA2:
+ movs r4, 0x1
+ negs r4, r4
+ adds r0, r4, 0
+ movs r1, 0x10
+ movs r2, 0
+ bl BlendPalettes
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ ldr r0, _08150BC8 @ =sub_8152034
+ bl SetVBlankCallback
+ b _08150BDC
+ .align 2, 0
+_08150BC8: .4byte sub_8152034
+_08150BCC:
+ bl UpdatePaletteFade
+ ldr r0, _08150BE8 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _08150BFC
+_08150BDC:
+ ldr r0, _08150BEC @ =gUnknown_203F3E0
+ ldr r1, [r0]
+_08150BE0:
+ ldrb r0, [r1, 0xC]
+ adds r0, 0x1
+ strb r0, [r1, 0xC]
+ b _08150BFC
+ .align 2, 0
+_08150BE8: .4byte gPaletteFade
+_08150BEC: .4byte gUnknown_203F3E0
+_08150BF0:
+ adds r0, r1, 0
+ bl DestroyTask
+ ldr r0, _08150C04 @ =sub_81516DC
+ bl sub_815206C
+_08150BFC:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08150C04: .4byte sub_81516DC
+ thumb_func_end sub_8150A84
+
+ thumb_func_start sub_8150C08
+sub_8150C08: @ 8150C08
+ push {lr}
+ bl sub_8151B54
+ ldr r1, _08150C34 @ =gUnknown_8475578
+ ldr r0, _08150C38 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x18]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, _08150C3C @ =gUnknown_3002044
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08150C2C
+ bl sub_815293C
+_08150C2C:
+ bl sub_8151BA0
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08150C34: .4byte gUnknown_8475578
+_08150C38: .4byte gUnknown_203F3E0
+_08150C3C: .4byte gUnknown_3002044
+ thumb_func_end sub_8150C08
+
+ thumb_func_start sub_8150C40
+sub_8150C40: @ 8150C40
+ push {lr}
+ bl sub_8151C5C
+ ldr r1, _08150C6C @ =gUnknown_84755A8
+ ldr r0, _08150C70 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x18]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, _08150C74 @ =gUnknown_3002044
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08150C64
+ bl sub_8152970
+_08150C64:
+ bl sub_8151D28
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08150C6C: .4byte gUnknown_84755A8
+_08150C70: .4byte gUnknown_203F3E0
+_08150C74: .4byte gUnknown_3002044
+ thumb_func_end sub_8150C40
+
+ thumb_func_start sub_8150C78
+sub_8150C78: @ 8150C78
+ push {r4,lr}
+ ldr r4, _08150C8C @ =gUnknown_203F3E0
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x10]
+ cmp r0, 0
+ beq _08150C90
+ cmp r0, 0x1
+ beq _08150CA6
+ b _08150CB4
+ .align 2, 0
+_08150C8C: .4byte gUnknown_203F3E0
+_08150C90:
+ movs r0, 0x1
+ bl sub_8153BF8
+ movs r0, 0x1
+ bl sub_81549D4
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _08150CB4
+_08150CA6:
+ bl sub_8155E68
+ cmp r0, 0
+ bne _08150CB4
+ movs r0, 0x1
+ bl sub_8152090
+_08150CB4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8150C78
+
+ thumb_func_start sub_8150CBC
+sub_8150CBC: @ 8150CBC
+ push {r4,lr}
+ ldr r4, _08150CD8 @ =gUnknown_203F3E0
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x10]
+ cmp r0, 0
+ bne _08150CDC
+ bl sub_8152110
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _08150CEC
+ .align 2, 0
+_08150CD8: .4byte gUnknown_203F3E0
+_08150CDC:
+ movs r0, 0x8C
+ lsls r0, 1
+ adds r1, r0
+ movs r0, 0x1
+ str r0, [r1]
+ movs r0, 0x2
+ bl sub_8152090
+_08150CEC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8150CBC
+
+ thumb_func_start sub_8150CF4
+sub_8150CF4: @ 8150CF4
+ push {lr}
+ sub sp, 0x4
+ ldr r0, _08150D0C @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x10]
+ cmp r0, 0x4
+ bhi _08150D74
+ lsls r0, 2
+ ldr r1, _08150D10 @ =_08150D14
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08150D0C: .4byte gUnknown_203F3E0
+_08150D10: .4byte _08150D14
+ .align 2, 0
+_08150D14:
+ .4byte _08150D28
+ .4byte _08150D4E
+ .4byte _08150D3A
+ .4byte _08150D46
+ .4byte _08150D64
+_08150D28:
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x7
+ movs r1, 0x8
+ movs r2, 0x78
+ movs r3, 0x50
+ bl sub_815F138
+ b _08150D52
+_08150D3A:
+ bl sub_800A4BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08150D74
+ b _08150D52
+_08150D46:
+ bl sub_815F198
+ cmp r0, 0
+ bne _08150D74
+_08150D4E:
+ bl sub_80FA42C
+_08150D52:
+ ldr r0, _08150D60 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _08150D74
+ .align 2, 0
+_08150D60: .4byte gUnknown_203F3E0
+_08150D64:
+ bl sub_800A4BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08150D74
+ movs r0, 0x3
+ bl sub_8152090
+_08150D74:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8150CF4
+
+ thumb_func_start sub_8150D7C
+sub_8150D7C: @ 8150D7C
+ push {lr}
+ ldr r0, _08150DA0 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ ldrb r0, [r1, 0x10]
+ cmp r0, 0
+ bne _08150D9A
+ movs r2, 0x8E
+ lsls r2, 1
+ adds r0, r1, r2
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _08150D9A
+ movs r0, 0x4
+ bl sub_8152090
+_08150D9A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08150DA0: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8150D7C
+
+ thumb_func_start sub_8150DA4
+sub_8150DA4: @ 8150DA4
+ push {r4,lr}
+ ldr r4, _08150DE4 @ =gUnknown_203F3E0
+ ldr r2, [r4]
+ ldrb r0, [r2, 0x10]
+ cmp r0, 0
+ bne _08150E62
+ adds r0, r2, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bhi _08150E54
+ adds r0, r2, 0
+ adds r0, 0xA8
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08150E5A
+ ldr r0, _08150DE8 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08150DF4
+ ldr r1, _08150DEC @ =0x000031cc
+ adds r0, r2, r1
+ ldrb r1, [r0]
+ cmp r1, 0
+ bne _08150E5A
+ ldr r3, _08150DF0 @ =0x000031d0
+ adds r0, r2, r3
+ strb r1, [r0]
+ movs r0, 0x2
+ b _08150E2E
+ .align 2, 0
+_08150DE4: .4byte gUnknown_203F3E0
+_08150DE8: .4byte gMain
+_08150DEC: .4byte 0x000031cc
+_08150DF0: .4byte 0x000031d0
+_08150DF4:
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08150E14
+ ldr r3, _08150E10 @ =0x000031cc
+ adds r0, r2, r3
+ ldrb r1, [r0]
+ cmp r1, 0
+ bne _08150E5A
+ adds r3, 0x4
+ adds r0, r2, r3
+ strb r1, [r0]
+ movs r0, 0x1
+ b _08150E2E
+ .align 2, 0
+_08150E10: .4byte 0x000031cc
+_08150E14:
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08150E40
+ ldr r3, _08150E3C @ =0x000031cc
+ adds r0, r2, r3
+ ldrb r1, [r0]
+ cmp r1, 0
+ bne _08150E5A
+ adds r3, 0x4
+ adds r0, r2, r3
+ strb r1, [r0]
+ movs r0, 0x3
+_08150E2E:
+ bl sub_815327C
+ ldr r1, [r4]
+ ldr r2, _08150E3C @ =0x000031cc
+ adds r1, r2
+ strb r0, [r1]
+ b _08150E5A
+ .align 2, 0
+_08150E3C: .4byte 0x000031cc
+_08150E40:
+ movs r0, 0
+ bl sub_815327C
+ ldr r1, [r4]
+ ldr r3, _08150E50 @ =0x000031cc
+ adds r1, r3
+ strb r0, [r1]
+ b _08150E5A
+ .align 2, 0
+_08150E50: .4byte 0x000031cc
+_08150E54:
+ movs r0, 0xB
+ bl sub_8152090
+_08150E5A:
+ bl sub_815256C
+ bl sub_8151D98
+_08150E62:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8150DA4
+
+ thumb_func_start sub_8150E68
+sub_8150E68: @ 8150E68
+ push {lr}
+ ldr r0, _08150EA8 @ =gUnknown_203F3E0
+ ldr r2, [r0]
+ adds r0, r2, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bhi _08150F30
+ ldr r0, _08150EAC @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08150EB8
+ adds r0, r2, 0
+ adds r0, 0x28
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r2, r0
+ ldr r1, _08150EB0 @ =0x000031cc
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08150F36
+ ldr r3, _08150EB4 @ =0x000032f8
+ adds r1, r2, r3
+ movs r0, 0x2
+ strb r0, [r1]
+ b _08150F36
+ .align 2, 0
+_08150EA8: .4byte gUnknown_203F3E0
+_08150EAC: .4byte gMain
+_08150EB0: .4byte 0x000031cc
+_08150EB4: .4byte 0x000032f8
+_08150EB8:
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08150EEC
+ adds r0, r2, 0
+ adds r0, 0x28
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r2, r0
+ ldr r1, _08150EE4 @ =0x000031cc
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08150F36
+ ldr r3, _08150EE8 @ =0x000032f8
+ adds r1, r2, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ b _08150F36
+ .align 2, 0
+_08150EE4: .4byte 0x000031cc
+_08150EE8: .4byte 0x000032f8
+_08150EEC:
+ movs r0, 0x20
+ ands r0, r1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0
+ beq _08150F24
+ adds r0, r2, 0
+ adds r0, 0x28
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r2, r0
+ ldr r1, _08150F1C @ =0x000031cc
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08150F36
+ ldr r3, _08150F20 @ =0x000032f8
+ adds r1, r2, r3
+ movs r0, 0x3
+ strb r0, [r1]
+ b _08150F36
+ .align 2, 0
+_08150F1C: .4byte 0x000031cc
+_08150F20: .4byte 0x000032f8
+_08150F24:
+ ldr r3, _08150F2C @ =0x000032f8
+ adds r0, r2, r3
+ strb r1, [r0]
+ b _08150F36
+ .align 2, 0
+_08150F2C: .4byte 0x000032f8
+_08150F30:
+ movs r0, 0xB
+ bl sub_8152090
+_08150F36:
+ bl sub_8151E94
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8150E68
+
+ thumb_func_start sub_8150F40
+sub_8150F40: @ 8150F40
+ push {r4,r5,lr}
+ bl sub_815256C
+ bl sub_8151D98
+ bl sub_8152A98
+ cmp r0, 0x1
+ bne _08150F5E
+ bl sub_8153004
+ movs r0, 0x5
+ bl sub_8152090
+ b _08150FBC
+_08150F5E:
+ ldr r0, _08150F8C @ =gUnknown_203F3E0
+ ldr r2, [r0]
+ movs r1, 0x96
+ lsls r1, 1
+ adds r4, r2, r1
+ movs r1, 0x1
+ str r1, [r4]
+ movs r3, 0x1
+ adds r1, r2, 0
+ adds r1, 0x24
+ adds r5, r0, 0
+ ldrb r1, [r1]
+ cmp r3, r1
+ bcs _08150FBC
+ movs r1, 0x9A
+ lsls r1, 1
+ adds r0, r2, r1
+ ldr r0, [r0]
+ cmp r0, 0x1
+ beq _08150F90
+ movs r0, 0
+ str r0, [r4]
+ b _08150FBC
+ .align 2, 0
+_08150F8C: .4byte gUnknown_203F3E0
+_08150F90:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, [r5]
+ adds r0, r2, 0
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r3, r0
+ bcs _08150FBC
+ lsls r0, r3, 2
+ movs r4, 0x98
+ lsls r4, 1
+ adds r1, r2, r4
+ adds r1, r0
+ ldr r0, [r1]
+ cmp r0, 0x1
+ beq _08150F90
+ movs r0, 0x96
+ lsls r0, 1
+ adds r1, r2, r0
+ movs r0, 0
+ str r0, [r1]
+_08150FBC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8150F40
+
+ thumb_func_start sub_8150FC4
+sub_8150FC4: @ 8150FC4
+ push {lr}
+ bl sub_8151E94
+ bl sub_8152AD8
+ cmp r0, 0x1
+ bne _08150FD8
+ movs r0, 0x5
+ bl sub_8152090
+_08150FD8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8150FC4
+
+ thumb_func_start sub_8150FDC
+sub_8150FDC: @ 8150FDC
+ push {r4-r6,lr}
+ ldr r6, _08150FF4 @ =gUnknown_203F3E0
+ ldr r1, [r6]
+ ldrb r4, [r1, 0x10]
+ cmp r4, 0x1
+ beq _08151010
+ cmp r4, 0x1
+ bgt _08150FF8
+ cmp r4, 0
+ beq _08150FFE
+ b _08151078
+ .align 2, 0
+_08150FF4: .4byte gUnknown_203F3E0
+_08150FF8:
+ cmp r4, 0x2
+ beq _0815101E
+ b _08151078
+_08150FFE:
+ adds r1, 0x4A
+ movs r0, 0
+ movs r2, 0x3C
+ bl SendBlock
+ ldr r0, [r6]
+ strb r4, [r0, 0x8]
+ ldr r1, [r6]
+ b _0815106A
+_08151010:
+ bl sub_800A4BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08151092
+ ldr r1, [r6]
+ b _0815106A
+_0815101E:
+ bl GetBlockReceivedStatus
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ b _08151048
+_0815102A:
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _08151040
+ adds r0, r4, 0
+ bl ResetBlockReceivedFlag
+ ldr r1, [r6]
+ ldrb r0, [r1, 0x8]
+ adds r0, 0x1
+ strb r0, [r1, 0x8]
+_08151040:
+ lsrs r5, 1
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_08151048:
+ ldr r0, [r6]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _0815102A
+ ldr r3, _08151074 @ =gUnknown_203F3E0
+ ldr r2, [r3]
+ adds r1, r2, 0
+ adds r1, 0x24
+ ldrb r0, [r2, 0x8]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _08151092
+ ldrb r0, [r2, 0x14]
+ adds r0, 0x1
+ strb r0, [r2, 0x14]
+ ldr r1, [r3]
+_0815106A:
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _08151092
+ .align 2, 0
+_08151074: .4byte gUnknown_203F3E0
+_08151078:
+ movs r0, 0x1
+ bl WaitFanfare
+ lsls r0, 24
+ cmp r0, 0
+ beq _08151092
+ movs r0, 0x6
+ bl sub_8152090
+ ldr r0, _08151098 @ =0x00000137
+ movs r1, 0x4
+ bl FadeOutAndPlayNewMapMusic
+_08151092:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08151098: .4byte 0x00000137
+ thumb_func_end sub_8150FDC
+
+ thumb_func_start sub_815109C
+sub_815109C: @ 815109C
+ push {r4-r6,lr}
+ ldr r6, _081510B4 @ =gUnknown_203F3E0
+ ldr r2, [r6]
+ ldrb r4, [r2, 0x10]
+ cmp r4, 0x1
+ beq _081510DA
+ cmp r4, 0x1
+ bgt _081510B8
+ cmp r4, 0
+ beq _081510BE
+ b _08151150
+ .align 2, 0
+_081510B4: .4byte gUnknown_203F3E0
+_081510B8:
+ cmp r4, 0x2
+ beq _081510E8
+ b _08151150
+_081510BE:
+ ldrb r0, [r2, 0x14]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, 0x4A
+ adds r1, r2, r1
+ movs r0, 0
+ movs r2, 0x3C
+ bl SendBlock
+ ldr r0, [r6]
+ strb r4, [r0, 0x8]
+ ldr r1, [r6]
+ b _08151140
+_081510DA:
+ bl sub_800A4BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _0815118A
+ ldr r1, [r6]
+ b _08151140
+_081510E8:
+ bl GetBlockReceivedStatus
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ b _0815111E
+_081510F4:
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _08151116
+ ldr r0, [r6]
+ adds r0, 0x4A
+ ldr r1, _08151148 @ =gBlockRecvBuffer
+ movs r2, 0x3C
+ bl memcpy
+ adds r0, r4, 0
+ bl ResetBlockReceivedFlag
+ ldr r1, [r6]
+ ldrb r0, [r1, 0x8]
+ adds r0, 0x1
+ strb r0, [r1, 0x8]
+_08151116:
+ lsrs r5, 1
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_0815111E:
+ ldr r0, [r6]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _081510F4
+ ldr r3, _0815114C @ =gUnknown_203F3E0
+ ldr r2, [r3]
+ adds r1, r2, 0
+ adds r1, 0x24
+ ldrb r0, [r2, 0x8]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0815118A
+ ldrb r0, [r2, 0x14]
+ adds r0, 0x1
+ strb r0, [r2, 0x14]
+ ldr r1, [r3]
+_08151140:
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _0815118A
+ .align 2, 0
+_08151148: .4byte gBlockRecvBuffer
+_0815114C: .4byte gUnknown_203F3E0
+_08151150:
+ movs r0, 0x1
+ bl WaitFanfare
+ lsls r0, 24
+ cmp r0, 0
+ beq _0815118A
+ ldr r0, _08151190 @ =gUnknown_203F3E0
+ ldr r2, [r0]
+ adds r0, r2, 0
+ adds r0, 0x28
+ ldrb r0, [r0]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r0, r2, 0
+ adds r0, 0x54
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r3, 0x8A
+ lsls r3, 1
+ adds r0, r2, r3
+ strh r1, [r0]
+ movs r0, 0x6
+ bl sub_8152090
+ ldr r0, _08151194 @ =0x00000137
+ movs r1, 0x4
+ bl FadeOutAndPlayNewMapMusic
+_0815118A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08151190: .4byte gUnknown_203F3E0
+_08151194: .4byte 0x00000137
+ thumb_func_end sub_815109C
+
+ thumb_func_start sub_8151198
+sub_8151198: @ 8151198
+ push {r4-r6,lr}
+ sub sp, 0x4
+ ldr r6, _081511B0 @ =gUnknown_203F3E0
+ ldr r0, [r6]
+ ldrb r4, [r0, 0x10]
+ cmp r4, 0x1
+ beq _081511DC
+ cmp r4, 0x1
+ bgt _081511B4
+ cmp r4, 0
+ beq _081511BE
+ b _0815129C
+ .align 2, 0
+_081511B0: .4byte gUnknown_203F3E0
+_081511B4:
+ cmp r4, 0x2
+ beq _08151202
+ cmp r4, 0x3
+ beq _0815121C
+ b _0815129C
+_081511BE:
+ bl sub_81531FC
+ movs r0, 0x1
+ bl sub_81540DC
+ bl sub_81544F0
+ movs r0, 0x1
+ bl sub_81545BC
+ movs r0, 0x2
+ bl sub_81549D4
+ ldr r1, [r6]
+ b _0815128A
+_081511DC:
+ bl sub_8155E68
+ cmp r0, 0
+ bne _081512AA
+ mov r0, sp
+ strb r4, [r0]
+ movs r0, 0x5
+ bl sub_81549D4
+ bl sub_8155E8C
+ mov r1, sp
+ strb r0, [r1]
+ movs r0, 0
+ movs r2, 0x1
+ bl SendBlock
+ ldr r1, [r6]
+ b _0815128A
+_08151202:
+ bl sub_800A4BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _081512AA
+ ldr r1, [r6]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ movs r2, 0
+ strb r0, [r1, 0x10]
+ ldr r0, [r6]
+ strb r2, [r0, 0x8]
+ b _081512AA
+_0815121C:
+ bl GetBlockReceivedStatus
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ b _0815125A
+_08151228:
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _08151252
+ ldr r2, [r6]
+ adds r2, r4, r2
+ movs r0, 0x86
+ lsls r0, 1
+ adds r2, r0
+ lsls r0, r4, 8
+ ldr r1, _08151294 @ =gBlockRecvBuffer
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ adds r0, r4, 0
+ bl ResetBlockReceivedFlag
+ ldr r1, [r6]
+ ldrb r0, [r1, 0x8]
+ adds r0, 0x1
+ strb r0, [r1, 0x8]
+_08151252:
+ lsrs r5, 1
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_0815125A:
+ ldr r0, [r6]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _08151228
+ ldr r4, _08151298 @ =gUnknown_203F3E0
+ ldr r2, [r4]
+ adds r1, r2, 0
+ adds r1, 0x24
+ ldrb r0, [r2, 0x8]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _081512AA
+ ldrb r0, [r2, 0x14]
+ adds r0, 0x1
+ strb r0, [r2, 0x14]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x77
+ bls _081512AA
+ movs r0, 0x6
+ bl sub_81549D4
+ ldr r1, [r4]
+_0815128A:
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _081512AA
+ .align 2, 0
+_08151294: .4byte gBlockRecvBuffer
+_08151298: .4byte gUnknown_203F3E0
+_0815129C:
+ bl sub_8155E68
+ cmp r0, 0
+ bne _081512AA
+ movs r0, 0x7
+ bl sub_8152090
+_081512AA:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8151198
+
+ thumb_func_start sub_81512B4
+sub_81512B4: @ 81512B4
+ push {r4-r7,lr}
+ sub sp, 0x4
+ ldr r5, _081512D0 @ =gUnknown_203F3E0
+ ldr r0, [r5]
+ ldrb r0, [r0, 0x10]
+ cmp r0, 0x6
+ bls _081512C4
+ b _0815144A
+_081512C4:
+ lsls r0, 2
+ ldr r1, _081512D4 @ =_081512D8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_081512D0: .4byte gUnknown_203F3E0
+_081512D4: .4byte _081512D8
+ .align 2, 0
+_081512D8:
+ .4byte _081512F4
+ .4byte _08151314
+ .4byte _08151330
+ .4byte _08151344
+ .4byte _08151360
+ .4byte _0815138C
+ .4byte _081513AC
+_081512F4:
+ bl sub_81534AC
+ ldr r1, _0815130C @ =0x00000bb7
+ cmp r0, r1
+ bls _08151304
+ movs r0, 0x4
+ bl sub_81549D4
+_08151304:
+ ldr r0, _08151310 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ b _0815142A
+ .align 2, 0
+_0815130C: .4byte 0x00000bb7
+_08151310: .4byte gUnknown_203F3E0
+_08151314:
+ bl sub_8155E68
+ cmp r0, 0
+ beq _0815131E
+ b _08151480
+_0815131E:
+ movs r0, 0x3
+ bl sub_81549D4
+ ldr r0, _0815132C @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ b _0815142A
+ .align 2, 0
+_0815132C: .4byte gUnknown_203F3E0
+_08151330:
+ bl sub_81546C0
+ bl sub_8153048
+ ldr r0, _08151340 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ b _0815142A
+ .align 2, 0
+_08151340: .4byte gUnknown_203F3E0
+_08151344:
+ bl sub_8155E8C
+ lsls r0, 24
+ lsrs r0, 24
+ mov r1, sp
+ strb r0, [r1]
+ cmp r0, 0
+ bne _08151356
+ b _08151480
+_08151356:
+ ldr r0, _0815135C @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ b _0815142A
+ .align 2, 0
+_0815135C: .4byte gUnknown_203F3E0
+_08151360:
+ bl sub_8155E68
+ cmp r0, 0
+ beq _0815136A
+ b _08151480
+_0815136A:
+ movs r0, 0x5
+ bl sub_81549D4
+ bl sub_8155E8C
+ mov r1, sp
+ strb r0, [r1]
+ movs r0, 0
+ movs r2, 0x1
+ bl SendBlock
+ ldr r0, _08151388 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ b _0815142A
+ .align 2, 0
+_08151388: .4byte gUnknown_203F3E0
+_0815138C:
+ bl sub_800A4BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08151480
+ ldr r3, _081513A8 @ =gUnknown_203F3E0
+ ldr r1, [r3]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ movs r2, 0
+ strb r0, [r1, 0x10]
+ ldr r0, [r3]
+ strb r2, [r0, 0x8]
+ b _08151480
+ .align 2, 0
+_081513A8: .4byte gUnknown_203F3E0
+_081513AC:
+ bl GetBlockReceivedStatus
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r7, _08151434 @ =gUnknown_203F3E0
+ ldr r0, [r7]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _08151400
+ adds r6, r7, 0
+_081513C4:
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _081513EE
+ ldr r2, [r6]
+ adds r2, r4, r2
+ movs r0, 0x86
+ lsls r0, 1
+ adds r2, r0
+ lsls r0, r4, 8
+ ldr r1, _08151438 @ =gBlockRecvBuffer
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ adds r0, r4, 0
+ bl ResetBlockReceivedFlag
+ ldr r1, [r6]
+ ldrb r0, [r1, 0x8]
+ adds r0, 0x1
+ strb r0, [r1, 0x8]
+_081513EE:
+ lsrs r5, 1
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, [r7]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _081513C4
+_08151400:
+ ldr r4, _08151434 @ =gUnknown_203F3E0
+ ldr r2, [r4]
+ adds r1, r2, 0
+ adds r1, 0x24
+ ldrb r0, [r2, 0x8]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0815143C
+ ldrb r0, [r2, 0x14]
+ adds r0, 0x1
+ strb r0, [r2, 0x14]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x77
+ bls _08151480
+ bl sub_815336C
+ movs r0, 0x6
+ bl sub_81549D4
+ ldr r1, [r4]
+_0815142A:
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _08151480
+ .align 2, 0
+_08151434: .4byte gUnknown_203F3E0
+_08151438: .4byte gBlockRecvBuffer
+_0815143C:
+ bl sub_81532B8
+ b _08151480
+_08151442:
+ movs r0, 0x8
+ bl sub_8152090
+ b _08151480
+_0815144A:
+ bl sub_8155E68
+ cmp r0, 0
+ bne _08151480
+ movs r4, 0
+ ldr r1, [r5]
+ adds r0, r1, 0
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _0815147A
+ movs r3, 0x86
+ lsls r3, 1
+ adds r2, r1, r3
+ adds r1, r0, 0
+_08151468:
+ adds r0, r2, r4
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _08151442
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r1
+ bcc _08151468
+_0815147A:
+ movs r0, 0xA
+ bl sub_8152090
+_08151480:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81512B4
+
+ thumb_func_start sub_8151488
+sub_8151488: @ 8151488
+ push {r4,lr}
+ ldr r4, _081514A0 @ =gUnknown_203F3E0
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x10]
+ cmp r0, 0x1
+ beq _081514B6
+ cmp r0, 0x1
+ bgt _081514A4
+ cmp r0, 0
+ beq _081514AA
+ b _081514D6
+ .align 2, 0
+_081514A0: .4byte gUnknown_203F3E0
+_081514A4:
+ cmp r0, 0x2
+ beq _081514C0
+ b _081514D6
+_081514AA:
+ bl sub_800AAC0
+ movs r0, 0x7
+ bl sub_81549D4
+ b _081514CC
+_081514B6:
+ bl sub_8155E68
+ cmp r0, 0
+ bne _081514E4
+ b _081514CC
+_081514C0:
+ bl sub_8155E8C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x5
+ bne _081514E4
+_081514CC:
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _081514E4
+_081514D6:
+ ldr r0, _081514EC @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _081514E4
+ movs r0, 0x9
+ bl sub_8152090
+_081514E4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081514EC: .4byte gReceivedRemoteLinkPlayers
+ thumb_func_end sub_8151488
+
+ thumb_func_start sub_81514F0
+sub_81514F0: @ 81514F0
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r4, _08151508 @ =gUnknown_203F3E0
+ ldr r0, [r4]
+ ldrb r1, [r0, 0x10]
+ cmp r1, 0x1
+ beq _08151524
+ cmp r1, 0x1
+ bgt _0815150C
+ cmp r1, 0
+ beq _08151512
+ b _0815156C
+ .align 2, 0
+_08151508: .4byte gUnknown_203F3E0
+_0815150C:
+ cmp r1, 0x2
+ beq _0815153C
+ b _0815156C
+_08151512:
+ movs r0, 0x1
+ negs r0, r0
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _0815155E
+_08151524:
+ bl UpdatePaletteFade
+ ldr r0, _08151538 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _08151590
+ b _0815155E
+ .align 2, 0
+_08151538: .4byte gPaletteFade
+_0815153C:
+ bl sub_8154274
+ bl sub_8153ED8
+ ldr r0, [r4]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ bl sub_8153D08
+ bl sub_8154578
+ ldr r1, _08151568 @ =gUnknown_3002044
+ movs r0, 0x1
+ str r0, [r1]
+ movs r0, 0x8
+ bl sub_81549D4
+_0815155E:
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _08151590
+ .align 2, 0
+_08151568: .4byte gUnknown_3002044
+_0815156C:
+ bl sub_8155E68
+ cmp r0, 0
+ bne _08151590
+ ldr r4, _08151598 @ =gUnknown_203F3E0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl SetMainCallback2
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x4]
+ bl DestroyTask
+ ldr r0, [r4]
+ bl Free
+ bl FreeAllWindowBuffers
+_08151590:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08151598: .4byte gUnknown_203F3E0
+ thumb_func_end sub_81514F0
+
+ thumb_func_start sub_815159C
+sub_815159C: @ 815159C
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r4, _081515B4 @ =gUnknown_203F3E0
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x10]
+ cmp r0, 0x6
+ bhi _0815169C
+ lsls r0, 2
+ ldr r1, _081515B8 @ =_081515BC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_081515B4: .4byte gUnknown_203F3E0
+_081515B8: .4byte _081515BC
+ .align 2, 0
+_081515BC:
+ .4byte _081515D8
+ .4byte _08151676
+ .4byte _081515F0
+ .4byte _08151642
+ .4byte _08151648
+ .4byte _08151656
+ .4byte _08151676
+_081515D8:
+ movs r0, 0x9
+ bl sub_81549D4
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _08151686
+_081515F0:
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ b _08151686
+_08151642:
+ bl StopMapMusic
+ b _08151686
+_08151648:
+ movs r0, 0xA5
+ lsls r0, 1
+ bl PlayNewMapMusic
+ bl sub_8154540
+ b _08151686
+_08151656:
+ movs r4, 0x1
+ negs r4, r4
+ adds r0, r4, 0
+ movs r1, 0x10
+ movs r2, 0
+ bl BlendPalettes
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ b _08151686
+_08151676:
+ bl UpdatePaletteFade
+ ldr r0, _08151694 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _081516CC
+_08151686:
+ ldr r0, _08151698 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _081516CC
+ .align 2, 0
+_08151694: .4byte gPaletteFade
+_08151698: .4byte gUnknown_203F3E0
+_0815169C:
+ ldrb r0, [r1, 0x4]
+ bl DestroyTask
+ ldr r0, _081516D4 @ =sub_81516DC
+ bl sub_815206C
+ bl sub_8154730
+ ldr r0, [r4]
+ bl sub_81508EC
+ ldr r0, _081516D8 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _081516C2
+ ldr r0, [r4]
+ adds r0, 0x24
+ movs r1, 0x1
+ strb r1, [r0]
+_081516C2:
+ bl sub_8153150
+ movs r0, 0
+ bl sub_81545BC
+_081516CC:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081516D4: .4byte sub_81516DC
+_081516D8: .4byte gReceivedRemoteLinkPlayers
+ thumb_func_end sub_815159C
+
+ thumb_func_start sub_81516DC
+sub_81516DC: @ 81516DC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _081516F8 @ =gUnknown_203F3E0
+ ldr r0, [r1]
+ ldrb r0, [r0, 0x10]
+ adds r4, r1, 0
+ cmp r0, 0x1
+ beq _08151708
+ cmp r0, 0x1
+ bgt _081516FC
+ cmp r0, 0
+ beq _08151702
+ b _08151720
+ .align 2, 0
+_081516F8: .4byte gUnknown_203F3E0
+_081516FC:
+ cmp r0, 0x2
+ beq _0815170E
+ b _08151720
+_08151702:
+ bl sub_81520B4
+ b _08151712
+_08151708:
+ bl sub_8153DD8
+ b _08151716
+_0815170E:
+ bl sub_8153F1C
+_08151712:
+ cmp r0, 0x1
+ bne _08151744
+_08151716:
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ b _08151744
+_08151720:
+ ldr r0, [r4]
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08151738
+ ldr r0, _08151734 @ =sub_8150C08
+ bl sub_815206C
+ b _0815173E
+ .align 2, 0
+_08151734: .4byte sub_8150C08
+_08151738:
+ ldr r0, _0815174C @ =sub_8150C40
+ bl sub_815206C
+_0815173E:
+ adds r0, r5, 0
+ bl DestroyTask
+_08151744:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815174C: .4byte sub_8150C40
+ thumb_func_end sub_81516DC
+
+ thumb_func_start sub_8151750
+sub_8151750: @ 8151750
+ push {r4-r7,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _08151774 @ =gTasks+0x8
+ adds r6, r0, r1
+ movs r0, 0
+ ldrsh r5, [r6, r0]
+ cmp r5, 0x1
+ beq _081517A8
+ cmp r5, 0x1
+ bgt _08151778
+ cmp r5, 0
+ beq _0815177E
+ b _08151836
+ .align 2, 0
+_08151774: .4byte gTasks+0x8
+_08151778:
+ cmp r5, 0x2
+ beq _081517BA
+ b _08151836
+_0815177E:
+ ldr r4, _081517A0 @ =gUnknown_203F3E0
+ ldr r1, [r4]
+ adds r0, r1, 0
+ adds r0, 0x28
+ ldrb r0, [r0]
+ lsls r0, 2
+ ldr r2, _081517A4 @ =0x0000318c
+ adds r0, r2
+ adds r1, r0
+ movs r0, 0
+ movs r2, 0x1
+ bl SendBlock
+ ldr r0, [r4]
+ strb r5, [r0, 0x8]
+ b _081517B2
+ .align 2, 0
+_081517A0: .4byte gUnknown_203F3E0
+_081517A4: .4byte 0x0000318c
+_081517A8:
+ bl sub_800A4BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08151836
+_081517B2:
+ ldrh r0, [r6]
+ adds r0, 0x1
+ strh r0, [r6]
+ b _08151836
+_081517BA:
+ bl GetBlockReceivedStatus
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r3, _08151840 @ =gUnknown_203F3E0
+ ldr r0, [r3]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _08151812
+ adds r6, r3, 0
+_081517D2:
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _08151800
+ ldr r0, [r6]
+ lsls r2, r4, 2
+ adds r2, r0
+ ldr r0, _08151844 @ =0x0000318c
+ adds r2, r0
+ lsls r0, r4, 8
+ ldr r1, _08151848 @ =gBlockRecvBuffer
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ adds r0, r4, 0
+ str r3, [sp]
+ bl ResetBlockReceivedFlag
+ ldr r1, [r6]
+ ldrb r0, [r1, 0x8]
+ adds r0, 0x1
+ strb r0, [r1, 0x8]
+ ldr r3, [sp]
+_08151800:
+ lsrs r5, 1
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, [r3]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _081517D2
+_08151812:
+ ldr r4, _08151840 @ =gUnknown_203F3E0
+ ldr r0, [r4]
+ adds r1, r0, 0
+ adds r1, 0x24
+ ldrb r0, [r0, 0x8]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _08151836
+ adds r0, r7, 0
+ bl DestroyTask
+ movs r0, 0x6
+ bl sub_81549D4
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+_08151836:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08151840: .4byte gUnknown_203F3E0
+_08151844: .4byte 0x0000318c
+_08151848: .4byte gBlockRecvBuffer
+ thumb_func_end sub_8151750
+
+ thumb_func_start sub_815184C
+sub_815184C: @ 815184C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x18
+ ldr r6, _08151928 @ =gUnknown_203F3E0
+ ldr r0, [r6]
+ adds r1, r0, 0
+ adds r1, 0x24
+ ldrb r7, [r1]
+ ldr r2, _0815192C @ =0x000031a0
+ adds r1, r0, r2
+ ldr r3, _08151930 @ =0x000031cc
+ adds r2, r0, r3
+ ldr r4, _08151934 @ =0x00003208
+ adds r3, r0, r4
+ ldr r5, _08151938 @ =0x00003244
+ adds r4, r0, r5
+ str r4, [sp]
+ adds r5, 0x3C
+ adds r4, r0, r5
+ str r4, [sp, 0x4]
+ adds r5, 0x3C
+ adds r4, r0, r5
+ str r4, [sp, 0x8]
+ adds r4, r0, 0
+ adds r4, 0x40
+ str r4, [sp, 0xC]
+ movs r5, 0x90
+ lsls r5, 1
+ adds r4, r0, r5
+ str r4, [sp, 0x10]
+ movs r4, 0x96
+ lsls r4, 1
+ adds r0, r4
+ str r0, [sp, 0x14]
+ movs r0, 0
+ bl sub_815A950
+ ldr r1, [r6]
+ ldr r5, _0815193C @ =0x000031b0
+ adds r2, r1, r5
+ str r0, [r2]
+ movs r0, 0x94
+ lsls r0, 1
+ adds r1, r0
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r5, 0x1
+ cmp r5, r7
+ bcs _081518F4
+_081518B0:
+ ldr r1, [r6]
+ adds r0, r1, 0
+ adds r0, 0xA8
+ adds r0, r5
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _081518EA
+ lsls r0, r5, 4
+ subs r0, r5
+ lsls r4, r0, 2
+ adds r1, r4, r1
+ ldr r2, _08151930 @ =0x000031cc
+ adds r1, r2
+ adds r0, r5, 0
+ bl sub_815AB04
+ adds r1, r0, 0
+ cmp r1, 0
+ bne _081518EA
+ ldr r0, [r6]
+ adds r0, r4
+ ldr r3, _08151930 @ =0x000031cc
+ adds r0, r3
+ strb r1, [r0]
+ ldr r0, [r6]
+ movs r4, 0x94
+ lsls r4, 1
+ adds r0, r4
+ strb r1, [r0]
+_081518EA:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r7
+ bcc _081518B0
+_081518F4:
+ ldr r5, _08151928 @ =gUnknown_203F3E0
+ ldr r1, [r5]
+ movs r6, 0x92
+ lsls r6, 1
+ adds r1, r6
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3B
+ bls _08151952
+ ldr r1, [r5]
+ movs r2, 0x94
+ lsls r2, 1
+ adds r0, r1, r2
+ ldrb r4, [r0]
+ cmp r4, 0
+ beq _08151940
+ bl sub_80FBA44
+ ldr r0, [r5]
+ adds r0, r6
+ movs r1, 0
+ strb r1, [r0]
+ b _08151952
+ .align 2, 0
+_08151928: .4byte gUnknown_203F3E0
+_0815192C: .4byte 0x000031a0
+_08151930: .4byte 0x000031cc
+_08151934: .4byte 0x00003208
+_08151938: .4byte 0x00003244
+_0815193C: .4byte 0x000031b0
+_08151940:
+ adds r0, r1, r6
+ ldrb r0, [r0]
+ cmp r0, 0x46
+ bls _08151952
+ bl sub_80FBA44
+ ldr r0, [r5]
+ adds r0, r6
+ strb r4, [r0]
+_08151952:
+ movs r5, 0
+ cmp r5, r7
+ bcs _08151A46
+ ldr r3, _0815199C @ =0x000031cc
+ mov r12, r3
+ ldr r4, _081519A0 @ =gUnknown_203F3E0
+ mov r8, r4
+_08151960:
+ mov r6, r8
+ ldr r2, [r6]
+ lsls r0, r5, 4
+ subs r1, r0, r5
+ lsls r1, 2
+ adds r1, r2, r1
+ add r1, r12
+ ldrb r1, [r1]
+ adds r6, r0, 0
+ cmp r1, 0
+ beq _08151986
+ adds r0, r2, 0
+ adds r0, 0xA8
+ adds r1, r0, r5
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _08151986
+ movs r0, 0x1
+ strb r0, [r1]
+_08151986:
+ adds r3, r4, 0
+ ldr r1, [r3]
+ adds r0, r1, 0
+ adds r0, 0xA8
+ adds r0, r5
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bgt _081519A4
+ cmp r0, 0x1
+ bge _081519AA
+ b _08151A3C
+ .align 2, 0
+_0815199C: .4byte 0x000031cc
+_081519A0: .4byte gUnknown_203F3E0
+_081519A4:
+ cmp r0, 0x4
+ beq _081519F8
+ b _08151A3C
+_081519AA:
+ adds r1, 0xB0
+ adds r1, r5
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r2, 0
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x5
+ bls _08151A3C
+ ldr r0, [r3]
+ adds r0, 0xB0
+ adds r0, r5
+ strb r2, [r0]
+ ldr r0, [r3]
+ adds r0, 0xA8
+ adds r0, r5
+ strb r2, [r0]
+ ldr r0, [r3]
+ subs r1, r6, r5
+ lsls r1, 2
+ adds r0, r1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, [r3]
+ adds r0, r1
+ ldr r6, _081519F0 @ =0x000031d0
+ adds r0, r6
+ strb r2, [r0]
+ ldr r0, [r3]
+ adds r0, r1
+ ldr r1, _081519F4 @ =0x000031d4
+ adds r0, r1
+ b _08151A3A
+ .align 2, 0
+_081519F0: .4byte 0x000031d0
+_081519F4: .4byte 0x000031d4
+_081519F8:
+ adds r1, 0xB0
+ adds r1, r5
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r2, 0
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x27
+ bls _08151A3C
+ ldr r0, [r4]
+ adds r0, 0xB0
+ adds r0, r5
+ strb r2, [r0]
+ ldr r0, [r4]
+ adds r0, 0xA8
+ adds r0, r5
+ strb r2, [r0]
+ ldr r0, [r4]
+ subs r1, r6, r5
+ lsls r1, 2
+ adds r0, r1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, [r4]
+ adds r0, r1
+ ldr r3, _08151A54 @ =0x000031d0
+ adds r0, r3
+ strb r2, [r0]
+ ldr r0, [r4]
+ adds r0, r1
+ ldr r6, _08151A58 @ =0x000031d4
+ adds r0, r6
+_08151A3A:
+ strb r2, [r0]
+_08151A3C:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r7
+ bcc _08151960
+_08151A46:
+ add sp, 0x18
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08151A54: .4byte 0x000031d0
+_08151A58: .4byte 0x000031d4
+ thumb_func_end sub_815184C
+
+ thumb_func_start sub_8151A5C
+sub_8151A5C: @ 8151A5C
+ push {r4-r7,lr}
+ sub sp, 0x18
+ ldr r5, _08151B20 @ =gUnknown_203F3E0
+ ldr r0, [r5]
+ adds r1, r0, 0
+ adds r1, 0x24
+ ldrb r6, [r1]
+ ldr r2, _08151B24 @ =0x000031a0
+ adds r1, r0, r2
+ ldr r3, _08151B28 @ =0x000031cc
+ adds r2, r0, r3
+ ldr r4, _08151B2C @ =0x00003208
+ adds r3, r0, r4
+ ldr r7, _08151B30 @ =0x00003244
+ adds r4, r0, r7
+ str r4, [sp]
+ adds r7, 0x3C
+ adds r4, r0, r7
+ str r4, [sp, 0x4]
+ adds r7, 0x3C
+ adds r4, r0, r7
+ str r4, [sp, 0x8]
+ adds r4, r0, 0
+ adds r4, 0x40
+ str r4, [sp, 0xC]
+ movs r7, 0x90
+ lsls r7, 1
+ adds r4, r0, r7
+ str r4, [sp, 0x10]
+ movs r4, 0x96
+ lsls r4, 1
+ adds r0, r4
+ str r0, [sp, 0x14]
+ movs r0, 0
+ bl sub_815A950
+ ldr r1, [r5]
+ ldr r7, _08151B34 @ =0x000031b0
+ adds r2, r1, r7
+ str r0, [r2]
+ movs r0, 0x94
+ lsls r0, 1
+ adds r1, r0
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r4, 0x1
+ cmp r4, r6
+ bcs _08151AEC
+_08151ABC:
+ adds r0, r4, 0
+ bl sub_815AB60
+ cmp r0, 0
+ beq _08151AE2
+ ldr r0, _08151B20 @ =gUnknown_203F3E0
+ ldr r2, [r0]
+ lsls r1, r4, 2
+ movs r3, 0x98
+ lsls r3, 1
+ adds r0, r2, r3
+ adds r0, r1
+ movs r1, 0x1
+ str r1, [r0]
+ movs r7, 0x94
+ lsls r7, 1
+ adds r1, r2, r7
+ movs r0, 0
+ strb r0, [r1]
+_08151AE2:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r6
+ bcc _08151ABC
+_08151AEC:
+ ldr r5, _08151B20 @ =gUnknown_203F3E0
+ ldr r1, [r5]
+ movs r6, 0x92
+ lsls r6, 1
+ adds r1, r6
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3B
+ bls _08151B4A
+ ldr r1, [r5]
+ movs r2, 0x94
+ lsls r2, 1
+ adds r0, r1, r2
+ ldrb r4, [r0]
+ cmp r4, 0
+ beq _08151B38
+ bl sub_80FBA44
+ ldr r0, [r5]
+ adds r0, r6
+ movs r1, 0
+ strb r1, [r0]
+ b _08151B4A
+ .align 2, 0
+_08151B20: .4byte gUnknown_203F3E0
+_08151B24: .4byte 0x000031a0
+_08151B28: .4byte 0x000031cc
+_08151B2C: .4byte 0x00003208
+_08151B30: .4byte 0x00003244
+_08151B34: .4byte 0x000031b0
+_08151B38:
+ adds r0, r1, r6
+ ldrb r0, [r0]
+ cmp r0, 0x46
+ bls _08151B4A
+ bl sub_80FBA44
+ ldr r0, [r5]
+ adds r0, r6
+ strb r4, [r0]
+_08151B4A:
+ add sp, 0x18
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8151A5C
+
+ thumb_func_start sub_8151B54
+sub_8151B54: @ 8151B54
+ push {r4,r5,lr}
+ ldr r5, _08151B6C @ =gUnknown_203F3E0
+ ldr r0, [r5]
+ ldrb r0, [r0, 0x18]
+ cmp r0, 0x4
+ beq _08151B90
+ cmp r0, 0x4
+ bgt _08151B70
+ cmp r0, 0x3
+ beq _08151B76
+ b _08151B9A
+ .align 2, 0
+_08151B6C: .4byte gUnknown_203F3E0
+_08151B70:
+ cmp r0, 0xB
+ beq _08151B96
+ b _08151B9A
+_08151B76:
+ bl sub_8152A00
+ adds r4, r0, 0
+ cmp r4, 0x1
+ bne _08151B9A
+ bl sub_8152A70
+ ldr r0, [r5]
+ movs r1, 0x8E
+ lsls r1, 1
+ adds r0, r1
+ str r4, [r0]
+ b _08151B9A
+_08151B90:
+ bl sub_815184C
+ b _08151B9A
+_08151B96:
+ bl sub_8151A5C
+_08151B9A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8151B54
+
+ thumb_func_start sub_8151BA0
+sub_8151BA0: @ 8151BA0
+ push {r4-r6,lr}
+ sub sp, 0x14
+ ldr r0, _08151BB4 @ =gUnknown_203F3E0
+ ldr r5, [r0]
+ ldrb r0, [r5, 0x18]
+ cmp r0, 0x4
+ beq _08151BB8
+ cmp r0, 0xB
+ beq _08151C08
+ b _08151C44
+ .align 2, 0
+_08151BB4: .4byte gUnknown_203F3E0
+_08151BB8:
+ ldr r1, _08151BF8 @ =0x000032cc
+ adds r0, r5, r1
+ ldr r2, _08151BFC @ =0x000031cc
+ adds r1, r5, r2
+ ldr r3, _08151C00 @ =0x00003208
+ adds r2, r5, r3
+ ldr r4, _08151C04 @ =0x00003244
+ adds r3, r5, r4
+ movs r6, 0xCA
+ lsls r6, 6
+ adds r4, r5, r6
+ str r4, [sp]
+ adds r6, 0x3C
+ adds r4, r5, r6
+ str r4, [sp, 0x4]
+ adds r4, r5, 0
+ adds r4, 0x40
+ ldrb r4, [r4]
+ str r4, [sp, 0x8]
+ movs r6, 0x90
+ lsls r6, 1
+ adds r4, r5, r6
+ ldr r4, [r4]
+ str r4, [sp, 0xC]
+ adds r6, 0xC
+ adds r4, r5, r6
+ ldr r4, [r4]
+ str r4, [sp, 0x10]
+ bl sub_815A61C
+ b _08151C44
+ .align 2, 0
+_08151BF8: .4byte 0x000032cc
+_08151BFC: .4byte 0x000031cc
+_08151C00: .4byte 0x00003208
+_08151C04: .4byte 0x00003244
+_08151C08:
+ ldr r1, _08151C4C @ =0x000032cc
+ adds r0, r5, r1
+ ldr r2, _08151C50 @ =0x000031cc
+ adds r1, r5, r2
+ ldr r3, _08151C54 @ =0x00003208
+ adds r2, r5, r3
+ ldr r4, _08151C58 @ =0x00003244
+ adds r3, r5, r4
+ movs r6, 0xCA
+ lsls r6, 6
+ adds r4, r5, r6
+ str r4, [sp]
+ adds r6, 0x3C
+ adds r4, r5, r6
+ str r4, [sp, 0x4]
+ adds r4, r5, 0
+ adds r4, 0x40
+ ldrb r4, [r4]
+ str r4, [sp, 0x8]
+ movs r6, 0x90
+ lsls r6, 1
+ adds r4, r5, r6
+ ldr r4, [r4]
+ str r4, [sp, 0xC]
+ adds r6, 0xC
+ adds r4, r5, r6
+ ldr r4, [r4]
+ str r4, [sp, 0x10]
+ bl sub_815A61C
+_08151C44:
+ add sp, 0x14
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08151C4C: .4byte 0x000032cc
+_08151C50: .4byte 0x000031cc
+_08151C54: .4byte 0x00003208
+_08151C58: .4byte 0x00003244
+ thumb_func_end sub_8151BA0
+
+ thumb_func_start sub_8151C5C
+sub_8151C5C: @ 8151C5C
+ push {r4-r6,lr}
+ sub sp, 0x18
+ ldr r0, _08151C70 @ =gUnknown_203F3E0
+ ldr r5, [r0]
+ ldrb r0, [r5, 0x18]
+ cmp r0, 0x4
+ beq _08151C74
+ cmp r0, 0xB
+ beq _08151CCC
+ b _08151D10
+ .align 2, 0
+_08151C70: .4byte gUnknown_203F3E0
+_08151C74:
+ adds r0, r5, 0
+ adds r0, 0x28
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ subs r1, r0
+ lsls r1, 2
+ ldr r2, _08151CBC @ =0x000031a0
+ adds r1, r2
+ adds r1, r5, r1
+ ldr r3, _08151CC0 @ =0x000031cc
+ adds r2, r5, r3
+ ldr r4, _08151CC4 @ =0x00003208
+ adds r3, r5, r4
+ ldr r6, _08151CC8 @ =0x00003244
+ adds r4, r5, r6
+ str r4, [sp]
+ adds r6, 0x3C
+ adds r4, r5, r6
+ str r4, [sp, 0x4]
+ adds r6, 0x3C
+ adds r4, r5, r6
+ str r4, [sp, 0x8]
+ adds r4, r5, 0
+ adds r4, 0x40
+ str r4, [sp, 0xC]
+ movs r6, 0x90
+ lsls r6, 1
+ adds r4, r5, r6
+ str r4, [sp, 0x10]
+ adds r6, 0xC
+ adds r4, r5, r6
+ str r4, [sp, 0x14]
+ bl sub_815A950
+ b _08151D10
+ .align 2, 0
+_08151CBC: .4byte 0x000031a0
+_08151CC0: .4byte 0x000031cc
+_08151CC4: .4byte 0x00003208
+_08151CC8: .4byte 0x00003244
+_08151CCC:
+ adds r0, r5, 0
+ adds r0, 0x28
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ subs r1, r0
+ lsls r1, 2
+ ldr r2, _08151D18 @ =0x000031a0
+ adds r1, r2
+ adds r1, r5, r1
+ ldr r3, _08151D1C @ =0x000031cc
+ adds r2, r5, r3
+ ldr r4, _08151D20 @ =0x00003208
+ adds r3, r5, r4
+ ldr r6, _08151D24 @ =0x00003244
+ adds r4, r5, r6
+ str r4, [sp]
+ adds r6, 0x3C
+ adds r4, r5, r6
+ str r4, [sp, 0x4]
+ adds r6, 0x3C
+ adds r4, r5, r6
+ str r4, [sp, 0x8]
+ adds r4, r5, 0
+ adds r4, 0x40
+ str r4, [sp, 0xC]
+ movs r6, 0x90
+ lsls r6, 1
+ adds r4, r5, r6
+ str r4, [sp, 0x10]
+ adds r6, 0xC
+ adds r4, r5, r6
+ str r4, [sp, 0x14]
+ bl sub_815A950
+_08151D10:
+ add sp, 0x18
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08151D18: .4byte 0x000031a0
+_08151D1C: .4byte 0x000031cc
+_08151D20: .4byte 0x00003208
+_08151D24: .4byte 0x00003244
+ thumb_func_end sub_8151C5C
+
+ thumb_func_start sub_8151D28
+sub_8151D28: @ 8151D28
+ push {r4,lr}
+ ldr r4, _08151D40 @ =gUnknown_203F3E0
+ ldr r1, [r4]
+ ldrb r0, [r1, 0x18]
+ cmp r0, 0x4
+ beq _08151D5E
+ cmp r0, 0x4
+ bgt _08151D44
+ cmp r0, 0x3
+ beq _08151D4A
+ b _08151D90
+ .align 2, 0
+_08151D40: .4byte gUnknown_203F3E0
+_08151D44:
+ cmp r0, 0xB
+ beq _08151D74
+ b _08151D90
+_08151D4A:
+ movs r0, 0x1
+ bl sub_815A5BC
+ ldr r0, [r4]
+ movs r1, 0x8E
+ lsls r1, 1
+ adds r0, r1
+ movs r1, 0x1
+ str r1, [r0]
+ b _08151D90
+_08151D5E:
+ ldr r2, _08151D70 @ =0x000032f8
+ adds r1, r2
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08151D90
+ bl sub_815AAD8
+ b _08151D90
+ .align 2, 0
+_08151D70: .4byte 0x000032f8
+_08151D74:
+ movs r2, 0x90
+ lsls r2, 1
+ adds r0, r1, r2
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08151D90
+ adds r2, 0xC
+ adds r0, r1, r2
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08151D90
+ movs r0, 0x1
+ bl sub_815AB3C
+_08151D90:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8151D28
+
+ thumb_func_start sub_8151D98
+sub_8151D98: @ 8151D98
+ push {r4-r6,lr}
+ ldr r6, _08151DD0 @ =gUnknown_203F3E0
+ ldr r2, [r6]
+ adds r0, r2, 0
+ adds r0, 0x28
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r1, r2, r0
+ ldr r3, _08151DD4 @ =0x000031cc
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08151DD8
+ bl IsSEPlaying
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _08151E3A
+ ldr r0, [r6]
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r2
+ strb r1, [r0]
+ b _08151E3A
+ .align 2, 0
+_08151DD0: .4byte gUnknown_203F3E0
+_08151DD4: .4byte 0x000031cc
+_08151DD8:
+ ldr r3, _08151E04 @ =0x000031d0
+ adds r0, r1, r3
+ ldrb r4, [r0]
+ cmp r4, 0x1
+ bne _08151E08
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08151E3A
+ movs r0, 0x19
+ bl m4aSongNumStop
+ movs r0, 0x19
+ bl PlaySE
+ ldr r0, [r6]
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r2
+ b _08151E38
+ .align 2, 0
+_08151E04: .4byte 0x000031d0
+_08151E08:
+ ldr r3, _08151E64 @ =0x000031d4
+ adds r0, r1, r3
+ ldrb r4, [r0]
+ cmp r4, 0x1
+ bne _08151E3A
+ movs r5, 0xA2
+ lsls r5, 1
+ adds r0, r2, r5
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08151E3A
+ bl IsSEPlaying
+ lsls r0, 24
+ cmp r0, 0
+ bne _08151E3A
+ movs r0, 0x16
+ bl PlaySE
+ movs r0, 0x1
+ bl sub_8153BC0
+ ldr r0, [r6]
+ adds r0, r5
+_08151E38:
+ strb r4, [r0]
+_08151E3A:
+ ldr r0, _08151E68 @ =gUnknown_203F3E0
+ ldr r2, [r0]
+ movs r5, 0xAA
+ lsls r5, 1
+ adds r1, r2, r5
+ ldrb r1, [r1]
+ adds r4, r0, 0
+ cmp r1, 0
+ bne _08151E6C
+ adds r0, r2, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bls _08151E6C
+ bl StopMapMusic
+ ldr r0, [r4]
+ adds r0, r5
+ movs r1, 0x1
+ b _08151E8A
+ .align 2, 0
+_08151E64: .4byte 0x000031d4
+_08151E68: .4byte gUnknown_203F3E0
+_08151E6C:
+ ldr r0, [r4]
+ movs r1, 0xAA
+ lsls r1, 1
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _08151E8C
+ movs r0, 0xA
+ bl PlayFanfareByFanfareNum
+ ldr r0, [r4]
+ movs r2, 0xAA
+ lsls r2, 1
+ adds r0, r2
+ movs r1, 0x2
+_08151E8A:
+ strb r1, [r0]
+_08151E8C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8151D98
+
+ thumb_func_start sub_8151E94
+sub_8151E94: @ 8151E94
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r6, _08151EE0 @ =gUnknown_203F3E0
+ ldr r2, [r6]
+ adds r0, r2, 0
+ adds r0, 0x44
+ ldrb r0, [r0]
+ mov r8, r0
+ adds r0, r2, 0
+ adds r0, 0x48
+ ldrb r7, [r0]
+ subs r0, 0x20
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r1, r2, r0
+ ldr r3, _08151EE4 @ =0x000031cc
+ adds r0, r1, r3
+ ldrb r3, [r0]
+ cmp r3, 0
+ bne _08151EEC
+ ldr r4, _08151EE8 @ =0x000031d0
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _08151F4E
+ adds r4, 0x4
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _08151F4E
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r2, r1
+ strb r3, [r0]
+ b _08151F4E
+ .align 2, 0
+_08151EE0: .4byte gUnknown_203F3E0
+_08151EE4: .4byte 0x000031cc
+_08151EE8: .4byte 0x000031d0
+_08151EEC:
+ ldr r3, _08151F18 @ =0x000031d0
+ adds r0, r1, r3
+ ldrb r4, [r0]
+ cmp r4, 0x1
+ bne _08151F1C
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08151F4E
+ movs r0, 0x19
+ bl m4aSongNumStop
+ movs r0, 0x19
+ bl PlaySE
+ ldr r0, [r6]
+ movs r3, 0xA2
+ lsls r3, 1
+ adds r0, r3
+ b _08151F4C
+ .align 2, 0
+_08151F18: .4byte 0x000031d0
+_08151F1C:
+ ldr r4, _08151FA0 @ =0x000031d4
+ adds r0, r1, r4
+ ldrb r4, [r0]
+ cmp r4, 0x1
+ bne _08151F4E
+ movs r5, 0xA2
+ lsls r5, 1
+ adds r0, r2, r5
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08151F4E
+ bl IsSEPlaying
+ lsls r0, 24
+ cmp r0, 0
+ bne _08151F4E
+ movs r0, 0x16
+ bl PlaySE
+ movs r0, 0x1
+ bl sub_8153BC0
+ ldr r0, [r6]
+ adds r0, r5
+_08151F4C:
+ strb r4, [r0]
+_08151F4E:
+ mov r4, r8
+ cmp r4, r7
+ bcs _08151FC2
+ ldr r5, _08151FA4 @ =gUnknown_203F3E0
+_08151F56:
+ ldr r2, [r5]
+ adds r0, r2, 0
+ adds r0, 0x28
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ ldr r1, _08151FA8 @ =0x000031a0
+ adds r0, r1
+ adds r0, r2, r0
+ adds r1, r0, 0
+ adds r1, 0x14
+ adds r0, 0x1F
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bls _08151FAC
+ movs r3, 0xA4
+ lsls r3, 1
+ adds r0, r2, r3
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08151FB8
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ adds r0, 0x43
+ bl PlaySE
+ ldr r0, [r5]
+ movs r1, 0xA4
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r4
+ movs r1, 0x1
+ b _08151FB6
+ .align 2, 0
+_08151FA0: .4byte 0x000031d4
+_08151FA4: .4byte gUnknown_203F3E0
+_08151FA8: .4byte 0x000031a0
+_08151FAC:
+ movs r3, 0xA4
+ lsls r3, 1
+ adds r0, r2, r3
+ adds r0, r4
+ movs r1, 0
+_08151FB6:
+ strb r1, [r0]
+_08151FB8:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r7
+ bcc _08151F56
+_08151FC2:
+ ldr r0, _08151FEC @ =gUnknown_203F3E0
+ ldr r2, [r0]
+ movs r5, 0xAA
+ lsls r5, 1
+ adds r1, r2, r5
+ ldrb r1, [r1]
+ adds r4, r0, 0
+ cmp r1, 0
+ bne _08151FF0
+ adds r0, r2, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bls _08151FF0
+ bl StopMapMusic
+ ldr r0, [r4]
+ adds r0, r5
+ movs r1, 0x1
+ b _0815200E
+ .align 2, 0
+_08151FEC: .4byte gUnknown_203F3E0
+_08151FF0:
+ ldr r0, [r4]
+ movs r1, 0xAA
+ lsls r1, 1
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _08152010
+ movs r0, 0xA
+ bl PlayFanfareByFanfareNum
+ ldr r0, [r4]
+ movs r3, 0xAA
+ lsls r3, 1
+ adds r0, r3
+ movs r1, 0x2
+_0815200E:
+ strb r1, [r0]
+_08152010:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8151E94
+
+ thumb_func_start sub_815201C
+sub_815201C: @ 815201C
+ push {lr}
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815201C
+
+ thumb_func_start sub_8152034
+sub_8152034: @ 8152034
+ push {lr}
+ bl TransferPlttBuffer
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8152034
+
+ thumb_func_start sub_8152048
+sub_8152048: @ 8152048
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, r1, 0
+ bl IsMonShiny
+ strb r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8152048
+
+ thumb_func_start sub_815205C
+sub_815205C: @ 815205C
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ bl CreateTask
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815205C
+
+ thumb_func_start sub_815206C
+sub_815206C: @ 815206C
+ push {lr}
+ movs r1, 0x1
+ bl CreateTask
+ ldr r1, _0815208C @ =gUnknown_203F3E0
+ ldr r3, [r1]
+ movs r2, 0
+ strb r0, [r3, 0x4]
+ ldr r0, [r1]
+ strb r2, [r0, 0x10]
+ ldr r0, [r1]
+ strb r2, [r0, 0xC]
+ ldr r0, [r1]
+ strb r2, [r0, 0x14]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815208C: .4byte gUnknown_203F3E0
+ thumb_func_end sub_815206C
+
+ thumb_func_start sub_8152090
+sub_8152090: @ 8152090
+ push {r4,lr}
+ ldr r2, _081520B0 @ =gUnknown_203F3E0
+ ldr r1, [r2]
+ ldrb r3, [r1, 0x18]
+ movs r4, 0
+ strb r3, [r1, 0x1C]
+ ldr r1, [r2]
+ strb r0, [r1, 0x18]
+ ldr r0, [r2]
+ strb r4, [r0, 0x10]
+ ldr r0, [r2]
+ strb r4, [r0, 0x14]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081520B0: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8152090
+
+ thumb_func_start sub_81520B4
+sub_81520B4: @ 81520B4
+ push {r4,lr}
+ ldr r3, _081520E8 @ =gUnknown_203F3E0
+ ldr r1, [r3]
+ ldrb r0, [r1, 0x14]
+ lsrs r2, r0, 2
+ adds r0, 0x1
+ strb r0, [r1, 0x14]
+ cmp r2, 0
+ beq _08152108
+ ldr r3, [r3]
+ ldrb r0, [r3, 0x14]
+ movs r1, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _08152108
+ ldr r1, _081520EC @ =gUnknown_8475548
+ adds r0, r3, 0
+ adds r0, 0x24
+ ldrb r0, [r0]
+ subs r0, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _081520F0
+ movs r0, 0x1
+ b _0815210A
+ .align 2, 0
+_081520E8: .4byte gUnknown_203F3E0
+_081520EC: .4byte gUnknown_8475548
+_081520F0:
+ lsls r4, r2, 3
+ adds r1, r4, 0
+ movs r0, 0x14
+ bl SetGpuReg
+ negs r4, r4
+ lsls r4, 16
+ lsrs r4, 16
+ movs r0, 0x18
+ adds r1, r4, 0
+ bl SetGpuReg
+_08152108:
+ movs r0, 0
+_0815210A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81520B4
+
+ thumb_func_start sub_8152110
+sub_8152110: @ 8152110
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r2, _08152168 @ =gUnknown_203F3E0
+ ldr r0, [r2]
+ adds r1, r0, 0
+ adds r1, 0x44
+ adds r0, 0x48
+ ldrb r5, [r0]
+ ldrb r1, [r1]
+ cmp r1, r5
+ bcs _0815215C
+ mov r8, r2
+ ldr r0, _0815216C @ =0x000032e0
+ mov r12, r0
+ movs r7, 0
+ movs r6, 0x1
+_08152132:
+ mov r2, r8
+ ldr r0, [r2]
+ mov r2, r12
+ adds r4, r0, r2
+ ldr r2, _08152170 @ =0x000032eb
+ adds r0, r2
+ adds r2, r0, r1
+ movs r3, 0
+ adds r0, r1, 0
+ ands r0, r6
+ cmp r0, 0
+ bne _0815214C
+ movs r3, 0x1
+_0815214C:
+ strb r3, [r2]
+ adds r0, r4, r1
+ strb r7, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, r5
+ bcc _08152132
+_0815215C:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08152168: .4byte gUnknown_203F3E0
+_0815216C: .4byte 0x000032e0
+_08152170: .4byte 0x000032eb
+ thumb_func_end sub_8152110
+
+ thumb_func_start sub_8152174
+sub_8152174: @ 8152174
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ ldr r0, _08152248 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x44
+ ldrb r0, [r0]
+ str r0, [sp]
+ adds r0, r1, 0
+ adds r0, 0x48
+ ldrb r0, [r0]
+ str r0, [sp, 0x4]
+ adds r0, r1, 0
+ adds r0, 0x24
+ ldrb r0, [r0]
+ str r0, [sp, 0x8]
+ adds r0, r1, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bls _081521A8
+ b _08152464
+_081521A8:
+ movs r6, 0
+ ldr r0, [sp, 0x8]
+ cmp r6, r0
+ bcs _08152290
+_081521B0:
+ ldr r3, _08152248 @ =gUnknown_203F3E0
+ lsls r0, r6, 4
+ subs r1, r0, r6
+ lsls r1, 2
+ ldr r2, [r3]
+ adds r1, r2
+ ldr r4, _0815224C @ =0x000031cc
+ adds r4, r1
+ mov r8, r4
+ ldrb r1, [r4]
+ mov r9, r0
+ adds r0, r6, 0x1
+ str r0, [sp, 0xC]
+ cmp r1, 0
+ beq _08152284
+ adds r0, r2, 0
+ adds r0, 0xA8
+ adds r0, r6
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _08152284
+ ldr r1, [sp]
+ mov r10, r1
+ ldr r2, [sp, 0x4]
+ cmp r10, r2
+ bcs _08152284
+ adds r7, r3, 0
+_081521E6:
+ ldr r0, _08152250 @ =gUnknown_8471F50
+ add r0, r10
+ ldrb r5, [r0]
+ ldr r1, [r7]
+ lsls r4, r5, 1
+ adds r0, r1, 0
+ adds r0, 0xF4
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, r6
+ beq _08152284
+ adds r0, r1, 0
+ adds r0, 0xF5
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, r6
+ beq _08152284
+ mov r0, r8
+ ldrb r1, [r0]
+ adds r0, r6, 0
+ adds r2, r5, 0
+ bl sub_8152484
+ cmp r0, 0x1
+ bne _08152260
+ movs r2, 0
+ ldr r3, _08152248 @ =gUnknown_203F3E0
+ mov r8, r4
+_0815221E:
+ ldr r0, [r3]
+ mov r4, r8
+ adds r1, r2, r4
+ adds r0, 0xF4
+ adds r1, r0, r1
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ bne _08152254
+ strb r6, [r1]
+ ldr r0, [r3]
+ adds r0, 0xA8
+ adds r0, r6
+ movs r1, 0x2
+ strb r1, [r0]
+ ldr r0, [r3]
+ adds r0, 0xC4
+ adds r0, r5
+ movs r1, 0x1
+ strb r1, [r0]
+ b _08152284
+ .align 2, 0
+_08152248: .4byte gUnknown_203F3E0
+_0815224C: .4byte 0x000031cc
+_08152250: .4byte gUnknown_8471F50
+_08152254:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x1
+ bls _0815221E
+ b _08152284
+_08152260:
+ ldr r0, [r7]
+ mov r2, r9
+ subs r1, r2, r6
+ lsls r1, 2
+ adds r0, r1
+ ldr r4, _08152354 @ =0x000031d4
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _08152284
+ mov r0, r10
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r0, [sp, 0x4]
+ cmp r10, r0
+ bcc _081521E6
+_08152284:
+ ldr r1, [sp, 0xC]
+ lsls r0, r1, 24
+ lsrs r6, r0, 24
+ ldr r2, [sp, 0x8]
+ cmp r6, r2
+ bcc _081521B0
+_08152290:
+ ldr r4, [sp]
+ mov r10, r4
+ ldr r0, [sp, 0x4]
+ cmp r10, r0
+ bcc _0815229C
+ b _08152464
+_0815229C:
+ ldr r1, _08152358 @ =gUnknown_203F3E0
+ mov r9, r1
+_081522A0:
+ movs r6, 0xFF
+ ldr r0, _0815235C @ =gUnknown_8471F50
+ add r0, r10
+ ldrb r5, [r0]
+ mov r2, r9
+ ldr r0, [r2]
+ adds r0, 0xC4
+ adds r0, r5
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _081522B8
+ b _08152452
+_081522B8:
+ adds r0, r5, 0
+ bl sub_8152BD4
+ mov r1, r9
+ ldr r4, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r4, 0
+ adds r1, 0x90
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r1, 0x7
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x1
+ bls _081522DE
+ movs r3, 0x2
+_081522DE:
+ ldr r2, _08152360 @ =gUnknown_847553C
+ ldr r0, _08152364 @ =0x000031b4
+ adds r1, r4, r0
+ adds r1, r5
+ lsls r0, r3, 1
+ adds r0, r3
+ ldrb r1, [r1]
+ adds r0, r1
+ adds r0, r2
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ adds r0, 0xD0
+ adds r0, r5
+ ldrb r0, [r0]
+ subs r2, r1, r0
+ cmp r2, 0x5
+ bgt _0815230C
+ adds r1, r4, 0
+ adds r1, 0x9C
+ adds r1, r5
+ ldrb r0, [r1]
+ adds r0, r2
+ strb r0, [r1]
+_0815230C:
+ mov r2, r9
+ ldr r1, [r2]
+ adds r1, 0x9C
+ adds r1, r5
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r2, 0
+ strb r0, [r1]
+ movs r4, 0xFF
+ ands r0, r4
+ cmp r0, 0x5
+ bhi _08152326
+ b _08152452
+_08152326:
+ mov r1, r9
+ ldr r0, [r1]
+ adds r0, 0x9C
+ adds r0, r5
+ strb r2, [r0]
+ ldr r3, [r1]
+ lsls r1, r5, 1
+ adds r0, r3, 0
+ adds r0, 0xF4
+ adds r2, r0, r1
+ ldrb r0, [r2]
+ mov r8, r1
+ cmp r0, 0xFF
+ bne _08152368
+ adds r0, r3, 0
+ adds r0, 0xF5
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ bne _08152350
+ b _08152452
+_08152350:
+ b _08152378
+ .align 2, 0
+_08152354: .4byte 0x000031d4
+_08152358: .4byte gUnknown_203F3E0
+_0815235C: .4byte gUnknown_8471F50
+_08152360: .4byte gUnknown_847553C
+_08152364: .4byte 0x000031b4
+_08152368:
+ adds r0, r3, 0
+ adds r0, 0xF5
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ bne _08152378
+ ldrb r4, [r2]
+ b _0815239E
+_08152378:
+ mov r2, r9
+ ldr r1, [r2]
+ adds r0, r1, 0
+ adds r0, 0xF4
+ add r0, r8
+ ldrb r7, [r0]
+ adds r1, 0xF5
+ add r1, r8
+ ldrb r6, [r1]
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ bne _0815239A
+ adds r4, r7, 0
+ b _0815239E
+_0815239A:
+ adds r4, r6, 0
+ adds r6, r7, 0
+_0815239E:
+ mov r1, r9
+ ldr r0, [r1]
+ ldr r2, _08152474 @ =0x000032eb
+ adds r0, r2
+ adds r0, r5
+ movs r1, 0x7
+ strb r1, [r0]
+ mov r1, r9
+ ldr r0, [r1]
+ adds r0, 0xC4
+ adds r0, r5
+ movs r1, 0x2
+ strb r1, [r0]
+ mov r2, r9
+ ldr r0, [r2]
+ adds r0, 0xA8
+ adds r0, r4
+ movs r1, 0x3
+ strb r1, [r0]
+ ldr r0, [r2]
+ adds r0, 0xB8
+ adds r0, r5
+ strb r4, [r0]
+ ldr r1, [r2]
+ lsls r0, r4, 4
+ subs r0, r4
+ lsls r0, 2
+ adds r1, r0
+ ldr r2, _08152478 @ =0x000031d0
+ adds r1, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ mov r2, r9
+ ldr r1, [r2]
+ lsls r0, r6, 4
+ subs r0, r6
+ lsls r0, 2
+ adds r1, r0
+ ldr r0, _0815247C @ =0x000031d4
+ adds r1, r0
+ movs r2, 0x1
+ strb r2, [r1]
+ mov r0, r9
+ ldr r1, [r0]
+ lsls r0, r4, 1
+ adds r1, 0x86
+ adds r1, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ movs r0, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl sub_8152D34
+ movs r0, 0x1
+ bl sub_8152F94
+ adds r0, r4, 0
+ bl sub_8152B64
+ mov r1, r9
+ ldr r0, [r1]
+ adds r1, r0, 0
+ adds r1, 0xE8
+ adds r1, r5
+ ldr r2, _08152480 @ =0x000032e0
+ adds r0, r2
+ adds r0, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ mov r4, r9
+ ldr r0, [r4]
+ adds r0, r2
+ adds r0, r5
+ movs r1, 0x3
+ strb r1, [r0]
+ ldr r1, [r4]
+ adds r1, 0xF4
+ add r1, r8
+ ldrb r0, [r1]
+ movs r2, 0xFF
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r1, [r4]
+ adds r1, 0xF5
+ add r1, r8
+ ldrb r0, [r1]
+ orrs r0, r2
+ strb r0, [r1]
+_08152452:
+ mov r0, r10
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r4, [sp, 0x4]
+ cmp r10, r4
+ bcs _08152464
+ b _081522A0
+_08152464:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08152474: .4byte 0x000032eb
+_08152478: .4byte 0x000031d0
+_0815247C: .4byte 0x000031d4
+_08152480: .4byte 0x000032e0
+ thumb_func_end sub_8152174
+
+ thumb_func_start sub_8152484
+sub_8152484: @ 8152484
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r3, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ movs r7, 0
+ ldr r2, _081524B8 @ =gUnknown_203F3E0
+ ldr r1, [r2]
+ adds r0, r1, 0
+ adds r0, 0x24
+ ldrb r0, [r0]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _081524BC @ =0x000032e0
+ adds r1, r0
+ mov r12, r2
+ cmp r3, 0x2
+ beq _081524C0
+ cmp r3, 0x2
+ bgt _081524C6
+ cmp r3, 0x1
+ beq _081524C4
+ b _081524C6
+ .align 2, 0
+_081524B8: .4byte gUnknown_203F3E0
+_081524BC: .4byte 0x000032e0
+_081524C0:
+ movs r7, 0x1
+ b _081524C6
+_081524C4:
+ movs r7, 0x2
+_081524C6:
+ adds r0, r1, 0
+ adds r0, 0xB
+ adds r0, r6
+ ldrb r0, [r0]
+ subs r0, 0x6
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08152524
+ ldr r0, _08152518 @ =gUnknown_8472063
+ lsls r1, r4, 1
+ adds r1, r4
+ adds r1, r7, r1
+ lsls r2, r5, 4
+ subs r2, r5
+ adds r1, r2
+ adds r1, r0
+ ldrb r1, [r1]
+ cmp r6, r1
+ bne _0815255A
+ mov r0, r12
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0xC4
+ adds r0, r6
+ ldrb r0, [r0]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08152520
+ lsls r0, r4, 4
+ subs r0, r4
+ lsls r0, 2
+ adds r0, r1, r0
+ ldr r1, _0815251C @ =0x000031d4
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+ b _0815255A
+ .align 2, 0
+_08152518: .4byte gUnknown_8472063
+_0815251C: .4byte 0x000031d4
+_08152520:
+ movs r0, 0x1
+ b _0815255C
+_08152524:
+ ldr r0, _08152564 @ =gUnknown_8472063
+ lsls r1, r4, 1
+ adds r1, r4
+ adds r1, r7, r1
+ lsls r2, r5, 4
+ subs r2, r5
+ adds r1, r2
+ adds r1, r0
+ ldrb r1, [r1]
+ cmp r6, r1
+ bne _0815255A
+ mov r1, r12
+ ldr r0, [r1]
+ adds r0, 0xA8
+ adds r0, r4
+ movs r1, 0x4
+ strb r1, [r0]
+ mov r0, r12
+ ldr r1, [r0]
+ lsls r0, r4, 4
+ subs r0, r4
+ lsls r0, 2
+ adds r1, r0
+ ldr r0, _08152568 @ =0x000031d4
+ adds r1, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_0815255A:
+ movs r0, 0
+_0815255C:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08152564: .4byte gUnknown_8472063
+_08152568: .4byte 0x000031d4
+ thumb_func_end sub_8152484
+
+ thumb_func_start sub_815256C
+sub_815256C: @ 815256C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r2, _08152640 @ =gUnknown_203F3E0
+ ldr r4, [r2]
+ adds r0, r4, 0
+ adds r0, 0x44
+ ldrb r1, [r0]
+ adds r0, 0x4
+ ldrb r0, [r0]
+ mov r9, r0
+ movs r3, 0
+ mov r10, r3
+ movs r5, 0x90
+ lsls r5, 1
+ adds r0, r4, r5
+ str r3, [r0]
+ adds r5, r1, 0
+ mov r0, r9
+ subs r0, 0x1
+ cmp r5, r0
+ blt _0815259E
+ b _081527BC
+_0815259E:
+ mov r8, r2
+_081525A0:
+ mov r0, r8
+ ldr r4, [r0]
+ adds r0, r4, 0
+ adds r0, 0xC4
+ adds r0, r5
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bls _081525B2
+ b _081526BC
+_081525B2:
+ movs r1, 0x90
+ lsls r1, 1
+ adds r0, r4, r1
+ movs r2, 0x1
+ str r2, [r0]
+ ldr r1, _08152644 @ =0x000032eb
+ adds r0, r4, r1
+ adds r6, r0, r5
+ ldrb r0, [r6]
+ cmp r0, 0x9
+ bls _0815264C
+ movs r7, 0
+ movs r0, 0xA
+ strb r0, [r6]
+ mov r1, r8
+ ldr r0, [r1]
+ adds r0, 0xC4
+ adds r0, r5
+ movs r1, 0x3
+ strb r1, [r0]
+ mov r1, r8
+ ldr r0, [r1]
+ movs r6, 0xA4
+ lsls r6, 1
+ adds r0, r6
+ adds r1, r0, r5
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _081525FC
+ strb r2, [r1]
+ ldr r2, _08152648 @ =0x000032e0
+ adds r0, r4, r2
+ adds r0, r5
+ ldrb r0, [r0]
+ adds r0, 0x43
+ bl PlaySE
+_081525FC:
+ mov r0, r8
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bls _08152612
+ mov r2, r10
+ cmp r2, 0x1
+ beq _08152612
+ b _081527AC
+_08152612:
+ movs r0, 0x1
+ mov r10, r0
+ adds r0, r1, r6
+ adds r0, r5
+ strb r7, [r0]
+ mov r1, r8
+ ldr r0, [r1]
+ adds r1, r0, 0
+ adds r1, 0x40
+ ldrb r0, [r1]
+ cmp r0, 0x9
+ bhi _0815262E
+ adds r0, 0x1
+ strb r0, [r1]
+_0815262E:
+ movs r0, 0x3
+ adds r1, r5, 0
+ movs r2, 0
+ bl sub_8152D34
+ movs r0, 0
+ bl sub_8152F94
+ b _081527AC
+ .align 2, 0
+_08152640: .4byte gUnknown_203F3E0
+_08152644: .4byte 0x000032eb
+_08152648: .4byte 0x000032e0
+_0815264C:
+ adds r0, r5, 0
+ bl sub_8152BD4
+ mov r2, r8
+ ldr r7, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r7, 0
+ adds r1, 0x90
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r1, 0x7
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x1
+ bls _08152672
+ movs r3, 0x2
+_08152672:
+ ldr r2, _081526B4 @ =gUnknown_847553C
+ ldr r0, _081526B8 @ =0x000032e0
+ adds r1, r4, r0
+ adds r1, r5
+ lsls r0, r3, 1
+ adds r0, r3
+ ldrb r1, [r1]
+ adds r0, r1
+ adds r0, r2
+ ldrb r2, [r0]
+ adds r1, r7, 0
+ adds r1, 0xD0
+ adds r1, r5
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r3, 0
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r2
+ bcc _081526AC
+ ldrb r0, [r6]
+ adds r0, 0x1
+ strb r0, [r6]
+ mov r1, r8
+ ldr r0, [r1]
+ adds r0, 0xD0
+ adds r0, r5
+ strb r3, [r0]
+_081526AC:
+ bl sub_8152174
+ b _081527AC
+ .align 2, 0
+_081526B4: .4byte gUnknown_847553C
+_081526B8: .4byte 0x000032e0
+_081526BC:
+ cmp r0, 0x2
+ bne _0815273C
+ adds r1, r4, 0
+ adds r1, 0xDC
+ adds r1, r5
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r3, 0
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x13
+ bls _081527AC
+ mov r0, r8
+ ldr r2, [r0]
+ adds r0, r2, 0
+ adds r0, 0xB8
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r2, r0
+ ldr r1, _08152730 @ =0x000031d0
+ adds r2, r1
+ strb r3, [r2]
+ mov r2, r8
+ ldr r0, [r2]
+ adds r0, 0xDC
+ adds r0, r5
+ strb r3, [r0]
+ ldr r0, [r2]
+ adds r0, 0xD0
+ adds r0, r5
+ strb r3, [r0]
+ ldr r0, [r2]
+ adds r0, 0xC4
+ adds r0, r5
+ strb r3, [r0]
+ ldr r1, _08152734 @ =0x000032eb
+ adds r0, r4, r1
+ adds r0, r5
+ movs r1, 0x1
+ strb r1, [r0]
+ adds r0, r5, 0
+ bl sub_8152BD4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r5, 0
+ bl sub_8152BF8
+ ldr r2, _08152738 @ =0x000032e0
+ adds r1, r4, r2
+ adds r1, r5
+ strb r0, [r1]
+ b _081527AC
+ .align 2, 0
+_08152730: .4byte 0x000031d0
+_08152734: .4byte 0x000032eb
+_08152738: .4byte 0x000032e0
+_0815273C:
+ cmp r0, 0x3
+ bne _081527AC
+ adds r1, r4, 0
+ adds r1, 0xDC
+ adds r1, r5
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r2, 0
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x13
+ bls _081527AC
+ mov r0, r8
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bhi _081527AC
+ adds r0, r1, 0
+ adds r0, 0xDC
+ adds r0, r5
+ strb r2, [r0]
+ mov r1, r8
+ ldr r0, [r1]
+ adds r0, 0xD0
+ adds r0, r5
+ strb r2, [r0]
+ ldr r0, [r1]
+ adds r0, 0xC4
+ adds r0, r5
+ strb r2, [r0]
+ ldr r2, _081527CC @ =0x000032eb
+ adds r0, r4, r2
+ adds r0, r5
+ movs r1, 0x1
+ strb r1, [r0]
+ mov r0, r8
+ ldr r1, [r0]
+ adds r1, 0xE8
+ adds r1, r5
+ subs r2, 0xB
+ adds r4, r2
+ adds r4, r5
+ ldrb r0, [r4]
+ strb r0, [r1]
+ adds r0, r5, 0
+ bl sub_8152BD4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r5, 0
+ bl sub_8152BF8
+ strb r0, [r4]
+_081527AC:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r0, r9
+ subs r0, 0x1
+ cmp r5, r0
+ bge _081527BC
+ b _081525A0
+_081527BC:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081527CC: .4byte 0x000032eb
+ thumb_func_end sub_815256C
+
+ thumb_func_start sub_81527D0
+sub_81527D0: @ 81527D0
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ ldr r0, _08152838 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r1, r0, 0
+ adds r1, 0x44
+ adds r0, 0x48
+ ldrb r0, [r0]
+ mov r8, r0
+ ldrb r6, [r1]
+ cmp r6, r8
+ bcs _081528C2
+ ldr r0, _0815283C @ =gUnknown_8471F50
+ mov r9, r0
+_081527F0:
+ ldr r0, _08152838 @ =gUnknown_203F3E0
+ ldr r3, [r0]
+ adds r0, r3, 0
+ adds r0, 0x28
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ ldr r2, _08152840 @ =0x000031a0
+ adds r0, r2
+ adds r7, r3, r0
+ movs r0, 0xB
+ adds r2, r1, 0
+ muls r2, r0
+ adds r2, r6, r2
+ adds r3, 0x24
+ ldrb r1, [r3]
+ subs r1, 0x1
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 3
+ subs r0, r1
+ adds r2, r0
+ add r2, r9
+ ldrb r4, [r2]
+ adds r0, r7, 0
+ adds r0, 0x1F
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08152844
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_81542EC
+ b _0815284C
+ .align 2, 0
+_08152838: .4byte gUnknown_203F3E0
+_0815283C: .4byte gUnknown_8471F50
+_08152840: .4byte 0x000031a0
+_08152844:
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_81542EC
+_0815284C:
+ adds r0, r7, 0
+ adds r0, 0x1F
+ adds r5, r0, r4
+ ldrb r0, [r5]
+ cmp r0, 0x9
+ bls _08152878
+ adds r0, r7, 0
+ adds r0, 0x14
+ adds r0, r4
+ ldrb r1, [r0]
+ adds r1, 0x3
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r6, 0
+ bl sub_8154398
+ ldrb r1, [r5]
+ lsls r1, 25
+ movs r0, 0xFF
+ lsls r0, 24
+ adds r1, r0
+ b _0815289A
+_08152878:
+ adds r0, r7, 0
+ adds r0, 0x14
+ adds r3, r0, r4
+ ldrb r0, [r3]
+ cmp r0, 0x3
+ bne _081528A4
+ movs r0, 0x7
+ strb r0, [r5]
+ adds r0, r6, 0
+ movs r1, 0x6
+ bl sub_8154398
+ ldrb r1, [r5]
+ lsls r1, 25
+ movs r2, 0xFF
+ lsls r2, 24
+ adds r1, r2
+_0815289A:
+ lsrs r1, 24
+ adds r0, r6, 0
+ bl sub_8154370
+ b _081528B8
+_081528A4:
+ ldrb r1, [r3]
+ adds r0, r6, 0
+ bl sub_8154398
+ ldrb r1, [r5]
+ lsls r1, 25
+ lsrs r1, 24
+ adds r0, r6, 0
+ bl sub_8154370
+_081528B8:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, r8
+ bcc _081527F0
+_081528C2:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81527D0
+
+ thumb_func_start sub_81528D0
+sub_81528D0: @ 81528D0
+ push {r4-r6,lr}
+ ldr r1, _08152908 @ =gUnknown_203F3E0
+ ldr r0, [r1]
+ adds r0, 0x24
+ ldrb r5, [r0]
+ movs r4, 0
+ cmp r4, r5
+ bcs _08152902
+ adds r6, r1, 0
+_081528E2:
+ lsls r0, r4, 4
+ subs r0, r4
+ lsls r0, 2
+ ldr r1, [r6]
+ adds r0, r1
+ ldr r1, _0815290C @ =0x000031cc
+ adds r0, r1
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl sub_8153DA8
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _081528E2
+_08152902:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08152908: .4byte gUnknown_203F3E0
+_0815290C: .4byte 0x000031cc
+ thumb_func_end sub_81528D0
+
+ thumb_func_start sub_8152910
+sub_8152910: @ 8152910
+ push {r4,r5,lr}
+ ldr r0, _08152938 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x24
+ ldrb r5, [r0]
+ movs r4, 0
+ cmp r4, r5
+ bcs _08152932
+_08152920:
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl sub_8153DA8
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _08152920
+_08152932:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08152938: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8152910
+
+ thumb_func_start sub_815293C
+sub_815293C: @ 815293C
+ push {lr}
+ bl sub_81527D0
+ ldr r0, _08152954 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bls _08152958
+ bl sub_8152910
+ b _0815295C
+ .align 2, 0
+_08152954: .4byte gUnknown_203F3E0
+_08152958:
+ bl sub_81528D0
+_0815295C:
+ ldr r0, _0815296C @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x40
+ ldrb r0, [r0]
+ bl sub_8153FC8
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815296C: .4byte gUnknown_203F3E0
+ thumb_func_end sub_815293C
+
+ thumb_func_start sub_8152970
+sub_8152970: @ 8152970
+ push {lr}
+ bl sub_81527D0
+ ldr r0, _08152988 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bls _0815298C
+ bl sub_8152910
+ b _08152990
+ .align 2, 0
+_08152988: .4byte gUnknown_203F3E0
+_0815298C:
+ bl sub_81528D0
+_08152990:
+ ldr r0, _081529A0 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x40
+ ldrb r0, [r0]
+ bl sub_8153FC8
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081529A0: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8152970
+
+ thumb_func_start sub_81529A4
+sub_81529A4: @ 81529A4
+ push {lr}
+ adds r3, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x1
+ cmp r0, 0x4
+ bhi _081529FC
+ lsls r0, 2
+ ldr r1, _081529BC @ =_081529C0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_081529BC: .4byte _081529C0
+ .align 2, 0
+_081529C0:
+ .4byte _081529D4
+ .4byte _081529DC
+ .4byte _081529E4
+ .4byte _081529EC
+ .4byte _081529F4
+_081529D4:
+ movs r0, 0x4
+ strb r0, [r3]
+ movs r0, 0x7
+ b _081529FA
+_081529DC:
+ movs r0, 0x3
+ strb r0, [r3]
+ movs r0, 0x8
+ b _081529FA
+_081529E4:
+ movs r0, 0x2
+ strb r0, [r3]
+ movs r0, 0x9
+ b _081529FA
+_081529EC:
+ movs r0, 0x1
+ strb r0, [r3]
+ movs r0, 0xA
+ b _081529FA
+_081529F4:
+ movs r0, 0
+ strb r0, [r3]
+ movs r0, 0xB
+_081529FA:
+ strb r0, [r2]
+_081529FC:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81529A4
+
+ thumb_func_start sub_8152A00
+sub_8152A00: @ 8152A00
+ push {r4-r6,lr}
+ ldr r1, _08152A58 @ =gUnknown_203F3E0
+ ldr r0, [r1]
+ adds r0, 0x24
+ ldrb r5, [r0]
+ movs r4, 0x1
+ cmp r4, r5
+ bcs _08152A66
+ adds r6, r1, 0
+_08152A12:
+ ldr r0, [r6]
+ movs r1, 0xAC
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08152A34
+ adds r0, r4, 0
+ bl sub_815A5E8
+ ldr r1, [r6]
+ movs r2, 0xAC
+ lsls r2, 1
+ adds r1, r2
+ adds r1, r4
+ strb r0, [r1]
+_08152A34:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _08152A12
+ cmp r4, r5
+ bcs _08152A66
+ ldr r0, _08152A58 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ movs r2, 0xAC
+ lsls r2, 1
+ adds r1, r0, r2
+_08152A4C:
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08152A5C
+ movs r0, 0
+ b _08152A68
+ .align 2, 0
+_08152A58: .4byte gUnknown_203F3E0
+_08152A5C:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _08152A4C
+_08152A66:
+ movs r0, 0x1
+_08152A68:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8152A00
+
+ thumb_func_start sub_8152A70
+sub_8152A70: @ 8152A70
+ push {r4,lr}
+ movs r1, 0
+ ldr r4, _08152A94 @ =gUnknown_203F3E0
+ movs r3, 0xAC
+ lsls r3, 1
+ movs r2, 0
+_08152A7C:
+ ldr r0, [r4]
+ adds r0, r3
+ adds r0, r1
+ strb r2, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x4
+ bls _08152A7C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08152A94: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8152A70
+
+ thumb_func_start sub_8152A98
+sub_8152A98: @ 8152A98
+ push {r4,lr}
+ ldr r3, _08152ACC @ =gUnknown_203F3E0
+ ldr r1, [r3]
+ adds r2, r1, 0
+ adds r2, 0x40
+ ldrb r0, [r2]
+ cmp r0, 0x9
+ bls _08152AD0
+ movs r4, 0x90
+ lsls r4, 1
+ adds r0, r1, r4
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08152AD0
+ movs r0, 0xA
+ strb r0, [r2]
+ ldr r0, [r3]
+ movs r1, 0x96
+ lsls r1, 1
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _08152AD0
+ movs r0, 0x1
+ b _08152AD2
+ .align 2, 0
+_08152ACC: .4byte gUnknown_203F3E0
+_08152AD0:
+ movs r0, 0
+_08152AD2:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8152A98
+
+ thumb_func_start sub_8152AD8
+sub_8152AD8: @ 8152AD8
+ push {r4-r6,lr}
+ ldr r4, _08152B50 @ =gUnknown_203F3E0
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0x40
+ ldrb r0, [r2]
+ cmp r0, 0x9
+ bls _08152B5C
+ adds r0, r1, 0
+ adds r0, 0x44
+ ldrb r3, [r0]
+ adds r0, 0x4
+ ldrb r5, [r0]
+ movs r0, 0xA
+ strb r0, [r2]
+ ldr r4, [r4]
+ mov r12, r4
+ movs r0, 0x96
+ lsls r0, 1
+ add r0, r12
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _08152B5C
+ adds r4, r3, 0
+ cmp r4, r5
+ bcs _08152B4C
+ mov r0, r12
+ adds r0, 0x28
+ ldrb r3, [r0]
+ lsls r1, r3, 4
+ subs r1, r3
+ lsls r1, 2
+ ldr r6, _08152B54 @ =gUnknown_8471F50
+ subs r0, 0x4
+ ldrb r2, [r0]
+ subs r2, 0x1
+ add r1, r12
+ movs r0, 0xB
+ muls r3, r0
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 3
+ subs r2, r0, r2
+ ldr r0, _08152B58 @ =0x000031bf
+ adds r1, r0
+_08152B32:
+ adds r0, r4, r3
+ adds r0, r2
+ adds r0, r6
+ ldrb r0, [r0]
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r0, 0xA
+ bne _08152B5C
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _08152B32
+_08152B4C:
+ movs r0, 0x1
+ b _08152B5E
+ .align 2, 0
+_08152B50: .4byte gUnknown_203F3E0
+_08152B54: .4byte gUnknown_8471F50
+_08152B58: .4byte 0x000031bf
+_08152B5C:
+ movs r0, 0
+_08152B5E:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8152AD8
+
+ thumb_func_start sub_8152B64
+sub_8152B64: @ 8152B64
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, _08152BCC @ =gUnknown_8475550
+ mov r8, r0
+ ldr r0, _08152BD0 @ =gUnknown_203F3E0
+ ldr r6, [r0]
+ adds r0, r6, 0
+ adds r0, 0x90
+ adds r0, r5
+ mov r9, r0
+ ldrb r7, [r0]
+ adds r0, r7, 0
+ movs r1, 0x7
+ bl __umodsi3
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ add r4, r8
+ adds r0, r7, 0
+ movs r1, 0x7
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x64
+ muls r0, r1
+ ldrb r4, [r4]
+ adds r0, r4
+ lsls r0, 24
+ lsls r5, 1
+ adds r6, 0x86
+ adds r6, r5
+ ldrh r1, [r6]
+ lsrs r0, 24
+ cmp r1, r0
+ bcc _08152BBE
+ adds r0, r7, 0x1
+ mov r1, r9
+ strb r0, [r1]
+_08152BBE:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08152BCC: .4byte gUnknown_8475550
+_08152BD0: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8152B64
+
+ thumb_func_start sub_8152BD4
+sub_8152BD4: @ 8152BD4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _08152BF0 @ =gUnknown_84720FC
+ ldr r1, _08152BF4 @ =gUnknown_203F3E0
+ ldr r1, [r1]
+ adds r1, 0x24
+ ldrb r1, [r1]
+ subs r1, 0x1
+ movs r2, 0xB
+ muls r1, r2
+ adds r0, r1
+ adds r0, r3
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_08152BF0: .4byte gUnknown_84720FC
+_08152BF4: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8152BD4
+
+ thumb_func_start sub_8152BF8
+sub_8152BF8: @ 8152BF8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r4, _08152C78 @ =gUnknown_203F3E0
+ ldr r1, [r4]
+ adds r1, 0x24
+ ldrb r2, [r1]
+ subs r2, 0x1
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r3, _08152C7C @ =gUnknown_84720AE
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r0, r2, 4
+ subs r0, r2
+ adds r1, r0
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ mov r12, r0
+ adds r0, r3, 0x1
+ adds r0, r1, r0
+ ldrb r7, [r0]
+ adds r3, 0x2
+ adds r1, r3
+ ldrb r1, [r1]
+ mov r8, r1
+ movs r3, 0
+ ldr r1, _08152C80 @ =gUnknown_8472133
+ lsls r0, r2, 2
+ adds r2, r0, r2
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08152C60
+ adds r6, r1, 0
+_08152C46:
+ adds r0, r3, r2
+ adds r0, r6
+ ldrb r0, [r0]
+ cmp r5, r0
+ beq _08152C84
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r0, r3, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08152C46
+_08152C60:
+ ldr r0, [r4]
+ adds r0, 0x90
+ mov r1, r12
+ adds r2, r0, r1
+ adds r1, r0, r7
+ ldrb r0, [r2]
+ ldrb r3, [r1]
+ cmp r0, r3
+ bls _08152C8E
+ adds r1, r0, 0
+ b _08152C90
+ .align 2, 0
+_08152C78: .4byte gUnknown_203F3E0
+_08152C7C: .4byte gUnknown_84720AE
+_08152C80: .4byte gUnknown_8472133
+_08152C84:
+ ldr r0, [r4]
+ adds r0, 0x90
+ adds r0, r7
+ ldrb r0, [r0]
+ b _08152CA2
+_08152C8E:
+ ldrb r1, [r1]
+_08152C90:
+ ldr r0, [r4]
+ adds r0, 0x90
+ mov r2, r8
+ adds r4, r0, r2
+ ldrb r0, [r4]
+ cmp r0, r1
+ bls _08152CA0
+ adds r1, r0, 0
+_08152CA0:
+ adds r0, r1, 0
+_08152CA2:
+ adds r1, r5, 0
+ bl sub_8152CB8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8152BF8
+
+ thumb_func_start sub_8152CB8
+sub_8152CB8: @ 8152CB8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _08152CE4 @ =gUnknown_203F3E0
+ ldr r2, [r2]
+ adds r2, 0xE8
+ adds r2, r1
+ ldrb r4, [r2]
+ movs r1, 0x7
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x6
+ bhi _08152D26
+ lsls r0, 2
+ ldr r1, _08152CE8 @ =_08152CEC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08152CE4: .4byte gUnknown_203F3E0
+_08152CE8: .4byte _08152CEC
+ .align 2, 0
+_08152CEC:
+ .4byte _08152D26
+ .4byte _08152D1E
+ .4byte _08152D2A
+ .4byte _08152D08
+ .4byte _08152D0E
+ .4byte _08152D14
+ .4byte _08152D1A
+_08152D08:
+ cmp r4, 0
+ beq _08152D1E
+ b _08152D26
+_08152D0E:
+ cmp r4, 0
+ beq _08152D2A
+ b _08152D26
+_08152D14:
+ cmp r4, 0x2
+ beq _08152D1E
+ b _08152D2A
+_08152D1A:
+ cmp r4, 0
+ bne _08152D22
+_08152D1E:
+ movs r0, 0x1
+ b _08152D2C
+_08152D22:
+ cmp r4, 0x1
+ beq _08152D2A
+_08152D26:
+ movs r0, 0
+ b _08152D2C
+_08152D2A:
+ movs r0, 0x2
+_08152D2C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8152CB8
+
+ thumb_func_start sub_8152D34
+sub_8152D34: @ 8152D34
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r3, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r1, _08152D60 @ =gUnknown_203F3E0
+ ldr r2, [r1]
+ adds r0, r2, 0
+ adds r0, 0x24
+ ldrb r0, [r0]
+ adds r5, r1, 0
+ cmp r4, 0
+ bge _08152D54
+ b _08152F8E
+_08152D54:
+ cmp r4, 0x2
+ ble _08152D64
+ cmp r4, 0x3
+ beq _08152D94
+ b _08152F8E
+ .align 2, 0
+_08152D60: .4byte gUnknown_203F3E0
+_08152D64:
+ ldr r1, _08152D8C @ =0x000031b4
+ adds r0, r2, r1
+ adds r0, r3
+ ldrb r4, [r0]
+ lsls r4, 1
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r4, r0
+ adds r0, r2, 0
+ adds r0, 0x4A
+ adds r0, r4
+ ldrh r0, [r0]
+ ldr r1, _08152D90 @ =0x00004e20
+ bl sub_815378C
+ ldr r1, [r5]
+ adds r1, 0x4A
+ adds r1, r4
+ b _08152F8C
+ .align 2, 0
+_08152D8C: .4byte 0x000031b4
+_08152D90: .4byte 0x00004e20
+_08152D94:
+ cmp r0, 0x3
+ bne _08152D9A
+ b _08152EE0
+_08152D9A:
+ cmp r0, 0x3
+ bgt _08152DA6
+ cmp r0, 0x2
+ bne _08152DA4
+ b _08152F4A
+_08152DA4:
+ b _08152F8E
+_08152DA6:
+ cmp r0, 0x4
+ beq _08152E56
+ cmp r0, 0x5
+ beq _08152DB0
+ b _08152F8E
+_08152DB0:
+ cmp r3, 0x9
+ bls _08152DB6
+ b _08152F8E
+_08152DB6:
+ lsls r0, r3, 2
+ ldr r1, _08152DC0 @ =_08152DC4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08152DC0: .4byte _08152DC4
+ .align 2, 0
+_08152DC4:
+ .4byte _08152DEC
+ .4byte _08152DFC
+ .4byte _08152E02
+ .4byte _08152E12
+ .4byte _08152E18
+ .4byte _08152E28
+ .4byte _08152E2E
+ .4byte _08152E3C
+ .4byte _08152E40
+ .4byte _08152E50
+_08152DEC:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x68
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x74
+ b _08152F88
+_08152DFC:
+ ldr r1, [r5]
+ adds r1, 0x74
+ b _08152F88
+_08152E02:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x74
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x80
+ b _08152F88
+_08152E12:
+ ldr r1, [r5]
+ adds r1, 0x80
+ b _08152F88
+_08152E18:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x80
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x50
+ b _08152F88
+_08152E28:
+ ldr r1, [r5]
+ adds r1, 0x50
+ b _08152F88
+_08152E2E:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x50
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ b _08152F86
+_08152E3C:
+ ldr r1, [r5]
+ b _08152F86
+_08152E40:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x5C
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x68
+ b _08152F88
+_08152E50:
+ ldr r1, [r5]
+ adds r1, 0x68
+ b _08152F88
+_08152E56:
+ subs r0, r3, 0x1
+ cmp r0, 0x7
+ bls _08152E5E
+ b _08152F8E
+_08152E5E:
+ lsls r0, 2
+ ldr r1, _08152E68 @ =_08152E6C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08152E68: .4byte _08152E6C
+ .align 2, 0
+_08152E6C:
+ .4byte _08152E8C
+ .4byte _08152E9C
+ .4byte _08152EA2
+ .4byte _08152EB2
+ .4byte _08152EB8
+ .4byte _08152EC6
+ .4byte _08152ECA
+ .4byte _08152EDA
+_08152E8C:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x68
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x74
+ b _08152F88
+_08152E9C:
+ ldr r1, [r5]
+ adds r1, 0x74
+ b _08152F88
+_08152EA2:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x74
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x50
+ b _08152F88
+_08152EB2:
+ ldr r1, [r5]
+ adds r1, 0x50
+ b _08152F88
+_08152EB8:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x50
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ b _08152F86
+_08152EC6:
+ ldr r1, [r5]
+ b _08152F86
+_08152ECA:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x5C
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x68
+ b _08152F88
+_08152EDA:
+ ldr r1, [r5]
+ adds r1, 0x68
+ b _08152F88
+_08152EE0:
+ subs r0, r3, 0x2
+ cmp r0, 0x5
+ bhi _08152F8E
+ lsls r0, 2
+ ldr r1, _08152EF0 @ =_08152EF4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08152EF0: .4byte _08152EF4
+ .align 2, 0
+_08152EF4:
+ .4byte _08152F0C
+ .4byte _08152F1C
+ .4byte _08152F22
+ .4byte _08152F32
+ .4byte _08152F38
+ .4byte _08152F46
+_08152F0C:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x5C
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x68
+ b _08152F88
+_08152F1C:
+ ldr r1, [r5]
+ adds r1, 0x68
+ b _08152F88
+_08152F22:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x68
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ adds r1, 0x50
+ b _08152F88
+_08152F32:
+ ldr r1, [r5]
+ adds r1, 0x50
+ b _08152F88
+_08152F38:
+ ldr r1, [r5]
+ adds r2, r1, 0
+ adds r2, 0x50
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ b _08152F86
+_08152F46:
+ ldr r1, [r5]
+ b _08152F86
+_08152F4A:
+ cmp r3, 0x4
+ beq _08152F70
+ cmp r3, 0x4
+ bgt _08152F58
+ cmp r3, 0x3
+ beq _08152F62
+ b _08152F8E
+_08152F58:
+ cmp r3, 0x5
+ beq _08152F76
+ cmp r3, 0x6
+ beq _08152F84
+ b _08152F8E
+_08152F62:
+ adds r1, r2, 0
+ adds r1, 0x50
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ adds r1, 0xC
+ b _08152F88
+_08152F70:
+ adds r1, r2, 0
+ adds r1, 0x50
+ b _08152F88
+_08152F76:
+ adds r1, r2, 0
+ adds r1, 0x50
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ adds r1, 0xC
+ b _08152F88
+_08152F84:
+ adds r1, r2, 0
+_08152F86:
+ adds r1, 0x5C
+_08152F88:
+ ldrh r0, [r1]
+ adds r0, 0x1
+_08152F8C:
+ strh r0, [r1]
+_08152F8E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8152D34
+
+ thumb_func_start sub_8152F94
+sub_8152F94: @ 8152F94
+ push {r4,r5,lr}
+ adds r1, r0, 0
+ ldr r4, _08152FD8 @ =gUnknown_203F3E0
+ ldr r3, [r4]
+ adds r0, r3, 0
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r0, 0x5
+ bne _08152FFE
+ cmp r1, 0x1
+ bne _08152FE0
+ movs r5, 0x89
+ lsls r5, 1
+ adds r1, r3, r5
+ ldrh r0, [r1]
+ adds r2, r0, 0x1
+ strh r2, [r1]
+ movs r0, 0x8A
+ lsls r0, 1
+ adds r1, r3, r0
+ lsls r0, r2, 16
+ lsrs r0, 16
+ ldrh r3, [r1]
+ cmp r0, r3
+ bls _08152FC8
+ strh r2, [r1]
+_08152FC8:
+ ldr r0, [r4]
+ adds r2, r0, r5
+ ldrh r0, [r2]
+ ldr r1, _08152FDC @ =0x0000270f
+ cmp r0, r1
+ bls _08152FFE
+ strh r1, [r2]
+ b _08152FFE
+ .align 2, 0
+_08152FD8: .4byte gUnknown_203F3E0
+_08152FDC: .4byte 0x0000270f
+_08152FE0:
+ movs r2, 0x89
+ lsls r2, 1
+ adds r0, r3, r2
+ movs r5, 0x8A
+ lsls r5, 1
+ adds r1, r3, r5
+ ldrh r0, [r0]
+ ldrh r3, [r1]
+ cmp r0, r3
+ bls _08152FF6
+ strh r0, [r1]
+_08152FF6:
+ ldr r0, [r4]
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0]
+_08152FFE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8152F94
+
+ thumb_func_start sub_8153004
+sub_8153004: @ 8153004
+ push {r4,r5,lr}
+ movs r3, 0
+ ldr r2, _08153044 @ =gUnknown_203F3E0
+ ldr r0, [r2]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r3, r0
+ bcs _0815303C
+ adds r5, r2, 0
+ movs r4, 0x8A
+ lsls r4, 1
+_0815301A:
+ ldr r2, [r5]
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r1, r2, 0
+ adds r1, 0x54
+ adds r1, r0
+ adds r0, r2, r4
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r2, 0x24
+ ldrb r2, [r2]
+ cmp r3, r2
+ bcc _0815301A
+_0815303C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153044: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8153004
+
+ thumb_func_start sub_8153048
+sub_8153048: @ 8153048
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r5, 0
+ ldr r7, _08153138 @ =gUnknown_203F3E0
+ movs r4, 0
+ ldr r0, _0815313C @ =0x000031bf
+ mov r10, r0
+_0815305C:
+ movs r2, 0
+ lsls r6, r5, 4
+ lsls r1, r5, 1
+ mov r8, r1
+ lsls r0, r5, 3
+ mov r12, r0
+ adds r1, r5, 0x1
+ mov r9, r1
+ subs r0, r6, r5
+ lsls r3, r0, 2
+_08153070:
+ ldr r0, [r7]
+ adds r1, r2, r3
+ add r0, r10
+ adds r0, r1
+ strb r4, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xA
+ bls _08153070
+ ldr r0, [r7]
+ subs r1, r6, r5
+ lsls r1, 2
+ adds r0, r1
+ ldr r2, _08153140 @ =0x000031cc
+ adds r0, r2
+ strb r4, [r0]
+ ldr r0, [r7]
+ adds r0, r1
+ ldr r1, _08153144 @ =0x000031d0
+ adds r0, r1
+ strb r4, [r0]
+ ldr r0, [r7]
+ adds r0, 0x90
+ adds r0, r5
+ strb r4, [r0]
+ ldr r1, [r7]
+ adds r0, r1, 0
+ adds r0, 0x86
+ add r0, r8
+ strh r4, [r0]
+ add r1, r12
+ ldr r2, _08153148 @ =0x00003308
+ adds r1, r2
+ strb r4, [r1]
+ ldr r2, [r7]
+ ldr r1, _0815314C @ =0x0000330c
+ adds r0, r2, r1
+ add r0, r12
+ str r4, [r0]
+ mov r0, r8
+ adds r1, r0, r5
+ lsls r1, 2
+ adds r0, r2, 0
+ adds r0, 0x4A
+ adds r0, r1
+ strh r4, [r0]
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r0, r1
+ strh r4, [r0]
+ adds r0, r2, 0
+ adds r0, 0x4E
+ adds r0, r1
+ strh r4, [r0]
+ adds r0, r2, 0
+ adds r0, 0x50
+ adds r0, r1
+ strh r4, [r0]
+ adds r0, r2, 0
+ adds r0, 0x52
+ adds r0, r1
+ strh r4, [r0]
+ adds r0, r2, 0
+ adds r0, 0x54
+ adds r0, r1
+ strh r4, [r0]
+ mov r1, r9
+ lsls r0, r1, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x4
+ bls _0815305C
+ ldr r2, _08153138 @ =gUnknown_203F3E0
+ ldr r0, [r2]
+ movs r1, 0xAA
+ lsls r1, 1
+ adds r0, r1
+ movs r2, 0
+ strb r2, [r0]
+ ldr r1, _08153138 @ =gUnknown_203F3E0
+ ldr r0, [r1]
+ movs r1, 0x89
+ lsls r1, 1
+ adds r3, r0, r1
+ movs r1, 0
+ strh r2, [r3]
+ adds r0, 0x40
+ strb r1, [r0]
+ bl sub_81528D0
+ bl sub_81527D0
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153138: .4byte gUnknown_203F3E0
+_0815313C: .4byte 0x000031bf
+_08153140: .4byte 0x000031cc
+_08153144: .4byte 0x000031d0
+_08153148: .4byte 0x00003308
+_0815314C: .4byte 0x0000330c
+ thumb_func_end sub_8153048
+
+ thumb_func_start sub_8153150
+sub_8153150: @ 8153150
+ push {r4,r5,lr}
+ movs r4, 0
+ ldr r0, _08153168 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ beq _0815316C
+ cmp r0, 0x5
+ beq _08153170
+ b _08153172
+ .align 2, 0
+_08153168: .4byte gUnknown_203F3E0
+_0815316C:
+ movs r4, 0x1
+ b _08153172
+_08153170:
+ movs r4, 0x2
+_08153172:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r0, 24
+ movs r3, 0
+ lsls r1, r4, 2
+ ldr r5, _081531B4 @ =gUnknown_203F3E0
+ ldr r2, _081531B8 @ =gUnknown_8475558
+ adds r1, r4
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r2
+ ldrb r2, [r0]
+_08153196:
+ ldr r1, [r5]
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r1, 0x52
+ adds r1, r0
+ strh r2, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x4
+ bls _08153196
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081531B4: .4byte gUnknown_203F3E0
+_081531B8: .4byte gUnknown_8475558
+ thumb_func_end sub_8153150
+
+ thumb_func_start sub_81531BC
+sub_81531BC: @ 81531BC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _081531F4 @ =gUnknown_203F3E0
+ ldr r2, [r1]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r0, r2, 0
+ adds r0, 0x4A
+ adds r0, r1
+ ldrh r3, [r0]
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r0, r1
+ ldrh r0, [r0]
+ adds r2, 0x4E
+ adds r2, r1
+ adds r3, r0
+ ldrh r2, [r2]
+ adds r0, r3, r2
+ ldr r1, _081531F8 @ =0x0000270f
+ cmp r0, r1
+ bls _081531EE
+ adds r0, r1, 0
+_081531EE:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081531F4: .4byte gUnknown_203F3E0
+_081531F8: .4byte 0x0000270f
+ thumb_func_end sub_81531BC
+
+ thumb_func_start sub_81531FC
+sub_81531FC: @ 81531FC
+ push {r4-r6,lr}
+ ldr r5, _08153264 @ =gUnknown_203F3E0
+ ldr r0, [r5]
+ adds r0, 0x28
+ ldrb r0, [r0]
+ bl sub_81531BC
+ ldr r1, _08153268 @ =0x0000270f
+ bl sub_815379C
+ adds r4, r0, 0
+ ldr r0, [r5]
+ adds r0, 0x28
+ ldrb r0, [r0]
+ bl sub_8153424
+ ldr r1, _0815326C @ =0x000f4236
+ bl sub_815379C
+ adds r2, r0, 0
+ ldr r3, _08153270 @ =gSaveBlock2Ptr
+ ldr r0, [r3]
+ movs r6, 0xB1
+ lsls r6, 4
+ adds r1, r0, r6
+ ldr r0, [r1]
+ cmp r0, r2
+ bcs _08153236
+ str r2, [r1]
+_08153236:
+ ldr r0, [r3]
+ ldr r2, _08153274 @ =0x00000b14
+ adds r1, r0, r2
+ ldrh r0, [r1]
+ cmp r0, r4
+ bcs _08153244
+ strh r4, [r1]
+_08153244:
+ ldr r0, [r3]
+ ldr r6, _08153278 @ =0x00000b16
+ adds r2, r0, r6
+ ldr r0, [r5]
+ movs r1, 0x8A
+ lsls r1, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ ldrh r0, [r2]
+ cmp r0, r1
+ bcs _0815325C
+ strh r1, [r2]
+_0815325C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153264: .4byte gUnknown_203F3E0
+_08153268: .4byte 0x0000270f
+_0815326C: .4byte 0x000f4236
+_08153270: .4byte gSaveBlock2Ptr
+_08153274: .4byte 0x00000b14
+_08153278: .4byte 0x00000b16
+ thumb_func_end sub_81531FC
+
+ thumb_func_start sub_815327C
+sub_815327C: @ 815327C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _081532B4 @ =gUnknown_203F3E0
+ ldr r0, [r1]
+ adds r0, 0x9B
+ ldrb r6, [r0]
+ movs r3, 0x3
+ adds r5, r1, 0
+ adds r4, r5, 0
+_08153290:
+ ldr r0, [r4]
+ adds r0, 0x98
+ adds r2, r0, r3
+ subs r1, r3, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ lsls r1, 24
+ lsrs r3, r1, 24
+ cmp r3, 0
+ bne _08153290
+ ldr r0, [r5]
+ adds r0, 0x98
+ strb r7, [r0]
+ adds r0, r6, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081532B4: .4byte gUnknown_203F3E0
+ thumb_func_end sub_815327C
+
+ thumb_func_start sub_81532B8
+sub_81532B8: @ 81532B8
+ push {r4,lr}
+ ldr r4, _081532EC @ =gUnknown_203F3E0
+ ldr r3, [r4]
+ adds r0, r3, 0
+ adds r0, 0x28
+ ldrb r1, [r0]
+ adds r0, 0x88
+ adds r2, r0, r1
+ ldrb r0, [r2]
+ cmp r0, 0
+ bne _08153360
+ ldr r0, _081532F0 @ =gMain
+ ldrh r2, [r0, 0x2E]
+ movs r0, 0x40
+ ands r0, r2
+ cmp r0, 0
+ beq _081532F8
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r3, r0
+ ldr r1, _081532F4 @ =0x000031cc
+ adds r0, r1
+ movs r1, 0x2
+ b _0815332E
+ .align 2, 0
+_081532EC: .4byte gUnknown_203F3E0
+_081532F0: .4byte gMain
+_081532F4: .4byte 0x000031cc
+_081532F8:
+ movs r0, 0x20
+ ands r0, r2
+ cmp r0, 0
+ beq _08153314
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r3, r0
+ ldr r1, _08153310 @ =0x000031cc
+ adds r0, r1
+ movs r1, 0x3
+ b _0815332E
+ .align 2, 0
+_08153310: .4byte 0x000031cc
+_08153314:
+ movs r0, 0x10
+ ands r0, r2
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0
+ beq _0815334C
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r3, r0
+ ldr r1, _08153348 @ =0x000031cc
+ adds r0, r1
+ movs r1, 0x1
+_0815332E:
+ strb r1, [r0]
+ ldr r0, [r4]
+ adds r1, r0, 0
+ adds r1, 0x28
+ adds r0, 0xB0
+ ldrb r1, [r1]
+ adds r0, r1
+ movs r1, 0x6
+ strb r1, [r0]
+ movs r0, 0xCD
+ bl PlaySE
+ b _08153364
+ .align 2, 0
+_08153348: .4byte 0x000031cc
+_0815334C:
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r3, r0
+ ldr r1, _0815335C @ =0x000031cc
+ adds r0, r1
+ strb r2, [r0]
+ b _08153364
+ .align 2, 0
+_0815335C: .4byte 0x000031cc
+_08153360:
+ subs r0, 0x1
+ strb r0, [r2]
+_08153364:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81532B8
+
+ thumb_func_start sub_815336C
+sub_815336C: @ 815336C
+ ldr r0, _08153388 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x28
+ ldrb r2, [r0]
+ lsls r0, r2, 4
+ subs r0, r2
+ lsls r0, 2
+ adds r1, r0
+ ldr r0, _0815338C @ =0x000031cc
+ adds r1, r0
+ movs r0, 0
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_08153388: .4byte gUnknown_203F3E0
+_0815338C: .4byte 0x000031cc
+ thumb_func_end sub_815336C
+
+ thumb_func_start sub_8153390
+sub_8153390: @ 8153390
+ ldr r0, _081533B0 @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x28
+ ldrb r2, [r0]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ adds r1, 0x52
+ adds r1, r0
+ ldrh r0, [r1]
+ adds r0, 0x85
+ lsls r0, 16
+ lsrs r0, 16
+ bx lr
+ .align 2, 0
+_081533B0: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8153390
+
+ thumb_func_start sub_81533B4
+sub_81533B4: @ 81533B4
+ ldr r0, _081533C0 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x24
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_081533C0: .4byte gUnknown_203F3E0
+ thumb_func_end sub_81533B4
+
+ thumb_func_start sub_81533C4
+sub_81533C4: @ 81533C4
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _081533E4 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _081533F0
+ ldr r0, _081533E8 @ =gUnknown_203F3E0
+ lsls r1, r2, 4
+ subs r1, r2
+ lsls r1, 2
+ ldr r2, _081533EC @ =0x000031a0
+ adds r1, r2
+ ldr r0, [r0]
+ b _081533F8
+ .align 2, 0
+_081533E4: .4byte gReceivedRemoteLinkPlayers
+_081533E8: .4byte gUnknown_203F3E0
+_081533EC: .4byte 0x000031a0
+_081533F0:
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ ldr r1, _08153400 @ =gLinkPlayers + 8
+_081533F8:
+ adds r0, r1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08153400: .4byte gLinkPlayers + 8
+ thumb_func_end sub_81533C4
+
+ thumb_func_start sub_8153404
+sub_8153404: @ 8153404
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ ldr r2, _08153420 @ =gUnknown_203F3E0
+ ldr r3, [r2]
+ lsrs r1, 23
+ lsls r2, r0, 1
+ adds r2, r0
+ lsls r2, 2
+ adds r1, r2
+ adds r3, 0x4A
+ adds r3, r1
+ ldrh r0, [r3]
+ bx lr
+ .align 2, 0
+_08153420: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8153404
+
+ thumb_func_start sub_8153424
+sub_8153424: @ 8153424
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r5, 0
+ movs r3, 0
+ ldr r0, _08153490 @ =gUnknown_203F3E0
+ mov r9, r0
+ ldr r2, _08153494 @ =gUnknown_84755D8
+ mov r10, r2
+ ldr r2, [r0]
+ lsls r1, r4, 1
+ adds r0, r1, r4
+ lsls r0, 2
+ str r0, [sp]
+ adds r6, r2, 0
+ adds r6, 0x4A
+ mov r12, r1
+ mov r8, r10
+_08153452:
+ lsls r1, r3, 1
+ ldr r7, [sp]
+ adds r0, r1, r7
+ adds r0, r6, r0
+ ldrh r2, [r0]
+ add r1, r8
+ movs r7, 0
+ ldrsh r0, [r1, r7]
+ muls r0, r2
+ adds r5, r0
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x2
+ bls _08153452
+ mov r0, r9
+ ldr r1, [r0]
+ mov r2, r12
+ adds r0, r2, r4
+ lsls r0, 2
+ adds r1, 0x50
+ adds r1, r0
+ ldrh r1, [r1]
+ mov r3, r10
+ movs r7, 0x6
+ ldrsh r0, [r3, r7]
+ muls r0, r1
+ cmp r5, r0
+ bls _08153498
+ subs r0, r5, r0
+ b _0815349A
+ .align 2, 0
+_08153490: .4byte gUnknown_203F3E0
+_08153494: .4byte gUnknown_84755D8
+_08153498:
+ movs r0, 0
+_0815349A:
+ 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 sub_8153424
+
+ thumb_func_start sub_81534AC
+sub_81534AC: @ 81534AC
+ push {r4-r6,lr}
+ ldr r0, _081534E8 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x24
+ ldrb r6, [r0]
+ movs r0, 0
+ bl sub_8153424
+ adds r5, r0, 0
+ movs r4, 0x1
+ cmp r4, r6
+ bcs _081534DA
+_081534C4:
+ adds r0, r4, 0
+ bl sub_8153424
+ cmp r0, r5
+ bls _081534D0
+ adds r5, r0, 0
+_081534D0:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r6
+ bcc _081534C4
+_081534DA:
+ ldr r1, _081534EC @ =0x000f4236
+ adds r0, r5, 0
+ bl sub_815379C
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081534E8: .4byte gUnknown_203F3E0
+_081534EC: .4byte 0x000f4236
+ thumb_func_end sub_81534AC
+
+ thumb_func_start sub_81534F0
+sub_81534F0: @ 81534F0
+ push {r4,r5,lr}
+ lsls r0, 24
+ ldr r1, _08153530 @ =gUnknown_203F3E0
+ ldr r2, [r1]
+ adds r1, r2, 0
+ adds r1, 0x24
+ ldrb r5, [r1]
+ lsrs r4, r0, 23
+ adds r2, 0x4A
+ adds r0, r2, r4
+ ldrh r3, [r0]
+ movs r1, 0
+ cmp r1, r5
+ bcs _08153528
+_0815350C:
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4, r0
+ adds r0, r2, r0
+ ldrh r0, [r0]
+ cmp r0, r3
+ bls _0815351E
+ adds r3, r0, 0
+_0815351E:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, r5
+ bcc _0815350C
+_08153528:
+ adds r0, r3, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08153530: .4byte gUnknown_203F3E0
+ thumb_func_end sub_81534F0
+
+ thumb_func_start sub_8153534
+sub_8153534: @ 8153534
+ push {r4-r7,lr}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r6, 0x1
+ ldr r0, _081535AC @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x24
+ ldrb r5, [r0]
+ movs r4, 0
+ cmp r4, r5
+ bcs _08153562
+_0815354C:
+ adds r0, r4, 0
+ bl sub_8153424
+ lsls r1, r4, 2
+ add r1, sp
+ str r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _0815354C
+_08153562:
+ lsls r7, 2
+ mov r12, r7
+ cmp r6, 0
+ beq _0815359C
+ subs r7, r5, 0x1
+_0815356C:
+ movs r6, 0
+ movs r4, 0
+ cmp r6, r7
+ bge _08153598
+ adds r5, r7, 0
+_08153576:
+ lsls r0, r4, 2
+ mov r2, sp
+ adds r1, r2, r0
+ adds r4, 0x1
+ lsls r0, r4, 2
+ adds r3, r2, r0
+ ldr r0, [r1]
+ ldr r2, [r3]
+ cmp r0, r2
+ bcs _08153590
+ str r2, [r1]
+ str r0, [r3]
+ movs r6, 0x1
+_08153590:
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ blt _08153576
+_08153598:
+ cmp r6, 0
+ bne _0815356C
+_0815359C:
+ mov r0, sp
+ add r0, r12
+ ldr r0, [r0]
+ add sp, 0x14
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081535AC: .4byte gUnknown_203F3E0
+ thumb_func_end sub_8153534
+
+ thumb_func_start sub_81535B0
+sub_81535B0: @ 81535B0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r0, 0
+ mov r10, r0
+ mov r8, r0
+ mov r9, r0
+ ldr r6, _08153690 @ =gUnknown_203F3E0
+ ldr r0, [r6]
+ adds r0, 0x24
+ ldrb r5, [r0]
+ bl sub_81534AC
+ bl sub_81534AC
+ cmp r0, 0
+ bne _08153604
+ movs r4, 0
+ cmp r9, r5
+ bcs _08153604
+ adds r2, r6, 0
+ ldr r1, _08153694 @ =0x00003308
+ mov r12, r1
+ movs r7, 0
+ movs r6, 0x4
+ ldr r3, _08153698 @ =0x0000330c
+_081535E8:
+ ldr r0, [r2]
+ lsls r1, r4, 3
+ adds r0, r1
+ add r0, r12
+ strb r6, [r0]
+ ldr r0, [r2]
+ adds r0, r3
+ adds r0, r1
+ str r7, [r0]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _081535E8
+_08153604:
+ movs r4, 0
+ cmp r4, r5
+ bcs _0815362E
+_0815360A:
+ adds r0, r4, 0
+ bl sub_8153424
+ ldr r1, _0815369C @ =0x000f4236
+ bl sub_815379C
+ ldr r1, _08153690 @ =gUnknown_203F3E0
+ ldr r1, [r1]
+ lsls r2, r4, 3
+ ldr r3, _08153698 @ =0x0000330c
+ adds r1, r3
+ adds r1, r2
+ str r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _0815360A
+_0815362E:
+ mov r0, r10
+ bl sub_8153534
+ adds r6, r0, 0
+ mov r3, r8
+ movs r4, 0
+ cmp r4, r5
+ bcs _0815367A
+ ldr r7, _08153690 @ =gUnknown_203F3E0
+ mov r10, r7
+_08153642:
+ mov r0, r10
+ ldr r2, [r0]
+ lsls r1, r4, 3
+ ldr r7, _08153698 @ =0x0000330c
+ adds r0, r2, r7
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r6, r0
+ bne _08153670
+ adds r0, r2, r1
+ ldr r1, _08153694 @ =0x00003308
+ adds r0, r1
+ strb r3, [r0]
+ mov r0, r8
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08153670:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _08153642
+_0815367A:
+ mov r10, r8
+ cmp r9, r5
+ bcc _0815362E
+ movs r0, 0
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08153690: .4byte gUnknown_203F3E0
+_08153694: .4byte 0x00003308
+_08153698: .4byte 0x0000330c
+_0815369C: .4byte 0x000f4236
+ thumb_func_end sub_81535B0
+
+ thumb_func_start sub_81536A0
+sub_81536A0: @ 81536A0
+ lsls r1, 24
+ ldr r2, _081536B8 @ =gUnknown_203F3E0
+ ldr r2, [r2]
+ lsrs r1, 21
+ ldr r3, _081536BC @ =0x00003308
+ adds r2, r3
+ adds r2, r1
+ ldr r1, [r2]
+ ldr r2, [r2, 0x4]
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ bx lr
+ .align 2, 0
+_081536B8: .4byte gUnknown_203F3E0
+_081536BC: .4byte 0x00003308
+ thumb_func_end sub_81536A0
+
+ thumb_func_start sub_81536C0
+sub_81536C0: @ 81536C0
+ push {r4-r7,lr}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r7, 0
+ ldr r0, _08153728 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x24
+ ldrb r5, [r0]
+ mov r0, sp
+ movs r1, 0
+ movs r2, 0x14
+ bl memset
+ movs r4, 0
+ cmp r7, r5
+ bcs _081536F8
+_081536E2:
+ adds r0, r4, 0
+ bl sub_8153424
+ lsls r1, r4, 2
+ add r1, sp
+ str r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _081536E2
+_081536F8:
+ lsls r0, r6, 2
+ add r0, sp
+ ldr r1, [r0]
+ movs r4, 0
+_08153700:
+ cmp r4, r6
+ beq _08153714
+ lsls r0, r4, 2
+ add r0, sp
+ ldr r0, [r0]
+ cmp r1, r0
+ bcs _08153714
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+_08153714:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x4
+ bls _08153700
+ adds r0, r7, 0
+ add sp, 0x14
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08153728: .4byte gUnknown_203F3E0
+ thumb_func_end sub_81536C0
+
+ thumb_func_start sub_815372C
+sub_815372C: @ 815372C
+ push {r4-r6,lr}
+ ldr r0, _08153754 @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x28
+ ldrb r4, [r0]
+ bl sub_8153390
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r6, r5, 0
+ adds r0, r4, 0
+ bl sub_8153424
+ adds r4, r0, 0
+ bl sub_81534AC
+ cmp r4, r0
+ beq _08153758
+ movs r0, 0x3
+ b _08153786
+ .align 2, 0
+_08153754: .4byte gUnknown_203F3E0
+_08153758:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl CheckBagHasSpace
+ lsls r0, 24
+ cmp r0, 0
+ bne _0815376A
+ movs r0, 0x2
+ b _08153786
+_0815376A:
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl AddBagItem
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl CheckBagHasSpace
+ lsls r0, 24
+ cmp r0, 0
+ beq _08153784
+ movs r0, 0
+ b _08153786
+_08153784:
+ movs r0, 0x1
+_08153786:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_815372C
+
+ thumb_func_start sub_815378C
+sub_815378C: @ 815378C
+ push {lr}
+ adds r2, r0, 0
+ adds r0, r1, 0
+ cmp r2, r0
+ bcs _08153798
+ adds r0, r2, 0x1
+_08153798:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_815378C
+
+ thumb_func_start sub_815379C
+sub_815379C: @ 815379C
+ push {lr}
+ adds r2, r0, 0
+ adds r0, r1, 0
+ cmp r2, r0
+ bcs _081537A8
+ adds r0, r2, 0
+_081537A8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_815379C
+
+ thumb_func_start sub_81537AC
+sub_81537AC: @ 81537AC
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _081537BC @ =gUnknown_203F3E0
+ ldr r1, [r1]
+ adds r1, 0x34
+ adds r1, r0
+ ldrb r0, [r1]
+ bx lr
+ .align 2, 0
+_081537BC: .4byte gUnknown_203F3E0
+ thumb_func_end sub_81537AC
+
+ thumb_func_start sub_81537C0
+sub_81537C0: @ 81537C0
+ push {r4-r6,lr}
+ movs r5, 0
+ ldr r6, _081537F0 @ =gSpecialVar_Result
+_081537C6:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _081537F4 @ =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl GetMonData
+ cmp r0, 0
+ beq _081537F8
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0x55
+ bne _081537F8
+ movs r0, 0x1
+ strh r0, [r6]
+ b _08153804
+ .align 2, 0
+_081537F0: .4byte gSpecialVar_Result
+_081537F4: .4byte gPlayerParty
+_081537F8:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _081537C6
+ ldr r1, _0815380C @ =gSpecialVar_Result
+ movs r0, 0
+ strh r0, [r1]
+_08153804:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815380C: .4byte gSpecialVar_Result
+ thumb_func_end sub_81537C0
+
+ thumb_func_start sub_8153810
+sub_8153810: @ 8153810
+ push {r4,lr}
+ ldr r4, _0815382C @ =sub_8153830
+ adds r0, r4, 0
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815382C: .4byte sub_8153830
+ thumb_func_end sub_8153810
+
+ thumb_func_start sub_8153830
+sub_8153830: @ 8153830
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08153854 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _0815387C
+ cmp r0, 0x1
+ bgt _08153858
+ cmp r0, 0
+ beq _08153862
+ b _081538CA
+ .align 2, 0
+_08153854: .4byte gTasks+0x8
+_08153858:
+ cmp r0, 0x2
+ beq _08153888
+ cmp r0, 0x3
+ beq _081538B0
+ b _081538CA
+_08153862:
+ ldr r0, _08153878 @ =gUnknown_84755E0
+ bl AddWindow
+ strh r0, [r4, 0x2]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_81538D0
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x3
+ b _0815389E
+ .align 2, 0
+_08153878: .4byte gUnknown_84755E0
+_0815387C:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _081538CA
+ b _081538A2
+_08153888:
+ ldr r0, _081538AC @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ beq _081538CA
+ ldrb r0, [r4, 0x2]
+ bl rbox_fill_rectangle
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x1
+_0815389E:
+ bl CopyWindowToVram
+_081538A2:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _081538CA
+ .align 2, 0
+_081538AC: .4byte gMain
+_081538B0:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _081538CA
+ ldrb r0, [r4, 0x2]
+ bl RemoveWindow
+ adds r0, r5, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+_081538CA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8153830
+
+ thumb_func_start sub_81538D0
+sub_81538D0: @ 81538D0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x30
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _081539CC @ =gSaveBlock2Ptr
+ ldr r1, [r0]
+ ldr r2, _081539D0 @ =0x00000b14
+ adds r0, r1, r2
+ ldrh r0, [r0]
+ str r0, [sp, 0xC]
+ subs r2, 0x4
+ adds r0, r1, r2
+ ldr r0, [r0]
+ str r0, [sp, 0x10]
+ ldr r0, _081539D4 @ =0x00000b16
+ adds r1, r0
+ ldrh r0, [r1]
+ str r0, [sp, 0x14]
+ ldr r4, _081539D8 @ =0x0000021d
+ adds r0, r7, 0
+ adds r1, r4, 0
+ movs r2, 0xD0
+ bl TextWindow_SetStdFrame0_WithPal
+ adds r0, r7, 0
+ adds r1, r4, 0
+ movs r2, 0xD
+ bl DrawTextBorderOuter
+ adds r0, r7, 0
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r0, _081539DC @ =gUnknown_84755E8
+ ldr r2, [r0]
+ movs r0, 0x1
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ adds r0, r7, 0
+ movs r1, 0x2
+ movs r3, 0x1
+ bl AddTextPrinterParameterized
+ movs r4, 0
+ add r2, sp, 0x18
+ mov r8, r2
+ movs r0, 0xFF
+ mov r10, r0
+ mov r9, r4
+ mov r2, sp
+ adds r2, 0xC
+ str r2, [sp, 0x2C]
+_08153946:
+ ldr r0, [sp, 0x2C]
+ ldm r0!, {r1}
+ str r0, [sp, 0x2C]
+ ldr r0, _081539E0 @ =gUnknown_84755F8
+ adds r0, r4, r0
+ ldrb r3, [r0]
+ mov r0, r8
+ movs r2, 0
+ bl ConvertIntToDecimalStringN
+ movs r0, 0x2
+ mov r1, r8
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ adds r5, r0, 0
+ ldr r1, _081539DC @ =gUnknown_84755E8
+ adds r6, r4, 0x1
+ lsls r0, r6, 2
+ adds r0, r1
+ ldr r2, [r0]
+ ldr r0, _081539E4 @ =gUnknown_84755FC
+ lsls r4, 1
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, r10
+ str r0, [sp, 0x4]
+ mov r0, r9
+ str r0, [sp, 0x8]
+ adds r0, r7, 0
+ movs r1, 0x2
+ movs r3, 0x1
+ bl AddTextPrinterParameterized
+ movs r3, 0xE0
+ subs r3, r5
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r0, _081539E8 @ =gUnknown_8475602
+ adds r4, r0
+ ldrb r0, [r4]
+ str r0, [sp]
+ mov r2, r10
+ str r2, [sp, 0x4]
+ mov r0, r9
+ str r0, [sp, 0x8]
+ adds r0, r7, 0
+ movs r1, 0x2
+ mov r2, r8
+ bl AddTextPrinterParameterized
+ adds r4, r6, 0
+ cmp r4, 0x2
+ ble _08153946
+ adds r0, r7, 0
+ bl PutWindowTilemap
+ add sp, 0x30
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081539CC: .4byte gSaveBlock2Ptr
+_081539D0: .4byte 0x00000b14
+_081539D4: .4byte 0x00000b16
+_081539D8: .4byte 0x0000021d
+_081539DC: .4byte gUnknown_84755E8
+_081539E0: .4byte gUnknown_84755F8
+_081539E4: .4byte gUnknown_84755FC
+_081539E8: .4byte gUnknown_8475602
+ thumb_func_end sub_81538D0
+
+ thumb_func_start sub_81539EC
+sub_81539EC: @ 81539EC
+ push {lr}
+ bl GetLinkPlayerCount
+ ldr r1, _08153A00 @ =gUnknown_203F3E0
+ ldr r1, [r1]
+ adds r1, 0x24
+ strb r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153A00: .4byte gUnknown_203F3E0
+ thumb_func_end sub_81539EC
+
+ thumb_func_start sub_8153A04
+sub_8153A04: @ 8153A04
+ push {r4-r7,lr}
+ ldr r0, _08153A8C @ =gUnknown_203F3E0
+ ldr r0, [r0]
+ adds r0, 0x24
+ ldrb r4, [r0]
+ cmp r4, 0x4
+ bhi _08153A32
+ ldr r5, _08153A90 @ =gUnknown_8475648
+_08153A14:
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ ldr r1, _08153A94 @ =gLinkPlayers + 8
+ adds r0, r1
+ lsls r1, r4, 2
+ adds r1, r5
+ ldr r1, [r1]
+ bl StringCopy
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x4
+ bls _08153A14
+_08153A32:
+ ldr r0, _08153A8C @ =gUnknown_203F3E0
+ ldr r1, [r0]
+ adds r1, 0x24
+ movs r2, 0x5
+ strb r2, [r1]
+ movs r1, 0
+ mov r12, r0
+_08153A40:
+ movs r4, 0
+ mov r2, r12
+ ldr r0, [r2]
+ adds r0, 0x24
+ adds r5, r1, 0x1
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _08153A7E
+ ldr r7, _08153A8C @ =gUnknown_203F3E0
+ lsls r3, r1, 1
+ ldr r6, _08153A98 @ =gUnknown_8475608
+_08153A56:
+ ldr r2, [r7]
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r3, r0
+ adds r1, r2, 0
+ adds r1, 0x4A
+ adds r1, r0
+ lsls r0, r4, 3
+ adds r0, r3, r0
+ adds r0, r6
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r2, 0x24
+ ldrb r2, [r2]
+ cmp r4, r2
+ bcc _08153A56
+_08153A7E:
+ lsls r0, r5, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x3
+ bls _08153A40
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153A8C: .4byte gUnknown_203F3E0
+_08153A90: .4byte gUnknown_8475648
+_08153A94: .4byte gLinkPlayers + 8
+_08153A98: .4byte gUnknown_8475608
+ thumb_func_end sub_8153A04
+
+ thumb_func_start sub_8153A9C
+sub_8153A9C: @ 8153A9C
+ push {r4,r5,lr}
+ sub sp, 0x18
+ movs r5, 0xC0
+ lsls r5, 6
+ adds r0, r5, 0
+ bl AllocZeroed
+ adds r4, r0, 0
+ ldr r0, _08153AF0 @ =gUnknown_8478D90
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ str r1, [sp, 0xC]
+ ldr r0, _08153AF4 @ =gUnknown_8478D98
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [sp, 0x10]
+ str r1, [sp, 0x14]
+ ldr r0, _08153AF8 @ =gUnknown_8477374
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+ cmp r4, 0
+ beq _08153ADC
+ str r4, [sp]
+ str r5, [sp, 0x4]
+ mov r0, sp
+ bl LoadSpriteSheet
+ adds r0, r4, 0
+ bl Free
+_08153ADC:
+ add r0, sp, 0x8
+ bl LoadSpritePalette
+ add r0, sp, 0x10
+ bl LoadSpritePalette
+ add sp, 0x18
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153AF0: .4byte gUnknown_8478D90
+_08153AF4: .4byte gUnknown_8478D98
+_08153AF8: .4byte gUnknown_8477374
+ thumb_func_end sub_8153A9C
+
+ thumb_func_start sub_8153AFC
+sub_8153AFC: @ 8153AFC
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x30
+ adds r6, r1, 0
+ mov r8, r2
+ adds r5, r3, 0
+ lsls r6, 24
+ lsrs r6, 24
+ mov r1, r8
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r5, 24
+ lsrs r5, 24
+ add r1, sp, 0x18
+ movs r3, 0
+ strh r3, [r1]
+ ldrb r2, [r0]
+ mov r0, sp
+ adds r0, 0x1A
+ strh r2, [r0]
+ ldr r0, _08153B88 @ =gUnknown_8478C98
+ str r0, [sp, 0x1C]
+ ldr r0, _08153B8C @ =gUnknown_8478CE0
+ str r0, [sp, 0x20]
+ str r3, [sp, 0x24]
+ ldr r0, _08153B90 @ =gDummySpriteAffineAnimTable
+ str r0, [sp, 0x28]
+ ldr r0, _08153B94 @ =sub_8153B9C
+ str r0, [sp, 0x2C]
+ mov r0, sp
+ movs r2, 0x18
+ bl memcpy
+ movs r0, 0x4
+ bl AllocZeroed
+ ldr r1, _08153B98 @ =gUnknown_203F3E4
+ mov r2, r8
+ lsls r4, r2, 2
+ adds r4, r1
+ str r0, [r4]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_8154608
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ mov r0, sp
+ movs r2, 0x88
+ movs r3, 0x3
+ bl CreateSprite
+ ldr r1, [r4]
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r1]
+ movs r0, 0x1
+ mov r1, r8
+ bl sub_8153D48
+ add sp, 0x30
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153B88: .4byte gUnknown_8478C98
+_08153B8C: .4byte gUnknown_8478CE0
+_08153B90: .4byte gDummySpriteAffineAnimTable
+_08153B94: .4byte sub_8153B9C
+_08153B98: .4byte gUnknown_203F3E4
+ thumb_func_end sub_8153AFC
+
+ thumb_func_start sub_8153B9C
+sub_8153B9C: @ 8153B9C
+ push {lr}
+ movs r2, 0x2E
+ ldrsh r1, [r0, r2]
+ cmp r1, 0x1
+ beq _08153BB0
+ cmp r1, 0x1
+ ble _08153BBA
+ cmp r1, 0x2
+ beq _08153BB6
+ b _08153BBA
+_08153BB0:
+ bl sub_8153C30
+ b _08153BBA
+_08153BB6:
+ bl sub_8153CA0
+_08153BBA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8153B9C
+
+ thumb_func_start sub_8153BC0
+sub_8153BC0: @ 8153BC0
+ push {lr}
+ bl GetMultiplayerId
+ ldr r1, _08153BF0 @ =gUnknown_203F3E4
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r1
+ ldr r0, [r0]
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08153BF4 @ =gSprites
+ adds r0, r1
+ movs r2, 0
+ movs r1, 0x1
+ strh r1, [r0, 0x2E]
+ strh r2, [r0, 0x30]
+ strh r2, [r0, 0x32]
+ strh r2, [r0, 0x34]
+ strh r2, [r0, 0x36]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153BF0: .4byte gUnknown_203F3E4
+_08153BF4: .4byte gSprites
+ thumb_func_end sub_8153BC0
+
+ thumb_func_start sub_8153BF8
+sub_8153BF8: @ 8153BF8
+ push {lr}
+ bl GetMultiplayerId
+ ldr r1, _08153C28 @ =gUnknown_203F3E4
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r1
+ ldr r0, [r0]
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08153C2C @ =gSprites
+ adds r0, r1
+ movs r2, 0
+ movs r1, 0x2
+ strh r1, [r0, 0x2E]
+ strh r2, [r0, 0x30]
+ strh r2, [r0, 0x32]
+ strh r2, [r0, 0x34]
+ strh r2, [r0, 0x36]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153C28: .4byte gUnknown_203F3E4
+_08153C2C: .4byte gSprites
+ thumb_func_end sub_8153BF8
+
+ thumb_func_start sub_8153C30
+sub_8153C30: @ 8153C30
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r2, r0, 16
+ lsrs r0, 31
+ adds r0, r2, r0
+ asrs r1, r0, 1
+ adds r0, r1, 0
+ cmp r1, 0
+ bge _08153C4C
+ adds r0, r1, 0x3
+_08153C4C:
+ asrs r0, 2
+ lsls r0, 2
+ subs r0, r1, r0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r2, 0x2
+ ble _08153C96
+ cmp r0, 0x2
+ bgt _08153C62
+ cmp r0, 0x1
+ bge _08153C66
+_08153C62:
+ movs r0, 0x1
+ b _08153C68
+_08153C66:
+ movs r0, 0xFF
+_08153C68:
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x27
+ ble _08153C96
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ bl sub_81533B4
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ movs r0, 0
+ bl sub_8154608
+ strh r0, [r4, 0x20]
+_08153C96:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8153C30
+
+ thumb_func_start sub_8153CA0
+sub_8153CA0: @ 8153CA0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0xD
+ bl __divsi3
+ lsls r0, 16
+ asrs r1, r0, 16
+ adds r0, r1, 0
+ cmp r1, 0
+ bge _08153CC0
+ adds r0, r1, 0x3
+_08153CC0:
+ asrs r0, 2
+ lsls r0, 2
+ subs r0, r1, r0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r1, 0x30
+ ldrsh r0, [r5, r1]
+ movs r1, 0xD
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _08153CE4
+ cmp r4, 0
+ beq _08153CE4
+ movs r0, 0xCD
+ bl PlaySE
+_08153CE4:
+ movs r1, 0x30
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x67
+ ble _08153CF2
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ movs r4, 0
+_08153CF2:
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r4, 0
+ bl sub_8153DA8
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8153CA0
+
+ thumb_func_start sub_8153D08
+sub_8153D08: @ 8153D08
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ cmp r4, r5
+ bcs _08153D3A
+ ldr r6, _08153D40 @ =gUnknown_203F3E4
+_08153D16:
+ lsls r0, r4, 2
+ adds r0, r6
+ ldr r0, [r0]
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08153D44 @ =gSprites
+ adds r0, r1
+ cmp r0, 0
+ beq _08153D30
+ bl DestroySpriteAndFreeResources
+_08153D30:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _08153D16
+_08153D3A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153D40: .4byte gUnknown_203F3E4
+_08153D44: .4byte gSprites
+ thumb_func_end sub_8153D08
+
+ thumb_func_start sub_8153D48
+sub_8153D48: @ 8153D48
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ ldr r3, _08153D78 @ =gSprites
+ ldr r2, _08153D7C @ =gUnknown_203F3E4
+ lsrs r1, 22
+ adds r1, r2
+ ldr r1, [r1]
+ ldrh r1, [r1]
+ lsls r2, r1, 4
+ adds r2, r1
+ lsls r2, 2
+ adds r2, r3
+ adds r2, 0x3E
+ movs r1, 0x1
+ ands r0, r1
+ lsls r0, 2
+ ldrb r3, [r2]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r3
+ orrs r1, r0
+ strb r1, [r2]
+ bx lr
+ .align 2, 0
+_08153D78: .4byte gSprites
+_08153D7C: .4byte gUnknown_203F3E4
+ thumb_func_end sub_8153D48
+
+ thumb_func_start sub_8153D80
+sub_8153D80: @ 8153D80
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ movs r4, 0
+ cmp r4, r5
+ bcs _08153DA2
+_08153D90:
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_8153D48
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _08153D90
+_08153DA2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8153D80
+
+ thumb_func_start sub_8153DA8
+sub_8153DA8: @ 8153DA8
+ push {lr}
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _08153DCC @ =gUnknown_203F3E4
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ldrh r2, [r0]
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08153DD0 @ =gSprites
+ adds r0, r2
+ bl StartSpriteAnim
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153DCC: .4byte gUnknown_203F3E4
+_08153DD0: .4byte gSprites
+ thumb_func_end sub_8153DA8
+
+ thumb_func_start nullsub_97
+nullsub_97: @ 8153DD4
+ bx lr
+ thumb_func_end nullsub_97
+
+ thumb_func_start sub_8153DD8
+sub_8153DD8: @ 8153DD8
+ push {r4-r7,lr}
+ movs r4, 0
+ ldr r0, _08153E20 @ =gSprites
+ mov r12, r0
+ movs r6, 0
+ ldr r5, _08153E24 @ =gUnknown_203F43C
+_08153DE4:
+ ldr r3, [r5]
+ lsls r1, r4, 1
+ adds r0, r3, 0
+ adds r0, 0x2A
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ add r1, r12
+ lsls r0, r4, 4
+ adds r0, 0x30
+ strh r0, [r1, 0x20]
+ lsls r2, r4, 3
+ movs r7, 0x8
+ negs r7, r7
+ adds r0, r7, 0
+ subs r0, r2
+ strh r0, [r1, 0x22]
+ adds r3, 0xC
+ adds r3, r4
+ strb r6, [r3]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x9
+ bls _08153DE4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153E20: .4byte gSprites
+_08153E24: .4byte gUnknown_203F43C
+ thumb_func_end sub_8153DD8
+
+ thumb_func_start sub_8153E28
+sub_8153E28: @ 8153E28
+ push {r4-r6,lr}
+ sub sp, 0x28
+ movs r4, 0xC0
+ lsls r4, 1
+ adds r0, r4, 0
+ bl AllocZeroed
+ adds r6, r0, 0
+ ldr r0, _08153EC8 @ =gUnknown_8478DA0
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [sp, 0x20]
+ str r1, [sp, 0x24]
+ ldr r0, _08153ECC @ =gUnknown_8477198
+ adds r1, r6, 0
+ bl LZ77UnCompWram
+ cmp r6, 0
+ beq _08153EB8
+ str r6, [sp, 0x18]
+ add r5, sp, 0x18
+ movs r0, 0x80
+ lsls r0, 9
+ orrs r0, r4
+ str r0, [r5, 0x4]
+ mov r1, sp
+ ldr r0, _08153ED0 @ =gUnknown_8478DA8
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldr r4, _08153ED4 @ =gUnknown_203F43C
+ movs r0, 0x40
+ bl AllocZeroed
+ str r0, [r4]
+ adds r0, r5, 0
+ bl LoadSpriteSheet
+ add r0, sp, 0x20
+ bl LoadSpritePalette
+ movs r4, 0
+_08153E7E:
+ lsls r1, r4, 20
+ movs r0, 0xC0
+ lsls r0, 14
+ adds r1, r0
+ asrs r1, 16
+ lsls r0, r4, 3
+ movs r3, 0x8
+ negs r3, r3
+ adds r2, r3, 0
+ subs r2, r0
+ lsls r2, 16
+ asrs r2, 16
+ mov r0, sp
+ movs r3, 0
+ bl CreateSprite
+ ldr r1, _08153ED4 @ =gUnknown_203F43C
+ ldr r1, [r1]
+ lsls r2, r4, 1
+ adds r1, 0x2A
+ adds r1, r2
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x9
+ bls _08153E7E
+_08153EB8:
+ adds r0, r6, 0
+ bl Free
+ add sp, 0x28
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153EC8: .4byte gUnknown_8478DA0
+_08153ECC: .4byte gUnknown_8477198
+_08153ED0: .4byte gUnknown_8478DA8
+_08153ED4: .4byte gUnknown_203F43C
+ thumb_func_end sub_8153E28
+
+ thumb_func_start sub_8153ED8
+sub_8153ED8: @ 8153ED8
+ push {r4,r5,lr}
+ movs r4, 0
+_08153EDC:
+ ldr r5, _08153F14 @ =gUnknown_203F43C
+ ldr r0, [r5]
+ lsls r1, r4, 1
+ adds r0, 0x2A
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08153F18 @ =gSprites
+ adds r0, r1
+ cmp r0, 0
+ beq _08153EFA
+ bl DestroySpriteAndFreeResources
+_08153EFA:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x9
+ bls _08153EDC
+ ldr r0, [r5]
+ bl Free
+ movs r0, 0
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08153F14: .4byte gUnknown_203F43C
+_08153F18: .4byte gSprites
+ thumb_func_end sub_8153ED8
+
+ thumb_func_start sub_8153F1C
+sub_8153F1C: @ 8153F1C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ movs r3, 0
+ movs r6, 0
+ ldr r0, _08153FAC @ =gUnknown_203F43C
+ mov r9, r0
+_08153F2E:
+ mov r7, r9
+ ldr r2, [r7]
+ lsls r5, r6, 1
+ adds r0, r2, 0
+ adds r0, 0x2A
+ adds r0, r5
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08153FB0 @ =gSprites
+ adds r4, r0, r1
+ adds r0, r2, 0
+ adds r0, 0x16
+ adds r0, r5
+ movs r1, 0x2
+ strh r1, [r0]
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r2, r0, r6
+ ldrb r1, [r2]
+ cmp r1, 0
+ beq _08153F64
+ movs r7, 0x22
+ ldrsh r0, [r4, r7]
+ cmp r0, 0x8
+ beq _08153F9A
+_08153F64:
+ movs r3, 0x1
+ movs r7, 0x22
+ ldrsh r0, [r4, r7]
+ cmp r0, 0x8
+ bne _08153F8A
+ cmp r1, 0
+ bne _08153F9A
+ strb r3, [r2]
+ mov r1, r9
+ ldr r0, [r1]
+ adds r0, 0x16
+ adds r0, r5
+ ldr r1, _08153FB4 @ =0x0000fff0
+ strh r1, [r0]
+ movs r0, 0x1E
+ str r3, [sp]
+ bl PlaySE
+ ldr r3, [sp]
+_08153F8A:
+ mov r7, r9
+ ldr r0, [r7]
+ adds r0, 0x16
+ adds r0, r5
+ ldrh r0, [r0]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+_08153F9A:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x9
+ bls _08153F2E
+ cmp r3, 0
+ bne _08153FB8
+ movs r0, 0x1
+ b _08153FBA
+ .align 2, 0
+_08153FAC: .4byte gUnknown_203F43C
+_08153FB0: .4byte gSprites
+_08153FB4: .4byte 0x0000fff0
+_08153FB8:
+ movs r0, 0
+_08153FBA:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8153F1C
+
+ thumb_func_start sub_8153FC8
+sub_8153FC8: @ 8153FC8
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xA
+ bls _08154004
+ movs r4, 0
+_08153FD4:
+ ldr r0, _08153FFC @ =gUnknown_203F43C
+ ldr r0, [r0]
+ lsls r1, r4, 1
+ adds r0, 0x2A
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08154000 @ =gSprites
+ adds r0, r1
+ movs r1, 0x1
+ bl StartSpriteAnim
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x9
+ bls _08153FD4
+ b _081540CE
+ .align 2, 0
+_08153FFC: .4byte gUnknown_203F43C
+_08154000: .4byte gSprites
+_08154004:
+ movs r4, 0
+ movs r0, 0xA
+ subs r0, r5
+ cmp r4, r0
+ bge _081540CA
+ ldr r6, _08154034 @ =gSprites
+_08154010:
+ cmp r5, 0x6
+ bls _08154078
+ ldr r0, _08154038 @ =gUnknown_203F43C
+ ldr r2, [r0]
+ ldr r1, _0815403C @ =0x0000fffa
+ adds r0, r1, 0
+ ldrh r1, [r2, 0x3E]
+ adds r0, r1
+ adds r0, r5
+ movs r1, 0
+ strh r0, [r2, 0x3E]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1E
+ bls _08154040
+ strh r1, [r2, 0x3E]
+ b _08154092
+ .align 2, 0
+_08154034: .4byte gSprites
+_08154038: .4byte gUnknown_203F43C
+_0815403C: .4byte 0x0000fffa
+_08154040:
+ cmp r0, 0xA
+ bls _0815405E
+ lsls r1, r4, 1
+ adds r0, r2, 0
+ adds r0, 0x2A
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0x2
+ bl StartSpriteAnim
+ b _08154092
+_0815405E:
+ lsls r1, r4, 1
+ adds r0, r2, 0
+ adds r0, 0x2A
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0
+ bl StartSpriteAnim
+ b _08154092
+_08154078:
+ ldr r0, _081540A4 @ =gUnknown_203F43C
+ ldr r0, [r0]
+ lsls r1, r4, 1
+ adds r0, 0x2A
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0
+ bl StartSpriteAnim
+_08154092:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r0, 0xA
+ subs r0, r5
+ cmp r4, r0
+ blt _08154010
+ b _081540CA
+ .align 2, 0
+_081540A4: .4byte gUnknown_203F43C
+_081540A8:
+ ldr r0, _081540D4 @ =gUnknown_203F43C
+ ldr r0, [r0]
+ lsls r1, r4, 1
+ adds r0, 0x2A
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081540D8 @ =gSprites
+ adds r0, r1
+ movs r1, 0x1
+ bl StartSpriteAnim
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_081540CA:
+ cmp r4, 0x9
+ bls _081540A8
+_081540CE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081540D4: .4byte gUnknown_203F43C
+_081540D8: .4byte gSprites
+ thumb_func_end sub_8153FC8
+
+ thumb_func_start sub_81540DC
+sub_81540DC: @ 81540DC
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ movs r3, 0
+ ldr r7, _08154120 @ =gSprites
+ movs r1, 0x1
+ ands r0, r1
+ lsls r4, r0, 2
+ movs r6, 0x5
+ negs r6, r6
+ ldr r5, _08154124 @ =gUnknown_203F43C
+_081540F2:
+ ldr r0, [r5]
+ lsls r1, r3, 1
+ adds r0, 0x2A
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r7
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ adds r0, r6, 0
+ ands r0, r2
+ orrs r0, r4
+ strb r0, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x9
+ bls _081540F2
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154120: .4byte gSprites
+_08154124: .4byte gUnknown_203F43C
+ thumb_func_end sub_81540DC
+
+ thumb_func_start sub_8154128
+sub_8154128: @ 8154128
+ push {r4,r5,lr}
+ sub sp, 0x10
+ movs r5, 0x90
+ lsls r5, 3
+ adds r0, r5, 0
+ bl AllocZeroed
+ adds r4, r0, 0
+ ldr r0, _08154174 @ =gUnknown_8478DCC
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ str r1, [sp, 0xC]
+ ldr r0, _08154178 @ =gUnknown_8475968
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+ cmp r4, 0
+ beq _0815415E
+ str r4, [sp]
+ movs r0, 0x80
+ lsls r0, 10
+ orrs r0, r5
+ str r0, [sp, 0x4]
+ mov r0, sp
+ bl LoadSpriteSheet
+_0815415E:
+ add r0, sp, 0x8
+ bl LoadSpritePalette
+ adds r0, r4, 0
+ bl Free
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154174: .4byte gUnknown_8478DCC
+_08154178: .4byte gUnknown_8475968
+ thumb_func_end sub_8154128
+
+ thumb_func_start sub_815417C
+sub_815417C: @ 815417C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x30
+ mov r1, sp
+ ldr r0, _0815420C @ =gUnknown_8478DDC
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2,r3,r5}
+ stm r1!, {r2,r3,r5}
+ add r2, sp, 0x18
+ adds r1, r2, 0
+ ldr r0, _08154210 @ =gUnknown_8478DF4
+ ldm r0!, {r3-r5}
+ stm r1!, {r3-r5}
+ ldm r0!, {r3-r5}
+ stm r1!, {r3-r5}
+ movs r5, 0
+ mov r9, r2
+_081541A4:
+ movs r0, 0x4
+ bl AllocZeroed
+ ldr r1, _08154214 @ =gUnknown_203F400
+ lsls r4, r5, 2
+ adds r4, r1
+ str r0, [r4]
+ lsls r0, r5, 3
+ lsls r1, r5, 4
+ adds r1, r0
+ mov r0, sp
+ movs r2, 0x8
+ movs r3, 0x1
+ bl CreateSprite
+ ldr r1, [r4]
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r1]
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_81542EC
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xA
+ bls _081541A4
+ movs r5, 0
+ ldr r7, _08154218 @ =gUnknown_203F42C
+ ldr r4, _0815421C @ =gUnknown_8478DD4
+ mov r8, r4
+_081541E4:
+ movs r0, 0x4
+ bl AllocZeroed
+ lsls r1, r5, 2
+ adds r4, r1, r7
+ str r0, [r4]
+ adds r6, r1, 0
+ cmp r5, 0x3
+ bne _08154220
+ mov r0, r8
+ movs r2, 0x6
+ ldrsh r1, [r0, r2]
+ mov r0, r9
+ movs r2, 0x39
+ movs r3, 0
+ bl CreateSprite
+ ldr r1, [r7, 0xC]
+ b _08154234
+ .align 2, 0
+_0815420C: .4byte gUnknown_8478DDC
+_08154210: .4byte gUnknown_8478DF4
+_08154214: .4byte gUnknown_203F400
+_08154218: .4byte gUnknown_203F42C
+_0815421C: .4byte gUnknown_8478DD4
+_08154220:
+ lsls r0, r5, 1
+ add r0, r8
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ mov r0, r9
+ movs r2, 0x3C
+ movs r3, 0
+ bl CreateSprite
+ ldr r1, [r4]
+_08154234:
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r1]
+ adds r0, r6, r7
+ ldr r0, [r0]
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08154270 @ =gSprites
+ adds r0, r1
+ adds r1, r5, 0
+ bl StartSpriteAnim
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3
+ bls _081541E4
+ movs r0, 0x1
+ bl sub_8154324
+ add sp, 0x30
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154270: .4byte gSprites
+ thumb_func_end sub_815417C
+
+ thumb_func_start sub_8154274
+sub_8154274: @ 8154274
+ push {r4-r6,lr}
+ movs r5, 0
+ ldr r6, _081542E0 @ =gUnknown_203F400
+_0815427A:
+ lsls r0, r5, 2
+ adds r4, r0, r6
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081542E4 @ =gSprites
+ adds r0, r1
+ cmp r0, 0
+ beq _08154294
+ bl DestroySprite
+_08154294:
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xA
+ bls _0815427A
+ movs r5, 0
+ ldr r6, _081542E8 @ =gUnknown_203F42C
+_081542AC:
+ lsls r0, r5, 2
+ adds r4, r0, r6
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081542E4 @ =gSprites
+ adds r0, r1
+ cmp r0, 0
+ beq _081542C6
+ bl DestroySprite
+_081542C6:
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3
+ bls _081542AC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081542E0: .4byte gUnknown_203F400
+_081542E4: .4byte gSprites
+_081542E8: .4byte gUnknown_203F42C
+ thumb_func_end sub_8154274
+
+ thumb_func_start sub_81542EC
+sub_81542EC: @ 81542EC
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r3, _0815431C @ =gSprites
+ ldr r2, _08154320 @ =gUnknown_203F400
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ldrh r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r3
+ adds r2, 0x3E
+ movs r0, 0x1
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ bx lr
+ .align 2, 0
+_0815431C: .4byte gSprites
+_08154320: .4byte gUnknown_203F400
+ thumb_func_end sub_81542EC
+
+ thumb_func_start sub_8154324
+sub_8154324: @ 8154324
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ movs r3, 0
+ ldr r7, _08154368 @ =gSprites
+ ldr r6, _0815436C @ =gUnknown_203F42C
+ movs r1, 0x1
+ ands r0, r1
+ lsls r4, r0, 2
+ movs r5, 0x5
+ negs r5, r5
+_0815433A:
+ lsls r0, r3, 2
+ adds r0, r6
+ ldr r0, [r0]
+ ldrh r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r7
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ adds r0, r5, 0
+ ands r0, r2
+ orrs r0, r4
+ strb r0, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x3
+ bls _0815433A
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154368: .4byte gSprites
+_0815436C: .4byte gUnknown_203F42C
+ thumb_func_end sub_8154324
+
+ thumb_func_start sub_8154370
+sub_8154370: @ 8154370
+ lsls r0, 24
+ lsls r1, 24
+ ldr r3, _08154390 @ =gSprites
+ ldr r2, _08154394 @ =gUnknown_203F400
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ldrh r2, [r0]
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r3
+ lsrs r1, 21
+ strh r1, [r0, 0x22]
+ bx lr
+ .align 2, 0
+_08154390: .4byte gSprites
+_08154394: .4byte gUnknown_203F400
+ thumb_func_end sub_8154370
+
+ thumb_func_start sub_8154398
+sub_8154398: @ 8154398
+ push {lr}
+ lsls r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _081543BC @ =gUnknown_203F400
+ lsrs r0, 14
+ adds r0, r2
+ ldr r0, [r0]
+ ldrh r2, [r0]
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _081543C0 @ =gSprites
+ adds r0, r2
+ bl StartSpriteAnim
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081543BC: .4byte gUnknown_203F400
+_081543C0: .4byte gSprites
+ thumb_func_end sub_8154398
+
+ thumb_func_start sub_81543C4
+sub_81543C4: @ 81543C4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _081543E4 @ =gSprites
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r1
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 2
+ adds r1, 0x32
+ strh r1, [r2, 0x20]
+ movs r0, 0x32
+ strh r0, [r2, 0x22]
+ bx lr
+ .align 2, 0
+_081543E4: .4byte gSprites
+ thumb_func_end sub_81543C4
+
+ thumb_func_start sub_81543E8
+sub_81543E8: @ 81543E8
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r0, 0x42
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x1
+ beq _0815442A
+ movs r3, 0
+ ldr r7, _08154430 @ =gUnknown_8478E0C
+ ldr r6, _08154434 @ =gUnknown_203F3F8
+ movs r5, 0
+_081543FE:
+ lsls r0, r3, 2
+ adds r2, r0, r6
+ ldr r1, [r2]
+ ldrh r0, [r1, 0x2]
+ adds r0, 0x1
+ strh r0, [r1, 0x2]
+ adds r1, r3, r7
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r1, [r1]
+ cmp r0, r1
+ bls _08154420
+ ldrh r0, [r4, 0x20]
+ subs r0, 0x1
+ strh r0, [r4, 0x20]
+ ldr r0, [r2]
+ strh r5, [r0, 0x2]
+_08154420:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x1
+ bls _081543FE
+_0815442A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154430: .4byte gUnknown_8478E0C
+_08154434: .4byte gUnknown_203F3F8
+ thumb_func_end sub_81543E8
+
+ thumb_func_start sub_8154438
+sub_8154438: @ 8154438
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x28
+ movs r4, 0x80
+ lsls r4, 3
+ adds r0, r4, 0
+ bl AllocZeroed
+ adds r6, r0, 0
+ ldr r0, _081544DC @ =gUnknown_8478E18
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [sp, 0x20]
+ str r1, [sp, 0x24]
+ ldr r0, _081544E0 @ =gUnknown_847722C
+ adds r1, r6, 0
+ bl LZ77UnCompWram
+ cmp r6, 0
+ beq _081544C6
+ str r6, [sp, 0x18]
+ add r0, sp, 0x18
+ movs r1, 0xA0
+ lsls r1, 11
+ orrs r1, r4
+ str r1, [r0, 0x4]
+ mov r2, sp
+ ldr r1, _081544E4 @ =gUnknown_8478E20
+ ldm r1!, {r3-r5}
+ stm r2!, {r3-r5}
+ ldm r1!, {r3-r5}
+ stm r2!, {r3-r5}
+ bl LoadSpriteSheet
+ add r0, sp, 0x20
+ bl LoadSpritePalette
+ movs r5, 0
+ ldr r7, _081544E8 @ =gUnknown_8478E0E
+ adds r0, r7, 0x2
+ mov r9, r0
+ ldr r1, _081544EC @ =gUnknown_203F3F8
+ mov r8, r1
+_08154492:
+ movs r0, 0x4
+ bl AllocZeroed
+ lsls r2, r5, 2
+ mov r3, r8
+ adds r4, r2, r3
+ str r0, [r4]
+ adds r0, r2, r7
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ add r2, r9
+ movs r0, 0
+ ldrsh r2, [r2, r0]
+ mov r0, sp
+ movs r3, 0x4
+ bl CreateSprite
+ ldr r1, [r4]
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r1]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x1
+ bls _08154492
+_081544C6:
+ adds r0, r6, 0
+ bl Free
+ add sp, 0x28
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081544DC: .4byte gUnknown_8478E18
+_081544E0: .4byte gUnknown_847722C
+_081544E4: .4byte gUnknown_8478E20
+_081544E8: .4byte gUnknown_8478E0E
+_081544EC: .4byte gUnknown_203F3F8
+ thumb_func_end sub_8154438
+
+ thumb_func_start sub_81544F0
+sub_81544F0: @ 81544F0
+ push {r4-r7,lr}
+ movs r3, 0
+ ldr r0, _08154534 @ =gUnknown_203F3F8
+ mov r12, r0
+ ldr r4, _08154538 @ =gUnknown_8478E0E
+ adds r7, r4, 0x2
+ ldr r6, _0815453C @ =gSprites
+ movs r5, 0x1
+_08154500:
+ lsls r2, r3, 2
+ mov r1, r12
+ adds r0, r2, r1
+ ldr r0, [r0]
+ ldrh r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ adds r0, r1, 0
+ adds r0, 0x42
+ strh r5, [r0]
+ adds r0, r2, r4
+ ldrh r0, [r0]
+ strh r0, [r1, 0x20]
+ adds r2, r7
+ ldrh r0, [r2]
+ strh r0, [r1, 0x22]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x1
+ bls _08154500
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154534: .4byte gUnknown_203F3F8
+_08154538: .4byte gUnknown_8478E0E
+_0815453C: .4byte gSprites
+ thumb_func_end sub_81544F0
+
+ thumb_func_start sub_8154540
+sub_8154540: @ 8154540
+ push {r4,r5,lr}
+ movs r2, 0
+ ldr r5, _08154570 @ =gUnknown_203F3F8
+ ldr r4, _08154574 @ =gSprites
+ movs r3, 0
+_0815454A:
+ lsls r0, r2, 2
+ adds r0, r5
+ ldr r0, [r0]
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ adds r0, 0x42
+ strh r3, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x1
+ bls _0815454A
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154570: .4byte gUnknown_203F3F8
+_08154574: .4byte gSprites
+ thumb_func_end sub_8154540
+
+ thumb_func_start sub_8154578
+sub_8154578: @ 8154578
+ push {r4-r6,lr}
+ movs r5, 0
+ ldr r6, _081545B4 @ =gUnknown_203F3F8
+_0815457E:
+ lsls r0, r5, 2
+ adds r4, r0, r6
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081545B8 @ =gSprites
+ adds r0, r1
+ cmp r0, 0
+ beq _08154598
+ bl DestroySprite
+_08154598:
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x1
+ bls _0815457E
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081545B4: .4byte gUnknown_203F3F8
+_081545B8: .4byte gSprites
+ thumb_func_end sub_8154578
+
+ thumb_func_start sub_81545BC
+sub_81545BC: @ 81545BC
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ movs r3, 0
+ ldr r7, _08154600 @ =gSprites
+ ldr r6, _08154604 @ =gUnknown_203F3F8
+ movs r1, 0x1
+ ands r0, r1
+ lsls r4, r0, 2
+ movs r5, 0x5
+ negs r5, r5
+_081545D2:
+ lsls r0, r3, 2
+ adds r0, r6
+ ldr r0, [r0]
+ ldrh r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r7
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ adds r0, r5, 0
+ ands r0, r2
+ orrs r0, r4
+ strb r0, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x1
+ bls _081545D2
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154600: .4byte gSprites
+_08154604: .4byte gUnknown_203F3F8
+ thumb_func_end sub_81545BC
+
+ thumb_func_start sub_8154608
+sub_8154608: @ 8154608
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0
+ subs r0, r1, 0x1
+ cmp r0, 0x4
+ bhi _081546BA
+ lsls r0, 2
+ ldr r1, _08154624 @ =_08154628
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08154624: .4byte _08154628
+ .align 2, 0
+_08154628:
+ .4byte _081546A8
+ .4byte _0815463C
+ .4byte _08154646
+ .4byte _0815465A
+ .4byte _08154682
+_0815463C:
+ cmp r2, 0
+ beq _08154672
+ cmp r2, 0x1
+ bne _081546BA
+ b _08154676
+_08154646:
+ cmp r2, 0x1
+ beq _081546AC
+ cmp r2, 0x1
+ bgt _08154654
+ cmp r2, 0
+ beq _081546A8
+ b _081546BA
+_08154654:
+ cmp r2, 0x2
+ bne _081546BA
+ b _081546B8
+_0815465A:
+ cmp r2, 0x1
+ beq _08154676
+ cmp r2, 0x1
+ bgt _08154668
+ cmp r2, 0
+ beq _08154672
+ b _081546BA
+_08154668:
+ cmp r2, 0x2
+ beq _0815467A
+ cmp r2, 0x3
+ beq _0815467E
+ b _081546BA
+_08154672:
+ movs r3, 0xC
+ b _081546BA
+_08154676:
+ movs r3, 0x12
+ b _081546BA
+_0815467A:
+ movs r3, 0x18
+ b _081546BA
+_0815467E:
+ movs r3, 0x6
+ b _081546BA
+_08154682:
+ cmp r2, 0x4
+ bhi _081546BA
+ lsls r0, r2, 2
+ ldr r1, _08154690 @ =_08154694
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08154690: .4byte _08154694
+ .align 2, 0
+_08154694:
+ .4byte _081546A8
+ .4byte _081546AC
+ .4byte _081546B0
+ .4byte _081546B4
+ .4byte _081546B8
+_081546A8:
+ movs r3, 0xF
+ b _081546BA
+_081546AC:
+ movs r3, 0x15
+ b _081546BA
+_081546B0:
+ movs r3, 0x1B
+ b _081546BA
+_081546B4:
+ movs r3, 0x3
+ b _081546BA
+_081546B8:
+ movs r3, 0x9
+_081546BA:
+ lsls r0, r3, 3
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8154608
+
+ thumb_func_start sub_81546C0
+sub_81546C0: @ 81546C0
+ push {r4,lr}
+ movs r4, 0
+_081546C4:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_81542EC
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8154370
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xA
+ bls _081546C4
+ movs r0, 0
+ bl sub_81540DC
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81546C0
+
+ thumb_func_start sub_81546EC
+sub_81546EC: @ 81546EC
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl sub_8069788
+ ldr r1, [r0]
+ movs r2, 0x90
+ lsls r2, 1
+ movs r0, 0
+ movs r3, 0x1
+ bl LoadBgTiles
+ adds r0, r4, 0
+ bl sub_8069788
+ ldr r0, [r0, 0x4]
+ movs r1, 0xA0
+ movs r2, 0x20
+ bl LoadPalette
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81546EC
+
+ thumb_func_start sub_8154720
+sub_8154720: @ 8154720
+ push {lr}
+ movs r0, 0
+ movs r1, 0xA
+ movs r2, 0xB0
+ bl TextWindow_SetStdFrame0_WithPal
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8154720
+
+ thumb_func_start sub_8154730
+sub_8154730: @ 8154730
+ ldr r3, _08154760 @ =gUnknown_203F440
+ ldr r0, [r3]
+ movs r2, 0xC0
+ lsls r2, 6
+ adds r1, r0, r2
+ movs r2, 0
+ str r2, [r1]
+ ldr r1, _08154764 @ =0x00003014
+ adds r0, r1
+ strb r2, [r0]
+ ldr r0, [r3]
+ adds r1, 0x4
+ adds r0, r1
+ strb r2, [r0]
+ ldr r0, [r3]
+ adds r1, 0x8
+ adds r0, r1
+ strb r2, [r0]
+ ldr r0, [r3]
+ adds r1, 0x4
+ adds r0, r1
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+_08154760: .4byte gUnknown_203F440
+_08154764: .4byte 0x00003014
+ thumb_func_end sub_8154730
+
+ thumb_func_start sub_8154768
+sub_8154768: @ 8154768
+ push {r4-r6,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ movs r6, 0xA
+ ldrb r2, [r4, 0x1]
+ subs r2, 0x1
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ subs r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ movs r5, 0x1
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x1
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x1]
+ ldrb r3, [r4, 0x2]
+ subs r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ ldrb r0, [r4, 0x3]
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x2
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x3]
+ ldrb r0, [r4, 0x1]
+ adds r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ subs r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x3
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x1]
+ subs r2, 0x1
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ str r5, [sp]
+ ldrb r0, [r4, 0x4]
+ str r0, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x4
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x3]
+ ldrb r0, [r4, 0x1]
+ adds r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ str r5, [sp]
+ ldrb r0, [r4, 0x4]
+ str r0, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x6
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x1]
+ subs r2, 0x1
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x4]
+ ldrb r0, [r4, 0x2]
+ adds r3, r0
+ lsls r3, 24
+ lsrs r3, 24
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x7
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x1]
+ ldrb r3, [r4, 0x4]
+ ldrb r0, [r4, 0x2]
+ adds r3, r0
+ lsls r3, 24
+ lsrs r3, 24
+ ldrb r0, [r4, 0x3]
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x8
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x3]
+ ldrb r0, [r4, 0x1]
+ adds r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x4]
+ ldrb r4, [r4, 0x2]
+ adds r3, r4
+ lsls r3, 24
+ lsrs r3, 24
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x9
+ bl FillBgTilemapBufferRect
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8154768
+
+ thumb_func_start sub_8154868
+sub_8154868: @ 8154868
+ push {r4-r6,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ movs r6, 0xB
+ ldrb r2, [r4, 0x1]
+ subs r2, 0x1
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ subs r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ movs r5, 0x1
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0xA
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x1]
+ ldrb r3, [r4, 0x2]
+ subs r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ ldrb r0, [r4, 0x3]
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0xB
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x3]
+ ldrb r0, [r4, 0x1]
+ adds r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ subs r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0xC
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x1]
+ subs r2, 0x1
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ str r5, [sp]
+ ldrb r0, [r4, 0x4]
+ str r0, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0xD
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x3]
+ ldrb r0, [r4, 0x1]
+ adds r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ str r5, [sp]
+ ldrb r0, [r4, 0x4]
+ str r0, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0xF
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x1]
+ subs r2, 0x1
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x4]
+ ldrb r0, [r4, 0x2]
+ adds r3, r0
+ lsls r3, 24
+ lsrs r3, 24
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x10
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x1]
+ ldrb r3, [r4, 0x4]
+ ldrb r0, [r4, 0x2]
+ adds r3, r0
+ lsls r3, 24
+ lsrs r3, 24
+ ldrb r0, [r4, 0x3]
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x11
+ bl FillBgTilemapBufferRect
+ ldrb r2, [r4, 0x3]
+ ldrb r0, [r4, 0x1]
+ adds r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x4]
+ ldrb r4, [r4, 0x2]
+ adds r3, r4
+ lsls r3, 24
+ lsrs r3, 24
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0x12
+ bl FillBgTilemapBufferRect
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8154868
+
+ thumb_func_start sub_8154968
+sub_8154968: @ 8154968
+ push {r4,lr}
+ ldr r4, _081549B0 @ =gUnknown_203F440
+ str r0, [r4]
+ movs r2, 0xC0
+ lsls r2, 6
+ adds r1, r0, r2
+ movs r2, 0
+ str r2, [r1]
+ ldr r3, _081549B4 @ =0x00003014
+ adds r1, r0, r3
+ strb r2, [r1]
+ ldr r1, _081549B8 @ =0x00003018
+ adds r0, r1
+ strb r2, [r0]
+ ldr r0, [r4]
+ adds r3, 0xC
+ adds r0, r3
+ strb r2, [r0]
+ ldr r0, [r4]
+ adds r1, 0xC
+ adds r0, r1
+ strb r2, [r0]
+ ldr r0, _081549BC @ =sub_8154A08
+ movs r1, 0x3
+ bl CreateTask
+ ldr r1, [r4]
+ ldr r2, _081549C0 @ =0x00003004
+ adds r1, r2
+ strb r0, [r1]
+ ldr r0, _081549C4 @ =sub_8154A2C
+ bl sub_8155E24
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081549B0: .4byte gUnknown_203F440
+_081549B4: .4byte 0x00003014
+_081549B8: .4byte 0x00003018
+_081549BC: .4byte sub_8154A08
+_081549C0: .4byte 0x00003004
+_081549C4: .4byte sub_8154A2C
+ thumb_func_end sub_8154968
+
+ thumb_func_start sub_81549C8
+sub_81549C8: @ 81549C8
+ push {lr}
+ bl FreeAllWindowBuffers
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81549C8
+
+ thumb_func_start sub_81549D4
+sub_81549D4: @ 81549D4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r4, 0
+ ldr r5, _08154A04 @ =gUnknown_8478EC4
+ adds r7, r5, 0x4
+_081549E0:
+ lsls r1, r4, 3
+ adds r0, r1, r5
+ ldrb r0, [r0]
+ cmp r0, r6
+ bne _081549F2
+ adds r0, r1, r7
+ ldr r0, [r0]
+ bl sub_8155E24
+_081549F2:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x9
+ bls _081549E0
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154A04: .4byte gUnknown_8478EC4
+ thumb_func_end sub_81549D4
+
+ thumb_func_start sub_8154A08
+sub_8154A08: @ 8154A08
+ push {lr}
+ ldr r0, _08154A28 @ =gUnknown_203F440
+ ldr r0, [r0]
+ movs r1, 0xC0
+ lsls r1, 6
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08154A22
+ bl sub_8155E54
+ bl _call_via_r0
+_08154A22:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154A28: .4byte gUnknown_203F440
+ thumb_func_end sub_8154A08
+
+ thumb_func_start sub_8154A2C
+sub_8154A2C: @ 8154A2C
+ push {lr}
+ ldr r0, _08154A48 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r2, _08154A4C @ =0x00003014
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bhi _08154B24
+ lsls r0, 2
+ ldr r1, _08154A50 @ =_08154A54
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08154A48: .4byte gUnknown_203F440
+_08154A4C: .4byte 0x00003014
+_08154A50: .4byte _08154A54
+ .align 2, 0
+_08154A54:
+ .4byte _08154A68
+ .4byte _08154A6E
+ .4byte _08154A88
+ .4byte _08154ACC
+ .4byte _08154AF8
+_08154A68:
+ bl sub_8155EA0
+ b _08154B08
+_08154A6E:
+ bl sub_8155FE0
+ cmp r0, 0x1
+ bne _08154B2E
+ ldr r0, _08154A80 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r2, _08154A84 @ =0x00003014
+ adds r1, r2
+ b _08154B10
+ .align 2, 0
+_08154A80: .4byte gUnknown_203F440
+_08154A84: .4byte 0x00003014
+_08154A88:
+ ldr r1, _08154AC0 @ =gUnknown_8478590
+ movs r0, 0x3
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ ldr r1, _08154AC4 @ =gUnknown_8478A4C
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ ldr r1, _08154AC8 @ =gUnknown_84787FC
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ movs r0, 0x3
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0x2
+ bl CopyBgTilemapBufferToVram
+ b _08154B08
+ .align 2, 0
+_08154AC0: .4byte gUnknown_8478590
+_08154AC4: .4byte gUnknown_8478A4C
+_08154AC8: .4byte gUnknown_84787FC
+_08154ACC:
+ movs r0, 0
+ bl ShowBg
+ movs r0, 0x3
+ bl ShowBg
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ ldr r0, _08154AF0 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r2, _08154AF4 @ =0x00003014
+ adds r1, r2
+ b _08154B10
+ .align 2, 0
+_08154AF0: .4byte gUnknown_203F440
+_08154AF4: .4byte 0x00003014
+_08154AF8:
+ ldr r0, _08154B18 @ =gSaveBlock2Ptr
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x14]
+ lsrs r0, 3
+ bl sub_81546EC
+ bl sub_8154720
+_08154B08:
+ ldr r0, _08154B1C @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r0, _08154B20 @ =0x00003014
+ adds r1, r0
+_08154B10:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08154B2E
+ .align 2, 0
+_08154B18: .4byte gSaveBlock2Ptr
+_08154B1C: .4byte gUnknown_203F440
+_08154B20: .4byte 0x00003014
+_08154B24:
+ movs r2, 0xC0
+ lsls r2, 6
+ adds r1, r2
+ movs r0, 0x1
+ str r0, [r1]
+_08154B2E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8154A2C
+
+ thumb_func_start sub_8154B34
+sub_8154B34: @ 8154B34
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ ldr r4, _08154B74 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r2, _08154B78 @ =0x00003014
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08154B7C
+ cmp r0, 0x1
+ bne _08154B54
+ b _08154CE0
+_08154B54:
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB4
+ bhi _08154B62
+ b _08154D82
+_08154B62:
+ bl sub_81533B4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r6, 0
+ cmp r6, r7
+ bcc _08154B72
+ b _08154D5A
+_08154B72:
+ b _08154D34
+ .align 2, 0
+_08154B74: .4byte gUnknown_203F440
+_08154B78: .4byte 0x00003014
+_08154B7C:
+ bl sub_81533B4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _08154CB8 @ =gUnknown_8478E80
+ subs r0, r7, 0x1
+ lsls r0, 2
+ adds r0, r1
+ ldr r5, [r0]
+ ldr r2, _08154CBC @ =0xffffff00
+ ldr r0, [sp, 0xC]
+ ands r0, r2
+ ldr r1, _08154CC0 @ =0x00ffffff
+ ands r0, r1
+ movs r1, 0xE0
+ lsls r1, 19
+ orrs r0, r1
+ str r0, [sp, 0xC]
+ ldr r0, [sp, 0x10]
+ ands r0, r2
+ movs r1, 0x2
+ orrs r0, r1
+ ldr r1, _08154CC4 @ =0xffff00ff
+ ands r0, r1
+ movs r1, 0xD0
+ lsls r1, 4
+ orrs r0, r1
+ ldr r1, _08154CC8 @ =0x0000ffff
+ ands r0, r1
+ movs r1, 0x98
+ lsls r1, 13
+ orrs r0, r1
+ str r0, [sp, 0x10]
+ movs r6, 0
+ cmp r6, r7
+ bcs _08154CAC
+ mov r3, sp
+ adds r3, 0xC
+ str r3, [sp, 0x18]
+ mov r10, r4
+ ldr r0, _08154CCC @ =0x00003008
+ mov r9, r0
+_08154BD0:
+ movs r1, 0
+ mov r8, r1
+ adds r0, r6, 0
+ bl sub_81537AC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ bl sub_81533C4
+ adds r1, r0, 0
+ movs r0, 0
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ movs r1, 0x38
+ subs r1, r0
+ lsrs r1, 1
+ str r1, [sp, 0x14]
+ ldrb r0, [r5]
+ lsls r0, 8
+ ldr r2, _08154CC4 @ =0xffff00ff
+ ldr r1, [sp, 0xC]
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp, 0xC]
+ ldrb r2, [r5, 0x1]
+ lsls r2, 16
+ ldr r0, _08154CD0 @ =0xff00ffff
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp, 0xC]
+ add r0, sp, 0xC
+ bl AddWindow
+ mov r2, r10
+ ldr r1, [r2]
+ add r1, r9
+ adds r1, r6
+ strb r0, [r1]
+ ldr r0, [r2]
+ add r0, r9
+ adds r0, r6
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ mov r3, r10
+ ldr r0, [r3]
+ add r0, r9
+ adds r0, r6
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bne _08154C4E
+ movs r0, 0x2
+ mov r8, r0
+_08154C4E:
+ adds r0, r4, 0
+ bl sub_81533C4
+ adds r4, r0, 0
+ mov r1, r10
+ ldr r0, [r1]
+ add r0, r9
+ adds r0, r6
+ ldrb r0, [r0]
+ ldr r3, [sp, 0x14]
+ lsls r2, r3, 24
+ lsrs r2, 24
+ mov r3, r8
+ lsls r1, r3, 1
+ add r1, r8
+ ldr r3, _08154CD4 @ =gUnknown_8478E38
+ adds r1, r3
+ str r1, [sp]
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0
+ movs r3, 0x1
+ bl AddTextPrinterParameterized3
+ mov r2, r10
+ ldr r0, [r2]
+ add r0, r9
+ adds r0, r6
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r3, [sp, 0x18]
+ ldrh r0, [r3, 0x6]
+ adds r0, 0xE
+ strh r0, [r3, 0x6]
+ add r0, sp, 0xC
+ bl sub_8154868
+ adds r5, 0x4
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, r7
+ bcc _08154BD0
+_08154CAC:
+ ldr r0, _08154CD8 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r0, _08154CDC @ =0x00003014
+ adds r1, r0
+ b _08154D1E
+ .align 2, 0
+_08154CB8: .4byte gUnknown_8478E80
+_08154CBC: .4byte 0xffffff00
+_08154CC0: .4byte 0x00ffffff
+_08154CC4: .4byte 0xffff00ff
+_08154CC8: .4byte 0x0000ffff
+_08154CCC: .4byte 0x00003008
+_08154CD0: .4byte 0xff00ffff
+_08154CD4: .4byte gUnknown_8478E38
+_08154CD8: .4byte gUnknown_203F440
+_08154CDC: .4byte 0x00003014
+_08154CE0:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _08154D82
+ bl sub_81533B4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r6, 0
+ cmp r6, r7
+ bcs _08154D10
+_08154CF8:
+ ldr r0, [r4]
+ ldr r1, _08154D28 @ =0x00003008
+ adds r0, r1
+ adds r0, r6
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, r7
+ bcc _08154CF8
+_08154D10:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r0, _08154D2C @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r2, _08154D30 @ =0x00003014
+ adds r1, r2
+_08154D1E:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08154D82
+ .align 2, 0
+_08154D28: .4byte 0x00003008
+_08154D2C: .4byte gUnknown_203F440
+_08154D30: .4byte 0x00003014
+_08154D34:
+ ldr r5, _08154D94 @ =gUnknown_203F440
+ ldr r0, [r5]
+ ldr r4, _08154D98 @ =0x00003008
+ adds r0, r4
+ adds r0, r6
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ ldr r0, [r5]
+ adds r0, r4
+ adds r0, r6
+ ldrb r0, [r0]
+ bl RemoveWindow
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, r7
+ bcc _08154D34
+_08154D5A:
+ movs r0, 0x1E
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r0, _08154D94 @ =gUnknown_203F440
+ ldr r0, [r0]
+ movs r3, 0xC0
+ lsls r3, 6
+ adds r0, r3
+ movs r1, 0x1
+ str r1, [r0]
+_08154D82:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154D94: .4byte gUnknown_203F440
+_08154D98: .4byte 0x00003008
+ thumb_func_end sub_8154B34
+
+ thumb_func_start sub_8154D9C
+sub_8154D9C: @ 8154D9C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x70
+ lsls r0, 24
+ movs r1, 0
+ mov r8, r1
+ movs r6, 0
+ lsrs r7, r0, 24
+ add r4, sp, 0x2C
+ ldr r1, _08154F64 @ =gUnknown_8478F14
+ adds r0, r4, 0
+ movs r2, 0x5
+ bl memcpy
+ movs r5, 0
+ cmp r5, r7
+ bcs _08154DEC
+ add r4, sp, 0x34
+_08154DC6:
+ mov r0, sp
+ adds r0, r5
+ adds r0, 0x2C
+ strb r5, [r0]
+ add r0, sp, 0x5C
+ adds r1, r5, 0
+ bl sub_81536A0
+ lsls r2, r5, 3
+ adds r2, r4, r2
+ ldr r0, [sp, 0x5C]
+ ldr r1, [sp, 0x60]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r7
+ bcc _08154DC6
+_08154DEC:
+ bl sub_81534AC
+ cmp r0, 0
+ beq _08154E22
+_08154DF4:
+ movs r5, 0
+ cmp r5, r7
+ bcs _08154E1C
+ add r2, sp, 0x34
+ add r1, sp, 0x2C
+_08154DFE:
+ lsls r0, r5, 3
+ adds r0, r2, r0
+ ldrb r0, [r0]
+ cmp r0, r8
+ bne _08154E12
+ adds r0, r1, r6
+ strb r5, [r0]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08154E12:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r7
+ bcc _08154DFE
+_08154E1C:
+ mov r8, r6
+ cmp r6, r7
+ bcc _08154DF4
+_08154E22:
+ movs r5, 0
+ ldr r4, _08154F68 @ =gUnknown_841CE1C
+ cmp r5, r7
+ bcs _08154E48
+ add r1, sp, 0x34
+ add r6, sp, 0x38
+ subs r3, r7, 0x1
+_08154E30:
+ lsls r2, r5, 3
+ adds r0, r6, r2
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08154E3E
+ adds r0, r1, r2
+ strb r3, [r0]
+_08154E3E:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r7
+ bcc _08154E30
+_08154E48:
+ movs r0, 0
+ adds r1, r4, 0
+ movs r2, 0
+ bl GetStringWidth
+ movs r1, 0xD8
+ subs r1, r0
+ str r1, [sp, 0x64]
+ movs r5, 0
+ cmp r5, r7
+ bcs _08154F52
+ mov r2, sp
+ adds r2, 0x34
+ str r2, [sp, 0x68]
+ ldr r3, _08154F6C @ =0x00003009
+ mov r10, r3
+ adds r0, r1, 0
+ subs r0, 0x23
+ lsls r0, 24
+ str r0, [sp, 0x6C]
+_08154E70:
+ movs r4, 0
+ mov r8, r4
+ mov r0, sp
+ adds r0, r5
+ adds r0, 0x2C
+ ldrb r0, [r0]
+ adds r4, r0, 0
+ lsls r1, r4, 3
+ add r0, sp, 0x38
+ adds r0, r1
+ ldr r0, [r0]
+ mov r9, r0
+ ldr r2, _08154F70 @ =gUnknown_203F440
+ ldr r0, [r2]
+ add r0, r10
+ ldrb r0, [r0]
+ ldr r2, _08154F74 @ =gUnknown_8478E94
+ ldr r3, [sp, 0x68]
+ adds r1, r3, r1
+ ldrb r1, [r1]
+ lsls r1, 2
+ adds r1, r2
+ ldr r2, [r1]
+ ldr r3, _08154F78 @ =gUnknown_8478EBA
+ lsls r1, r5, 1
+ adds r1, r3
+ ldrb r6, [r1]
+ str r6, [sp]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ mov r3, r8
+ str r3, [sp, 0x8]
+ movs r1, 0
+ movs r3, 0x8
+ bl AddTextPrinterParameterized
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bne _08154EC8
+ movs r0, 0x2
+ mov r8, r0
+_08154EC8:
+ adds r0, r4, 0
+ bl sub_81533C4
+ adds r3, r0, 0
+ ldr r1, _08154F70 @ =gUnknown_203F440
+ ldr r0, [r1]
+ add r0, r10
+ ldrb r0, [r0]
+ mov r2, r8
+ lsls r1, r2, 1
+ add r1, r8
+ ldr r2, _08154F7C @ =gUnknown_8478E38
+ adds r1, r2
+ str r1, [sp]
+ movs r4, 0x1
+ negs r4, r4
+ str r4, [sp, 0x4]
+ str r3, [sp, 0x8]
+ movs r1, 0
+ movs r2, 0x1C
+ adds r3, r6, 0
+ bl AddTextPrinterParameterized3
+ add r0, sp, 0xC
+ mov r1, r9
+ movs r2, 0x1
+ movs r3, 0x7
+ bl ConvertIntToDecimalStringN
+ movs r0, 0
+ add r1, sp, 0xC
+ adds r2, r4, 0
+ bl GetStringWidth
+ ldr r1, _08154F70 @ =gUnknown_203F440
+ ldr r0, [r1]
+ add r0, r10
+ ldrb r0, [r0]
+ str r6, [sp]
+ movs r2, 0xFF
+ str r2, [sp, 0x4]
+ movs r3, 0
+ str r3, [sp, 0x8]
+ movs r1, 0
+ add r2, sp, 0xC
+ ldr r4, [sp, 0x6C]
+ lsrs r3, r4, 24
+ bl AddTextPrinterParameterized
+ ldr r1, _08154F70 @ =gUnknown_203F440
+ ldr r0, [r1]
+ add r0, r10
+ ldrb r0, [r0]
+ ldr r2, [sp, 0x64]
+ lsls r3, r2, 24
+ str r6, [sp]
+ movs r4, 0xFF
+ str r4, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ ldr r2, _08154F68 @ =gUnknown_841CE1C
+ lsrs r3, 24
+ bl AddTextPrinterParameterized
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r7
+ bcc _08154E70
+_08154F52:
+ add sp, 0x70
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08154F64: .4byte gUnknown_8478F14
+_08154F68: .4byte gUnknown_841CE1C
+_08154F6C: .4byte 0x00003009
+_08154F70: .4byte gUnknown_203F440
+_08154F74: .4byte gUnknown_8478E94
+_08154F78: .4byte gUnknown_8478EBA
+_08154F7C: .4byte gUnknown_8478E38
+ thumb_func_end sub_8154D9C
+
+ thumb_func_start sub_8154F80
+sub_8154F80: @ 8154F80
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8C
+ bl sub_81533B4
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x84]
+ ldr r6, _08154FB0 @ =gUnknown_203F440
+ ldr r1, [r6]
+ ldr r2, _08154FB4 @ =0x00003014
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0xB
+ bls _08154FA6
+ b _08155678
+_08154FA6:
+ lsls r0, 2
+ ldr r1, _08154FB8 @ =_08154FBC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08154FB0: .4byte gUnknown_203F440
+_08154FB4: .4byte 0x00003014
+_08154FB8: .4byte _08154FBC
+ .align 2, 0
+_08154FBC:
+ .4byte _08154FEC
+ .4byte _08155008
+ .4byte _08155060
+ .4byte _0815524C
+ .4byte _08155298
+ .4byte _081552DC
+ .4byte _08155340
+ .4byte _0815537C
+ .4byte _081553C0
+ .4byte _08155480
+ .4byte _081555D8
+ .4byte _0815562C
+_08154FEC:
+ bl sub_81535B0
+ ldr r0, _08155000 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r0, _08155004 @ =0x0000301c
+ adds r2, r1, r0
+ movs r0, 0
+ strh r0, [r2]
+ b _0815565A
+ .align 2, 0
+_08155000: .4byte gUnknown_203F440
+_08155004: .4byte 0x0000301c
+_08155008:
+ ldr r6, _08155050 @ =gUnknown_8475674
+ adds r0, r6, 0
+ bl AddWindow
+ ldr r4, _08155054 @ =gUnknown_203F440
+ ldr r1, [r4]
+ ldr r2, _08155058 @ =0x00003008
+ mov r8, r2
+ add r1, r8
+ strb r0, [r1]
+ movs r0, 0x8
+ adds r0, r6
+ mov r9, r0
+ bl AddWindow
+ ldr r1, [r4]
+ ldr r5, _0815505C @ =0x00003009
+ adds r1, r5
+ strb r0, [r1]
+ ldr r0, [r4]
+ add r0, r8
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ ldr r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ adds r0, r6, 0
+ bl sub_8154868
+ mov r0, r9
+ bl sub_8154868
+ b _08155658
+ .align 2, 0
+_08155050: .4byte gUnknown_8475674
+_08155054: .4byte gUnknown_203F440
+_08155058: .4byte 0x00003008
+_0815505C: .4byte 0x00003009
+_08155060:
+ ldr r4, _081551A8 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r5, _081551AC @ =0x00003008
+ adds r0, r5
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r0, [r4]
+ ldr r1, _081551B0 @ =0x00003009
+ mov r9, r1
+ add r0, r9
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r2, _081551B4 @ =gUnknown_841CD03
+ mov r8, r2
+ movs r2, 0x1
+ negs r2, r2
+ movs r0, 0
+ mov r1, r8
+ bl GetStringWidth
+ adds r1, r0, 0
+ movs r0, 0xE0
+ subs r0, r1
+ lsrs r3, r0, 1
+ ldr r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ lsls r3, 24
+ lsrs r3, 24
+ movs r1, 0x2
+ str r1, [sp]
+ movs r6, 0xFF
+ str r6, [sp, 0x4]
+ movs r5, 0
+ str r5, [sp, 0x8]
+ movs r1, 0
+ mov r2, r8
+ bl AddTextPrinterParameterized
+ ldr r0, [r4]
+ add r0, r9
+ ldrb r0, [r0]
+ ldr r2, _081551B8 @ =gUnknown_841CD25
+ movs r1, 0x10
+ str r1, [sp]
+ str r6, [sp, 0x4]
+ str r5, [sp, 0x8]
+ movs r1, 0
+ movs r3, 0x44
+ bl AddTextPrinterParameterized
+ movs r0, 0
+ mov r9, r0
+ ldr r1, [sp, 0x84]
+ cmp r9, r1
+ bcc _081550DA
+ b _08155214
+_081550DA:
+ movs r5, 0
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r9, r0
+ bne _081550EA
+ movs r5, 0x2
+_081550EA:
+ mov r0, r9
+ bl sub_81533C4
+ adds r6, r0, 0
+ ldr r0, _081551A8 @ =gUnknown_203F440
+ ldr r0, [r0]
+ ldr r2, _081551B0 @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ ldr r1, _081551BC @ =gUnknown_8478EB0
+ mov r2, r9
+ lsls r4, r2, 1
+ adds r4, r1
+ ldrb r3, [r4]
+ lsls r1, r5, 1
+ adds r1, r5
+ ldr r2, _081551C0 @ =gUnknown_8478E38
+ adds r1, r2
+ str r1, [sp]
+ movs r5, 0x1
+ negs r5, r5
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r1, 0
+ movs r2, 0x2
+ bl AddTextPrinterParameterized3
+ movs r7, 0
+ mov r0, r9
+ adds r0, 0x1
+ str r0, [sp, 0x88]
+ mov r8, r4
+ ldr r1, _081551C4 @ =gUnknown_8478EA8
+ mov r10, r1
+_0815512E:
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_8153404
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, _081551C8 @ =0x0000270f
+ bl sub_815379C
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r7, 0
+ bl sub_81534F0
+ ldr r1, _081551C8 @ =0x0000270f
+ bl sub_815379C
+ lsls r0, 16
+ lsrs r6, r0, 16
+ add r0, sp, 0xC
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x4
+ bl ConvertIntToDecimalStringN
+ movs r0, 0
+ add r1, sp, 0xC
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ adds r5, r0, 0
+ cmp r6, r4
+ bne _081551D0
+ cmp r6, 0
+ beq _081551D0
+ ldr r0, _081551A8 @ =gUnknown_203F440
+ ldr r0, [r0]
+ ldr r2, _081551B0 @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r1, r7, 1
+ add r1, r10
+ ldrb r2, [r1]
+ subs r2, r5
+ lsls r2, 24
+ lsrs r2, 24
+ mov r1, r8
+ ldrb r3, [r1]
+ ldr r1, _081551CC @ =gUnknown_8478E3B
+ str r1, [sp]
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [sp, 0x4]
+ add r1, sp, 0xC
+ str r1, [sp, 0x8]
+ movs r1, 0
+ bl AddTextPrinterParameterized3
+ b _081551FA
+ .align 2, 0
+_081551A8: .4byte gUnknown_203F440
+_081551AC: .4byte 0x00003008
+_081551B0: .4byte 0x00003009
+_081551B4: .4byte gUnknown_841CD03
+_081551B8: .4byte gUnknown_841CD25
+_081551BC: .4byte gUnknown_8478EB0
+_081551C0: .4byte gUnknown_8478E38
+_081551C4: .4byte gUnknown_8478EA8
+_081551C8: .4byte 0x0000270f
+_081551CC: .4byte gUnknown_8478E3B
+_081551D0:
+ ldr r0, _0815523C @ =gUnknown_203F440
+ ldr r0, [r0]
+ ldr r2, _08155240 @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r1, r7, 1
+ add r1, r10
+ ldrb r3, [r1]
+ subs r3, r5
+ lsls r3, 24
+ lsrs r3, 24
+ mov r2, r8
+ ldrb r1, [r2]
+ str r1, [sp]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ add r2, sp, 0xC
+ bl AddTextPrinterParameterized
+_081551FA:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x3
+ bls _0815512E
+ ldr r1, [sp, 0x88]
+ lsls r0, r1, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r2, [sp, 0x84]
+ cmp r9, r2
+ bcs _08155214
+ b _081550DA
+_08155214:
+ ldr r4, _0815523C @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _08155244 @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r0, [r4]
+ ldr r2, _08155240 @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r1, [r4]
+ ldr r0, _08155248 @ =0x00003014
+ adds r1, r0
+ b _0815565E
+ .align 2, 0
+_0815523C: .4byte gUnknown_203F440
+_08155240: .4byte 0x00003009
+_08155244: .4byte 0x00003008
+_08155248: .4byte 0x00003014
+_0815524C:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _08155270
+ ldr r4, _08155288 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _0815528C @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ ldr r0, [r4]
+ ldr r2, _08155290 @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+_08155270:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0
+ bl sub_8154324
+ ldr r0, _08155288 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r0, _08155294 @ =0x00003014
+ adds r1, r0
+ b _0815565E
+ .align 2, 0
+_08155288: .4byte gUnknown_203F440
+_0815528C: .4byte 0x00003008
+_08155290: .4byte 0x00003009
+_08155294: .4byte 0x00003014
+_08155298:
+ ldr r4, _081552D0 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _081552D4 @ =0x0000301c
+ adds r2, r0, r1
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1D
+ bhi _081552B0
+ b _081556C8
+_081552B0:
+ ldr r0, _081552D8 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _081552BE
+ b _081556C8
+_081552BE:
+ movs r0, 0
+ strh r0, [r2]
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x1
+ bl sub_8154324
+ b _08155658
+ .align 2, 0
+_081552D0: .4byte gUnknown_203F440
+_081552D4: .4byte 0x0000301c
+_081552D8: .4byte gMain
+_081552DC:
+ ldr r4, _08155330 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r5, _08155334 @ =0x00003008
+ adds r0, r5
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r0, [r4]
+ ldr r1, _08155338 @ =0x00003009
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r6, _0815533C @ =gUnknown_841CD43
+ movs r2, 0x1
+ negs r2, r2
+ movs r0, 0
+ adds r1, r6, 0
+ bl GetStringWidth
+ adds r1, r0, 0
+ movs r0, 0xE0
+ subs r0, r1
+ lsrs r3, r0, 1
+ ldr r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ lsls r3, 24
+ lsrs r3, 24
+ movs r1, 0x2
+ str r1, [sp]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ adds r2, r6, 0
+ bl AddTextPrinterParameterized
+ b _08155658
+ .align 2, 0
+_08155330: .4byte gUnknown_203F440
+_08155334: .4byte 0x00003008
+_08155338: .4byte 0x00003009
+_0815533C: .4byte gUnknown_841CD43
+_08155340:
+ ldr r0, [sp, 0x84]
+ bl sub_8154D9C
+ ldr r4, _0815536C @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _08155370 @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r0, [r4]
+ ldr r2, _08155374 @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r1, [r4]
+ ldr r0, _08155378 @ =0x00003014
+ adds r1, r0
+ b _0815565E
+ .align 2, 0
+_0815536C: .4byte gUnknown_203F440
+_08155370: .4byte 0x00003008
+_08155374: .4byte 0x00003009
+_08155378: .4byte 0x00003014
+_0815537C:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _081553A0
+ ldr r4, _081553B0 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _081553B4 @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ ldr r0, [r4]
+ ldr r2, _081553B8 @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+_081553A0:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r0, _081553B0 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r0, _081553BC @ =0x00003014
+ adds r1, r0
+ b _0815565E
+ .align 2, 0
+_081553B0: .4byte gUnknown_203F440
+_081553B4: .4byte 0x00003008
+_081553B8: .4byte 0x00003009
+_081553BC: .4byte 0x00003014
+_081553C0:
+ ldr r4, _08155408 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _0815540C @ =0x0000301c
+ adds r2, r0, r1
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1D
+ bhi _081553D8
+ b _081556C8
+_081553D8:
+ ldr r0, _08155410 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _081553E6
+ b _081556C8
+_081553E6:
+ movs r0, 0
+ strh r0, [r2]
+ movs r0, 0x5
+ bl PlaySE
+ bl sub_81534AC
+ ldr r1, _08155414 @ =0x00000bb7
+ cmp r0, r1
+ bhi _0815541C
+ ldr r0, [r4]
+ ldr r2, _08155418 @ =0x00003014
+ adds r0, r2
+ movs r1, 0x7F
+ strb r1, [r0]
+ b _0815542C
+ .align 2, 0
+_08155408: .4byte gUnknown_203F440
+_0815540C: .4byte 0x0000301c
+_08155410: .4byte gMain
+_08155414: .4byte 0x00000bb7
+_08155418: .4byte 0x00003014
+_0815541C:
+ bl StopMapMusic
+ ldr r1, [r4]
+ ldr r0, _08155470 @ =0x00003014
+ adds r1, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0815542C:
+ movs r0, 0x1E
+ str r0, [sp]
+ movs r0, 0xF
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x5
+ bl FillBgTilemapBufferRect_Palette0
+ ldr r5, _08155474 @ =gUnknown_203F440
+ ldr r0, [r5]
+ ldr r4, _08155478 @ =0x00003009
+ adds r0, r4
+ ldrb r0, [r0]
+ bl RemoveWindow
+ ldr r6, _0815547C @ =gUnknown_8475684
+ adds r0, r6, 0
+ bl AddWindow
+ ldr r1, [r5]
+ adds r1, r4
+ strb r0, [r1]
+ ldr r0, [r5]
+ adds r0, r4
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ adds r0, r6, 0
+ bl sub_8154868
+ b _081556C8
+ .align 2, 0
+_08155470: .4byte 0x00003014
+_08155474: .4byte gUnknown_203F440
+_08155478: .4byte 0x00003009
+_0815547C: .4byte gUnknown_8475684
+_08155480:
+ ldr r0, _08155558 @ =0x00000101
+ bl PlayNewMapMusic
+ ldr r4, _0815555C @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r6, _08155560 @ =0x00003008
+ adds r0, r6
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r0, [r4]
+ ldr r1, _08155564 @ =0x00003009
+ mov r10, r1
+ add r0, r10
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r5, _08155568 @ =gUnknown_841CD58
+ movs r2, 0x1
+ negs r2, r2
+ movs r0, 0
+ adds r1, r5, 0
+ bl GetStringWidth
+ adds r1, r0, 0
+ movs r0, 0xE0
+ subs r0, r1
+ lsrs r3, r0, 1
+ ldr r0, [r4]
+ adds r0, r6
+ ldrb r0, [r0]
+ lsls r3, 24
+ lsrs r3, 24
+ movs r2, 0x2
+ mov r9, r2
+ str r2, [sp]
+ movs r1, 0xFF
+ mov r8, r1
+ str r1, [sp, 0x4]
+ movs r6, 0
+ str r6, [sp, 0x8]
+ movs r1, 0
+ adds r2, r5, 0
+ bl AddTextPrinterParameterized
+ bl UnkTextUtil_Reset
+ bl sub_8153390
+ lsls r0, 16
+ lsrs r0, 16
+ add r5, sp, 0x70
+ adds r1, r5, 0
+ bl CopyItemName
+ movs r0, 0
+ adds r1, r5, 0
+ bl UnkTextUtil_SetPtrI
+ ldr r1, _0815556C @ =gUnknown_841CD7A
+ add r0, sp, 0xC
+ bl UnkTextUtil_StringExpandPlaceholders
+ ldr r0, [r4]
+ add r0, r10
+ ldrb r0, [r0]
+ mov r2, r9
+ str r2, [sp]
+ mov r1, r8
+ str r1, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r1, 0
+ add r2, sp, 0xC
+ movs r3, 0x8
+ bl AddTextPrinterParameterized
+ bl sub_815372C
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r6, r4, 0
+ cmp r4, 0
+ beq _0815559E
+ cmp r4, 0x3
+ beq _0815559E
+ bl UnkTextUtil_Reset
+ bl sub_8153390
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, r5, 0
+ bl CopyItemName
+ movs r0, 0
+ adds r1, r5, 0
+ bl UnkTextUtil_SetPtrI
+ cmp r4, 0x2
+ bne _08155574
+ ldr r1, _08155570 @ =gUnknown_841CD9F
+ add r0, sp, 0xC
+ bl UnkTextUtil_StringExpandPlaceholders
+ b _08155580
+ .align 2, 0
+_08155558: .4byte 0x00000101
+_0815555C: .4byte gUnknown_203F440
+_08155560: .4byte 0x00003008
+_08155564: .4byte 0x00003009
+_08155568: .4byte gUnknown_841CD58
+_0815556C: .4byte gUnknown_841CD7A
+_08155570: .4byte gUnknown_841CD9F
+_08155574:
+ cmp r6, 0x1
+ bne _08155580
+ ldr r1, _081555C4 @ =gUnknown_841CDBA
+ add r0, sp, 0xC
+ bl UnkTextUtil_StringExpandPlaceholders
+_08155580:
+ ldr r0, _081555C8 @ =gUnknown_203F440
+ ldr r0, [r0]
+ ldr r2, _081555CC @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ movs r1, 0x28
+ str r1, [sp]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ add r2, sp, 0xC
+ movs r3, 0x8
+ bl AddTextPrinterParameterized
+_0815559E:
+ ldr r4, _081555C8 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _081555D0 @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r0, [r4]
+ ldr r2, _081555CC @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r1, [r4]
+ ldr r0, _081555D4 @ =0x00003014
+ adds r1, r0
+ b _0815565E
+ .align 2, 0
+_081555C4: .4byte gUnknown_841CDBA
+_081555C8: .4byte gUnknown_203F440
+_081555CC: .4byte 0x00003009
+_081555D0: .4byte 0x00003008
+_081555D4: .4byte 0x00003014
+_081555D8:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _081555FC
+ ldr r4, _08155618 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _0815561C @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ ldr r0, [r4]
+ ldr r2, _08155620 @ =0x00003009
+ adds r0, r2
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+_081555FC:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r0, _08155624 @ =0x00000137
+ movs r1, 0x14
+ movs r2, 0xA
+ bl FadeOutAndFadeInNewMapMusic
+ ldr r0, _08155618 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r0, _08155628 @ =0x00003014
+ adds r1, r0
+ b _0815565E
+ .align 2, 0
+_08155618: .4byte gUnknown_203F440
+_0815561C: .4byte 0x00003008
+_08155620: .4byte 0x00003009
+_08155624: .4byte 0x00000137
+_08155628: .4byte 0x00003014
+_0815562C:
+ ldr r4, _08155668 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _0815566C @ =0x0000301c
+ adds r2, r0, r1
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1D
+ bls _081556C8
+ ldr r0, _08155670 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _081556C8
+ movs r0, 0
+ strh r0, [r2]
+ movs r0, 0x5
+ bl PlaySE
+_08155658:
+ ldr r1, [r4]
+_0815565A:
+ ldr r2, _08155674 @ =0x00003014
+ adds r1, r2
+_0815565E:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _081556C8
+ .align 2, 0
+_08155668: .4byte gUnknown_203F440
+_0815566C: .4byte 0x0000301c
+_08155670: .4byte gMain
+_08155674: .4byte 0x00003014
+_08155678:
+ ldr r5, _081556D8 @ =0x00003008
+ adds r0, r1, r5
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ ldr r0, [r6]
+ ldr r4, _081556DC @ =0x00003009
+ adds r0, r4
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ ldr r0, [r6]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl RemoveWindow
+ ldr r0, [r6]
+ adds r0, r4
+ ldrb r0, [r0]
+ bl RemoveWindow
+ movs r0, 0x1E
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r0, [r6]
+ movs r1, 0xC0
+ lsls r1, 6
+ adds r0, r1
+ movs r1, 0x1
+ str r1, [r0]
+_081556C8:
+ add sp, 0x8C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081556D8: .4byte 0x00003008
+_081556DC: .4byte 0x00003009
+ thumb_func_end sub_8154F80
+
+ thumb_func_start sub_81556E0
+sub_81556E0: @ 81556E0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ ldr r1, _08155708 @ =gUnknown_203F440
+ ldr r2, [r1]
+ ldr r0, _0815570C @ =0x00003014
+ mov r9, r0
+ adds r0, r2, r0
+ ldrb r7, [r0]
+ mov r10, r1
+ cmp r7, 0x1
+ beq _0815579C
+ cmp r7, 0x1
+ bgt _08155710
+ cmp r7, 0
+ beq _0815571E
+ b _081559EC
+ .align 2, 0
+_08155708: .4byte gUnknown_203F440
+_0815570C: .4byte 0x00003014
+_08155710:
+ cmp r7, 0x2
+ bne _08155716
+ b _08155868
+_08155716:
+ cmp r7, 0x3
+ bne _0815571C
+ b _081558A4
+_0815571C:
+ b _081559EC
+_0815571E:
+ ldr r5, _08155788 @ =gUnknown_847568C
+ adds r0, r5, 0
+ bl AddWindow
+ mov r2, r10
+ ldr r1, [r2]
+ ldr r3, _0815578C @ =0x00003008
+ adds r1, r3
+ strb r0, [r1]
+ movs r0, 0x8
+ adds r0, r5
+ mov r8, r0
+ bl AddWindow
+ mov r2, r10
+ ldr r1, [r2]
+ ldr r4, _08155790 @ =0x00003009
+ adds r1, r4
+ strb r0, [r1]
+ ldr r0, [r2]
+ ldr r3, _0815578C @ =0x00003008
+ adds r0, r3
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ mov r1, r10
+ ldr r0, [r1]
+ adds r0, r4
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ adds r0, r5, 0
+ bl sub_8154868
+ mov r0, r8
+ bl sub_8154768
+ mov r2, r10
+ ldr r1, [r2]
+ add r1, r9
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r0, [r2]
+ ldr r3, _08155794 @ =0x00003020
+ adds r0, r3
+ strb r7, [r0]
+ ldr r0, [r2]
+ ldr r1, _08155798 @ =0x00003024
+ adds r0, r1
+ strb r7, [r0]
+ b _08155A58
+ .align 2, 0
+_08155788: .4byte gUnknown_847568C
+_0815578C: .4byte 0x00003008
+_08155790: .4byte 0x00003009
+_08155794: .4byte 0x00003020
+_08155798: .4byte 0x00003024
+_0815579C:
+ ldr r3, _0815584C @ =0x00003008
+ mov r8, r3
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ mov r1, r10
+ ldr r0, [r1]
+ ldr r7, _08155850 @ =0x00003009
+ adds r0, r7
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ mov r2, r10
+ ldr r0, [r2]
+ add r0, r8
+ ldrb r0, [r0]
+ ldr r2, _08155854 @ =gUnknown_841CDD7
+ movs r1, 0x6
+ str r1, [sp]
+ movs r5, 0xFF
+ str r5, [sp, 0x4]
+ movs r4, 0
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ movs r3, 0
+ bl AddTextPrinterParameterized
+ mov r3, r10
+ ldr r0, [r3]
+ adds r0, r7
+ ldrb r0, [r0]
+ ldr r2, _08155858 @ =gUnknown_8417938
+ movs r1, 0x2
+ mov r9, r1
+ str r1, [sp]
+ str r5, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r3, 0x8
+ bl AddTextPrinterParameterized
+ mov r2, r10
+ ldr r0, [r2]
+ adds r0, r7
+ ldrb r0, [r0]
+ ldr r2, _0815585C @ =gUnknown_841793C
+ movs r1, 0x10
+ str r1, [sp]
+ str r5, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ movs r3, 0x8
+ bl AddTextPrinterParameterized
+ mov r3, r10
+ ldr r0, [r3]
+ adds r0, r7
+ ldrb r0, [r0]
+ ldr r2, _08155860 @ =gFameCheckerText_ListMenuCursor
+ mov r1, r9
+ str r1, [sp]
+ str r5, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ movs r3, 0
+ bl AddTextPrinterParameterized
+ mov r2, r10
+ ldr r0, [r2]
+ add r0, r8
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ mov r3, r10
+ ldr r0, [r3]
+ adds r0, r7
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ mov r0, r10
+ ldr r1, [r0]
+ ldr r2, _08155864 @ =0x00003014
+ adds r1, r2
+ b _081559DA
+ .align 2, 0
+_0815584C: .4byte 0x00003008
+_08155850: .4byte 0x00003009
+_08155854: .4byte gUnknown_841CDD7
+_08155858: .4byte gUnknown_8417938
+_0815585C: .4byte gUnknown_841793C
+_08155860: .4byte gFameCheckerText_ListMenuCursor
+_08155864: .4byte 0x00003014
+_08155868:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _0815588E
+ mov r3, r10
+ ldr r0, [r3]
+ ldr r1, _0815589C @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ mov r2, r10
+ ldr r0, [r2]
+ ldr r3, _081558A0 @ =0x00003009
+ adds r0, r3
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+_0815588E:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ mov r0, r10
+ ldr r1, [r0]
+ add r1, r9
+ b _081559DA
+ .align 2, 0
+_0815589C: .4byte 0x00003008
+_081558A0: .4byte 0x00003009
+_081558A4:
+ ldr r1, _0815590C @ =0x00003020
+ adds r0, r2, r1
+ ldrb r7, [r0]
+ cmp r7, 0
+ bne _081558B0
+ movs r7, 0x1
+_081558B0:
+ ldr r4, _08155910 @ =0x00003009
+ adds r0, r2, r4
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ mov r2, r10
+ ldr r0, [r2]
+ adds r0, r4
+ ldrb r0, [r0]
+ ldr r2, _08155914 @ =gUnknown_8417938
+ movs r3, 0x2
+ mov r8, r3
+ str r3, [sp]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ movs r5, 0
+ str r5, [sp, 0x8]
+ movs r1, 0x2
+ movs r3, 0x8
+ bl AddTextPrinterParameterized
+ mov r2, r10
+ ldr r0, [r2]
+ adds r0, r4
+ ldrb r0, [r0]
+ ldr r2, _08155918 @ =gUnknown_841793C
+ movs r6, 0x10
+ str r6, [sp]
+ movs r3, 0xFF
+ str r3, [sp, 0x4]
+ str r5, [sp, 0x8]
+ movs r1, 0x2
+ movs r3, 0x8
+ bl AddTextPrinterParameterized
+ mov r1, r10
+ ldr r0, [r1]
+ adds r0, r4
+ ldrb r1, [r0]
+ ldr r2, _0815591C @ =gFameCheckerText_ListMenuCursor
+ cmp r7, 0x1
+ bne _08155920
+ mov r3, r8
+ str r3, [sp]
+ b _08155922
+ .align 2, 0
+_0815590C: .4byte 0x00003020
+_08155910: .4byte 0x00003009
+_08155914: .4byte gUnknown_8417938
+_08155918: .4byte gUnknown_841793C
+_0815591C: .4byte gFameCheckerText_ListMenuCursor
+_08155920:
+ str r6, [sp]
+_08155922:
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ adds r0, r1, 0
+ movs r1, 0x2
+ movs r3, 0
+ bl AddTextPrinterParameterized
+ ldr r4, _08155970 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _08155974 @ =0x00003009
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ ldr r0, _08155978 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r5, 0x1
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08155984
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, [r4]
+ ldr r2, _0815597C @ =0x00003020
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _08155966
+ strb r5, [r1]
+_08155966:
+ ldr r1, [r4]
+ ldr r3, _08155980 @ =0x00003014
+ adds r1, r3
+ b _081559DA
+ .align 2, 0
+_08155970: .4byte gUnknown_203F440
+_08155974: .4byte 0x00003009
+_08155978: .4byte gMain
+_0815597C: .4byte 0x00003020
+_08155980: .4byte 0x00003014
+_08155984:
+ movs r0, 0xC0
+ ands r0, r1
+ cmp r0, 0
+ beq _081559BC
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, [r4]
+ ldr r2, _081559A8 @ =0x00003020
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ beq _081559B2
+ cmp r0, 0x1
+ bgt _081559AC
+ cmp r0, 0
+ beq _081559B2
+ b _08155A58
+ .align 2, 0
+_081559A8: .4byte 0x00003020
+_081559AC:
+ cmp r0, 0x2
+ beq _081559B8
+ b _08155A58
+_081559B2:
+ movs r0, 0x2
+ strb r0, [r1]
+ b _08155A58
+_081559B8:
+ strb r5, [r1]
+ b _08155A58
+_081559BC:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08155A58
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, [r4]
+ ldr r3, _081559E4 @ =0x00003020
+ adds r0, r3
+ movs r1, 0x2
+ strb r1, [r0]
+ ldr r1, [r4]
+ ldr r0, _081559E8 @ =0x00003014
+ adds r1, r0
+_081559DA:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08155A58
+ .align 2, 0
+_081559E4: .4byte 0x00003020
+_081559E8: .4byte 0x00003014
+_081559EC:
+ mov r1, r10
+ ldr r0, [r1]
+ ldr r2, _08155A68 @ =0x00003020
+ adds r1, r0, r2
+ ldrb r1, [r1]
+ ldr r3, _08155A6C @ =0x00003024
+ adds r0, r3
+ strb r1, [r0]
+ mov r1, r10
+ ldr r0, [r1]
+ ldr r5, _08155A70 @ =0x00003008
+ adds r0, r5
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ mov r2, r10
+ ldr r0, [r2]
+ ldr r4, _08155A74 @ =0x00003009
+ adds r0, r4
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ mov r3, r10
+ ldr r0, [r3]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl RemoveWindow
+ mov r1, r10
+ ldr r0, [r1]
+ adds r0, r4
+ ldrb r0, [r0]
+ bl RemoveWindow
+ movs r0, 0x1E
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ mov r2, r10
+ ldr r0, [r2]
+ movs r3, 0xC0
+ lsls r3, 6
+ adds r0, r3
+ movs r1, 0x1
+ str r1, [r0]
+_08155A58:
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08155A68: .4byte 0x00003020
+_08155A6C: .4byte 0x00003024
+_08155A70: .4byte 0x00003008
+_08155A74: .4byte 0x00003009
+ thumb_func_end sub_81556E0
+
+ thumb_func_start sub_8155A78
+sub_8155A78: @ 8155A78
+ push {r4-r6,lr}
+ sub sp, 0x10
+ ldr r5, _08155A94 @ =gUnknown_203F440
+ ldr r0, [r5]
+ ldr r6, _08155A98 @ =0x00003014
+ adds r0, r6
+ ldrb r4, [r0]
+ cmp r4, 0x1
+ beq _08155AD0
+ cmp r4, 0x1
+ bgt _08155A9C
+ cmp r4, 0
+ beq _08155AA6
+ b _08155B18
+ .align 2, 0
+_08155A94: .4byte gUnknown_203F440
+_08155A98: .4byte 0x00003014
+_08155A9C:
+ cmp r4, 0x2
+ beq _08155AE4
+ cmp r4, 0x3
+ beq _08155AFC
+ b _08155B18
+_08155AA6:
+ movs r0, 0
+ movs r1, 0
+ bl DrawDialogueFrame
+ ldr r2, _08155ACC @ =gUnknown_8419F54
+ str r4, [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 AddTextPrinterParameterized2
+ b _08155B08
+ .align 2, 0
+_08155ACC: .4byte gUnknown_8419F54
+_08155AD0:
+ movs r0, 0
+ movs r1, 0x3
+ bl CopyWindowToVram
+ ldr r1, [r5]
+ ldr r0, _08155AE0 @ =0x00003014
+ adds r1, r0
+ b _08155B0C
+ .align 2, 0
+_08155AE0: .4byte 0x00003014
+_08155AE4:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _08155B40
+ ldr r0, _08155AF8 @ =sub_80DA634
+ movs r1, 0
+ bl CreateTask
+ b _08155B08
+ .align 2, 0
+_08155AF8: .4byte sub_80DA634
+_08155AFC:
+ ldr r0, _08155B14 @ =sub_80DA634
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ bne _08155B40
+_08155B08:
+ ldr r1, [r5]
+ adds r1, r6
+_08155B0C:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08155B40
+ .align 2, 0
+_08155B14: .4byte sub_80DA634
+_08155B18:
+ movs r0, 0x1E
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r0, _08155B48 @ =gUnknown_203F440
+ ldr r0, [r0]
+ movs r1, 0xC0
+ lsls r1, 6
+ adds r0, r1
+ movs r1, 0x1
+ str r1, [r0]
+_08155B40:
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08155B48: .4byte gUnknown_203F440
+ thumb_func_end sub_8155A78
+
+ thumb_func_start sub_8155B4C
+sub_8155B4C: @ 8155B4C
+ push {r4-r6,lr}
+ sub sp, 0xC
+ ldr r1, _08155B6C @ =gUnknown_203F440
+ ldr r2, [r1]
+ ldr r6, _08155B70 @ =0x00003014
+ adds r0, r2, r6
+ ldrb r0, [r0]
+ adds r5, r1, 0
+ cmp r0, 0x1
+ beq _08155BA4
+ cmp r0, 0x1
+ bgt _08155B74
+ cmp r0, 0
+ beq _08155B7A
+ b _08155C18
+ .align 2, 0
+_08155B6C: .4byte gUnknown_203F440
+_08155B70: .4byte 0x00003014
+_08155B74:
+ cmp r0, 0x2
+ beq _08155BEC
+ b _08155C18
+_08155B7A:
+ ldr r4, _08155B9C @ =gUnknown_84756A4
+ adds r0, r4, 0
+ bl AddWindow
+ ldr r1, [r5]
+ ldr r2, _08155BA0 @ =0x00003008
+ adds r1, r2
+ strb r0, [r1]
+ ldr r0, [r5]
+ adds r0, r2
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ adds r0, r4, 0
+ bl sub_8154868
+ b _08155C08
+ .align 2, 0
+_08155B9C: .4byte gUnknown_84756A4
+_08155BA0: .4byte 0x00003008
+_08155BA4:
+ ldr r4, _08155BE0 @ =0x00003008
+ adds r0, r2, r4
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r0, [r5]
+ adds r0, r4
+ ldrb r0, [r0]
+ ldr r2, _08155BE4 @ =gUnknown_841CE24
+ movs r1, 0x6
+ str r1, [sp]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ movs r1, 0x2
+ movs r3, 0
+ bl AddTextPrinterParameterized
+ ldr r0, [r5]
+ adds r0, r4
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r1, [r5]
+ ldr r0, _08155BE8 @ =0x00003014
+ adds r1, r0
+ b _08155C0C
+ .align 2, 0
+_08155BE0: .4byte 0x00003008
+_08155BE4: .4byte gUnknown_841CE24
+_08155BE8: .4byte 0x00003014
+_08155BEC:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _08155C02
+ ldr r0, [r5]
+ ldr r1, _08155C14 @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+_08155C02:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+_08155C08:
+ ldr r1, [r5]
+ adds r1, r6
+_08155C0C:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08155C24
+ .align 2, 0
+_08155C14: .4byte 0x00003008
+_08155C18:
+ ldr r0, [r5]
+ movs r1, 0xC0
+ lsls r1, 6
+ adds r0, r1
+ movs r1, 0x1
+ str r1, [r0]
+_08155C24:
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8155B4C
+
+ thumb_func_start sub_8155C2C
+sub_8155C2C: @ 8155C2C
+ push {r4,r5,lr}
+ sub sp, 0x8
+ ldr r5, _08155C78 @ =gUnknown_203F440
+ ldr r0, [r5]
+ ldr r4, _08155C7C @ =0x00003008
+ adds r0, r4
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ ldr r0, [r5]
+ adds r0, r4
+ ldrb r0, [r0]
+ bl RemoveWindow
+ movs r0, 0x1E
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r0, [r5]
+ movs r1, 0xC0
+ lsls r1, 6
+ adds r0, r1
+ movs r1, 0x1
+ str r1, [r0]
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08155C78: .4byte gUnknown_203F440
+_08155C7C: .4byte 0x00003008
+ thumb_func_end sub_8155C2C
+
+ thumb_func_start sub_8155C80
+sub_8155C80: @ 8155C80
+ push {r4-r7,lr}
+ sub sp, 0xC
+ ldr r0, _08155CA0 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r7, _08155CA4 @ =0x00003014
+ adds r2, r1, r7
+ ldrb r5, [r2]
+ adds r6, r0, 0
+ cmp r5, 0x1
+ beq _08155D08
+ cmp r5, 0x1
+ bgt _08155CA8
+ cmp r5, 0
+ beq _08155CB2
+ b _08155D9C
+ .align 2, 0
+_08155CA0: .4byte gUnknown_203F440
+_08155CA4: .4byte 0x00003014
+_08155CA8:
+ cmp r5, 0x2
+ beq _08155D50
+ cmp r5, 0x3
+ beq _08155D7C
+ b _08155D9C
+_08155CB2:
+ ldr r4, _08155CF8 @ =gUnknown_847569C
+ adds r0, r4, 0
+ bl AddWindow
+ ldr r1, [r6]
+ ldr r2, _08155CFC @ =0x00003008
+ adds r1, r2
+ strb r0, [r1]
+ ldr r0, [r6]
+ adds r0, r2
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ adds r0, r4, 0
+ bl sub_8154868
+ ldr r1, [r6]
+ adds r1, r7
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r0, [r6]
+ ldr r2, _08155D00 @ =0x0000301c
+ adds r1, r0, r2
+ movs r2, 0
+ strh r5, [r1]
+ ldr r1, _08155D04 @ =0x00003020
+ adds r0, r1
+ strb r2, [r0]
+ ldr r0, [r6]
+ adds r1, 0x4
+ adds r0, r1
+ strb r2, [r0]
+ b _08155DE2
+ .align 2, 0
+_08155CF8: .4byte gUnknown_847569C
+_08155CFC: .4byte 0x00003008
+_08155D00: .4byte 0x0000301c
+_08155D04: .4byte 0x00003020
+_08155D08:
+ ldr r4, _08155D44 @ =0x00003008
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r0, [r6]
+ adds r0, r4
+ ldrb r0, [r0]
+ ldr r2, _08155D48 @ =gUnknown_841CDEB
+ movs r1, 0x6
+ str r1, [sp]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ movs r1, 0x2
+ movs r3, 0
+ bl AddTextPrinterParameterized
+ ldr r0, [r6]
+ adds r0, r4
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldr r1, [r6]
+ ldr r2, _08155D4C @ =0x00003014
+ adds r1, r2
+ b _08155D70
+ .align 2, 0
+_08155D44: .4byte 0x00003008
+_08155D48: .4byte gUnknown_841CDEB
+_08155D4C: .4byte 0x00003014
+_08155D50:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _08155D66
+ ldr r0, [r6]
+ ldr r1, _08155D78 @ =0x00003008
+ adds r0, r1
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+_08155D66:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r1, [r6]
+ adds r1, r7
+_08155D70:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08155DE2
+ .align 2, 0
+_08155D78: .4byte 0x00003008
+_08155D7C:
+ ldr r0, _08155D98 @ =0x0000301c
+ adds r1, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x77
+ bls _08155DE2
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ b _08155DE2
+ .align 2, 0
+_08155D98: .4byte 0x0000301c
+_08155D9C:
+ ldr r0, [r6]
+ ldr r1, _08155DEC @ =0x00003024
+ adds r0, r1
+ movs r1, 0x5
+ strb r1, [r0]
+ ldr r0, [r6]
+ ldr r4, _08155DF0 @ =0x00003008
+ adds r0, r4
+ ldrb r0, [r0]
+ bl ClearWindowTilemap
+ ldr r0, [r6]
+ adds r0, r4
+ ldrb r0, [r0]
+ bl RemoveWindow
+ movs r0, 0x1E
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ ldr r0, [r6]
+ movs r2, 0xC0
+ lsls r2, 6
+ adds r0, r2
+ movs r1, 0x1
+ str r1, [r0]
+_08155DE2:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08155DEC: .4byte 0x00003024
+_08155DF0: .4byte 0x00003008
+ thumb_func_end sub_8155C80
+
+ thumb_func_start unused_0
+unused_0: @ 8155DF4
+ push {r4,lr}
+ ldr r4, _08155E18 @ =gUnknown_203F440
+ ldr r0, [r4]
+ ldr r1, _08155E1C @ =0x00003004
+ adds r0, r1
+ ldrb r0, [r0]
+ bl DestroyTask
+ ldr r0, [r4]
+ movs r1, 0xC0
+ lsls r1, 6
+ adds r0, r1
+ movs r1, 0x1
+ str r1, [r0]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08155E18: .4byte gUnknown_203F440
+_08155E1C: .4byte 0x00003004
+ thumb_func_end unused_0
+
+ thumb_func_start nullsub_98
+nullsub_98: @ 8155E20
+ bx lr
+ thumb_func_end nullsub_98
+
+ thumb_func_start sub_8155E24
+sub_8155E24: @ 8155E24
+ push {r4,lr}
+ ldr r2, _08155E48 @ =gUnknown_203F440
+ ldr r1, [r2]
+ ldr r3, _08155E4C @ =0x00003014
+ adds r1, r3
+ movs r3, 0
+ strb r3, [r1]
+ ldr r1, [r2]
+ movs r4, 0xC0
+ lsls r4, 6
+ adds r2, r1, r4
+ str r3, [r2]
+ ldr r2, _08155E50 @ =0x00003028
+ adds r1, r2
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08155E48: .4byte gUnknown_203F440
+_08155E4C: .4byte 0x00003014
+_08155E50: .4byte 0x00003028
+ thumb_func_end sub_8155E24
+
+ thumb_func_start sub_8155E54
+sub_8155E54: @ 8155E54
+ ldr r0, _08155E60 @ =gUnknown_203F440
+ ldr r0, [r0]
+ ldr r1, _08155E64 @ =0x00003028
+ adds r0, r1
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_08155E60: .4byte gUnknown_203F440
+_08155E64: .4byte 0x00003028
+ thumb_func_end sub_8155E54
+
+ thumb_func_start sub_8155E68
+sub_8155E68: @ 8155E68
+ push {lr}
+ ldr r0, _08155E80 @ =gUnknown_203F440
+ ldr r0, [r0]
+ movs r1, 0xC0
+ lsls r1, 6
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r0, 0x1
+ beq _08155E84
+ movs r0, 0x1
+ b _08155E86
+ .align 2, 0
+_08155E80: .4byte gUnknown_203F440
+_08155E84:
+ movs r0, 0
+_08155E86:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8155E68
+
+ thumb_func_start sub_8155E8C
+sub_8155E8C: @ 8155E8C
+ ldr r0, _08155E98 @ =gUnknown_203F440
+ ldr r0, [r0]
+ ldr r1, _08155E9C @ =0x00003024
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_08155E98: .4byte gUnknown_203F440
+_08155E9C: .4byte 0x00003024
+ thumb_func_end sub_8155E8C
+
+ thumb_func_start sub_8155EA0
+sub_8155EA0: @ 8155EA0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ movs r3, 0xC0
+ lsls r3, 19
+ movs r4, 0xC0
+ lsls r4, 9
+ add r0, sp, 0x4
+ mov r8, r0
+ mov r2, sp
+ movs r6, 0
+ ldr r1, _08155FD0 @ =0x040000d4
+ movs r5, 0x80
+ lsls r5, 5
+ ldr r7, _08155FD4 @ =0x81000800
+ movs r0, 0x81
+ lsls r0, 24
+ mov r12, r0
+_08155EC6:
+ strh r6, [r2]
+ mov r0, sp
+ str r0, [r1]
+ str r3, [r1, 0x4]
+ str r7, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ adds r3, r5
+ subs r4, r5
+ cmp r4, r5
+ bhi _08155EC6
+ strh r6, [r2]
+ mov r2, sp
+ str r2, [r1]
+ str r3, [r1, 0x4]
+ lsrs r0, r4, 1
+ mov r2, r12
+ orrs r0, r2
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ movs r0, 0xE0
+ lsls r0, 19
+ movs r3, 0x80
+ lsls r3, 3
+ movs r4, 0
+ str r4, [sp, 0x4]
+ ldr r2, _08155FD0 @ =0x040000d4
+ mov r1, r8
+ str r1, [r2]
+ str r0, [r2, 0x4]
+ lsrs r0, r3, 2
+ movs r1, 0x85
+ lsls r1, 24
+ orrs r0, r1
+ str r0, [r2, 0x8]
+ ldr r0, [r2, 0x8]
+ movs r1, 0xA0
+ lsls r1, 19
+ mov r0, sp
+ strh r4, [r0]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ lsrs r3, 1
+ movs r0, 0x81
+ lsls r0, 24
+ orrs r3, r0
+ str r3, [r2, 0x8]
+ ldr r0, [r2, 0x8]
+ movs r0, 0
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0
+ bl ResetBgsAndClearDma3BusyFlags
+ ldr r1, _08155FD8 @ =gUnknown_847565C
+ movs r0, 0
+ movs r2, 0x4
+ bl InitBgsFromTemplates
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ bl InitStandardTextBoxWindows
+ bl ResetBg0
+ movs r1, 0x82
+ lsls r1, 5
+ movs r0, 0
+ bl SetGpuReg
+ ldr r4, _08155FDC @ =gUnknown_203F440
+ ldr r1, [r4]
+ movs r0, 0x3
+ bl SetBgTilemapBuffer
+ ldr r1, [r4]
+ movs r2, 0x80
+ lsls r2, 5
+ adds r1, r2
+ movs r0, 0x1
+ bl SetBgTilemapBuffer
+ ldr r1, [r4]
+ movs r0, 0x80
+ lsls r0, 6
+ adds r1, r0
+ movs r0, 0x2
+ bl SetBgTilemapBuffer
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08155FD0: .4byte 0x040000d4
+_08155FD4: .4byte 0x81000800
+_08155FD8: .4byte gUnknown_847565C
+_08155FDC: .4byte gUnknown_203F440
+ thumb_func_end sub_8155EA0
+
+ thumb_func_start sub_8155FE0
+sub_8155FE0: @ 8155FE0
+ push {lr}
+ sub sp, 0x4
+ ldr r0, _08155FFC @ =gUnknown_203F440
+ ldr r0, [r0]
+ ldr r2, _08156000 @ =0x00003018
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0x5
+ bhi _0815607A
+ lsls r0, 2
+ ldr r1, _08156004 @ =_08156008
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08155FFC: .4byte gUnknown_203F440
+_08156000: .4byte 0x00003018
+_08156004: .4byte _08156008
+ .align 2, 0
+_08156008:
+ .4byte _08156020
+ .4byte _08156030
+ .4byte _08156036
+ .4byte _08156044
+ .4byte _0815605C
+ .4byte _0815606A
+_08156020:
+ ldr r0, _0815602C @ =gUnknown_84758A8
+ movs r1, 0
+ movs r2, 0x40
+ bl LoadPalette
+ b _08156082
+ .align 2, 0
+_0815602C: .4byte gUnknown_84758A8
+_08156030:
+ bl reset_temp_tile_data_buffers
+ b _08156082
+_08156036:
+ ldr r1, _08156040 @ =gUnknown_8475B3C
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x3
+ b _0815604C
+ .align 2, 0
+_08156040: .4byte gUnknown_8475B3C
+_08156044:
+ ldr r1, _08156058 @ =gUnknown_84763CC
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+_0815604C:
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ b _08156082
+ .align 2, 0
+_08156058: .4byte gUnknown_84763CC
+_0815605C:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08156082
+ b _08156090
+_0815606A:
+ movs r0, 0x3
+ bl stdpal_get
+ movs r1, 0xD0
+ movs r2, 0x20
+ bl LoadPalette
+ b _08156082
+_0815607A:
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ b _08156092
+_08156082:
+ ldr r0, _08156098 @ =gUnknown_203F440
+ ldr r1, [r0]
+ ldr r0, _0815609C @ =0x00003018
+ adds r1, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_08156090:
+ movs r0, 0
+_08156092:
+ add sp, 0x4
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08156098: .4byte gUnknown_203F440
+_0815609C: .4byte 0x00003018
+ thumb_func_end sub_8155FE0
+
+ .align 2, 0 @ Don't pad with nop.