summaryrefslogtreecommitdiff
path: root/asm-de/berry_blender.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm-de/berry_blender.s')
-rw-r--r--asm-de/berry_blender.s9141
1 files changed, 9141 insertions, 0 deletions
diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s
new file mode 100644
index 000000000..59aa1894a
--- /dev/null
+++ b/asm-de/berry_blender.s
@@ -0,0 +1,9141 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_804E290
+sub_804E290: @ 804E290
+ push {lr}
+ ldr r0, _0804E2B0 @ =gMPlay_SE2
+ ldr r1, _0804E2B4 @ =0x0000ffff
+ ldr r2, _0804E2B8 @ =gUnknown_03004854
+ ldr r2, [r2]
+ adds r2, 0x56
+ movs r3, 0
+ ldrsh r2, [r2, r3]
+ subs r2, 0x80
+ lsls r2, 17
+ asrs r2, 16
+ bl m4aMPlayPitchControl
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804E2B0: .4byte gMPlay_SE2
+_0804E2B4: .4byte 0x0000ffff
+_0804E2B8: .4byte gUnknown_03004854
+ thumb_func_end sub_804E290
+
+ thumb_func_start sub_804E2BC
+sub_804E2BC: @ 804E2BC
+ push {lr}
+ bl sub_80514A4
+ bl sub_80514F0
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804E2BC
+
+ thumb_func_start sub_804E2D8
+sub_804E2D8: @ 804E2D8
+ push {lr}
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804E2D8
+
+ thumb_func_start sub_804E2EC
+sub_804E2EC: @ 804E2EC
+ push {r4-r7,lr}
+ ldr r1, _0804E308 @ =gUnknown_03004854
+ ldr r0, [r1]
+ ldrb r0, [r0, 0x1]
+ mov r12, r1
+ cmp r0, 0x9
+ bls _0804E2FC
+ b _0804E4F4
+_0804E2FC:
+ lsls r0, 2
+ ldr r1, _0804E30C @ =_0804E310
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0804E308: .4byte gUnknown_03004854
+_0804E30C: .4byte _0804E310
+ .align 2, 0
+_0804E310:
+ .4byte _0804E338
+ .4byte _0804E34C
+ .4byte _0804E380
+ .4byte _0804E3C4
+ .4byte _0804E3D8
+ .4byte _0804E3EC
+ .4byte _0804E410
+ .4byte _0804E434
+ .4byte _0804E48C
+ .4byte _0804E4BC
+_0804E338:
+ ldr r0, _0804E344 @ =gUnknown_08E6C100
+ ldr r1, _0804E348 @ =0x02010000
+ bl sub_800D238
+ b _0804E49E
+ .align 2, 0
+_0804E344: .4byte gUnknown_08E6C100
+_0804E348: .4byte 0x02010000
+_0804E34C:
+ ldr r1, _0804E36C @ =gUnknown_08215C2C
+ ldr r2, _0804E370 @ =0x06004000
+ ldr r0, _0804E374 @ =0x040000d4
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ ldr r1, _0804E378 @ =0x80000200
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ ldr r0, _0804E37C @ =gUnknown_08215C0C
+ movs r2, 0x80
+ lsls r2, 1
+ movs r1, 0
+ bl LoadPalette
+ b _0804E49E
+ .align 2, 0
+_0804E36C: .4byte gUnknown_08215C2C
+_0804E370: .4byte 0x06004000
+_0804E374: .4byte 0x040000d4
+_0804E378: .4byte 0x80000200
+_0804E37C: .4byte gUnknown_08215C0C
+_0804E380:
+ ldr r3, _0804E3B8 @ =0x02010000
+ movs r4, 0xC0
+ lsls r4, 19
+ movs r5, 0x80
+ lsls r5, 6
+ ldr r1, _0804E3BC @ =0x040000d4
+ ldr r6, _0804E3C0 @ =0x80000800
+ movs r2, 0x80
+ lsls r2, 5
+ movs r7, 0x80
+ lsls r7, 24
+_0804E396:
+ str r3, [r1]
+ str r4, [r1, 0x4]
+ str r6, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ adds r3, r2
+ adds r4, r2
+ subs r5, r2
+ cmp r5, r2
+ bhi _0804E396
+ str r3, [r1]
+ str r4, [r1, 0x4]
+ lsrs r0, r5, 1
+ orrs r0, r7
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ mov r0, r12
+ b _0804E4A0
+ .align 2, 0
+_0804E3B8: .4byte 0x02010000
+_0804E3BC: .4byte 0x040000d4
+_0804E3C0: .4byte 0x80000800
+_0804E3C4:
+ ldr r0, _0804E3D0 @ =gUnknown_08E6C920
+ ldr r1, _0804E3D4 @ =0x02010000
+ bl sub_800D238
+ b _0804E49E
+ .align 2, 0
+_0804E3D0: .4byte gUnknown_08E6C920
+_0804E3D4: .4byte 0x02010000
+_0804E3D8:
+ ldr r0, _0804E3E4 @ =gUnknown_08E6D354
+ ldr r1, _0804E3E8 @ =0x02013000
+ bl sub_800D238
+ b _0804E49E
+ .align 2, 0
+_0804E3E4: .4byte gUnknown_08E6D354
+_0804E3E8: .4byte 0x02013000
+_0804E3EC:
+ ldr r1, _0804E400 @ =0x02010000
+ ldr r2, _0804E404 @ =0x0600e000
+ ldr r0, _0804E408 @ =0x040000d4
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ ldr r1, _0804E40C @ =0x80000800
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ mov r0, r12
+ b _0804E4A0
+ .align 2, 0
+_0804E400: .4byte 0x02010000
+_0804E404: .4byte 0x0600e000
+_0804E408: .4byte 0x040000d4
+_0804E40C: .4byte 0x80000800
+_0804E410:
+ ldr r1, _0804E424 @ =0x02011000
+ ldr r2, _0804E428 @ =0x0600f000
+ ldr r0, _0804E42C @ =0x040000d4
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ ldr r1, _0804E430 @ =0x80000800
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ mov r0, r12
+ b _0804E4A0
+ .align 2, 0
+_0804E424: .4byte 0x02011000
+_0804E428: .4byte 0x0600f000
+_0804E42C: .4byte 0x040000d4
+_0804E430: .4byte 0x80000800
+_0804E434:
+ ldr r3, _0804E474 @ =0x02013000
+ movs r2, 0
+ adds r6, r3, 0
+ ldr r7, _0804E478 @ =gUnknown_0821602C
+ movs r0, 0x80
+ lsls r0, 1
+ adds r5, r0, 0
+ ldr r4, _0804E47C @ =0x0000027f
+_0804E444:
+ lsls r0, r2, 1
+ adds r0, r3
+ ldrh r1, [r0]
+ orrs r1, r5
+ strh r1, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r4
+ bls _0804E444
+ ldr r1, _0804E480 @ =0x06006000
+ ldr r0, _0804E484 @ =0x040000d4
+ str r6, [r0]
+ str r1, [r0, 0x4]
+ ldr r1, _0804E488 @ =0x80000280
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ adds r0, r7, 0
+ movs r1, 0x80
+ movs r2, 0x20
+ bl LoadPalette
+ b _0804E49E
+ .align 2, 0
+_0804E474: .4byte 0x02013000
+_0804E478: .4byte gUnknown_0821602C
+_0804E47C: .4byte 0x0000027f
+_0804E480: .4byte 0x06006000
+_0804E484: .4byte 0x040000d4
+_0804E488: .4byte 0x80000280
+_0804E48C:
+ ldr r0, _0804E4AC @ =gUnknown_082163DC
+ bl LoadSpriteSheet
+ ldr r0, _0804E4B0 @ =gUnknown_082164F4
+ bl LoadSpriteSheet
+ ldr r0, _0804E4B4 @ =gUnknown_08216454
+ bl LoadSpriteSheet
+_0804E49E:
+ ldr r0, _0804E4B8 @ =gUnknown_03004854
+_0804E4A0:
+ ldr r1, [r0]
+ ldrb r0, [r1, 0x1]
+ adds r0, 0x1
+ strb r0, [r1, 0x1]
+ b _0804E4F4
+ .align 2, 0
+_0804E4AC: .4byte gUnknown_082163DC
+_0804E4B0: .4byte gUnknown_082164F4
+_0804E4B4: .4byte gUnknown_08216454
+_0804E4B8: .4byte gUnknown_03004854
+_0804E4BC:
+ ldr r0, _0804E4E0 @ =gUnknown_08216540
+ bl LoadSpriteSheet
+ ldr r0, _0804E4E4 @ =gUnknown_08216574
+ bl LoadSpriteSheet
+ ldr r0, _0804E4E8 @ =gUnknown_082163EC
+ bl LoadSpritePalette
+ ldr r0, _0804E4EC @ =gUnknown_082163E4
+ bl LoadSpritePalette
+ ldr r0, _0804E4F0 @ =gUnknown_03004854
+ ldr r1, [r0]
+ movs r0, 0
+ strb r0, [r1, 0x1]
+ movs r0, 0x1
+ b _0804E4F6
+ .align 2, 0
+_0804E4E0: .4byte gUnknown_08216540
+_0804E4E4: .4byte gUnknown_08216574
+_0804E4E8: .4byte gUnknown_082163EC
+_0804E4EC: .4byte gUnknown_082163E4
+_0804E4F0: .4byte gUnknown_03004854
+_0804E4F4:
+ movs r0, 0
+_0804E4F6:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_804E2EC
+
+ thumb_func_start sub_804E4FC
+sub_804E4FC: @ 804E4FC
+ movs r1, 0x80
+ lsls r1, 19
+ ldr r2, _0804E52C @ =0x00001341
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0xC
+ movs r2, 0x91
+ lsls r2, 7
+ adds r0, r2, 0
+ strh r0, [r1]
+ subs r1, 0x2
+ ldr r2, _0804E530 @ =0x00000c0d
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _0804E534 @ =REG_BG0HOFS
+ movs r1, 0
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+_0804E52C: .4byte 0x00001341
+_0804E530: .4byte 0x00000c0d
+_0804E534: .4byte REG_BG0HOFS
+ thumb_func_end sub_804E4FC
+
+ thumb_func_start sub_804E538
+sub_804E538: @ 804E538
+ push {lr}
+ ldr r1, _0804E55C @ =gUnknown_03004854
+ ldr r0, _0804E560 @ =0x02018000
+ str r0, [r1]
+ adds r2, r0, 0
+ adds r2, 0x6F
+ movs r1, 0
+ strb r1, [r0]
+ strb r1, [r2]
+ ldr r0, _0804E564 @ =gSpecialVar_0x8004
+ ldrb r0, [r0]
+ bl sub_804E884
+ ldr r0, _0804E568 @ =sub_804E56C
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804E55C: .4byte gUnknown_03004854
+_0804E560: .4byte 0x02018000
+_0804E564: .4byte gSpecialVar_0x8004
+_0804E568: .4byte sub_804E56C
+ thumb_func_end sub_804E538
+
+ thumb_func_start sub_804E56C
+sub_804E56C: @ 804E56C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ ldr r0, _0804E588 @ =gUnknown_03004854
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ bls _0804E57C
+ b _0804E71A
+_0804E57C:
+ lsls r0, 2
+ ldr r1, _0804E58C @ =_0804E590
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0804E588: .4byte gUnknown_03004854
+_0804E58C: .4byte _0804E590
+ .align 2, 0
+_0804E590:
+ .4byte _0804E5AC
+ .4byte _0804E614
+ .4byte _0804E67C
+ .4byte _0804E692
+ .4byte _0804E6A8
+ .4byte _0804E6D4
+ .4byte _0804E700
+_0804E5AC:
+ movs r0, 0x80
+ lsls r0, 19
+ movs r5, 0
+ strh r5, [r0]
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ movs r0, 0
+ bl SetVBlankCallback
+ ldr r4, _0804E60C @ =gWindowConfig_81E6F68
+ adds r0, r4, 0
+ bl SetUpWindowConfig
+ adds r0, r4, 0
+ bl InitMenuWindow
+ ldr r3, _0804E610 @ =gUnknown_03004854
+ ldr r2, [r3]
+ ldrb r0, [r2]
+ adds r0, 0x1
+ movs r1, 0
+ strb r0, [r2]
+ ldr r2, [r3]
+ movs r3, 0xA0
+ lsls r3, 1
+ adds r0, r2, r3
+ strh r1, [r0]
+ subs r3, 0x2
+ adds r0, r2, r3
+ strh r1, [r0]
+ movs r0, 0xA1
+ lsls r0, 1
+ adds r3, r2, r0
+ movs r0, 0x50
+ strh r0, [r3]
+ movs r3, 0xA2
+ lsls r3, 1
+ adds r0, r2, r3
+ strh r1, [r0]
+ adds r3, 0x2
+ adds r0, r2, r3
+ strh r1, [r0]
+ strb r5, [r2, 0x1]
+ bl sub_8051474
+ b _0804E71A
+ .align 2, 0
+_0804E60C: .4byte gWindowConfig_81E6F68
+_0804E610: .4byte gUnknown_03004854
+_0804E614:
+ bl sub_804E2EC
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804E620
+ b _0804E71A
+_0804E620:
+ movs r4, 0
+ ldr r5, _0804E668 @ =gUnknown_082162E4
+ ldr r6, _0804E66C @ =gUnknown_03004854
+_0804E626:
+ ldrb r1, [r5]
+ ldrb r2, [r5, 0x1]
+ ldr r0, _0804E670 @ =gSpriteTemplate_82163F4
+ movs r3, 0x1
+ bl CreateSprite
+ ldr r1, [r6]
+ adds r1, 0x5C
+ adds r1, r4
+ strb r0, [r1]
+ ldr r0, [r6]
+ adds r0, 0x5C
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0804E674 @ =gSprites
+ adds r0, r1
+ adds r1, r4, 0
+ adds r1, 0x8
+ lsls r1, 24
+ lsrs r1, 24
+ bl StartSpriteAnim
+ adds r5, 0x2
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0804E626
+ ldr r0, _0804E678 @ =sub_804E2BC
+ bl SetVBlankCallback
+ b _0804E6BE
+ .align 2, 0
+_0804E668: .4byte gUnknown_082162E4
+_0804E66C: .4byte gUnknown_03004854
+_0804E670: .4byte gSpriteTemplate_82163F4
+_0804E674: .4byte gSprites
+_0804E678: .4byte sub_804E2BC
+_0804E67C:
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ bl sub_8051474
+ b _0804E6BE
+_0804E692:
+ bl sub_804E4FC
+ ldr r0, _0804E6A4 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0804E71A
+ b _0804E6BE
+ .align 2, 0
+_0804E6A4: .4byte gPaletteFade
+_0804E6A8:
+ movs r0, 0
+ movs r1, 0xE
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrintMessage
+_0804E6BE:
+ ldr r0, _0804E6D0 @ =gUnknown_03004854
+ ldr r1, [r0]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _0804E71A
+ .align 2, 0
+_0804E6CC: .4byte gOtherText_BlenderChooseBerry
+_0804E6D0: .4byte gUnknown_03004854
+_0804E6D4:
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804E71A
+ ldr r0, _0804E6FC @ =gUnknown_03004854
+ ldr r1, [r0]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r2, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ negs r0, r0
+ str r2, [sp]
+ movs r1, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _0804E71A
+ .align 2, 0
+_0804E6FC: .4byte gUnknown_03004854
+_0804E700:
+ ldr r0, _0804E730 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _0804E71A
+ bl sub_80A6978
+ ldr r0, _0804E734 @ =gUnknown_03004854
+ ldr r0, [r0]
+ strb r4, [r0]
+_0804E71A:
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804E730: .4byte gPaletteFade
+_0804E734: .4byte gUnknown_03004854
+ thumb_func_end sub_804E56C
+
+ thumb_func_start sub_804E738
+sub_804E738: @ 804E738
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x30]
+ adds r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x32]
+ ldrh r2, [r4, 0x36]
+ subs r1, r2
+ ldrh r0, [r4, 0x3C]
+ adds r1, r0
+ strh r1, [r4, 0x32]
+ ldrh r3, [r4, 0x2E]
+ adds r0, r3
+ strh r0, [r4, 0x2E]
+ subs r2, 0x1
+ strh r2, [r4, 0x36]
+ lsls r0, 16
+ lsls r1, 16
+ cmp r0, r1
+ bge _0804E786
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x36]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _0804E780
+ adds r0, r4, 0
+ bl DestroySprite
+ b _0804E786
+_0804E780:
+ movs r0, 0x74
+ bl PlaySE
+_0804E786:
+ ldrh r0, [r4, 0x30]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x32]
+ strh r0, [r4, 0x22]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804E738
+
+ thumb_func_start sub_804E794
+sub_804E794: @ 804E794
+ push {r4-r6,lr}
+ ldr r5, [sp, 0x10]
+ ldr r6, [sp, 0x14]
+ lsls r2, 16
+ lsrs r2, 16
+ movs r4, 0
+ strh r2, [r0, 0x2E]
+ strh r1, [r0, 0x30]
+ strh r2, [r0, 0x32]
+ strh r3, [r0, 0x34]
+ movs r1, 0xA
+ strh r1, [r0, 0x36]
+ strh r4, [r0, 0x38]
+ strh r5, [r0, 0x3A]
+ strh r6, [r0, 0x3C]
+ ldr r1, _0804E7BC @ =sub_804E738
+ str r1, [r0, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804E7BC: .4byte sub_804E738
+ thumb_func_end sub_804E794
+
+ thumb_func_start sub_804E7C0
+sub_804E7C0: @ 804E7C0
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x8
+ adds r6, r1, 0
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r0, 24
+ movs r1, 0xF6
+ lsls r1, 23
+ adds r0, r1
+ lsrs r0, 24
+ movs r3, 0x1
+ ands r3, r6
+ movs r1, 0
+ movs r2, 0x50
+ bl sub_80A7DEC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, r0, 4
+ mov r8, r2
+ add r8, r0
+ mov r3, r8
+ lsls r3, 2
+ mov r8, r3
+ ldr r0, _0804E83C @ =gSprites
+ add r8, r0
+ ldr r5, _0804E840 @ =gUnknown_08216594
+ lsls r4, r6, 2
+ adds r4, r6
+ lsls r4, 1
+ adds r0, r4, r5
+ movs r6, 0
+ ldrsh r1, [r0, r6]
+ adds r0, r5, 0x2
+ adds r0, r4, r0
+ movs r3, 0
+ ldrsh r2, [r0, r3]
+ adds r0, r5, 0x4
+ adds r0, r4, r0
+ movs r6, 0
+ ldrsh r3, [r0, r6]
+ adds r0, r5, 0x6
+ adds r0, r4, r0
+ movs r6, 0
+ ldrsh r0, [r0, r6]
+ str r0, [sp]
+ adds r5, 0x8
+ adds r4, r5
+ movs r5, 0
+ ldrsh r0, [r4, r5]
+ str r0, [sp, 0x4]
+ mov r0, r8
+ bl sub_804E794
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804E83C: .4byte gSprites
+_0804E840: .4byte gUnknown_08216594
+ thumb_func_end sub_804E7C0
+
+ thumb_func_start sub_804E844
+sub_804E844: @ 804E844
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r5, r1, 16
+ lsrs r5, 16
+ adds r0, r5, 0
+ adds r0, 0x7C
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBerryInfo
+ adds r4, r0, 0
+ strh r5, [r6]
+ adds r0, r6, 0x2
+ adds r1, r4, 0
+ bl StringCopy
+ ldrb r0, [r4, 0x15]
+ strb r0, [r6, 0x9]
+ ldrb r0, [r4, 0x16]
+ strb r0, [r6, 0xA]
+ ldrb r0, [r4, 0x17]
+ strb r0, [r6, 0xB]
+ ldrb r0, [r4, 0x18]
+ strb r0, [r6, 0xC]
+ ldrb r0, [r4, 0x19]
+ strb r0, [r6, 0xD]
+ ldrb r0, [r4, 0x1A]
+ strb r0, [r6, 0xE]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804E844
+
+ thumb_func_start sub_804E884
+sub_804E884: @ 804E884
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _0804E89E
+ ldr r2, _0804E8AC @ =gLinkPlayers
+ movs r3, 0x5
+ adds r0, r2, 0
+ adds r0, 0x54
+_0804E896:
+ strh r3, [r0, 0x1A]
+ subs r0, 0x1C
+ cmp r0, r2
+ bge _0804E896
+_0804E89E:
+ cmp r1, 0x1
+ beq _0804E8C4
+ cmp r1, 0x1
+ bgt _0804E8B0
+ cmp r1, 0
+ beq _0804E8BA
+ b _0804E974
+ .align 2, 0
+_0804E8AC: .4byte gLinkPlayers
+_0804E8B0:
+ cmp r1, 0x2
+ beq _0804E8F8
+ cmp r1, 0x3
+ beq _0804E93C
+ b _0804E974
+_0804E8BA:
+ ldr r0, _0804E8C0 @ =gUnknown_03004834
+ strb r1, [r0]
+ b _0804E974
+ .align 2, 0
+_0804E8C0: .4byte gUnknown_03004834
+_0804E8C4:
+ ldr r0, _0804E8E4 @ =gUnknown_03004834
+ strb r1, [r0]
+ ldr r0, _0804E8E8 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0x88
+ movs r1, 0x2
+ strb r1, [r0]
+ ldr r4, _0804E8EC @ =gLinkPlayers + 0x8
+ ldr r1, _0804E8F0 @ =gSaveBlock2
+ adds r0, r4, 0
+ bl StringCopy
+ adds r4, 0x1C
+ ldr r0, _0804E8F4 @ =gUnknown_082162B8
+ ldr r1, [r0]
+ b _0804E920
+ .align 2, 0
+_0804E8E4: .4byte gUnknown_03004834
+_0804E8E8: .4byte gUnknown_03004854
+_0804E8EC: .4byte gLinkPlayers + 0x8
+_0804E8F0: .4byte gSaveBlock2
+_0804E8F4: .4byte gUnknown_082162B8
+_0804E8F8:
+ ldr r0, _0804E928 @ =gUnknown_03004834
+ strb r1, [r0]
+ ldr r0, _0804E92C @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0x88
+ movs r1, 0x3
+ strb r1, [r0]
+ ldr r4, _0804E930 @ =gLinkPlayers + 0x8
+ ldr r1, _0804E934 @ =gSaveBlock2
+ adds r0, r4, 0
+ bl StringCopy
+ adds r0, r4, 0
+ adds r0, 0x1C
+ ldr r5, _0804E938 @ =gUnknown_082162B8
+ ldr r1, [r5]
+ bl StringCopy
+ adds r4, 0x38
+ ldr r1, [r5, 0x4]
+_0804E920:
+ adds r0, r4, 0
+ bl StringCopy
+ b _0804E974
+ .align 2, 0
+_0804E928: .4byte gUnknown_03004834
+_0804E92C: .4byte gUnknown_03004854
+_0804E930: .4byte gLinkPlayers + 0x8
+_0804E934: .4byte gSaveBlock2
+_0804E938: .4byte gUnknown_082162B8
+_0804E93C:
+ ldr r0, _0804E97C @ =gUnknown_03004834
+ strb r1, [r0]
+ ldr r0, _0804E980 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0x88
+ movs r1, 0x4
+ strb r1, [r0]
+ ldr r4, _0804E984 @ =gLinkPlayers + 0x8
+ ldr r1, _0804E988 @ =gSaveBlock2
+ adds r0, r4, 0
+ bl StringCopy
+ adds r0, r4, 0
+ adds r0, 0x1C
+ ldr r5, _0804E98C @ =gUnknown_082162B8
+ ldr r1, [r5]
+ bl StringCopy
+ adds r0, r4, 0
+ adds r0, 0x38
+ ldr r1, [r5, 0x4]
+ bl StringCopy
+ adds r4, 0x54
+ ldr r1, [r5, 0x8]
+ adds r0, r4, 0
+ bl StringCopy
+_0804E974:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804E97C: .4byte gUnknown_03004834
+_0804E980: .4byte gUnknown_03004854
+_0804E984: .4byte gLinkPlayers + 0x8
+_0804E988: .4byte gSaveBlock2
+_0804E98C: .4byte gUnknown_082162B8
+ thumb_func_end sub_804E884
+
+ thumb_func_start sub_804E990
+sub_804E990: @ 804E990
+ push {r4,r5,lr}
+ movs r0, 0x80
+ lsls r0, 19
+ movs r2, 0
+ strh r2, [r0]
+ ldr r3, _0804E9D8 @ =gUnknown_03004854
+ ldr r0, _0804E9DC @ =0x02018000
+ str r0, [r3]
+ movs r1, 0
+ strb r2, [r0]
+ movs r2, 0x9A
+ lsls r2, 1
+ adds r0, r2
+ str r1, [r0]
+ movs r2, 0
+ ldr r5, _0804E9E0 @ =gSpecialVar_0x8004
+ adds r4, r3, 0
+ movs r3, 0
+_0804E9B4:
+ ldr r0, [r4]
+ lsls r1, r2, 1
+ adds r0, 0x80
+ adds r0, r1
+ strh r3, [r0]
+ adds r2, 0x1
+ cmp r2, 0x3
+ ble _0804E9B4
+ ldrb r0, [r5]
+ bl sub_804E884
+ ldrh r0, [r5]
+ cmp r0, 0
+ bne _0804E9E8
+ ldr r0, _0804E9E4 @ =sub_804E9F8
+ bl SetMainCallback2
+ b _0804E9EE
+ .align 2, 0
+_0804E9D8: .4byte gUnknown_03004854
+_0804E9DC: .4byte 0x02018000
+_0804E9E0: .4byte gSpecialVar_0x8004
+_0804E9E4: .4byte sub_804E9F8
+_0804E9E8:
+ ldr r0, _0804E9F4 @ =sub_804F378
+ bl SetMainCallback2
+_0804E9EE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804E9F4: .4byte sub_804F378
+ thumb_func_end sub_804E990
+
+ thumb_func_start sub_804E9F8
+sub_804E9F8: @ 804E9F8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ ldr r1, _0804EA18 @ =gUnknown_03004854
+ ldr r0, [r1]
+ ldrb r0, [r0]
+ mov r8, r1
+ cmp r0, 0x66
+ bls _0804EA0E
+ b _0804F0CE
+_0804EA0E:
+ lsls r0, 2
+ ldr r1, _0804EA1C @ =_0804EA20
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0804EA18: .4byte gUnknown_03004854
+_0804EA1C: .4byte _0804EA20
+ .align 2, 0
+_0804EA20:
+ .4byte _0804EBBC
+ .4byte _0804EC74
+ .4byte _0804EC94
+ .4byte _0804ECE8
+ .4byte _0804ECFA
+ .4byte _0804ED14
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804ED48
+ .4byte _0804ED94
+ .4byte _0804EDB8
+ .4byte _0804EE46
+ .4byte _0804EEA0
+ .4byte _0804EF16
+ .4byte _0804EF34
+ .4byte _0804EFD8
+ .4byte _0804F00C
+ .4byte _0804F0CE
+ .4byte _0804F020
+ .4byte _0804F024
+ .4byte _0804F02A
+ .4byte _0804F03A
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F0CE
+ .4byte _0804F084
+ .4byte _0804F0A0
+ .4byte _0804F0BC
+_0804EBBC:
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ bl ResetTasks
+ ldr r0, _0804EC60 @ =sub_804E2BC
+ bl SetVBlankCallback
+ ldr r4, _0804EC64 @ =gWindowConfig_81E6F68
+ adds r0, r4, 0
+ bl SetUpWindowConfig
+ adds r0, r4, 0
+ bl InitMenuWindow
+ ldr r1, _0804EC68 @ =gLinkType
+ ldr r2, _0804EC6C @ =0x00004422
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r3, _0804EC70 @ =gUnknown_03004854
+ ldr r1, [r3]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r2, 0
+ strb r0, [r1]
+ ldr r0, [r3]
+ adds r4, r0, 0
+ adds r4, 0x4E
+ movs r1, 0
+ strh r2, [r4]
+ adds r0, 0x7E
+ strb r1, [r0]
+ ldr r1, [r3]
+ movs r4, 0xA2
+ lsls r4, 1
+ adds r0, r1, r4
+ strh r2, [r0]
+ adds r4, 0x2
+ adds r0, r1, r4
+ strh r2, [r0]
+ movs r5, 0
+ movs r6, 0
+ mov r8, r3
+ movs r7, 0xA6
+ lsls r7, 1
+_0804EC18:
+ ldr r0, [r3]
+ lsls r1, r5, 1
+ adds r0, 0x70
+ adds r0, r1
+ strh r6, [r0]
+ adds r4, r5, 0x1
+ adds r1, r5
+ lsls r1, 1
+ movs r2, 0x2
+_0804EC2A:
+ ldr r0, [r3]
+ adds r0, r7
+ adds r0, r1
+ strh r6, [r0]
+ adds r1, 0x2
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0804EC2A
+ adds r5, r4, 0
+ cmp r5, 0x3
+ ble _0804EC18
+ mov r0, r8
+ ldr r3, [r0]
+ adds r0, r3, 0
+ adds r0, 0x7C
+ movs r2, 0
+ movs r1, 0
+ strh r1, [r0]
+ subs r0, 0x26
+ strh r1, [r0]
+ subs r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x6
+ strh r1, [r0]
+ strb r2, [r3, 0x1]
+ b _0804F0CE
+ .align 2, 0
+_0804EC60: .4byte sub_804E2BC
+_0804EC64: .4byte gWindowConfig_81E6F68
+_0804EC68: .4byte gLinkType
+_0804EC6C: .4byte 0x00004422
+_0804EC70: .4byte gUnknown_03004854
+_0804EC74:
+ bl sub_804E2EC
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804EC80
+ b _0804F0CE
+_0804EC80:
+ ldr r0, _0804EC90 @ =gUnknown_03004854
+ ldr r1, [r0]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ bl sub_8051474
+ b _0804F0CE
+ .align 2, 0
+_0804EC90: .4byte gUnknown_03004854
+_0804EC94:
+ movs r5, 0
+ ldr r4, _0804ECD8 @ =gUnknown_082162E4
+ ldr r6, _0804ECDC @ =gUnknown_03004854
+_0804EC9A:
+ ldrb r1, [r4]
+ ldrb r2, [r4, 0x1]
+ ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4
+ movs r3, 0x1
+ bl CreateSprite
+ ldr r1, [r6]
+ adds r1, 0x60
+ adds r1, r5
+ strb r0, [r1]
+ ldr r0, [r6]
+ adds r0, 0x60
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0804ECE4 @ =gSprites
+ adds r0, r1
+ adds r1, r5, 0
+ adds r1, 0x8
+ lsls r1, 24
+ lsrs r1, 24
+ bl StartSpriteAnim
+ adds r4, 0x2
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _0804EC9A
+ b _0804F0AA
+ .align 2, 0
+_0804ECD8: .4byte gUnknown_082162E4
+_0804ECDC: .4byte gUnknown_03004854
+_0804ECE0: .4byte gSpriteTemplate_82163F4
+_0804ECE4: .4byte gSprites
+_0804ECE8:
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ b _0804F0AA
+_0804ECFA:
+ bl sub_804E4FC
+ ldr r0, _0804ED10 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0804ED0C
+ b _0804F0CE
+_0804ED0C:
+ b _0804F0AA
+ .align 2, 0
+_0804ED10: .4byte gPaletteFade
+_0804ED14:
+ movs r0, 0
+ movs r1, 0xD
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ ldr r0, _0804ED40 @ =gOtherText_LinkStandby3
+ movs r1, 0x1
+ movs r2, 0xE
+ bl MenuPrint
+ ldr r2, _0804ED44 @ =gUnknown_03004854
+ ldr r1, [r2]
+ movs r3, 0
+ movs r0, 0x8
+ strb r0, [r1]
+ ldr r0, [r2]
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r1
+ str r3, [r0]
+ b _0804F0CE
+ .align 2, 0
+_0804ED40: .4byte gOtherText_LinkStandby3
+_0804ED44: .4byte gUnknown_03004854
+_0804ED48:
+ mov r2, r8
+ ldr r1, [r2]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ movs r5, 0
+ strb r0, [r1]
+ ldr r0, [r2]
+ movs r3, 0x9E
+ lsls r3, 1
+ adds r0, r3
+ strb r5, [r0]
+ ldr r0, [r2]
+ movs r4, 0xBE
+ lsls r4, 1
+ adds r0, r4
+ ldr r1, _0804ED8C @ =gScriptItemId
+ ldrh r1, [r1]
+ bl sub_804E844
+ ldr r0, _0804ED90 @ =gBlockSendBuffer
+ mov r2, r8
+ ldr r1, [r2]
+ adds r1, r4
+ movs r2, 0x10
+ bl memcpy
+ bl sub_80084A4
+ mov r3, r8
+ ldr r0, [r3]
+ subs r4, 0x4C
+ adds r0, r4
+ str r5, [r0]
+ b _0804F0CE
+ .align 2, 0
+_0804ED8C: .4byte gScriptItemId
+_0804ED90: .4byte gBlockSendBuffer
+_0804ED94:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804EDA0
+ b _0804F0CE
+_0804EDA0:
+ bl ResetBlockReceivedFlags
+ bl GetMultiplayerId
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804EDB0
+ b _0804F0AA
+_0804EDB0:
+ movs r0, 0x4
+ bl sub_8007E9C
+ b _0804F0AA
+_0804EDB8:
+ mov r0, r8
+ ldr r1, [r0]
+ movs r2, 0x98
+ lsls r2, 1
+ adds r1, r2
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x14
+ bgt _0804EDCE
+ b _0804F0CE
+_0804EDCE:
+ bl MenuZeroFillScreen
+ bl GetBlockReceivedStatus
+ adds r4, r0, 0
+ bl sub_8008198
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _0804EDE6
+ b _0804F0CE
+_0804EDE6:
+ movs r5, 0
+ mov r7, r8
+ movs r6, 0xBE
+ lsls r6, 1
+ b _0804EE18
+_0804EDF0:
+ ldr r0, [r7]
+ lsls r4, r5, 4
+ adds r0, r4, r0
+ adds r0, r6
+ lsls r1, r5, 8
+ ldr r2, _0804EE2C @ =gBlockRecvBuffer
+ adds r1, r2
+ movs r2, 0x10
+ bl memcpy
+ ldr r0, [r7]
+ lsls r2, r5, 1
+ adds r1, r0, 0
+ adds r1, 0x80
+ adds r1, r2
+ adds r0, r4
+ adds r0, r6
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r5, 0x1
+_0804EE18:
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r5, r0
+ blt _0804EDF0
+ bl ResetBlockReceivedFlags
+ b _0804F0AA
+ .align 2, 0
+_0804EE2C: .4byte gBlockRecvBuffer
+_0804EE30:
+ ldrb r1, [r4]
+ lsls r1, 1
+ adds r0, r2, 0
+ adds r0, 0x80
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r1, r5, 24
+ lsrs r1, 24
+ bl sub_804E7C0
+ b _0804EE7A
+_0804EE46:
+ bl GetLinkPlayerCount
+ ldr r2, _0804EE98 @ =gUnknown_03004854
+ ldr r1, [r2]
+ adds r1, 0x88
+ strb r0, [r1]
+ movs r5, 0
+ ldr r2, [r2]
+ movs r3, 0x9E
+ lsls r3, 1
+ adds r4, r2, r3
+ ldr r1, _0804EE9C @ =gUnknown_082162EC
+ adds r0, r2, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ subs r0, 0x2
+ lsls r0, 2
+ ldrb r3, [r4]
+ adds r0, r1
+_0804EE6C:
+ ldrb r1, [r0]
+ cmp r3, r1
+ beq _0804EE30
+ adds r0, 0x1
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _0804EE6C
+_0804EE7A:
+ ldr r3, _0804EE98 @ =gUnknown_03004854
+ ldr r1, [r3]
+ movs r4, 0x98
+ lsls r4, 1
+ adds r2, r1, r4
+ movs r0, 0
+ str r0, [r2]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r1, [r3]
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r0
+ b _0804F0AE
+ .align 2, 0
+_0804EE98: .4byte gUnknown_03004854
+_0804EE9C: .4byte gUnknown_082162EC
+_0804EEA0:
+ mov r1, r8
+ ldr r2, [r1]
+ movs r3, 0x98
+ lsls r3, 1
+ adds r1, r2, r3
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x3C
+ bgt _0804EEB6
+ b _0804F0CE
+_0804EEB6:
+ movs r4, 0x9E
+ lsls r4, 1
+ adds r0, r2, r4
+ adds r1, r2, 0
+ adds r1, 0x88
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0804EF00
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ mov r0, r8
+ ldr r2, [r0]
+ ldr r3, _0804EEF4 @ =gUnknown_082162F8
+ ldr r1, _0804EEF8 @ =gUnknown_08216300
+ adds r0, r2, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ subs r0, 0x2
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r3
+ ldr r3, _0804EEFC @ =0xffffa800
+ adds r1, r3, 0
+ ldrh r0, [r0]
+ adds r1, r0
+ adds r2, 0x54
+ strh r1, [r2]
+ b _0804EF06
+ .align 2, 0
+_0804EEF4: .4byte gUnknown_082162F8
+_0804EEF8: .4byte gUnknown_08216300
+_0804EEFC: .4byte 0xffffa800
+_0804EF00:
+ ldrb r0, [r2]
+ subs r0, 0x1
+ strb r0, [r2]
+_0804EF06:
+ mov r4, r8
+ ldr r0, [r4]
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r1
+ movs r1, 0
+ str r1, [r0]
+ b _0804F0CE
+_0804EF16:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804EF22
+ b _0804F0CE
+_0804EF22:
+ ldr r2, _0804EF30 @ =gUnknown_03004854
+ ldr r1, [r2]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r0, [r2]
+ b _0804EFBC
+ .align 2, 0
+_0804EF30: .4byte gUnknown_03004854
+_0804EF34:
+ movs r2, 0x80
+ lsls r2, 19
+ ldrh r0, [r2]
+ movs r3, 0x80
+ lsls r3, 3
+ adds r1, r3, 0
+ orrs r0, r1
+ strh r0, [r2]
+ mov r4, r8
+ ldr r2, [r4]
+ adds r1, r2, 0
+ adds r1, 0x54
+ movs r3, 0x80
+ lsls r3, 2
+ adds r0, r3, 0
+ ldrh r4, [r1]
+ adds r0, r4
+ strh r0, [r1]
+ movs r0, 0xA1
+ lsls r0, 1
+ adds r1, r2, r0
+ ldrh r0, [r1]
+ adds r0, 0x4
+ strh r0, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xFF
+ bls _0804EFB8
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ mov r1, r8
+ ldr r3, [r1]
+ movs r2, 0xA1
+ lsls r2, 1
+ adds r1, r3, r2
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r1]
+ ldr r2, _0804EFC8 @ =gUnknown_082162F8
+ ldr r1, _0804EFCC @ =gUnknown_08216300
+ adds r0, r3, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ subs r0, 0x2
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r1, [r0]
+ adds r0, r3, 0
+ adds r0, 0x54
+ strh r1, [r0]
+ ldr r1, _0804EFD0 @ =REG_BG2CNT
+ ldr r4, _0804EFD4 @ =0x00004882
+ adds r0, r4, 0
+ strh r0, [r1]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r1, r3, r0
+ movs r0, 0
+ str r0, [r1]
+ bl sub_804F238
+ bl BuyMenuDrawFieldObjects
+_0804EFB8:
+ mov r1, r8
+ ldr r0, [r1]
+_0804EFBC:
+ movs r2, 0xB4
+ lsls r2, 1
+ adds r0, r2
+ bl sub_8051414
+ b _0804F0CE
+ .align 2, 0
+_0804EFC8: .4byte gUnknown_082162F8
+_0804EFCC: .4byte gUnknown_08216300
+_0804EFD0: .4byte REG_BG2CNT
+_0804EFD4: .4byte 0x00004882
+_0804EFD8:
+ bl sub_8051B8C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804EFF6
+ ldr r0, _0804F008 @ =gUnknown_03004854
+ ldr r1, [r0]
+ movs r3, 0x98
+ lsls r3, 1
+ adds r2, r1, r3
+ movs r0, 0
+ str r0, [r2]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0804EFF6:
+ ldr r0, _0804F008 @ =gUnknown_03004854
+ ldr r0, [r0]
+ movs r4, 0xB4
+ lsls r4, 1
+ adds r0, r4
+ bl sub_8051414
+ b _0804F0CE
+ .align 2, 0
+_0804F008: .4byte gUnknown_03004854
+_0804F00C:
+ ldr r0, _0804F01C @ =gSpriteTemplate_8216548
+ movs r2, 0x10
+ negs r2, r2
+ movs r1, 0x78
+ movs r3, 0x3
+ bl CreateSprite
+ b _0804F0AA
+ .align 2, 0
+_0804F01C: .4byte gSpriteTemplate_8216548
+_0804F020:
+ mov r0, r8
+ b _0804F0AC
+_0804F024:
+ bl sub_80084A4
+ b _0804F0AA
+_0804F02A:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804F0CE
+ bl sub_8007E24
+ b _0804F0AA
+_0804F03A:
+ mov r1, r8
+ ldr r3, [r1]
+ adds r2, r3, 0
+ adds r2, 0x56
+ movs r1, 0
+ movs r0, 0x80
+ strh r0, [r2]
+ movs r2, 0x96
+ lsls r2, 1
+ adds r0, r3, r2
+ str r1, [r0]
+ ldr r0, _0804F07C @ =sub_80501FC
+ bl SetMainCallback2
+ bl GetCurrentMapMusic
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r4, _0804F080 @ =0x00000193
+ cmp r0, r4
+ beq _0804F074
+ bl GetCurrentMapMusic
+ mov r3, r8
+ ldr r1, [r3]
+ movs r2, 0xBC
+ lsls r2, 1
+ adds r1, r2
+ strh r0, [r1]
+_0804F074:
+ adds r0, r4, 0
+ bl PlayBGM
+ b _0804F0CE
+ .align 2, 0
+_0804F07C: .4byte sub_80501FC
+_0804F080: .4byte 0x00000193
+_0804F084:
+ movs r0, 0
+ movs r1, 0xD
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ ldr r0, _0804F09C @ =gOtherText_LinkNotFound
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrintMessage
+ b _0804F0AA
+ .align 2, 0
+_0804F09C: .4byte gOtherText_LinkNotFound
+_0804F0A0:
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804F0CE
+_0804F0AA:
+ ldr r0, _0804F0B8 @ =gUnknown_03004854
+_0804F0AC:
+ ldr r1, [r0]
+_0804F0AE:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _0804F0CE
+ .align 2, 0
+_0804F0B8: .4byte gUnknown_03004854
+_0804F0BC:
+ ldr r0, _0804F0EC @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0804F0CE
+ ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ bl SetMainCallback2
+_0804F0CE:
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F0EC: .4byte gPaletteFade
+_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end sub_804E9F8
+
+ thumb_func_start sub_804F0F4
+sub_804F0F4: @ 804F0F4
+ push {r4,lr}
+ movs r1, 0x80
+ lsls r1, 19
+ movs r0, 0
+ strh r0, [r1]
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ bl ResetTasks
+ ldr r0, _0804F158 @ =sub_804E2BC
+ bl SetVBlankCallback
+ ldr r4, _0804F15C @ =gWindowConfig_81E6F68
+ adds r0, r4, 0
+ bl SetUpWindowConfig
+ adds r0, r4, 0
+ bl InitMenuWindow
+ ldr r1, _0804F160 @ =gLinkType
+ ldr r2, _0804F164 @ =0x00004422
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _0804F168 @ =gUnknown_03004854
+ ldr r2, [r0]
+ adds r0, r2, 0
+ adds r0, 0x4E
+ movs r1, 0
+ strh r1, [r0]
+ adds r0, 0x8
+ strh r1, [r0]
+ subs r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x6
+ strh r1, [r0]
+ movs r3, 0xA2
+ lsls r3, 1
+ adds r0, r2, r3
+ strh r1, [r0]
+ adds r3, 0x2
+ adds r0, r2, r3
+ strh r1, [r0]
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F158: .4byte sub_804E2BC
+_0804F15C: .4byte gWindowConfig_81E6F68
+_0804F160: .4byte gLinkType
+_0804F164: .4byte 0x00004422
+_0804F168: .4byte gUnknown_03004854
+ thumb_func_end sub_804F0F4
+
+ thumb_func_start task_tutorial_oak_boy_girl
+task_tutorial_oak_boy_girl: @ 804F16C
+ push {lr}
+ lsls r0, 16
+ lsls r1, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ adds r2, 0x18
+ ldr r0, _0804F1A8 @ =gUnknown_03004854
+ ldr r0, [r0]
+ lsrs r1, 23
+ adds r0, 0xA2
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r1, _0804F1AC @ =gUnknown_08216303
+ adds r0, r1
+ ldrb r1, [r0]
+ cmp r2, r1
+ bcc _0804F1B4
+ adds r0, r1, 0
+ adds r0, 0x30
+ cmp r2, r0
+ bcs _0804F1B4
+ subs r0, 0x1C
+ cmp r2, r0
+ bcc _0804F1B0
+ adds r0, 0x8
+ cmp r2, r0
+ bcs _0804F1B0
+ movs r0, 0x2
+ b _0804F1B6
+ .align 2, 0
+_0804F1A8: .4byte gUnknown_03004854
+_0804F1AC: .4byte gUnknown_08216303
+_0804F1B0:
+ movs r0, 0x1
+ b _0804F1B6
+_0804F1B4:
+ movs r0, 0
+_0804F1B6:
+ pop {r1}
+ bx r1
+ thumb_func_end task_tutorial_oak_boy_girl
+
+ thumb_func_start sub_804F1BC
+sub_804F1BC: @ 804F1BC
+ push {r4-r7,lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ movs r4, 0
+ cmp r0, 0xAF
+ bne _0804F1EE
+ movs r3, 0
+ subs r5, r1, 0x1
+ adds r2, 0x9
+_0804F1D2:
+ adds r0, r2, r4
+ adds r1, r2, r3
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bls _0804F1E0
+ adds r4, r3, 0
+_0804F1E0:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0x4
+ bls _0804F1D2
+ adds r0, r4, 0x5
+ b _0804F204
+_0804F1EE:
+ subs r0, 0x85
+ lsls r0, 16
+ lsrs r4, r0, 16
+ subs r5, r1, 0x1
+ cmp r4, 0x4
+ bls _0804F208
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl __umodsi3
+ adds r0, 0x5
+_0804F204:
+ lsls r0, 16
+ lsrs r4, r0, 16
+_0804F208:
+ movs r3, 0
+ cmp r3, r5
+ bge _0804F22E
+ ldr r7, _0804F234 @ =gUnknown_082165BC
+ lsls r0, r4, 1
+ adds r6, r0, r4
+_0804F214:
+ adds r4, r3, 0x1
+ lsls r0, r4, 24
+ lsrs r0, 24
+ adds r1, r3, r6
+ adds r1, r7
+ ldrb r1, [r1]
+ adds r1, 0x85
+ bl sub_80516C4
+ lsls r4, 16
+ lsrs r3, r4, 16
+ cmp r3, r5
+ blt _0804F214
+_0804F22E:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F234: .4byte gUnknown_082165BC
+ thumb_func_end sub_804F1BC
+
+ thumb_func_start sub_804F238
+sub_804F238: @ 804F238
+ push {r4-r7,lr}
+ movs r4, 0
+ ldr r7, _0804F2A0 @ =gUnknown_03004854
+ movs r6, 0xFF
+ ldr r5, _0804F2A4 @ =gUnknown_082162EC
+_0804F242:
+ ldr r3, [r7]
+ lsls r2, r4, 1
+ adds r0, r3, 0
+ adds r0, 0xA2
+ adds r0, r2
+ strh r6, [r0]
+ adds r1, r3, 0
+ adds r1, 0x9A
+ adds r1, r2
+ adds r0, r3, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ subs r0, 0x2
+ lsls r0, 2
+ adds r0, r4, r0
+ adds r0, r5
+ ldrb r0, [r0]
+ strh r0, [r1]
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0804F242
+ movs r3, 0
+ ldr r7, _0804F2A0 @ =gUnknown_03004854
+_0804F270:
+ movs r4, 0
+ adds r6, r3, 0x1
+ lsls r5, r3, 1
+_0804F276:
+ ldr r2, [r7]
+ lsls r0, r4, 1
+ adds r1, r2, 0
+ adds r1, 0x9A
+ adds r1, r0
+ ldrh r0, [r1]
+ cmp r0, r3
+ bne _0804F28E
+ adds r0, r2, 0
+ adds r0, 0xA2
+ adds r0, r5
+ strh r4, [r0]
+_0804F28E:
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0804F276
+ adds r3, r6, 0
+ cmp r3, 0x3
+ ble _0804F270
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F2A0: .4byte gUnknown_03004854
+_0804F2A4: .4byte gUnknown_082162EC
+ thumb_func_end sub_804F238
+
+ thumb_func_start BuyMenuDrawFieldObjects
+BuyMenuDrawFieldObjects: @ 804F2A8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r6, 0
+ ldr r7, _0804F360 @ =gUnknown_03004854
+ ldr r0, _0804F364 @ =gUnknown_082162D4
+ mov r8, r0
+_0804F2B6:
+ ldr r2, [r7]
+ lsls r4, r6, 1
+ adds r0, r2, 0
+ adds r0, 0x9A
+ adds r3, r0, r4
+ ldrh r0, [r3]
+ cmp r0, 0xFF
+ beq _0804F34A
+ ldr r5, _0804F368 @ =gStringVar1
+ adds r1, r2, 0
+ adds r1, 0x5C
+ ldrh r3, [r3]
+ adds r1, r3
+ adds r0, r2, 0
+ adds r0, 0x60
+ adds r0, r6
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, [r7]
+ adds r1, r0, 0
+ adds r1, 0x9A
+ adds r1, r4
+ adds r0, 0x5C
+ ldrh r1, [r1]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0804F36C @ =gSprites
+ adds r0, r1
+ lsls r1, r6, 24
+ lsrs r1, 24
+ bl StartSpriteAnim
+ bl GetMultiplayerId
+ lsls r0, 24
+ ldr r1, [r7]
+ adds r1, 0x9A
+ adds r1, r4
+ lsrs r0, 24
+ ldrh r1, [r1]
+ cmp r0, r1
+ bne _0804F31A
+ adds r0, r5, 0
+ ldr r1, _0804F370 @ =gUnknown_082162C4
+ bl StringCopy
+ adds r5, r0, 0
+_0804F31A:
+ ldr r0, [r7]
+ adds r0, 0x9A
+ adds r0, r4
+ ldrh r0, [r0]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ ldr r0, _0804F374 @ =gLinkPlayers + 0x8
+ adds r1, r0
+ adds r0, r5, 0
+ bl StringCopy
+ mov r0, r8
+ ldrb r1, [r0]
+ lsls r1, 3
+ adds r1, 0x1
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0x1]
+ lsls r2, 3
+ ldr r0, _0804F368 @ =gStringVar1
+ movs r3, 0x1
+ bl MenuPrint_PixelCoords
+_0804F34A:
+ movs r0, 0x2
+ add r8, r0
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0804F2B6
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F360: .4byte gUnknown_03004854
+_0804F364: .4byte gUnknown_082162D4
+_0804F368: .4byte gStringVar1
+_0804F36C: .4byte gSprites
+_0804F370: .4byte gUnknown_082162C4
+_0804F374: .4byte gLinkPlayers + 0x8
+ thumb_func_end BuyMenuDrawFieldObjects
+
+ thumb_func_start sub_804F378
+sub_804F378: @ 804F378
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ ldr r1, _0804F398 @ =gUnknown_03004854
+ ldr r0, [r1]
+ ldrb r0, [r0]
+ mov r8, r1
+ cmp r0, 0x15
+ bls _0804F38E
+ b _0804F7E6
+_0804F38E:
+ lsls r0, 2
+ ldr r1, _0804F39C @ =_0804F3A0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0804F398: .4byte gUnknown_03004854
+_0804F39C: .4byte _0804F3A0
+ .align 2, 0
+_0804F3A0:
+ .4byte _0804F3F8
+ .4byte _0804F474
+ .4byte _0804F494
+ .4byte _0804F4EC
+ .4byte _0804F518
+ .4byte _0804F7E6
+ .4byte _0804F7E6
+ .4byte _0804F7E6
+ .4byte _0804F54C
+ .4byte _0804F7E6
+ .4byte _0804F7E6
+ .4byte _0804F578
+ .4byte _0804F5C8
+ .4byte _0804F636
+ .4byte _0804F650
+ .4byte _0804F6F8
+ .4byte _0804F720
+ .4byte _0804F7E6
+ .4byte _0804F73C
+ .4byte _0804F742
+ .4byte _0804F748
+ .4byte _0804F754
+_0804F3F8:
+ bl sub_804F0F4
+ ldr r4, _0804F46C @ =gScriptItemId
+ ldrh r1, [r4]
+ movs r0, 0
+ bl sub_80516C4
+ ldr r5, _0804F470 @ =gUnknown_03004854
+ ldr r0, [r5]
+ movs r6, 0xBE
+ lsls r6, 1
+ adds r0, r6
+ ldrh r1, [r4]
+ bl sub_804E844
+ ldrh r0, [r4]
+ ldr r2, [r5]
+ adds r1, r2, 0
+ adds r1, 0x88
+ ldrb r1, [r1]
+ adds r2, r6
+ bl sub_804F1BC
+ movs r4, 0
+ movs r6, 0
+ mov r8, r5
+ movs r7, 0xA6
+ lsls r7, 1
+_0804F430:
+ ldr r0, [r5]
+ lsls r1, r4, 1
+ adds r0, 0x70
+ adds r0, r1
+ strh r6, [r0]
+ adds r3, r4, 0x1
+ adds r1, r4
+ lsls r1, 1
+ movs r2, 0x2
+_0804F442:
+ ldr r0, [r5]
+ adds r0, r7
+ adds r0, r1
+ strh r6, [r0]
+ adds r1, 0x2
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0804F442
+ adds r4, r3, 0
+ cmp r4, 0x3
+ ble _0804F430
+ mov r0, r8
+ ldr r3, [r0]
+ adds r1, r3, 0
+ adds r1, 0x7C
+ movs r2, 0
+ movs r0, 0
+ strh r0, [r1]
+ strb r2, [r3, 0x1]
+ b _0804F7E6
+ .align 2, 0
+_0804F46C: .4byte gScriptItemId
+_0804F470: .4byte gUnknown_03004854
+_0804F474:
+ bl sub_804E2EC
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804F480
+ b _0804F7E6
+_0804F480:
+ ldr r0, _0804F490 @ =gUnknown_03004854
+ ldr r1, [r0]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ bl sub_8051474
+ b _0804F7E6
+ .align 2, 0
+_0804F490: .4byte gUnknown_03004854
+_0804F494:
+ movs r4, 0
+ ldr r5, _0804F4DC @ =gUnknown_082162E4
+ ldr r6, _0804F4E0 @ =gUnknown_03004854
+_0804F49A:
+ ldrb r1, [r5]
+ ldrb r2, [r5, 0x1]
+ ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4
+ movs r3, 0x1
+ bl CreateSprite
+ ldr r1, [r6]
+ adds r1, 0x60
+ adds r1, r4
+ strb r0, [r1]
+ ldr r0, [r6]
+ adds r0, 0x60
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0804F4E8 @ =gSprites
+ adds r0, r1
+ adds r1, r4, 0
+ adds r1, 0x8
+ lsls r1, 24
+ lsrs r1, 24
+ bl StartSpriteAnim
+ adds r5, 0x2
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0804F49A
+ ldr r0, _0804F4E0 @ =gUnknown_03004854
+ ldr r1, [r0]
+ b _0804F74C
+ .align 2, 0
+_0804F4DC: .4byte gUnknown_082162E4
+_0804F4E0: .4byte gUnknown_03004854
+_0804F4E4: .4byte gSpriteTemplate_82163F4
+_0804F4E8: .4byte gSprites
+_0804F4EC:
+ movs r0, 0x1
+ negs r0, r0
+ movs r4, 0
+ str r4, [sp]
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ ldr r2, _0804F514 @ =gUnknown_03004854
+ ldr r1, [r2]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r0, [r2]
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r1
+ str r4, [r0]
+ b _0804F7E6
+ .align 2, 0
+_0804F514: .4byte gUnknown_03004854
+_0804F518:
+ mov r2, r8
+ ldr r1, [r2]
+ movs r3, 0x98
+ lsls r3, 1
+ adds r1, r3
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x2
+ bne _0804F530
+ bl sub_804E4FC
+_0804F530:
+ ldr r0, _0804F548 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0804F53E
+ b _0804F7E6
+_0804F53E:
+ mov r5, r8
+ ldr r1, [r5]
+ movs r0, 0x8
+ strb r0, [r1]
+ b _0804F7E6
+ .align 2, 0
+_0804F548: .4byte gPaletteFade
+_0804F54C:
+ mov r0, r8
+ ldr r1, [r0]
+ movs r2, 0
+ movs r0, 0xB
+ strb r0, [r1]
+ mov r1, r8
+ ldr r0, [r1]
+ movs r3, 0x9E
+ lsls r3, 1
+ adds r0, r3
+ strb r2, [r0]
+ b _0804F7E6
+_0804F564:
+ lsls r1, 1
+ adds r0, r3, 0
+ adds r0, 0x80
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r1, r4, 24
+ lsrs r1, 24
+ bl sub_804E7C0
+ b _0804F5A2
+_0804F578:
+ movs r4, 0
+ ldr r2, _0804F5C0 @ =gUnknown_082162EC
+ ldr r0, _0804F5C4 @ =gUnknown_03004854
+ ldr r3, [r0]
+ adds r0, r3, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ subs r0, 0x2
+ lsls r0, 2
+ movs r5, 0x9E
+ lsls r5, 1
+ adds r1, r3, r5
+ ldrb r1, [r1]
+ adds r0, r2
+_0804F594:
+ ldrb r2, [r0]
+ cmp r1, r2
+ beq _0804F564
+ adds r0, 0x1
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0804F594
+_0804F5A2:
+ ldr r3, _0804F5C4 @ =gUnknown_03004854
+ ldr r1, [r3]
+ movs r5, 0x98
+ lsls r5, 1
+ adds r2, r1, r5
+ movs r0, 0
+ str r0, [r2]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r1, [r3]
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r0
+ b _0804F74C
+ .align 2, 0
+_0804F5C0: .4byte gUnknown_082162EC
+_0804F5C4: .4byte gUnknown_03004854
+_0804F5C8:
+ mov r1, r8
+ ldr r3, [r1]
+ movs r2, 0x98
+ lsls r2, 1
+ adds r1, r3, r2
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x3C
+ bgt _0804F5DE
+ b _0804F7E6
+_0804F5DE:
+ movs r5, 0x9E
+ lsls r5, 1
+ adds r0, r3, r5
+ adds r4, r3, 0
+ adds r4, 0x88
+ ldrb r0, [r0]
+ ldrb r1, [r4]
+ cmp r0, r1
+ bcc _0804F620
+ ldr r2, _0804F614 @ =gUnknown_082162F8
+ ldr r1, _0804F618 @ =gUnknown_08216300
+ ldrb r0, [r4]
+ subs r0, 0x2
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r2
+ ldr r2, _0804F61C @ =0xffffa800
+ adds r1, r2, 0
+ ldrh r0, [r0]
+ adds r1, r0
+ adds r0, r3, 0
+ adds r0, 0x54
+ strh r1, [r0]
+ ldrb r0, [r3]
+ adds r0, 0x1
+ b _0804F624
+ .align 2, 0
+_0804F614: .4byte gUnknown_082162F8
+_0804F618: .4byte gUnknown_08216300
+_0804F61C: .4byte 0xffffa800
+_0804F620:
+ ldrb r0, [r3]
+ subs r0, 0x1
+_0804F624:
+ strb r0, [r3]
+ mov r3, r8
+ ldr r0, [r3]
+ movs r5, 0x98
+ lsls r5, 1
+ adds r0, r5
+ movs r1, 0
+ str r1, [r0]
+ b _0804F7E6
+_0804F636:
+ mov r1, r8
+ ldr r0, [r1]
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ bl sub_804F238
+ movs r0, 0x2B
+ bl PlaySE
+ mov r2, r8
+ ldr r0, [r2]
+ b _0804F710
+_0804F650:
+ movs r2, 0x80
+ lsls r2, 19
+ ldrh r0, [r2]
+ movs r5, 0x80
+ lsls r5, 3
+ adds r1, r5, 0
+ orrs r0, r1
+ strh r0, [r2]
+ mov r0, r8
+ ldr r2, [r0]
+ adds r1, r2, 0
+ adds r1, 0x54
+ movs r3, 0x80
+ lsls r3, 2
+ adds r0, r3, 0
+ ldrh r5, [r1]
+ adds r0, r5
+ strh r0, [r1]
+ movs r0, 0xA1
+ lsls r0, 1
+ adds r1, r2, r0
+ ldrh r0, [r1]
+ adds r0, 0x4
+ strh r0, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xFF
+ bls _0804F6D6
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ mov r1, r8
+ ldr r3, [r1]
+ movs r2, 0xA1
+ lsls r2, 1
+ adds r1, r3, r2
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r1]
+ ldr r2, _0804F6E8 @ =gUnknown_082162F8
+ ldr r1, _0804F6EC @ =gUnknown_08216300
+ adds r0, r3, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ subs r0, 0x2
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r1, [r0]
+ adds r0, r3, 0
+ adds r0, 0x54
+ strh r1, [r0]
+ ldr r1, _0804F6F0 @ =REG_BG2CNT
+ ldr r5, _0804F6F4 @ =0x00004882
+ adds r0, r5, 0
+ strh r0, [r1]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r1, r3, r0
+ movs r0, 0
+ str r0, [r1]
+ movs r0, 0x34
+ bl PlaySE
+ bl BuyMenuDrawFieldObjects
+_0804F6D6:
+ mov r1, r8
+ ldr r0, [r1]
+ movs r2, 0xB4
+ lsls r2, 1
+ adds r0, r2
+ bl sub_8051414
+ b _0804F7E6
+ .align 2, 0
+_0804F6E8: .4byte gUnknown_082162F8
+_0804F6EC: .4byte gUnknown_08216300
+_0804F6F0: .4byte REG_BG2CNT
+_0804F6F4: .4byte 0x00004882
+_0804F6F8:
+ bl sub_8051B8C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804F70C
+ ldr r0, _0804F71C @ =gUnknown_03004854
+ ldr r1, [r0]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0804F70C:
+ ldr r0, _0804F71C @ =gUnknown_03004854
+ ldr r0, [r0]
+_0804F710:
+ movs r3, 0xB4
+ lsls r3, 1
+ adds r0, r3
+ bl sub_8051414
+ b _0804F7E6
+ .align 2, 0
+_0804F71C: .4byte gUnknown_03004854
+_0804F720:
+ ldr r0, _0804F734 @ =gSpriteTemplate_8216548
+ movs r2, 0x10
+ negs r2, r2
+ movs r1, 0x78
+ movs r3, 0x3
+ bl CreateSprite
+ ldr r0, _0804F738 @ =gUnknown_03004854
+ ldr r1, [r0]
+ b _0804F74C
+ .align 2, 0
+_0804F734: .4byte gSpriteTemplate_8216548
+_0804F738: .4byte gUnknown_03004854
+_0804F73C:
+ mov r5, r8
+ ldr r1, [r5]
+ b _0804F74C
+_0804F742:
+ mov r0, r8
+ ldr r1, [r0]
+ b _0804F74C
+_0804F748:
+ mov r2, r8
+ ldr r1, [r2]
+_0804F74C:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _0804F7E6
+_0804F754:
+ bl sub_804F81C
+ ldr r3, _0804F804 @ =gUnknown_03004854
+ ldr r4, [r3]
+ adds r5, r4, 0
+ adds r5, 0x56
+ movs r2, 0
+ movs r1, 0
+ movs r0, 0x80
+ strh r0, [r5]
+ movs r5, 0x96
+ lsls r5, 1
+ adds r0, r4, r5
+ str r1, [r0]
+ ldr r1, _0804F808 @ =0x0000014b
+ adds r0, r4, r1
+ strb r2, [r0]
+ ldr r0, [r3]
+ adds r0, 0x7E
+ strb r2, [r0]
+ ldr r0, _0804F80C @ =sub_80501FC
+ bl SetMainCallback2
+ movs r4, 0
+ ldr r0, _0804F810 @ =gSpecialVar_0x8004
+ ldrh r0, [r0]
+ cmp r4, r0
+ bge _0804F7B8
+ movs r5, 0xA0
+ lsls r5, 20
+ ldr r6, _0804F814 @ =gUnknown_08216308
+_0804F792:
+ ldm r6!, {r0}
+ lsrs r1, r5, 24
+ bl CreateTask
+ ldr r1, _0804F804 @ =gUnknown_03004854
+ ldr r1, [r1]
+ movs r2, 0xA4
+ lsls r2, 1
+ adds r1, r2
+ adds r1, r4
+ strb r0, [r1]
+ movs r3, 0x80
+ lsls r3, 17
+ adds r5, r3
+ adds r4, 0x1
+ ldr r0, _0804F810 @ =gSpecialVar_0x8004
+ ldrh r0, [r0]
+ cmp r4, r0
+ blt _0804F792
+_0804F7B8:
+ bl GetCurrentMapMusic
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r4, _0804F818 @ =0x00000193
+ cmp r0, r4
+ beq _0804F7D6
+ bl GetCurrentMapMusic
+ ldr r1, _0804F804 @ =gUnknown_03004854
+ ldr r1, [r1]
+ movs r5, 0xBC
+ lsls r5, 1
+ adds r1, r5
+ strh r0, [r1]
+_0804F7D6:
+ adds r0, r4, 0
+ bl PlayBGM
+ movs r0, 0x35
+ bl PlaySE
+ bl sub_804E290
+_0804F7E6:
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F804: .4byte gUnknown_03004854
+_0804F808: .4byte 0x0000014b
+_0804F80C: .4byte sub_80501FC
+_0804F810: .4byte gSpecialVar_0x8004
+_0804F814: .4byte gUnknown_08216308
+_0804F818: .4byte 0x00000193
+ thumb_func_end sub_804F378
+
+ thumb_func_start sub_804F81C
+sub_804F81C: @ 804F81C
+ push {lr}
+ ldr r3, _0804F83C @ =gSendCmd
+ movs r0, 0
+ ldr r1, _0804F840 @ =gRecvCmds
+ movs r2, 0x3
+_0804F826:
+ strh r0, [r3]
+ strh r0, [r3, 0x4]
+ strh r0, [r1]
+ strh r0, [r1, 0x10]
+ adds r1, 0x2
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0804F826
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F83C: .4byte gSendCmd
+_0804F840: .4byte gRecvCmds
+ thumb_func_end sub_804F81C
+
+ thumb_func_start sub_804F844
+sub_804F844: @ 804F844
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r1, _0804F884 @ =gTasks
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ adds r2, r0, r1
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ movs r4, 0xA
+ ldrsh r1, [r2, r4]
+ cmp r0, r1
+ ble _0804F87C
+ ldr r0, _0804F888 @ =gRecvCmds
+ movs r4, 0xC
+ ldrsh r1, [r2, r4]
+ lsls r1, 1
+ adds r0, 0x10
+ adds r1, r0
+ ldr r0, _0804F88C @ =0x00002345
+ strh r0, [r1]
+ adds r0, r3, 0
+ bl DestroyTask
+_0804F87C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F884: .4byte gTasks
+_0804F888: .4byte gRecvCmds
+_0804F88C: .4byte 0x00002345
+ thumb_func_end sub_804F844
+
+ thumb_func_start sub_804F890
+sub_804F890: @ 804F890
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _0804F8C0 @ =sub_804F844
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0804F8C4 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r4, [r1, 0xA]
+ strh r5, [r1, 0xC]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F8C0: .4byte sub_804F844
+_0804F8C4: .4byte gTasks
+ thumb_func_end sub_804F890
+
+ thumb_func_start sub_804F8C8
+sub_804F8C8: @ 804F8C8
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _0804F934 @ =gUnknown_03004854
+ ldr r0, [r4]
+ adds r0, 0x54
+ ldrh r0, [r0]
+ movs r1, 0x1
+ bl task_tutorial_oak_boy_girl
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ beq _0804F8E6
+ b _0804F9DC
+_0804F8E6:
+ ldr r2, _0804F938 @ =gTasks
+ lsls r1, r5, 2
+ adds r0, r1, r5
+ lsls r0, 3
+ adds r0, r2
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r6, r1, 0
+ cmp r0, 0
+ beq _0804F8FC
+ b _0804F9EA
+_0804F8FC:
+ ldr r0, [r4]
+ ldr r1, _0804F93C @ =0x0000014b
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0804F9BE
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, _0804F940 @ =0x0000028f
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r3, r1, 0
+ ldr r0, [r4]
+ adds r0, 0x56
+ movs r4, 0
+ ldrsh r2, [r0, r4]
+ ldr r0, _0804F944 @ =0x000001f3
+ cmp r2, r0
+ bgt _0804F964
+ cmp r1, 0x4B
+ bls _0804F950
+ ldr r1, _0804F948 @ =gRecvCmds
+ ldr r0, _0804F94C @ =0x00004523
+ b _0804F954
+ .align 2, 0
+_0804F934: .4byte gUnknown_03004854
+_0804F938: .4byte gTasks
+_0804F93C: .4byte 0x0000014b
+_0804F940: .4byte 0x0000028f
+_0804F944: .4byte 0x000001f3
+_0804F948: .4byte gRecvCmds
+_0804F94C: .4byte 0x00004523
+_0804F950:
+ ldr r1, _0804F95C @ =gRecvCmds
+ ldr r0, _0804F960 @ =0x00005432
+_0804F954:
+ strh r0, [r1, 0x12]
+ ldr r0, _0804F960 @ =0x00005432
+ b _0804F9C2
+ .align 2, 0
+_0804F95C: .4byte gRecvCmds
+_0804F960: .4byte 0x00005432
+_0804F964:
+ ldr r0, _0804F980 @ =0x000005db
+ cmp r2, r0
+ bgt _0804F992
+ cmp r1, 0x50
+ bhi _0804F9BE
+ adds r0, r1, 0
+ subs r0, 0x15
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3B
+ bhi _0804F98C
+ ldr r1, _0804F984 @ =gRecvCmds
+ ldr r0, _0804F988 @ =0x00005432
+ b _0804F9C2
+ .align 2, 0
+_0804F980: .4byte 0x000005db
+_0804F984: .4byte gRecvCmds
+_0804F988: .4byte 0x00005432
+_0804F98C:
+ cmp r1, 0x9
+ bhi _0804F9C4
+ b _0804F9B4
+_0804F992:
+ cmp r1, 0x5A
+ bhi _0804F9BE
+ adds r0, r1, 0
+ subs r0, 0x47
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x13
+ bhi _0804F9B0
+ ldr r1, _0804F9A8 @ =gRecvCmds
+ ldr r0, _0804F9AC @ =0x00005432
+ b _0804F9C2
+ .align 2, 0
+_0804F9A8: .4byte gRecvCmds
+_0804F9AC: .4byte 0x00005432
+_0804F9B0:
+ cmp r3, 0x1D
+ bhi _0804F9C4
+_0804F9B4:
+ movs r0, 0x1
+ movs r1, 0x5
+ bl sub_804F890
+ b _0804F9C4
+_0804F9BE:
+ ldr r1, _0804F9D0 @ =gRecvCmds
+ ldr r0, _0804F9D4 @ =0x00004523
+_0804F9C2:
+ strh r0, [r1, 0x12]
+_0804F9C4:
+ ldr r0, _0804F9D8 @ =gTasks
+ adds r1, r6, r5
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0x1
+ b _0804F9E8
+ .align 2, 0
+_0804F9D0: .4byte gRecvCmds
+_0804F9D4: .4byte 0x00004523
+_0804F9D8: .4byte gTasks
+_0804F9DC:
+ ldr r0, _0804F9F0 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0
+_0804F9E8:
+ strh r0, [r1, 0x8]
+_0804F9EA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804F9F0: .4byte gTasks
+ thumb_func_end sub_804F8C8
+
+ thumb_func_start sub_804F9F4
+sub_804F9F4: @ 804F9F4
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r6, _0804FA78 @ =gUnknown_03004854
+ ldr r3, [r6]
+ adds r0, r3, 0
+ adds r0, 0x54
+ ldrh r0, [r0]
+ movs r1, 0xC0
+ lsls r1, 5
+ adds r0, r1
+ ldr r1, _0804FA7C @ =0x0000ffff
+ ands r0, r1
+ adds r1, r3, 0
+ adds r1, 0xA6
+ ldrb r1, [r1]
+ lsrs r2, r0, 8
+ ldr r0, _0804FA80 @ =gUnknown_08216303
+ adds r1, r0
+ ldrb r1, [r1]
+ adds r0, r1, 0
+ adds r0, 0x14
+ cmp r2, r0
+ bls _0804FB04
+ adds r0, 0x14
+ cmp r2, r0
+ bcs _0804FB04
+ ldr r2, _0804FA84 @ =gTasks
+ lsls r1, r4, 2
+ adds r0, r1, r4
+ lsls r0, 3
+ adds r2, r0, r2
+ movs r5, 0x8
+ ldrsh r0, [r2, r5]
+ adds r5, r1, 0
+ cmp r0, 0
+ bne _0804FB12
+ ldr r1, _0804FA88 @ =0x0000014b
+ adds r0, r3, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0804FAF0
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, _0804FA8C @ =0x0000028f
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r2, r0, 24
+ adds r3, r2, 0
+ ldr r0, [r6]
+ adds r0, 0x56
+ movs r6, 0
+ ldrsh r1, [r0, r6]
+ ldr r0, _0804FA90 @ =0x000001f3
+ cmp r1, r0
+ bgt _0804FAAC
+ cmp r2, 0x42
+ bls _0804FA9C
+ ldr r1, _0804FA94 @ =gRecvCmds
+ ldr r0, _0804FA98 @ =0x00004523
+ strh r0, [r1, 0x14]
+ b _0804FAD4
+ .align 2, 0
+_0804FA78: .4byte gUnknown_03004854
+_0804FA7C: .4byte 0x0000ffff
+_0804FA80: .4byte gUnknown_08216303
+_0804FA84: .4byte gTasks
+_0804FA88: .4byte 0x0000014b
+_0804FA8C: .4byte 0x0000028f
+_0804FA90: .4byte 0x000001f3
+_0804FA94: .4byte gRecvCmds
+_0804FA98: .4byte 0x00004523
+_0804FA9C:
+ ldr r1, _0804FAA4 @ =gRecvCmds
+ ldr r0, _0804FAA8 @ =0x00005432
+ strh r0, [r1, 0x14]
+ b _0804FAD4
+ .align 2, 0
+_0804FAA4: .4byte gRecvCmds
+_0804FAA8: .4byte 0x00005432
+_0804FAAC:
+ cmp r2, 0x41
+ bls _0804FAB6
+ ldr r1, _0804FAE0 @ =gRecvCmds
+ ldr r0, _0804FAE4 @ =0x00004523
+ strh r0, [r1, 0x14]
+_0804FAB6:
+ adds r0, r2, 0
+ subs r0, 0x29
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x18
+ bhi _0804FAC8
+ ldr r1, _0804FAE0 @ =gRecvCmds
+ ldr r0, _0804FAE8 @ =0x00005432
+ strh r0, [r1, 0x14]
+_0804FAC8:
+ cmp r3, 0x9
+ bhi _0804FAD4
+ movs r0, 0x2
+ movs r1, 0x5
+ bl sub_804F890
+_0804FAD4:
+ ldr r0, _0804FAEC @ =gTasks
+ adds r1, r5, r4
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0x1
+ b _0804FB10
+ .align 2, 0
+_0804FAE0: .4byte gRecvCmds
+_0804FAE4: .4byte 0x00004523
+_0804FAE8: .4byte 0x00005432
+_0804FAEC: .4byte gTasks
+_0804FAF0:
+ ldr r0, _0804FAFC @ =gRecvCmds
+ ldr r1, _0804FB00 @ =0x00004523
+ strh r1, [r0, 0x14]
+ movs r0, 0x1
+ strh r0, [r2, 0x8]
+ b _0804FB12
+ .align 2, 0
+_0804FAFC: .4byte gRecvCmds
+_0804FB00: .4byte 0x00004523
+_0804FB04:
+ ldr r0, _0804FB18 @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0
+_0804FB10:
+ strh r0, [r1, 0x8]
+_0804FB12:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804FB18: .4byte gTasks
+ thumb_func_end sub_804F9F4
+
+ thumb_func_start sub_804FB1C
+sub_804FB1C: @ 804FB1C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r5, _0804FB9C @ =gUnknown_03004854
+ ldr r3, [r5]
+ adds r0, r3, 0
+ adds r0, 0x54
+ ldrh r0, [r0]
+ movs r1, 0xC0
+ lsls r1, 5
+ adds r0, r1
+ ldr r1, _0804FBA0 @ =0x0000ffff
+ ands r0, r1
+ adds r1, r3, 0
+ adds r1, 0xA8
+ ldrb r1, [r1]
+ lsrs r2, r0, 8
+ ldr r0, _0804FBA4 @ =gUnknown_08216303
+ adds r1, r0
+ ldrb r1, [r1]
+ adds r0, r1, 0
+ adds r0, 0x14
+ cmp r2, r0
+ bls _0804FC30
+ adds r0, 0x14
+ cmp r2, r0
+ bcs _0804FC30
+ ldr r2, _0804FBA8 @ =gTasks
+ lsls r1, r4, 2
+ adds r0, r1, r4
+ lsls r0, 3
+ adds r2, r0, r2
+ movs r6, 0x8
+ ldrsh r0, [r2, r6]
+ adds r6, r1, 0
+ cmp r0, 0
+ bne _0804FC3E
+ ldr r1, _0804FBAC @ =0x0000014b
+ adds r0, r3, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0804FC1C
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, _0804FBB0 @ =0x0000028f
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, [r5]
+ adds r0, 0x56
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ ldr r0, _0804FBB4 @ =0x000001f3
+ cmp r1, r0
+ bgt _0804FBD0
+ cmp r2, 0x58
+ bls _0804FBC0
+ ldr r1, _0804FBB8 @ =gRecvCmds
+ ldr r0, _0804FBBC @ =0x00004523
+ strh r0, [r1, 0x16]
+ b _0804FC02
+ .align 2, 0
+_0804FB9C: .4byte gUnknown_03004854
+_0804FBA0: .4byte 0x0000ffff
+_0804FBA4: .4byte gUnknown_08216303
+_0804FBA8: .4byte gTasks
+_0804FBAC: .4byte 0x0000014b
+_0804FBB0: .4byte 0x0000028f
+_0804FBB4: .4byte 0x000001f3
+_0804FBB8: .4byte gRecvCmds
+_0804FBBC: .4byte 0x00004523
+_0804FBC0:
+ ldr r1, _0804FBC8 @ =gRecvCmds
+ ldr r0, _0804FBCC @ =0x00005432
+ strh r0, [r1, 0x16]
+ b _0804FC02
+ .align 2, 0
+_0804FBC8: .4byte gRecvCmds
+_0804FBCC: .4byte 0x00005432
+_0804FBD0:
+ cmp r2, 0x3C
+ bls _0804FBE4
+ ldr r1, _0804FBDC @ =gRecvCmds
+ ldr r0, _0804FBE0 @ =0x00004523
+ b _0804FBF4
+ .align 2, 0
+_0804FBDC: .4byte gRecvCmds
+_0804FBE0: .4byte 0x00004523
+_0804FBE4:
+ adds r0, r2, 0
+ subs r0, 0x38
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bhi _0804FBF6
+ ldr r1, _0804FC10 @ =gRecvCmds
+ ldr r0, _0804FC14 @ =0x00005432
+_0804FBF4:
+ strh r0, [r1, 0x16]
+_0804FBF6:
+ cmp r2, 0x4
+ bhi _0804FC02
+ movs r0, 0x3
+ movs r1, 0x5
+ bl sub_804F890
+_0804FC02:
+ ldr r0, _0804FC18 @ =gTasks
+ adds r1, r6, r4
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0x1
+ b _0804FC3C
+ .align 2, 0
+_0804FC10: .4byte gRecvCmds
+_0804FC14: .4byte 0x00005432
+_0804FC18: .4byte gTasks
+_0804FC1C:
+ ldr r0, _0804FC28 @ =gRecvCmds
+ ldr r1, _0804FC2C @ =0x00004523
+ strh r1, [r0, 0x16]
+ movs r0, 0x1
+ strh r0, [r2, 0x8]
+ b _0804FC3E
+ .align 2, 0
+_0804FC28: .4byte gRecvCmds
+_0804FC2C: .4byte 0x00004523
+_0804FC30:
+ ldr r0, _0804FC44 @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0
+_0804FC3C:
+ strh r0, [r1, 0x8]
+_0804FC3E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804FC44: .4byte gTasks
+ thumb_func_end sub_804FB1C
+
+ thumb_func_start sub_804FC48
+sub_804FC48: @ 804FC48
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 16
+ lsrs r7, r0, 16
+ mov r8, r7
+ lsls r1, 24
+ ldr r0, _0804FCBC @ =gSpriteTemplate_821645C
+ ldr r4, _0804FCC0 @ =gUnknown_082162E4
+ lsrs r1, 23
+ adds r2, r1, r4
+ ldrb r6, [r2]
+ ldr r5, _0804FCC4 @ =gUnknown_082162CC
+ adds r2, r1, r5
+ movs r3, 0
+ ldrsb r3, [r2, r3]
+ lsls r2, r3, 2
+ adds r2, r3
+ lsls r2, 1
+ subs r6, r2
+ adds r4, 0x1
+ adds r4, r1, r4
+ ldrb r2, [r4]
+ adds r5, 0x1
+ adds r1, r5
+ movs r3, 0
+ ldrsb r3, [r1, r3]
+ lsls r1, r3, 2
+ adds r1, r3
+ lsls r1, 1
+ subs r2, r1
+ adds r1, r6, 0
+ movs r3, 0x1
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r2, r1, 0
+ ldr r0, _0804FCC8 @ =0x00004523
+ cmp r7, r0
+ bne _0804FCD4
+ lsls r4, r1, 4
+ adds r4, r1
+ lsls r4, 2
+ ldr r5, _0804FCCC @ =gSprites
+ adds r0, r4, r5
+ movs r1, 0x2
+ bl StartSpriteAnim
+ adds r5, 0x1C
+ adds r4, r5
+ ldr r0, _0804FCD0 @ =sub_8051684
+ str r0, [r4]
+ movs r0, 0x28
+ bl PlaySE
+ b _0804FD18
+ .align 2, 0
+_0804FCBC: .4byte gSpriteTemplate_821645C
+_0804FCC0: .4byte gUnknown_082162E4
+_0804FCC4: .4byte gUnknown_082162CC
+_0804FCC8: .4byte 0x00004523
+_0804FCCC: .4byte gSprites
+_0804FCD0: .4byte sub_8051684
+_0804FCD4:
+ ldr r0, _0804FCF4 @ =0x00005432
+ cmp r7, r0
+ bne _0804FCFC
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0804FCF8 @ =gSprites
+ adds r0, r1
+ movs r1, 0
+ bl StartSpriteAnim
+ movs r0, 0x1F
+ bl PlaySE
+ b _0804FD18
+ .align 2, 0
+_0804FCF4: .4byte 0x00005432
+_0804FCF8: .4byte gSprites
+_0804FCFC:
+ ldr r0, _0804FD28 @ =0x00002345
+ cmp r8, r0
+ bne _0804FD18
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ ldr r1, _0804FD2C @ =gSprites
+ adds r0, r1
+ movs r1, 0x1
+ bl StartSpriteAnim
+ movs r0, 0x20
+ bl PlaySE
+_0804FD18:
+ bl sub_805156C
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804FD28: .4byte 0x00002345
+_0804FD2C: .4byte gSprites
+ thumb_func_end sub_804FC48
+
+ thumb_func_start sub_804FD30
+sub_804FD30: @ 804FD30
+ push {r4-r7,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r5, r4, 0
+ bl sub_804E290
+ ldr r0, _0804FD50 @ =0x00004523
+ cmp r4, r0
+ beq _0804FD64
+ cmp r4, r0
+ bgt _0804FD58
+ ldr r0, _0804FD54 @ =0x00002345
+ cmp r4, r0
+ beq _0804FE34
+ b _0804FE60
+ .align 2, 0
+_0804FD50: .4byte 0x00004523
+_0804FD54: .4byte 0x00002345
+_0804FD58:
+ ldr r0, _0804FD60 @ =0x00005432
+ cmp r5, r0
+ beq _0804FDFC
+ b _0804FE60
+ .align 2, 0
+_0804FD60: .4byte 0x00005432
+_0804FD64:
+ ldr r7, _0804FD94 @ =gUnknown_03004854
+ ldr r4, [r7]
+ adds r5, r4, 0
+ adds r5, 0x56
+ ldrh r6, [r5]
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ ldr r0, _0804FD98 @ =0x000005db
+ cmp r1, r0
+ bgt _0804FDA0
+ ldr r1, _0804FD9C @ =gUnknown_082165DA
+ adds r0, r4, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0xC0
+ lsls r0, 1
+ bl __divsi3
+ adds r0, r6, r0
+ strh r0, [r5]
+ b _0804FE60
+ .align 2, 0
+_0804FD94: .4byte gUnknown_03004854
+_0804FD98: .4byte 0x000005db
+_0804FD9C: .4byte gUnknown_082165DA
+_0804FDA0:
+ ldr r1, _0804FDF8 @ =gUnknown_082165DA
+ adds r0, r4, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x80
+ bl __divsi3
+ adds r0, r6, r0
+ strh r0, [r5]
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r4, r1
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ movs r1, 0x64
+ bl __divsi3
+ adds r1, r0, 0
+ subs r1, 0xA
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl sub_8051AC8
+ ldr r0, [r7]
+ movs r1, 0xA3
+ lsls r1, 1
+ adds r4, r0, r1
+ adds r0, 0x56
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r1, 0x64
+ bl __divsi3
+ adds r1, r0, 0
+ subs r1, 0xA
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl sub_8051AC8
+ b _0804FE60
+ .align 2, 0
+_0804FDF8: .4byte gUnknown_082165DA
+_0804FDFC:
+ ldr r0, _0804FE28 @ =gUnknown_03004854
+ ldr r2, [r0]
+ adds r4, r2, 0
+ adds r4, 0x56
+ ldrh r5, [r4]
+ movs r0, 0
+ ldrsh r1, [r4, r0]
+ ldr r0, _0804FE2C @ =0x000005db
+ cmp r1, r0
+ bgt _0804FE60
+ ldr r1, _0804FE30 @ =gUnknown_082165DA
+ adds r0, r2, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x80
+ lsls r0, 1
+ bl __divsi3
+ adds r0, r5, r0
+ b _0804FE5E
+ .align 2, 0
+_0804FE28: .4byte gUnknown_03004854
+_0804FE2C: .4byte 0x000005db
+_0804FE30: .4byte gUnknown_082165DA
+_0804FE34:
+ ldr r0, _0804FE68 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r4, r0, 0
+ adds r4, 0x56
+ ldr r1, _0804FE6C @ =gUnknown_082165DA
+ adds r0, 0x88
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x80
+ lsls r0, 1
+ bl __divsi3
+ ldrh r1, [r4]
+ subs r1, r0
+ strh r1, [r4]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x7F
+ bgt _0804FE60
+ movs r0, 0x80
+_0804FE5E:
+ strh r0, [r4]
+_0804FE60:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804FE68: .4byte gUnknown_03004854
+_0804FE6C: .4byte gUnknown_082165DA
+ thumb_func_end sub_804FD30
+
+ thumb_func_start sub_804FE70
+sub_804FE70: @ 804FE70
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ ldr r0, _0804FF40 @ =gSpecialVar_0x8004
+ ldrh r0, [r0]
+ cmp r0, 0
+ beq _0804FEB6
+ ldr r3, _0804FF44 @ =gSendCmd
+ ldrh r0, [r3, 0x4]
+ ldr r2, _0804FF48 @ =gRecvCmds
+ cmp r0, 0
+ beq _0804FE98
+ movs r1, 0
+ strh r0, [r2, 0x10]
+ ldr r0, _0804FF4C @ =0x00004444
+ strh r0, [r2]
+ strh r1, [r3, 0x4]
+_0804FE98:
+ ldr r0, _0804FF48 @ =gRecvCmds
+ ldr r3, _0804FF4C @ =0x00004444
+ adds r1, r2, 0x2
+ adds r2, r0, 0
+ adds r2, 0x12
+ movs r6, 0x2
+_0804FEA4:
+ ldrh r0, [r2]
+ cmp r0, 0
+ beq _0804FEAC
+ strh r3, [r1]
+_0804FEAC:
+ adds r1, 0x2
+ adds r2, 0x2
+ subs r6, 0x1
+ cmp r6, 0
+ bge _0804FEA4
+_0804FEB6:
+ movs r6, 0
+ ldr r7, _0804FF50 @ =gUnknown_03004854
+ adds r1, r7, 0
+ ldr r0, [r1]
+ adds r0, 0x88
+ ldrb r0, [r0]
+ cmp r6, r0
+ blt _0804FEC8
+ b _0805005C
+_0804FEC8:
+ movs r2, 0
+ str r2, [sp]
+ mov r9, r2
+ ldr r0, _0804FF48 @ =gRecvCmds
+ adds r0, 0x10
+ mov r8, r0
+ ldr r1, _0804FF54 @ =0x00005432
+ mov r10, r1
+_0804FED8:
+ ldr r2, [sp]
+ ldr r1, _0804FF48 @ =gRecvCmds
+ adds r0, r2, r1
+ ldrh r1, [r0]
+ ldr r0, _0804FF4C @ =0x00004444
+ cmp r1, r0
+ beq _0804FEE8
+ b _0805003E
+_0804FEE8:
+ ldr r0, [r7]
+ adds r0, 0xA2
+ adds r0, r2
+ ldrh r5, [r0]
+ mov r2, r8
+ ldrh r4, [r2]
+ ldr r0, _0804FF58 @ =0x00004523
+ cmp r4, r0
+ bne _0804FF60
+ bl sub_804FD30
+ ldr r0, [r7]
+ movs r1, 0x9F
+ lsls r1, 1
+ adds r4, r0, r1
+ adds r0, 0x56
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r1, 0x37
+ bl __divsi3
+ ldrh r1, [r4]
+ adds r1, r0
+ strh r1, [r4]
+ lsls r1, 16
+ ldr r0, _0804FF5C @ =0x03e70000
+ cmp r1, r0
+ bls _0804FF26
+ movs r0, 0xFA
+ lsls r0, 2
+ strh r0, [r4]
+_0804FF26:
+ lsls r1, r5, 24
+ lsrs r1, 24
+ ldr r0, _0804FF58 @ =0x00004523
+ bl sub_804FC48
+ ldr r1, [r7]
+ movs r0, 0xA6
+ lsls r0, 1
+ adds r1, r0
+ add r1, r9
+ ldrh r0, [r1]
+ adds r0, 0x1
+ b _0804FFCA
+ .align 2, 0
+_0804FF40: .4byte gSpecialVar_0x8004
+_0804FF44: .4byte gSendCmd
+_0804FF48: .4byte gRecvCmds
+_0804FF4C: .4byte 0x00004444
+_0804FF50: .4byte gUnknown_03004854
+_0804FF54: .4byte 0x00005432
+_0804FF58: .4byte 0x00004523
+_0804FF5C: .4byte 0x03e70000
+_0804FF60:
+ cmp r4, r10
+ bne _0804FF9E
+ mov r0, r10
+ bl sub_804FD30
+ ldr r0, [r7]
+ movs r1, 0x9F
+ lsls r1, 1
+ adds r4, r0, r1
+ adds r0, 0x56
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r1, 0x46
+ bl __divsi3
+ ldrh r1, [r4]
+ adds r1, r0
+ strh r1, [r4]
+ lsls r1, r5, 24
+ lsrs r1, 24
+ mov r0, r10
+ bl sub_804FC48
+ ldr r1, [r7]
+ movs r0, 0xA7
+ lsls r0, 1
+ adds r1, r0
+ add r1, r9
+ ldrh r0, [r1]
+ adds r0, 0x1
+ b _0804FFCA
+_0804FF9E:
+ ldr r0, _08050018 @ =0x00002345
+ cmp r4, r0
+ bne _0804FFD6
+ lsls r1, r5, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_804FC48
+ adds r0, r4, 0
+ bl sub_804FD30
+ ldr r0, [r7]
+ movs r1, 0xA8
+ lsls r1, 1
+ adds r0, r1
+ mov r2, r9
+ adds r1, r0, r2
+ ldrh r2, [r1]
+ ldr r0, _0805001C @ =0x000003e6
+ cmp r2, r0
+ bhi _0804FFCC
+ adds r0, r2, 0x1
+_0804FFCA:
+ strh r0, [r1]
+_0804FFCC:
+ mov r0, r8
+ ldrh r1, [r0]
+ ldr r0, _08050018 @ =0x00002345
+ cmp r1, r0
+ beq _0804FFE4
+_0804FFD6:
+ mov r1, r8
+ ldrh r0, [r1]
+ ldr r2, _08050020 @ =0x00004523
+ cmp r0, r2
+ beq _0804FFE4
+ cmp r0, r10
+ bne _0805003E
+_0804FFE4:
+ ldr r0, _08050024 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r2, r0, 0
+ adds r2, 0x56
+ movs r0, 0
+ ldrsh r1, [r2, r0]
+ ldr r0, _08050028 @ =0x000005dc
+ cmp r1, r0
+ ble _08050034
+ adds r0, r1, 0
+ ldr r2, _0805002C @ =0xfffffd12
+ adds r0, r2
+ movs r1, 0x14
+ bl __divsi3
+ adds r1, r0, 0
+ movs r0, 0x80
+ lsls r0, 1
+ adds r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r0, _08050030 @ =gMPlay_BGM
+ bl m4aMPlayTempoControl
+ b _0805003E
+ .align 2, 0
+_08050018: .4byte 0x00002345
+_0805001C: .4byte 0x000003e6
+_08050020: .4byte 0x00004523
+_08050024: .4byte gUnknown_03004854
+_08050028: .4byte 0x000005dc
+_0805002C: .4byte 0xfffffd12
+_08050030: .4byte gMPlay_BGM
+_08050034:
+ ldr r0, _08050098 @ =gMPlay_BGM
+ movs r1, 0x80
+ lsls r1, 1
+ bl m4aMPlayTempoControl
+_0805003E:
+ ldr r1, [sp]
+ adds r1, 0x2
+ str r1, [sp]
+ movs r2, 0x6
+ add r9, r2
+ movs r0, 0x2
+ add r8, r0
+ adds r6, 0x1
+ ldr r7, _0805009C @ =gUnknown_03004854
+ ldr r0, [r7]
+ adds r0, 0x88
+ ldrb r0, [r0]
+ cmp r6, r0
+ bge _0805005C
+ b _0804FED8
+_0805005C:
+ ldr r0, _080500A0 @ =gSpecialVar_0x8004
+ ldrh r0, [r0]
+ cmp r0, 0
+ beq _08050088
+ movs r6, 0
+ ldr r3, _0805009C @ =gUnknown_03004854
+ ldr r0, [r3]
+ adds r0, 0x88
+ ldrb r0, [r0]
+ cmp r6, r0
+ bge _08050088
+ movs r2, 0
+ ldr r1, _080500A4 @ =gRecvCmds
+_08050076:
+ strh r2, [r1]
+ strh r2, [r1, 0x10]
+ adds r1, 0x2
+ adds r6, 0x1
+ ldr r0, [r3]
+ adds r0, 0x88
+ ldrb r0, [r0]
+ cmp r6, r0
+ blt _08050076
+_08050088:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08050098: .4byte gMPlay_BGM
+_0805009C: .4byte gUnknown_03004854
+_080500A0: .4byte gSpecialVar_0x8004
+_080500A4: .4byte gRecvCmds
+ thumb_func_end sub_804FE70
+
+ thumb_func_start sub_80500A8
+sub_80500A8: @ 80500A8
+ push {r4-r6,lr}
+ movs r6, 0
+ ldr r5, _080500EC @ =gUnknown_03004854
+ ldr r4, [r5]
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r0, 23
+ adds r4, 0xA2
+ adds r4, r0
+ ldrb r3, [r4]
+ ldr r0, [r5]
+ adds r0, 0x6F
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0805018A
+ ldr r0, _080500F0 @ =gSaveBlock2
+ ldrb r0, [r0, 0x13]
+ cmp r0, 0x2
+ bne _080500FC
+ ldr r2, _080500F4 @ =gMain
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0805010A
+ ldrh r0, [r2, 0x28]
+ ldr r1, _080500F8 @ =0x00000201
+ bics r1, r0
+ negs r0, r1
+ orrs r0, r1
+ lsrs r6, r0, 31
+ b _0805010A
+ .align 2, 0
+_080500EC: .4byte gUnknown_03004854
+_080500F0: .4byte gSaveBlock2
+_080500F4: .4byte gMain
+_080500F8: .4byte 0x00000201
+_080500FC:
+ ldr r0, _0805015C @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0805010A
+ movs r6, 0x1
+_0805010A:
+ cmp r6, 0
+ beq _0805018A
+ ldr r4, _08050160 @ =gUnknown_03004854
+ ldr r1, [r4]
+ lsls r2, r3, 1
+ adds r0, r1, 0
+ adds r0, 0x9A
+ adds r0, r2
+ adds r1, 0x5C
+ ldrh r0, [r0]
+ adds r1, r0
+ ldrb r1, [r1]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08050164 @ =gSprites
+ adds r0, r1
+ adds r1, r3, 0x4
+ lsls r1, 24
+ lsrs r1, 24
+ bl StartSpriteAnim
+ ldr r0, [r4]
+ adds r0, 0x54
+ ldrh r4, [r0]
+ bl GetMultiplayerId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl task_tutorial_oak_boy_girl
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _08050170
+ ldr r1, _08050168 @ =gSendCmd
+ ldr r0, _0805016C @ =0x00004523
+ b _08050188
+ .align 2, 0
+_0805015C: .4byte gMain
+_08050160: .4byte gUnknown_03004854
+_08050164: .4byte gSprites
+_08050168: .4byte gSendCmd
+_0805016C: .4byte 0x00004523
+_08050170:
+ cmp r0, 0x1
+ bne _08050184
+ ldr r1, _0805017C @ =gSendCmd
+ ldr r0, _08050180 @ =0x00005432
+ b _08050188
+ .align 2, 0
+_0805017C: .4byte gSendCmd
+_08050180: .4byte 0x00005432
+_08050184:
+ ldr r1, _080501E4 @ =gSendCmd
+ ldr r0, _080501E8 @ =0x00002345
+_08050188:
+ strh r0, [r1, 0x4]
+_0805018A:
+ ldr r2, _080501EC @ =gUnknown_03004854
+ ldr r1, [r2]
+ adds r1, 0x7E
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x5
+ bls _080501BA
+ ldr r0, [r2]
+ adds r1, r0, 0
+ adds r1, 0x56
+ ldrh r3, [r1]
+ movs r4, 0
+ ldrsh r0, [r1, r4]
+ cmp r0, 0x80
+ ble _080501B2
+ subs r0, r3, 0x1
+ strh r0, [r1]
+_080501B2:
+ ldr r0, [r2]
+ adds r0, 0x7E
+ movs r1, 0
+ strb r1, [r0]
+_080501BA:
+ ldr r0, _080501F0 @ =gUnknown_020297ED
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080501DE
+ ldr r0, _080501F4 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _080501DE
+ ldr r0, [r2]
+ ldr r1, _080501F8 @ =0x0000014b
+ adds r2, r0, r1
+ ldrb r0, [r2]
+ movs r1, 0x1
+ eors r0, r1
+ strb r0, [r2]
+_080501DE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080501E4: .4byte gSendCmd
+_080501E8: .4byte 0x00002345
+_080501EC: .4byte gUnknown_03004854
+_080501F0: .4byte gUnknown_020297ED
+_080501F4: .4byte gMain
+_080501F8: .4byte 0x0000014b
+ thumb_func_end sub_80500A8
+
+ thumb_func_start sub_80501FC
+sub_80501FC: @ 80501FC
+ push {r4-r6,lr}
+ bl sub_8051474
+ ldr r4, _08050294 @ =gUnknown_03004854
+ ldr r0, [r4]
+ movs r1, 0x96
+ lsls r1, 1
+ adds r2, r0, r1
+ ldr r1, [r2]
+ ldr r0, _08050298 @ =0x00057e03
+ cmp r1, r0
+ bhi _08050218
+ adds r0, r1, 0x1
+ str r0, [r2]
+_08050218:
+ bl sub_80500A8
+ ldr r1, [r4]
+ adds r0, r1, 0
+ adds r0, 0x56
+ ldrh r0, [r0]
+ movs r5, 0x9F
+ lsls r5, 1
+ adds r1, r5
+ ldrh r1, [r1]
+ bl SetLinkDebugValues
+ bl sub_804FE70
+ ldr r0, [r4]
+ adds r0, r5
+ ldrh r0, [r0]
+ movs r6, 0xFA
+ lsls r6, 2
+ adds r1, r6, 0
+ bl sub_805194C
+ ldr r0, [r4]
+ adds r0, 0x56
+ ldrh r0, [r0]
+ bl sub_8051A3C
+ bl sub_8051B18
+ bl sub_805123C
+ ldr r2, [r4]
+ adds r3, r2, 0
+ adds r3, 0x6F
+ ldrb r0, [r3]
+ cmp r0, 0
+ bne _0805027E
+ movs r1, 0xA0
+ lsls r1, 1
+ adds r0, r2, r1
+ ldrh r1, [r0]
+ ldr r0, _0805029C @ =0x000003e7
+ cmp r1, r0
+ bls _0805027E
+ adds r0, r2, r5
+ strh r6, [r0]
+ movs r0, 0x1
+ strb r0, [r3]
+ ldr r0, _080502A0 @ =sub_8050954
+ bl SetMainCallback2
+_0805027E:
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08050294: .4byte gUnknown_03004854
+_08050298: .4byte 0x00057e03
+_0805029C: .4byte 0x000003e7
+_080502A0: .4byte sub_8050954
+ thumb_func_end sub_80501FC
+
+ thumb_func_start help_system_is_not_first_time
+help_system_is_not_first_time: @ 80502A4
+ push {r4,r5,lr}
+ lsls r1, 24
+ lsls r2, 24
+ lsrs r1, 20
+ adds r4, r1, r0
+ lsrs r2, 20
+ adds r5, r2, r0
+ ldrh r0, [r4]
+ ldrh r1, [r5]
+ cmp r0, r1
+ bne _080502E2
+ adds r0, r4, 0x2
+ adds r1, r5, 0x2
+ bl StringCompare
+ cmp r0, 0
+ bne _080502F0
+ ldr r0, [r4, 0x8]
+ ldr r2, _080502E8 @ =0xffffff00
+ ands r0, r2
+ ldr r1, [r5, 0x8]
+ ands r1, r2
+ cmp r0, r1
+ bne _080502F0
+ ldr r0, [r4, 0xC]
+ ldr r2, _080502EC @ =0x00ffffff
+ ands r0, r2
+ ldr r1, [r5, 0xC]
+ ands r1, r2
+ cmp r0, r1
+ bne _080502F0
+_080502E2:
+ movs r0, 0x1
+ b _080502F2
+ .align 2, 0
+_080502E8: .4byte 0xffffff00
+_080502EC: .4byte 0x00ffffff
+_080502F0:
+ movs r0, 0
+_080502F2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end help_system_is_not_first_time
+
+ thumb_func_start sub_80502F8
+sub_80502F8: @ 80502F8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ mov r10, r0
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x10]
+ lsls r3, 24
+ lsrs r3, 24
+ mov r2, sp
+ movs r4, 0x5
+_08050314:
+ ldrh r0, [r1]
+ strh r0, [r2]
+ adds r1, 0x2
+ adds r2, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _08050314
+ movs r6, 0
+ mov r1, sp
+ movs r4, 0x4
+_08050328:
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _08050332
+ adds r6, 0x1
+_08050332:
+ adds r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _08050328
+ cmp r6, 0x5
+ beq _08050386
+ cmp r3, 0x3
+ bhi _08050386
+ movs r4, 0
+ ldr r3, [sp, 0x10]
+ cmp r4, r3
+ bge _0805039E
+ mov r3, r10
+_0805034C:
+ movs r6, 0
+ ldr r7, [sp, 0x10]
+ cmp r6, r7
+ bge _08050394
+ mov r9, r3
+ mov r5, r10
+ lsls r0, r4, 24
+ mov r8, r0
+_0805035C:
+ mov r1, r9
+ ldrh r0, [r1]
+ ldrh r2, [r5]
+ cmp r0, r2
+ bne _0805038A
+ cmp r4, r6
+ beq _0805038A
+ cmp r0, 0xAF
+ bne _08050386
+ lsls r2, r6, 24
+ lsrs r2, 24
+ mov r0, r10
+ mov r7, r8
+ lsrs r1, r7, 24
+ str r3, [sp, 0xC]
+ bl help_system_is_not_first_time
+ lsls r0, 24
+ ldr r3, [sp, 0xC]
+ cmp r0, 0
+ beq _0805038A
+_08050386:
+ movs r0, 0xC
+ b _080504DE
+_0805038A:
+ adds r5, 0x10
+ adds r6, 0x1
+ ldr r0, [sp, 0x10]
+ cmp r6, r0
+ blt _0805035C
+_08050394:
+ adds r3, 0x10
+ adds r4, 0x1
+ ldr r1, [sp, 0x10]
+ cmp r4, r1
+ blt _0805034C
+_0805039E:
+ movs r2, 0
+ mov r1, sp
+ movs r4, 0x4
+_080503A4:
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ ble _080503B2
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+_080503B2:
+ adds r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080503A4
+ cmp r2, 0x3
+ bls _080503C2
+ movs r0, 0xD
+ b _080504DE
+_080503C2:
+ cmp r2, 0x3
+ bne _080503CA
+ movs r0, 0xB
+ b _080504DE
+_080503CA:
+ movs r4, 0
+ mov r1, sp
+_080503CE:
+ movs r7, 0
+ ldrsh r0, [r1, r7]
+ cmp r0, 0x32
+ ble _080503D8
+ b _080504D8
+_080503D8:
+ adds r1, 0x2
+ adds r4, 0x1
+ cmp r4, 0x4
+ ble _080503CE
+ cmp r2, 0x1
+ bne _0805042A
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ ble _080503F2
+ movs r0, 0x1
+ b _080504DE
+_080503F2:
+ mov r0, sp
+ ldrh r0, [r0, 0x2]
+ lsls r0, 16
+ cmp r0, 0
+ ble _08050400
+ movs r0, 0x2
+ b _080504DE
+_08050400:
+ mov r0, sp
+ movs r3, 0x4
+ ldrsh r0, [r0, r3]
+ cmp r0, 0
+ ble _0805040E
+ movs r0, 0x3
+ b _080504DE
+_0805040E:
+ mov r0, sp
+ movs r4, 0x6
+ ldrsh r0, [r0, r4]
+ cmp r0, 0
+ ble _0805041C
+ movs r0, 0x4
+ b _080504DE
+_0805041C:
+ mov r0, sp
+ movs r7, 0x8
+ ldrsh r0, [r0, r7]
+ cmp r0, 0
+ ble _0805042A
+ movs r0, 0x5
+ b _080504DE
+_0805042A:
+ cmp r2, 0x2
+ bne _080504DC
+ movs r4, 0
+ ldr r5, _08050474 @ =gUnknown_03000520
+ mov r1, sp
+ adds r2, r5, 0
+_08050436:
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ ble _08050442
+ strh r4, [r2]
+ adds r2, 0x2
+_08050442:
+ adds r1, 0x2
+ adds r4, 0x1
+ cmp r4, 0x4
+ ble _08050436
+ movs r4, 0
+ ldrsh r3, [r5, r4]
+ lsls r0, r3, 1
+ mov r7, sp
+ adds r1, r7, r0
+ movs r0, 0x2
+ ldrsh r2, [r5, r0]
+ lsls r0, r2, 1
+ add r0, sp
+ movs r4, 0
+ ldrsh r1, [r1, r4]
+ movs r7, 0
+ ldrsh r0, [r0, r7]
+ cmp r1, r0
+ blt _08050498
+ adds r0, r3, 0
+ cmp r0, 0
+ bne _08050478
+ lsls r0, r2, 16
+ b _080504A2
+ .align 2, 0
+_08050474: .4byte gUnknown_03000520
+_08050478:
+ cmp r0, 0x1
+ bne _08050480
+ lsls r0, r2, 16
+ b _080504AE
+_08050480:
+ cmp r0, 0x2
+ bne _08050488
+ lsls r0, r2, 16
+ b _080504BA
+_08050488:
+ cmp r0, 0x3
+ bne _08050490
+ lsls r0, r2, 16
+ b _080504C6
+_08050490:
+ cmp r0, 0x4
+ bne _080504DC
+ lsls r0, r2, 16
+ b _080504D2
+_08050498:
+ movs r2, 0x2
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ bne _080504A8
+ lsls r0, r3, 16
+_080504A2:
+ movs r1, 0x6
+ orrs r0, r1
+ b _080504DE
+_080504A8:
+ cmp r0, 0x1
+ bne _080504B4
+ lsls r0, r3, 16
+_080504AE:
+ movs r1, 0x7
+ orrs r0, r1
+ b _080504DE
+_080504B4:
+ cmp r0, 0x2
+ bne _080504C0
+ lsls r0, r3, 16
+_080504BA:
+ movs r1, 0x8
+ orrs r0, r1
+ b _080504DE
+_080504C0:
+ cmp r0, 0x3
+ bne _080504CC
+ lsls r0, r3, 16
+_080504C6:
+ movs r1, 0x9
+ orrs r0, r1
+ b _080504DE
+_080504CC:
+ cmp r0, 0x4
+ bne _080504DC
+ lsls r0, r3, 16
+_080504D2:
+ movs r1, 0xA
+ orrs r0, r1
+ b _080504DE
+_080504D8:
+ movs r0, 0xE
+ b _080504DE
+_080504DC:
+ movs r0, 0
+_080504DE:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80502F8
+
+ thumb_func_start sub_80504F0
+sub_80504F0: @ 80504F0
+ ldr r1, _080504F8 @ =gUnknown_0300052C
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_080504F8: .4byte gUnknown_0300052C
+ thumb_func_end sub_80504F0
+
+ thumb_func_start unref_sub_80504FC
+unref_sub_80504FC: @ 80504FC
+ ldr r0, _08050504 @ =gUnknown_0300052C
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_08050504: .4byte gUnknown_0300052C
+ thumb_func_end unref_sub_80504FC
+
+ thumb_func_start sub_8050508
+sub_8050508: @ 8050508
+ ldr r1, _08050510 @ =gUnknown_0300052E
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_08050510: .4byte gUnknown_0300052E
+ thumb_func_end sub_8050508
+
+ thumb_func_start unref_sub_8050514
+unref_sub_8050514: @ 8050514
+ ldr r0, _0805051C @ =gUnknown_0300052E
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_0805051C: .4byte gUnknown_0300052E
+ thumb_func_end unref_sub_8050514
+
+ thumb_func_start sub_8050520
+sub_8050520: @ 8050520
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ str r0, [sp]
+ mov r8, r1
+ str r3, [sp, 0x4]
+ ldr r0, [sp, 0x30]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r9, r2
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x8]
+ ldr r7, _080505DC @ =gUnknown_03000510
+ adds r2, r7, 0
+ movs r1, 0
+ adds r0, r7, 0
+ adds r0, 0xA
+_0805054A:
+ strh r1, [r0]
+ subs r0, 0x2
+ cmp r0, r2
+ bge _0805054A
+ movs r6, 0
+ cmp r6, r9
+ bge _08050580
+ ldr r0, _080505DC @ =gUnknown_03000510
+ mov r12, r0
+ ldr r5, [sp]
+ adds r5, 0x9
+_08050560:
+ movs r3, 0
+ adds r4, r5, 0
+ mov r2, r12
+_08050566:
+ adds r1, r4, r3
+ ldrh r0, [r2]
+ ldrb r1, [r1]
+ adds r0, r1
+ strh r0, [r2]
+ adds r2, 0x2
+ adds r3, 0x1
+ cmp r3, 0x5
+ ble _08050566
+ adds r5, 0x10
+ adds r6, 0x1
+ cmp r6, r9
+ blt _08050560
+_08050580:
+ movs r1, 0
+ ldrsh r3, [r7, r1]
+ ldrh r0, [r7]
+ ldrh r1, [r7, 0x2]
+ subs r0, r1
+ strh r0, [r7]
+ ldrh r0, [r7, 0x4]
+ subs r1, r0
+ strh r1, [r7, 0x2]
+ ldrh r1, [r7, 0x6]
+ subs r0, r1
+ strh r0, [r7, 0x4]
+ ldrh r0, [r7, 0x8]
+ subs r1, r0
+ strh r1, [r7, 0x6]
+ subs r0, r3
+ strh r0, [r7, 0x8]
+ movs r3, 0
+ movs r2, 0
+ adds r1, r7, 0
+ movs r6, 0x4
+_080505AA:
+ movs r4, 0
+ ldrsh r0, [r1, r4]
+ cmp r0, 0
+ bge _080505B6
+ strh r2, [r1]
+ adds r3, 0x1
+_080505B6:
+ adds r1, 0x2
+ subs r6, 0x1
+ cmp r6, 0
+ bge _080505AA
+ lsls r0, r3, 24
+ lsrs r0, 24
+ mov r10, r0
+ movs r4, 0
+ ldr r1, _080505DC @ =gUnknown_03000510
+ movs r6, 0x4
+_080505CA:
+ ldrh r2, [r1]
+ movs r5, 0
+ ldrsh r0, [r1, r5]
+ cmp r0, 0
+ ble _080505E4
+ cmp r0, r3
+ bge _080505E0
+ strh r4, [r1]
+ b _080505E4
+ .align 2, 0
+_080505DC: .4byte gUnknown_03000510
+_080505E0:
+ subs r0, r2, r3
+ strh r0, [r1]
+_080505E4:
+ adds r1, 0x2
+ subs r6, 0x1
+ cmp r6, 0
+ bge _080505CA
+ ldr r1, _080506C4 @ =gUnknown_03000510
+ ldr r2, _080506C8 @ =gUnknown_03000530
+ movs r6, 0x4
+_080505F2:
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ stm r2!, {r0}
+ adds r1, 0x2
+ subs r6, 0x1
+ cmp r6, 0
+ bge _080505F2
+ ldr r1, _080506CC @ =0x0000014d
+ ldr r0, [sp, 0x8]
+ bl __udivsi3
+ lsls r0, 16
+ lsrs r0, 16
+ adds r3, r0, 0
+ adds r3, 0x64
+ ldr r4, _080506D0 @ =gUnknown_0300055C
+ str r3, [r4]
+ movs r6, 0x4
+_08050616:
+ movs r0, 0
+ ldrsh r5, [r7, r0]
+ adds r0, r5, 0
+ muls r0, r3
+ movs r1, 0xA
+ str r3, [sp, 0xC]
+ bl __divsi3
+ adds r5, r0, 0
+ movs r1, 0xA
+ bl __modsi3
+ adds r4, r0, 0
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl __divsi3
+ adds r5, r0, 0
+ ldr r3, [sp, 0xC]
+ cmp r4, 0x4
+ ble _08050642
+ adds r5, 0x1
+_08050642:
+ strh r5, [r7]
+ adds r7, 0x2
+ subs r6, 0x1
+ cmp r6, 0
+ bge _08050616
+ ldr r1, _080506C4 @ =gUnknown_03000510
+ ldr r2, _080506D4 @ =gUnknown_03000548
+ movs r6, 0x4
+_08050652:
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ stm r2!, {r0}
+ adds r1, 0x2
+ subs r6, 0x1
+ cmp r6, 0
+ bge _08050652
+ ldr r4, _080506C4 @ =gUnknown_03000510
+ ldr r0, [sp]
+ adds r1, r4, 0
+ mov r2, r9
+ mov r3, r10
+ bl sub_80502F8
+ mov r5, r8
+ strb r0, [r5]
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ mov r1, r9
+ bl __divsi3
+ mov r3, r9
+ subs r0, r3
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ bge _0805068C
+ movs r0, 0
+ strh r0, [r4, 0xA]
+_0805068C:
+ mov r5, r8
+ ldrb r0, [r5]
+ cmp r0, 0xC
+ bne _080506E6
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r3, r0, 16
+ movs r6, 0
+ ldr r0, _080506D8 @ =gUnknown_082165DF
+ adds r0, r3, r0
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ movs r4, 0x1
+ movs r3, 0x2
+_080506B4:
+ adds r2, r0, 0
+ asrs r2, r6
+ ands r2, r4
+ cmp r2, 0
+ beq _080506DC
+ strh r3, [r1]
+ b _080506DE
+ .align 2, 0
+_080506C4: .4byte gUnknown_03000510
+_080506C8: .4byte gUnknown_03000530
+_080506CC: .4byte 0x0000014d
+_080506D0: .4byte gUnknown_0300055C
+_080506D4: .4byte gUnknown_03000548
+_080506D8: .4byte gUnknown_082165DF
+_080506DC:
+ strh r2, [r1]
+_080506DE:
+ adds r1, 0x2
+ adds r6, 0x1
+ cmp r6, 0x4
+ ble _080506B4
+_080506E6:
+ ldr r7, _08050740 @ =gUnknown_03000510
+ movs r2, 0xFF
+ adds r1, r7, 0
+ movs r6, 0x5
+_080506EE:
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0xFF
+ ble _080506F8
+ strh r2, [r1]
+_080506F8:
+ adds r1, 0x2
+ subs r6, 0x1
+ cmp r6, 0
+ bge _080506EE
+ ldrh r0, [r7]
+ mov r4, r8
+ strb r0, [r4, 0x1]
+ ldrh r0, [r7, 0x2]
+ strb r0, [r4, 0x2]
+ ldrh r0, [r7, 0x4]
+ strb r0, [r4, 0x3]
+ ldrh r0, [r7, 0x6]
+ strb r0, [r4, 0x4]
+ ldrh r0, [r7, 0x8]
+ strb r0, [r4, 0x5]
+ ldrh r0, [r7, 0xA]
+ strb r0, [r4, 0x6]
+ movs r6, 0
+ adds r2, r7, 0
+_0805071E:
+ ldr r5, [sp, 0x4]
+ adds r1, r5, r6
+ ldrh r0, [r2]
+ strb r0, [r1]
+ adds r2, 0x2
+ adds r6, 0x1
+ cmp r6, 0x5
+ ble _0805071E
+ 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
+_08050740: .4byte gUnknown_03000510
+ thumb_func_end sub_8050520
+
+ thumb_func_start sub_8050744
+sub_8050744: @ 8050744
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r4, [sp, 0xC]
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r4, 16
+ lsrs r4, 16
+ str r4, [sp]
+ bl sub_8050520
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8050744
+
+ thumb_func_start sub_8050760
+sub_8050760: @ 8050760
+ push {r4-r6,lr}
+ ldr r0, _08050780 @ =gUnknown_03004854
+ ldr r0, [r0]
+ movs r2, 0x96
+ lsls r2, 1
+ adds r1, r0, r2
+ ldrh r1, [r1]
+ adds r0, 0x5A
+ ldrh r4, [r0]
+ movs r2, 0
+ ldr r5, _08050784 @ =0x00000383
+ cmp r1, r5
+ bhi _08050788
+ movs r2, 0x5
+ b _080507DA
+ .align 2, 0
+_08050780: .4byte gUnknown_03004854
+_08050784: .4byte 0x00000383
+_08050788:
+ ldr r3, _0805079C @ =0xfffffc7c
+ adds r0, r1, r3
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r3, _080507A0 @ =0x00000257
+ cmp r0, r3
+ bhi _080507A4
+ movs r2, 0x4
+ b _080507DA
+ .align 2, 0
+_0805079C: .4byte 0xfffffc7c
+_080507A0: .4byte 0x00000257
+_080507A4:
+ ldr r6, _080507B4 @ =0xfffffa24
+ adds r0, r1, r6
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, r3
+ bhi _080507B8
+ movs r2, 0x3
+ b _080507DA
+ .align 2, 0
+_080507B4: .4byte 0xfffffa24
+_080507B8:
+ ldr r3, _080507C8 @ =0xfffff7cc
+ adds r0, r1, r3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, r5
+ bhi _080507CC
+ movs r2, 0x2
+ b _080507DA
+ .align 2, 0
+_080507C8: .4byte 0xfffff7cc
+_080507CC:
+ ldr r6, _080507F8 @ =0xfffff31c
+ adds r0, r1, r6
+ lsls r0, 16
+ ldr r1, _080507FC @ =0x012b0000
+ cmp r0, r1
+ bhi _080507DA
+ movs r2, 0x1
+_080507DA:
+ lsls r0, r2, 16
+ asrs r0, 16
+ bl sub_8050508
+ movs r2, 0
+ cmp r4, 0x40
+ bhi _080508BC
+ adds r0, r4, 0
+ subs r0, 0x32
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _08050804
+ ldr r2, _08050800 @ =0x0000ffff
+ b _080508BC
+ .align 2, 0
+_080507F8: .4byte 0xfffff31c
+_080507FC: .4byte 0x012b0000
+_08050800: .4byte 0x0000ffff
+_08050804:
+ adds r0, r4, 0
+ subs r0, 0x64
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _08050818
+ ldr r2, _08050814 @ =0x0000fffe
+ b _080508BC
+ .align 2, 0
+_08050814: .4byte 0x0000fffe
+_08050818:
+ adds r0, r4, 0
+ subs r0, 0x96
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _0805082C
+ ldr r2, _08050828 @ =0x0000fffd
+ b _080508BC
+ .align 2, 0
+_08050828: .4byte 0x0000fffd
+_0805082C:
+ adds r0, r4, 0
+ subs r0, 0xC8
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _08050840
+ ldr r2, _0805083C @ =0x0000fffc
+ b _080508BC
+ .align 2, 0
+_0805083C: .4byte 0x0000fffc
+_08050840:
+ adds r0, r4, 0
+ subs r0, 0xFA
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _08050854
+ ldr r2, _08050850 @ =0x0000fffb
+ b _080508BC
+ .align 2, 0
+_08050850: .4byte 0x0000fffb
+_08050854:
+ ldr r1, _08050864 @ =0xfffffea2
+ adds r0, r4, r1
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _0805086C
+ ldr r2, _08050868 @ =0x0000fffa
+ b _080508BC
+ .align 2, 0
+_08050864: .4byte 0xfffffea2
+_08050868: .4byte 0x0000fffa
+_0805086C:
+ ldr r3, _0805087C @ =0xfffffe70
+ adds r0, r4, r3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _08050884
+ ldr r2, _08050880 @ =0x0000fff9
+ b _080508BC
+ .align 2, 0
+_0805087C: .4byte 0xfffffe70
+_08050880: .4byte 0x0000fff9
+_08050884:
+ ldr r6, _08050894 @ =0xfffffe0c
+ adds r0, r4, r6
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _0805089C
+ ldr r2, _08050898 @ =0x0000fff8
+ b _080508BC
+ .align 2, 0
+_08050894: .4byte 0xfffffe0c
+_08050898: .4byte 0x0000fff8
+_0805089C:
+ ldr r1, _080508AC @ =0xfffffdda
+ adds r0, r4, r1
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x31
+ bhi _080508B4
+ ldr r2, _080508B0 @ =0x0000fff7
+ b _080508BC
+ .align 2, 0
+_080508AC: .4byte 0xfffffdda
+_080508B0: .4byte 0x0000fff7
+_080508B4:
+ ldr r0, _080508CC @ =0x00000257
+ cmp r4, r0
+ bls _080508BC
+ ldr r2, _080508D0 @ =0x0000fff6
+_080508BC:
+ lsls r0, r2, 16
+ asrs r0, 16
+ bl sub_80504F0
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080508CC: .4byte 0x00000257
+_080508D0: .4byte 0x0000fff6
+ thumb_func_end sub_8050760
+
+ thumb_func_start sub_80508D4
+sub_80508D4: @ 80508D4
+ push {lr}
+ ldr r2, _080508F8 @ =gUnknown_03004854
+ ldr r1, [r2]
+ adds r1, 0xAA
+ strb r0, [r1]
+ ldr r0, [r2]
+ adds r0, 0xAA
+ ldrb r1, [r0]
+ lsls r1, 28
+ movs r0, 0x90
+ lsls r0, 23
+ adds r1, r0
+ lsrs r1, 24
+ movs r0, 0xC0
+ bl sub_814A880
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080508F8: .4byte gUnknown_03004854
+ thumb_func_end sub_80508D4
+
+ thumb_func_start sub_80508FC
+sub_80508FC: @ 80508FC
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r4, _08050944 @ =gUnknown_03004854
+ ldr r0, [r4]
+ adds r0, 0xAA
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x17
+ movs r1, 0x8
+ movs r2, 0x1C
+ movs r3, 0xD
+ bl MenuDrawTextWindow
+ ldr r1, _08050948 @ =0x0000ffff
+ ldr r3, _0805094C @ =0x00002d9f
+ movs r0, 0x20
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0xC
+ bl sub_814A5C0
+ ldr r0, _08050950 @ =gOtherText_YesNoTerminating
+ movs r1, 0x18
+ movs r2, 0x9
+ bl MenuPrint
+ ldr r0, [r4]
+ adds r0, 0xAA
+ ldrb r0, [r0]
+ bl sub_80508D4
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08050944: .4byte gUnknown_03004854
+_08050948: .4byte 0x0000ffff
+_0805094C: .4byte 0x00002d9f
+_08050950: .4byte gOtherText_YesNoTerminating
+ thumb_func_end sub_80508FC
+
+ thumb_func_start sub_8050954
+sub_8050954: @ 8050954
+ push {r4-r7,lr}
+ bl sub_8051474
+ bl GetMultiplayerId
+ ldr r0, _08050978 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0x6F
+ ldrb r0, [r0]
+ subs r0, 0x1
+ cmp r0, 0xC
+ bls _0805096E
+ b _08050CB6
+_0805096E:
+ lsls r0, 2
+ ldr r1, _0805097C @ =_08050980
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08050978: .4byte gUnknown_03004854
+_0805097C: .4byte _08050980
+ .align 2, 0
+_08050980:
+ .4byte _080509B4
+ .4byte _080509F8
+ .4byte _08050A4C
+ .4byte _08050A94
+ .4byte _08050AD0
+ .4byte _08050ADE
+ .4byte _08050B08
+ .4byte _08050B34
+ .4byte _08050B42
+ .4byte _08050B58
+ .4byte _08050BE0
+ .4byte _08050C64
+ .4byte _08050C98
+_080509B4:
+ bl ClearLinkCallback
+ ldr r0, _080509C8 @ =gMPlay_BGM
+ movs r1, 0x80
+ lsls r1, 1
+ bl m4aMPlayTempoControl
+ movs r4, 0
+ b _080509E4
+ .align 2, 0
+_080509C8: .4byte gMPlay_BGM
+_080509CC:
+ ldr r0, _080509F0 @ =gUnknown_03004854
+ ldr r0, [r0]
+ movs r1, 0xA4
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r4
+ ldrb r0, [r0]
+ bl DestroyTask
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_080509E4:
+ ldr r0, _080509F4 @ =gSpecialVar_0x8004
+ ldrh r0, [r0]
+ cmp r4, r0
+ bcc _080509CC
+ b _08050C82
+ .align 2, 0
+_080509F0: .4byte gUnknown_03004854
+_080509F4: .4byte gSpecialVar_0x8004
+_080509F8:
+ ldr r1, _08050A24 @ =gUnknown_03004854
+ ldr r3, [r1]
+ adds r2, r3, 0
+ adds r2, 0x56
+ ldrh r0, [r2]
+ subs r0, 0x20
+ strh r0, [r2]
+ lsls r0, 16
+ adds r4, r1, 0
+ cmp r0, 0
+ bgt _08050A40
+ movs r0, 0
+ strh r0, [r2]
+ ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08050A2C
+ adds r1, r3, 0
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ b _08050A32
+ .align 2, 0
+_08050A24: .4byte gUnknown_03004854
+_08050A28: .4byte gReceivedRemoteLinkPlayers
+_08050A2C:
+ adds r1, r3, 0
+ adds r1, 0x6F
+ movs r0, 0x5
+_08050A32:
+ strb r0, [r1]
+ ldr r0, [r4]
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, _08050A48 @ =gMPlay_SE2
+ bl m4aMPlayStop
+_08050A40:
+ bl sub_804E290
+ b _08050CB6
+ .align 2, 0
+_08050A48: .4byte gMPlay_SE2
+_08050A4C:
+ bl GetMultiplayerId
+ lsls r0, 24
+ cmp r0, 0
+ beq _08050A58
+ b _08050C82
+_08050A58:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ bne _08050A64
+ b _08050CB6
+_08050A64:
+ ldr r4, _08050A90 @ =gUnknown_03004854
+ ldr r3, [r4]
+ movs r2, 0xDE
+ lsls r2, 1
+ adds r1, r3, r2
+ movs r5, 0x96
+ lsls r5, 1
+ adds r0, r3, r5
+ ldr r0, [r0]
+ str r0, [r1]
+ adds r0, r3, 0
+ adds r0, 0x5A
+ ldrh r2, [r0]
+ adds r5, 0x94
+ adds r0, r3, r5
+ strh r2, [r0]
+ movs r0, 0
+ movs r2, 0x28
+ bl SendBlock
+ ldr r1, [r4]
+ b _08050C86
+ .align 2, 0
+_08050A90: .4byte gUnknown_03004854
+_08050A94:
+ bl GetBlockReceivedStatus
+ lsls r0, 24
+ cmp r0, 0
+ bne _08050AA0
+ b _08050CB6
+_08050AA0:
+ ldr r2, _08050AC8 @ =gBlockRecvBuffer
+ ldr r0, _08050ACC @ =gUnknown_03004854
+ ldr r3, [r0]
+ ldrh r0, [r2, 0x4]
+ adds r1, r3, 0
+ adds r1, 0x5A
+ strh r0, [r1]
+ movs r0, 0x96
+ lsls r0, 1
+ adds r1, r3, r0
+ ldr r0, [r2]
+ str r0, [r1]
+ adds r1, r3, 0
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ bl ResetBlockReceivedFlags
+ b _08050CB6
+ .align 2, 0
+_08050AC8: .4byte gBlockRecvBuffer
+_08050ACC: .4byte gUnknown_03004854
+_08050AD0:
+ bl sub_8052228
+ lsls r0, 24
+ cmp r0, 0
+ bne _08050ADC
+ b _08050CB6
+_08050ADC:
+ b _08050C82
+_08050ADE:
+ bl sub_8051C58
+ lsls r0, 24
+ cmp r0, 0
+ bne _08050AEA
+ b _08050CB6
+_08050AEA:
+ ldr r0, _08050AFC @ =gUnknown_03004834
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08050B00
+ movs r0, 0x22
+ bl IncrementGameStat
+ b _08050C82
+ .align 2, 0
+_08050AFC: .4byte gUnknown_03004834
+_08050B00:
+ movs r0, 0x21
+ bl IncrementGameStat
+ b _08050C82
+_08050B08:
+ ldr r0, _08050B2C @ =gUnknown_03004854
+ ldr r1, [r0]
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ movs r0, 0
+ movs r1, 0xE
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrintMessage
+ b _08050CB6
+ .align 2, 0
+_08050B2C: .4byte gUnknown_03004854
+_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt
+_08050B34:
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ bne _08050B40
+ b _08050CB6
+_08050B40:
+ b _08050C82
+_08050B42:
+ ldr r4, _08050B54 @ =gUnknown_03004854
+ ldr r0, [r4]
+ adds r0, 0xAA
+ movs r1, 0
+ strb r1, [r0]
+ bl sub_80508FC
+ ldr r1, [r4]
+ b _08050C86
+ .align 2, 0
+_08050B54: .4byte gUnknown_03004854
+_08050B58:
+ ldr r0, _08050B80 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08050B88
+ ldr r0, _08050B84 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0xAA
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08050B76
+ movs r0, 0x5
+ bl PlaySE
+_08050B76:
+ movs r0, 0
+ bl sub_80508D4
+ b _08050CB6
+ .align 2, 0
+_08050B80: .4byte gMain
+_08050B84: .4byte gUnknown_03004854
+_08050B88:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08050BA8
+ ldr r0, _08050BA4 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0xAA
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _08050BD4
+ movs r0, 0x5
+ bl PlaySE
+ b _08050BD4
+ .align 2, 0
+_08050BA4: .4byte gUnknown_03004854
+_08050BA8:
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08050BB8
+ movs r0, 0x5
+ bl PlaySE
+ b _08050C82
+_08050BB8:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _08050BC2
+ b _08050CB6
+_08050BC2:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, _08050BDC @ =gUnknown_03004854
+ ldr r1, [r0]
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_08050BD4:
+ movs r0, 0x1
+ bl sub_80508D4
+ b _08050CB6
+ .align 2, 0
+_08050BDC: .4byte gUnknown_03004854
+_08050BE0:
+ ldr r6, _08050C10 @ =gSendCmd
+ movs r7, 0
+ ldr r0, _08050C14 @ =0x00002fff
+ strh r0, [r6]
+ ldr r4, _08050C18 @ =gUnknown_03004854
+ ldr r2, [r4]
+ adds r0, r2, 0
+ adds r0, 0xAA
+ ldrb r5, [r0]
+ cmp r5, 0
+ bne _08050C50
+ movs r0, 0x4
+ bl IsBagPocketNonEmpty
+ lsls r0, 24
+ cmp r0, 0
+ bne _08050C20
+ ldr r0, [r4]
+ adds r0, 0x7C
+ movs r1, 0x2
+ strh r1, [r0]
+ ldr r0, _08050C1C @ =0x00009999
+ b _08050C48
+ .align 2, 0
+_08050C10: .4byte gSendCmd
+_08050C14: .4byte 0x00002fff
+_08050C18: .4byte gUnknown_03004854
+_08050C1C: .4byte 0x00009999
+_08050C20:
+ bl sub_810CA00
+ lsls r0, 24
+ asrs r0, 24
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _08050C40
+ ldr r0, [r4]
+ adds r0, 0x7C
+ movs r1, 0x3
+ strh r1, [r0]
+ ldr r0, _08050C3C @ =0x0000aaaa
+ b _08050C48
+ .align 2, 0
+_08050C3C: .4byte 0x0000aaaa
+_08050C40:
+ ldr r0, [r4]
+ adds r0, 0x7C
+ strh r5, [r0]
+ ldr r0, _08050C4C @ =0x00007779
+_08050C48:
+ strh r0, [r6, 0x2]
+ b _08050C82
+ .align 2, 0
+_08050C4C: .4byte 0x00007779
+_08050C50:
+ adds r1, r2, 0
+ adds r1, 0x7C
+ movs r0, 0x1
+ strh r0, [r1]
+ ldr r0, _08050C60 @ =0x00008888
+ strh r0, [r6, 0x2]
+ subs r1, 0xD
+ b _08050C88
+ .align 2, 0
+_08050C60: .4byte 0x00008888
+_08050C64:
+ ldr r0, _08050C70 @ =gUnknown_03004834
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08050C78
+ ldr r0, _08050C74 @ =sub_80510E8
+ b _08050CA4
+ .align 2, 0
+_08050C70: .4byte gUnknown_03004834
+_08050C74: .4byte sub_80510E8
+_08050C78:
+ ldr r0, _08050C90 @ =gOtherText_LinkStandby3
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrintMessage
+_08050C82:
+ ldr r0, _08050C94 @ =gUnknown_03004854
+ ldr r1, [r0]
+_08050C86:
+ adds r1, 0x6F
+_08050C88:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08050CB6
+ .align 2, 0
+_08050C90: .4byte gOtherText_LinkStandby3
+_08050C94: .4byte gUnknown_03004854
+_08050C98:
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ beq _08050CB6
+ ldr r0, _08050CE0 @ =sub_8050E30
+_08050CA4:
+ bl SetMainCallback2
+ ldr r2, _08050CE4 @ =gUnknown_03004854
+ ldr r0, [r2]
+ adds r0, 0x6F
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r2]
+ strb r1, [r0]
+_08050CB6:
+ bl sub_8051B18
+ ldr r0, _08050CE4 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0x56
+ ldrh r0, [r0]
+ bl sub_8051A3C
+ bl sub_805123C
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08050CE0: .4byte sub_8050E30
+_08050CE4: .4byte gUnknown_03004854
+ thumb_func_end sub_8050954
+
+ thumb_func_start sub_8050CE8
+sub_8050CE8: @ 8050CE8
+ push {r4,lr}
+ ldr r1, _08050D08 @ =gUnknown_03004854
+ ldr r0, [r1]
+ movs r2, 0xE2
+ lsls r2, 1
+ adds r0, r2
+ ldr r0, [r0]
+ adds r4, r1, 0
+ cmp r0, 0x6
+ bls _08050CFE
+ b _08050E28
+_08050CFE:
+ lsls r0, 2
+ ldr r1, _08050D0C @ =_08050D10
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08050D08: .4byte gUnknown_03004854
+_08050D0C: .4byte _08050D10
+ .align 2, 0
+_08050D10:
+ .4byte _08050D2C
+ .4byte _08050D44
+ .4byte _08050D70
+ .4byte _08050D80
+ .4byte _08050DA6
+ .4byte _08050DEC
+ .4byte _08050E06
+_08050D2C:
+ bl sub_80084A4
+ ldr r0, _08050D40 @ =gUnknown_03004854
+ ldr r2, [r0]
+ movs r3, 0xE2
+ lsls r3, 1
+ adds r1, r2, r3
+ movs r0, 0x1
+ b _08050DF8
+ .align 2, 0
+_08050D40: .4byte gUnknown_03004854
+_08050D44:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08050E28
+ ldr r0, _08050D68 @ =gUnknown_03004854
+ ldr r1, [r0]
+ movs r2, 0xE2
+ lsls r2, 1
+ adds r1, r2
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ ldr r1, _08050D6C @ =gSoftResetDisabled
+ movs r0, 0x1
+ strb r0, [r1]
+ b _08050E28
+ .align 2, 0
+_08050D68: .4byte gUnknown_03004854
+_08050D6C: .4byte gSoftResetDisabled
+_08050D70:
+ bl sub_8125E2C
+ ldr r0, _08050D7C @ =gUnknown_03004854
+ ldr r2, [r0]
+ b _08050DEE
+ .align 2, 0
+_08050D7C: .4byte gUnknown_03004854
+_08050D80:
+ ldr r1, [r4]
+ movs r2, 0x98
+ lsls r2, 1
+ adds r1, r2
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0xA
+ bne _08050E28
+ bl sub_80084A4
+ ldr r1, [r4]
+ movs r3, 0xE2
+ lsls r3, 1
+ adds r1, r3
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ b _08050E28
+_08050DA6:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08050E28
+ bl sub_8125E6C
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ beq _08050DD0
+ ldr r0, _08050DCC @ =gUnknown_03004854
+ ldr r0, [r0]
+ movs r1, 0xE2
+ lsls r1, 1
+ adds r0, r1
+ movs r1, 0x5
+ str r1, [r0]
+ b _08050E28
+ .align 2, 0
+_08050DCC: .4byte gUnknown_03004854
+_08050DD0:
+ ldr r0, _08050DE8 @ =gUnknown_03004854
+ ldr r1, [r0]
+ movs r3, 0x98
+ lsls r3, 1
+ adds r0, r1, r3
+ str r2, [r0]
+ movs r0, 0xE2
+ lsls r0, 1
+ adds r1, r0
+ movs r0, 0x3
+ str r0, [r1]
+ b _08050E28
+ .align 2, 0
+_08050DE8: .4byte gUnknown_03004854
+_08050DEC:
+ ldr r2, [r4]
+_08050DEE:
+ movs r3, 0xE2
+ lsls r3, 1
+ adds r1, r2, r3
+ ldr r0, [r1]
+ adds r0, 0x1
+_08050DF8:
+ str r0, [r1]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r1, r2, r0
+ movs r0, 0
+ str r0, [r1]
+ b _08050E28
+_08050E06:
+ ldr r1, [r4]
+ movs r2, 0x98
+ lsls r2, 1
+ adds r1, r2
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x5
+ ble _08050E28
+ ldr r1, _08050E24 @ =gSoftResetDisabled
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ b _08050E2A
+ .align 2, 0
+_08050E24: .4byte gSoftResetDisabled
+_08050E28:
+ movs r0, 0
+_08050E2A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8050CE8
+
+ thumb_func_start sub_8050E30
+sub_8050E30: @ 8050E30
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r1, _08050E50 @ =gUnknown_03004854
+ ldr r0, [r1]
+ adds r0, 0x6F
+ ldrb r0, [r0]
+ adds r5, r1, 0
+ cmp r0, 0xC
+ bls _08050E44
+ b _080510AC
+_08050E44:
+ lsls r0, 2
+ ldr r1, _08050E54 @ =_08050E58
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08050E50: .4byte gUnknown_03004854
+_08050E54: .4byte _08050E58
+ .align 2, 0
+_08050E58:
+ .4byte _08050E8C
+ .4byte _08050ED8
+ .4byte _08050F00
+ .4byte _08050F54
+ .4byte _08050F74
+ .4byte _08050F92
+ .4byte _08050FBC
+ .4byte _08050FEC
+ .4byte _08051008
+ .4byte _08051018
+ .4byte _0805103C
+ .4byte _0805107C
+ .4byte _0805109E
+_08050E8C:
+ ldr r1, [r5]
+ adds r0, r1, 0
+ adds r0, 0x70
+ ldrh r2, [r0]
+ ldr r0, _08050EB8 @ =0x00002222
+ cmp r2, r0
+ beq _08050F8A
+ ldr r0, _08050EBC @ =0x00001111
+ cmp r2, r0
+ beq _08050EA2
+ b _080510AC
+_08050EA2:
+ adds r0, r1, 0
+ adds r0, 0x78
+ ldrh r2, [r0]
+ ldr r0, _08050EC0 @ =0x00009999
+ cmp r2, r0
+ bne _08050EC4
+ adds r1, 0x6F
+ movs r0, 0x2
+ strb r0, [r1]
+ b _080510AC
+ .align 2, 0
+_08050EB8: .4byte 0x00002222
+_08050EBC: .4byte 0x00001111
+_08050EC0: .4byte 0x00009999
+_08050EC4:
+ ldr r0, _08050ED4 @ =0x0000aaaa
+ cmp r2, r0
+ bne _08050F8A
+ adds r1, 0x6F
+ movs r0, 0x1
+ strb r0, [r1]
+ b _080510AC
+ .align 2, 0
+_08050ED4: .4byte 0x0000aaaa
+_08050ED8:
+ ldr r0, [r5]
+ adds r0, 0x6F
+ movs r1, 0x3
+ strb r1, [r0]
+ bl DestroyMenuCursor
+ movs r0, 0x17
+ movs r1, 0x8
+ movs r2, 0x1C
+ movs r3, 0xD
+ bl MenuZeroFillWindowRect
+ ldr r4, _08050EF8 @ =gStringVar4
+ ldr r1, _08050EFC @ =gOtherText_OtherCaseIsFull
+ b _08050F1E
+ .align 2, 0
+_08050EF8: .4byte gStringVar4
+_08050EFC: .4byte gOtherText_OtherCaseIsFull
+_08050F00:
+ ldr r1, [r5]
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ bl DestroyMenuCursor
+ movs r0, 0x17
+ movs r1, 0x8
+ movs r2, 0x1C
+ movs r3, 0xD
+ bl MenuZeroFillWindowRect
+ ldr r4, _08050F48 @ =gStringVar4
+ ldr r1, _08050F4C @ =gOtherText_NoBerriesForBlend
+_08050F1E:
+ adds r0, r4, 0
+ bl StringCopy
+ ldr r0, [r5]
+ adds r0, 0x7A
+ ldrh r0, [r0]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ ldr r0, _08050F50 @ =gLinkPlayers + 0x8
+ adds r1, r0
+ adds r0, r4, 0
+ bl de_sub_8073110
+ adds r0, r4, 0
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrintMessage
+ b _080510AC
+ .align 2, 0
+_08050F48: .4byte gStringVar4
+_08050F4C: .4byte gOtherText_NoBerriesForBlend
+_08050F50: .4byte gLinkPlayers + 0x8
+_08050F54:
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ bne _08050F60
+ b _080510AC
+_08050F60:
+ ldr r0, _08050F70 @ =gUnknown_03004854
+ ldr r1, [r0]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r1, r0
+ movs r0, 0
+ str r0, [r2]
+ b _08051094
+ .align 2, 0
+_08050F70: .4byte gUnknown_03004854
+_08050F74:
+ ldr r2, [r5]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r1, r2, r0
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x3C
+ bgt _08050F88
+ b _080510AC
+_08050F88:
+ adds r1, r2, 0
+_08050F8A:
+ adds r1, 0x6F
+ movs r0, 0x5
+ strb r0, [r1]
+ b _080510AC
+_08050F92:
+ movs r0, 0
+ movs r1, 0xE
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ ldr r0, _08050FB4 @ =gMultiText_Saving
+ movs r1, 0x2
+ movs r2, 0xF
+ bl MenuPrint
+ bl sub_80084A4
+ ldr r0, _08050FB8 @ =gUnknown_03004854
+ ldr r1, [r0]
+ b _08051094
+ .align 2, 0
+_08050FB4: .4byte gMultiText_Saving
+_08050FB8: .4byte gUnknown_03004854
+_08050FBC:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ beq _080510AC
+ ldr r3, _08050FE8 @ =gUnknown_03004854
+ ldr r1, [r3]
+ movs r2, 0x98
+ lsls r2, 1
+ adds r0, r1, r2
+ movs r2, 0
+ str r2, [r0]
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r0, [r3]
+ movs r1, 0xE2
+ lsls r1, 1
+ adds r0, r1
+ str r2, [r0]
+ b _080510AC
+ .align 2, 0
+_08050FE8: .4byte gUnknown_03004854
+_08050FEC:
+ bl sub_8050CE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _080510AC
+ movs r0, 0x37
+ bl PlaySE
+ ldr r0, _08051004 @ =gUnknown_03004854
+ ldr r1, [r0]
+ b _08051094
+ .align 2, 0
+_08051004: .4byte gUnknown_03004854
+_08051008:
+ ldr r1, [r5]
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ bl sub_80084A4
+ b _080510AC
+_08051018:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ beq _080510AC
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r0, _08051038 @ =gUnknown_03004854
+ ldr r1, [r0]
+ b _08051094
+ .align 2, 0
+_08051038: .4byte gUnknown_03004854
+_0805103C:
+ ldr r0, _08051064 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0
+ bne _080510AC
+ ldr r2, [r5]
+ adds r0, r2, 0
+ adds r0, 0x70
+ ldrh r1, [r0]
+ ldr r0, _08051068 @ =0x00002222
+ cmp r1, r0
+ bne _08051070
+ ldr r0, _0805106C @ =sub_804E538
+ bl SetMainCallback2
+ b _080510AC
+ .align 2, 0
+_08051064: .4byte gPaletteFade
+_08051068: .4byte 0x00002222
+_0805106C: .4byte sub_804E538
+_08051070:
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r2, r1
+ str r3, [r0]
+ adds r1, r2, 0
+ b _08051094
+_0805107C:
+ ldr r1, [r5]
+ movs r2, 0x98
+ lsls r2, 1
+ adds r1, r2
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x1E
+ ble _080510AC
+ bl sub_800832C
+ ldr r1, [r5]
+_08051094:
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _080510AC
+_0805109E:
+ ldr r0, _080510C8 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080510AC
+ ldr r0, _080510CC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ bl SetMainCallback2
+_080510AC:
+ bl sub_805123C
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080510C8: .4byte gReceivedRemoteLinkPlayers
+_080510CC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end sub_8050E30
+
+ thumb_func_start sub_80510E8
+sub_80510E8: @ 80510E8
+ push {lr}
+ ldr r1, _08051104 @ =gUnknown_03004854
+ ldr r0, [r1]
+ adds r0, 0x6F
+ ldrb r0, [r0]
+ adds r3, r1, 0
+ cmp r0, 0xA
+ bls _080510FA
+ b _0805121E
+_080510FA:
+ lsls r0, 2
+ ldr r1, _08051108 @ =_0805110C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08051104: .4byte gUnknown_03004854
+_08051108: .4byte _0805110C
+ .align 2, 0
+_0805110C:
+ .4byte _08051138
+ .4byte _0805116E
+ .4byte _08051190
+ .4byte _080511BC
+ .4byte _0805121E
+ .4byte _0805121E
+ .4byte _0805121E
+ .4byte _0805121E
+ .4byte _0805121E
+ .4byte _080511D8
+ .4byte _080511F0
+_08051138:
+ ldr r1, [r3]
+ adds r0, r1, 0
+ adds r0, 0x7C
+ ldrh r0, [r0]
+ cmp r0, 0x1
+ bhi _0805114A
+ adds r1, 0x6F
+ movs r0, 0x9
+ strb r0, [r1]
+_0805114A:
+ ldr r2, [r3]
+ adds r0, r2, 0
+ adds r0, 0x7C
+ ldrh r1, [r0]
+ cmp r1, 0x2
+ bne _0805115A
+ subs r0, 0xD
+ strb r1, [r0]
+_0805115A:
+ ldr r1, [r3]
+ adds r0, r1, 0
+ adds r0, 0x7C
+ ldrh r0, [r0]
+ cmp r0, 0x3
+ bne _0805121E
+ adds r1, 0x6F
+ movs r0, 0x1
+ strb r0, [r1]
+ b _0805121E
+_0805116E:
+ ldr r0, [r3]
+ adds r0, 0x6F
+ movs r1, 0x3
+ strb r1, [r0]
+ bl DestroyMenuCursor
+ movs r0, 0x17
+ movs r1, 0x8
+ movs r2, 0x1C
+ movs r3, 0xD
+ bl MenuZeroFillWindowRect
+ ldr r0, _0805118C @ =gOtherText_CaseIsFull
+ b _080511AC
+ .align 2, 0
+_0805118C: .4byte gOtherText_CaseIsFull
+_08051190:
+ ldr r0, [r3]
+ adds r0, 0x6F
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ bl DestroyMenuCursor
+ movs r0, 0x17
+ movs r1, 0x8
+ movs r2, 0x1C
+ movs r3, 0xD
+ bl MenuZeroFillWindowRect
+ ldr r0, _080511B8 @ =gOtherText_OutOfBerries
+_080511AC:
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrintMessage
+ b _0805121E
+ .align 2, 0
+_080511B8: .4byte gOtherText_OutOfBerries
+_080511BC:
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805121E
+ ldr r0, _080511D4 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0x6F
+ movs r1, 0x9
+ strb r1, [r0]
+ b _0805121E
+ .align 2, 0
+_080511D4: .4byte gUnknown_03004854
+_080511D8:
+ movs r0, 0x3
+ bl BeginFastPaletteFade
+ ldr r0, _080511EC @ =gUnknown_03004854
+ ldr r1, [r0]
+ adds r1, 0x6F
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _0805121E
+ .align 2, 0
+_080511EC: .4byte gUnknown_03004854
+_080511F0:
+ ldr r0, _08051210 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0805121E
+ ldr r0, [r3]
+ adds r0, 0x7C
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _08051218
+ ldr r0, _08051214 @ =sub_804E538
+ bl SetMainCallback2
+ b _0805121E
+ .align 2, 0
+_08051210: .4byte gPaletteFade
+_08051214: .4byte sub_804E538
+_08051218:
+ ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ bl SetMainCallback2
+_0805121E:
+ bl sub_805123C
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end sub_80510E8
+
+ thumb_func_start sub_805123C
+sub_805123C: @ 805123C
+ push {r4-r6,lr}
+ ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08051248
+ b _08051404
+_08051248:
+ ldr r4, _08051270 @ =gRecvCmds
+ ldrh r1, [r4]
+ ldr r0, _08051274 @ =0x00002fff
+ cmp r1, r0
+ bne _080512C6
+ ldrh r1, [r4, 0x8]
+ ldr r0, _08051278 @ =0x00001111
+ cmp r1, r0
+ bne _080512B8
+ ldrh r3, [r4, 0x10]
+ ldr r0, _0805127C @ =0x00009999
+ cmp r3, r0
+ beq _08051298
+ cmp r3, r0
+ bgt _08051284
+ ldr r0, _08051280 @ =0x00008888
+ b _08051286
+ .align 2, 0
+_0805126C: .4byte gReceivedRemoteLinkPlayers
+_08051270: .4byte gRecvCmds
+_08051274: .4byte 0x00002fff
+_08051278: .4byte 0x00001111
+_0805127C: .4byte 0x00009999
+_08051280: .4byte 0x00008888
+_08051284:
+ ldr r0, _08051290 @ =0x0000aaaa
+_08051286:
+ cmp r3, r0
+ beq _08051298
+ ldr r2, _08051294 @ =gUnknown_03004854
+ b _080512A8
+ .align 2, 0
+_08051290: .4byte 0x0000aaaa
+_08051294: .4byte gUnknown_03004854
+_08051298:
+ ldr r2, _080512B0 @ =gUnknown_03004854
+ ldr r0, [r2]
+ adds r1, r0, 0
+ adds r1, 0x78
+ strh r3, [r1]
+ ldrh r1, [r4, 0x18]
+ adds r0, 0x7A
+ strh r1, [r0]
+_080512A8:
+ ldr r0, [r2]
+ adds r0, 0x70
+ ldr r1, _080512B4 @ =0x00001111
+ b _080512C4
+ .align 2, 0
+_080512B0: .4byte gUnknown_03004854
+_080512B4: .4byte 0x00001111
+_080512B8:
+ ldr r0, _080512F4 @ =0x00002222
+ cmp r1, r0
+ bne _080512C6
+ ldr r0, _080512F8 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0x70
+_080512C4:
+ strh r1, [r0]
+_080512C6:
+ bl GetMultiplayerId
+ lsls r0, 24
+ cmp r0, 0
+ beq _080512D2
+ b _08051404
+_080512D2:
+ ldr r2, _080512F8 @ =gUnknown_03004854
+ ldr r0, [r2]
+ adds r0, 0x70
+ ldrh r1, [r0]
+ ldr r0, _080512FC @ =0x00001111
+ cmp r1, r0
+ bne _080512E2
+ b _08051404
+_080512E2:
+ ldr r0, _080512F4 @ =0x00002222
+ cmp r1, r0
+ bne _080512EA
+ b _08051404
+_080512EA:
+ movs r4, 0
+ ldr r6, _08051300 @ =0x00002fff
+ adds r5, r2, 0
+ b _0805134E
+ .align 2, 0
+_080512F4: .4byte 0x00002222
+_080512F8: .4byte gUnknown_03004854
+_080512FC: .4byte 0x00001111
+_08051300: .4byte 0x00002fff
+_08051304:
+ ldr r1, _08051328 @ =gRecvCmds
+ lsls r2, r4, 1
+ adds r0, r2, r1
+ ldrh r0, [r0]
+ cmp r0, r6
+ bne _08051348
+ adds r0, r1, 0
+ adds r0, 0x8
+ adds r0, r2, r0
+ ldrh r1, [r0]
+ ldr r0, _0805132C @ =0x00008888
+ cmp r1, r0
+ beq _08051340
+ cmp r1, r0
+ bgt _08051334
+ ldr r0, _08051330 @ =0x00007779
+ b _0805133C
+ .align 2, 0
+_08051328: .4byte gRecvCmds
+_0805132C: .4byte 0x00008888
+_08051330: .4byte 0x00007779
+_08051334:
+ ldr r0, _08051360 @ =0x00009999
+ cmp r1, r0
+ beq _08051340
+ ldr r0, _08051364 @ =0x0000aaaa
+_0805133C:
+ cmp r1, r0
+ bne _08051348
+_08051340:
+ ldr r0, [r5]
+ adds r0, 0x70
+ adds r0, r2
+ strh r1, [r0]
+_08051348:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_0805134E:
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bcc _08051304
+ movs r4, 0
+ b _0805136E
+ .align 2, 0
+_08051360: .4byte 0x00009999
+_08051364: .4byte 0x0000aaaa
+_08051368:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_0805136E:
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bcs _0805138A
+ ldr r0, _0805139C @ =gUnknown_03004854
+ ldr r0, [r0]
+ lsls r1, r4, 1
+ adds r0, 0x70
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _08051368
+_0805138A:
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bne _08051404
+ movs r4, 0
+ ldr r5, _080513A0 @ =0x00007779
+ b _080513AA
+ .align 2, 0
+_0805139C: .4byte gUnknown_03004854
+_080513A0: .4byte 0x00007779
+_080513A4:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_080513AA:
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bcs _080513C6
+ ldr r0, _080513E0 @ =gUnknown_03004854
+ ldr r0, [r0]
+ lsls r1, r4, 1
+ adds r0, 0x70
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r5
+ beq _080513A4
+_080513C6:
+ ldr r5, _080513E4 @ =gSendCmd
+ movs r6, 0
+ ldr r0, _080513E8 @ =0x00002fff
+ strh r0, [r5]
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bne _080513F0
+ ldr r0, _080513EC @ =0x00002222
+ strh r0, [r5, 0x2]
+ b _08051404
+ .align 2, 0
+_080513E0: .4byte gUnknown_03004854
+_080513E4: .4byte gSendCmd
+_080513E8: .4byte 0x00002fff
+_080513EC: .4byte 0x00002222
+_080513F0:
+ ldr r0, _0805140C @ =0x00001111
+ strh r0, [r5, 0x2]
+ ldr r0, _08051410 @ =gUnknown_03004854
+ ldr r0, [r0]
+ lsls r1, r4, 1
+ adds r0, 0x70
+ adds r0, r1
+ ldrh r0, [r0]
+ strh r0, [r5, 0x4]
+ strh r4, [r5, 0x6]
+_08051404:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805140C: .4byte 0x00001111
+_08051410: .4byte gUnknown_03004854
+ thumb_func_end sub_805123C
+
+ thumb_func_start sub_8051414
+sub_8051414: @ 8051414
+ push {lr}
+ sub sp, 0x14
+ adds r1, r0, 0
+ movs r0, 0xF0
+ lsls r0, 7
+ str r0, [sp]
+ movs r0, 0xA0
+ lsls r0, 7
+ str r0, [sp, 0x4]
+ mov r3, sp
+ ldr r0, _08051470 @ =gUnknown_03004854
+ ldr r0, [r0]
+ mov r12, r0
+ movs r0, 0xA2
+ lsls r0, 1
+ add r0, r12
+ ldrh r2, [r0]
+ movs r0, 0x78
+ subs r0, r2
+ strh r0, [r3, 0x8]
+ movs r0, 0xA3
+ lsls r0, 1
+ add r0, r12
+ ldrh r2, [r0]
+ movs r0, 0x50
+ subs r0, r2
+ strh r0, [r3, 0xA]
+ mov r2, sp
+ movs r3, 0xA1
+ lsls r3, 1
+ add r3, r12
+ ldrh r0, [r3]
+ strh r0, [r2, 0xC]
+ ldrh r0, [r3]
+ strh r0, [r2, 0xE]
+ mov r0, r12
+ adds r0, 0x54
+ ldrh r0, [r0]
+ strh r0, [r2, 0x10]
+ mov r0, sp
+ movs r2, 0x1
+ bl BgAffineSet
+ add sp, 0x14
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051470: .4byte gUnknown_03004854
+ thumb_func_end sub_8051414
+
+ thumb_func_start sub_8051474
+sub_8051474: @ 8051474
+ push {lr}
+ ldr r0, _080514A0 @ =gUnknown_03004854
+ ldr r3, [r0]
+ adds r1, r3, 0
+ adds r1, 0x54
+ ldrh r2, [r1]
+ adds r0, r3, 0
+ adds r0, 0x58
+ strh r2, [r0]
+ subs r0, 0x2
+ ldrh r0, [r0]
+ ldrh r2, [r1]
+ adds r0, r2
+ strh r0, [r1]
+ movs r1, 0xB4
+ lsls r1, 1
+ adds r0, r3, r1
+ bl sub_8051414
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080514A0: .4byte gUnknown_03004854
+ thumb_func_end sub_8051474
+
+ thumb_func_start sub_80514A4
+sub_80514A4: @ 80514A4
+ ldr r1, _080514E8 @ =REG_BG2PA
+ ldr r0, _080514EC @ =gUnknown_03004854
+ ldr r2, [r0]
+ movs r3, 0xB4
+ lsls r3, 1
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r1, 0x2
+ adds r3, 0x2
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r1, 0x2
+ adds r3, 0x2
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r1, 0x2
+ adds r3, 0x2
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r1, 0x2
+ adds r3, 0x2
+ adds r0, r2, r3
+ ldr r0, [r0]
+ str r0, [r1]
+ adds r1, 0x4
+ adds r3, 0x4
+ adds r0, r2, r3
+ ldr r0, [r0]
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080514E8: .4byte REG_BG2PA
+_080514EC: .4byte gUnknown_03004854
+ thumb_func_end sub_80514A4
+
+ thumb_func_start sub_80514F0
+sub_80514F0: @ 80514F0
+ ldr r1, _0805151C @ =REG_BG1HOFS
+ ldr r0, _08051520 @ =gUnknown_03004854
+ ldr r3, [r0]
+ movs r0, 0xA2
+ lsls r0, 1
+ adds r2, r3, r0
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r1, 0x2
+ movs r0, 0xA3
+ lsls r0, 1
+ adds r3, r0
+ ldrh r0, [r3]
+ strh r0, [r1]
+ subs r1, 0x6
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r1, 0x2
+ ldrh r0, [r3]
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_0805151C: .4byte REG_BG1HOFS
+_08051520: .4byte gUnknown_03004854
+ thumb_func_end sub_80514F0
+
+ thumb_func_start sub_8051524
+sub_8051524: @ 8051524
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x32]
+ adds r0, r1
+ strh r0, [r2, 0x32]
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x34]
+ adds r0, r1
+ strh r0, [r2, 0x34]
+ movs r1, 0x32
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bge _08051542
+ adds r0, 0x7
+_08051542:
+ asrs r0, 3
+ strh r0, [r2, 0x24]
+ movs r1, 0x34
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bge _08051550
+ adds r0, 0x7
+_08051550:
+ asrs r0, 3
+ strh r0, [r2, 0x26]
+ adds r0, r2, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08051568
+ adds r0, r2, 0
+ bl DestroySprite
+_08051568:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8051524
+
+ thumb_func_start sub_805156C
+sub_805156C: @ 805156C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ bl Random
+ lsls r0, 16
+ lsrs r1, r0, 16
+ movs r0, 0x1
+ ands r1, r0
+ adds r0, r1, 0x1
+ cmp r0, 0
+ beq _08051628
+ ldr r0, _08051638 @ =gSineTable
+ mov r9, r0
+ ldr r2, _0805163C @ =gSprites
+ mov r10, r2
+ adds r6, r1, 0x1
+ movs r3, 0x1F
+ mov r8, r3
+ movs r7, 0x10
+_08051598:
+ bl Random
+ ldr r1, _08051640 @ =gUnknown_03004854
+ ldr r4, [r1]
+ adds r4, 0x54
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x14
+ bl __umodsi3
+ ldrh r1, [r4]
+ adds r1, r0
+ lsls r1, 16
+ movs r0, 0xFF
+ lsls r0, 16
+ ands r0, r1
+ lsrs r2, r0, 16
+ adds r0, r2, 0
+ adds r0, 0x40
+ lsls r0, 1
+ add r0, r9
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ cmp r1, 0
+ bge _080515CC
+ adds r1, 0x3
+_080515CC:
+ asrs r1, 2
+ lsls r0, r2, 1
+ add r0, r9
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ bge _080515DC
+ adds r0, 0x3
+_080515DC:
+ asrs r2, r0, 2
+ adds r1, 0x78
+ adds r2, 0x50
+ ldr r0, _08051644 @ =gSpriteTemplate_82164FC
+ movs r3, 0x1
+ bl CreateSprite
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl Random
+ lsls r5, r4, 4
+ adds r5, r4
+ lsls r5, 2
+ mov r3, r10
+ adds r4, r5, r3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r1, r8
+ ands r0, r1
+ subs r0, r7, r0
+ strh r0, [r4, 0x2E]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ mov r2, r8
+ ands r0, r2
+ subs r0, r7, r0
+ strh r0, [r4, 0x30]
+ ldr r3, _08051648 @ =gSprites + 0x1C
+ adds r5, r3
+ ldr r0, _0805164C @ =sub_8051524
+ str r0, [r5]
+ subs r6, 0x1
+ cmp r6, 0
+ bne _08051598
+_08051628:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051638: .4byte gSineTable
+_0805163C: .4byte gSprites
+_08051640: .4byte gUnknown_03004854
+_08051644: .4byte gSpriteTemplate_82164FC
+_08051648: .4byte gSprites + 0x1C
+_0805164C: .4byte sub_8051524
+ thumb_func_end sub_805156C
+
+ thumb_func_start sub_8051650
+sub_8051650: @ 8051650
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x3
+ bl __divsi3
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0805167C
+ adds r0, r4, 0
+ bl DestroySprite
+_0805167C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8051650
+
+ thumb_func_start sub_8051684
+sub_8051684: @ 8051684
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ lsls r0, 1
+ negs r0, r0
+ strh r0, [r2, 0x26]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0xC
+ negs r1, r1
+ cmp r0, r1
+ bge _080516A8
+ ldr r0, _080516C0 @ =0x0000fff4
+ strh r0, [r2, 0x26]
+_080516A8:
+ adds r0, r2, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080516BC
+ adds r0, r2, 0
+ bl DestroySprite
+_080516BC:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080516C0: .4byte 0x0000fff4
+ thumb_func_end sub_8051684
+
+ thumb_func_start sub_80516C4
+sub_80516C4: @ 80516C4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r2, _080516F4 @ =gUnknown_03004854
+ ldr r3, [r2]
+ lsls r4, r0, 1
+ adds r2, r3, 0
+ adds r2, 0x80
+ adds r2, r4
+ strh r1, [r2]
+ lsls r0, 4
+ movs r2, 0xBE
+ lsls r2, 1
+ adds r0, r2
+ adds r3, r0
+ adds r0, r3, 0
+ bl sub_804E844
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080516F4: .4byte gUnknown_03004854
+ thumb_func_end sub_80516C4
+
+ thumb_func_start unref_sub_80516F8
+unref_sub_80516F8: @ 80516F8
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080517B8 @ =gTasks
+ adds r4, r0, r1
+ ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r6]
+ cmp r0, 0
+ beq _0805180C
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080517D4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x78
+ ble _08051730
+ strh r1, [r4, 0x8]
+_08051730:
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x64
+ bne _080517A0
+ ldr r0, _080517C0 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r0, 0x4
+ movs r1, 0x14
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl ZeroFillWindowRect
+ movs r0, 0x4
+ movs r1, 0x4
+ movs r2, 0xA
+ movs r3, 0xC
+ bl MenuDrawTextWindow
+ movs r2, 0
+ ldr r6, _080517C4 @ =gLinkPlayers + 0x4
+_0805175C:
+ adds r4, r2, 0x1
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ adds r0, r6
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _08051784
+ ldr r1, _080517C8 @ =gUnknown_08216284
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r0, [r0]
+ lsls r2, 25
+ movs r1, 0xA0
+ lsls r1, 19
+ adds r2, r1
+ lsrs r2, 24
+ movs r1, 0x5
+ bl MenuPrint
+_08051784:
+ movs r0, 0
+ movs r1, 0xD
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ ldr r0, _080517CC @ =gOtherText_PressAToStart
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrint
+ adds r2, r4, 0
+ cmp r2, 0x2
+ ble _0805175C
+_080517A0:
+ ldr r0, _080517D0 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0805180C
+ bl sub_8007E4C
+ adds r0, r5, 0
+ bl DestroyTask
+ b _0805180C
+ .align 2, 0
+_080517B8: .4byte gTasks
+_080517BC: .4byte gReceivedRemoteLinkPlayers
+_080517C0: .4byte gUnknown_03004854
+_080517C4: .4byte gLinkPlayers + 0x4
+_080517C8: .4byte gUnknown_08216284
+_080517CC: .4byte gOtherText_PressAToStart
+_080517D0: .4byte gMain
+_080517D4:
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xA
+ bne _080517E6
+ ldr r0, _08051814 @ =gOtherText_PleaseWait
+ movs r1, 0x3
+ movs r2, 0xA
+ bl MenuPrint
+_080517E6:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x78
+ ble _080517F8
+ movs r0, 0
+ strh r0, [r4, 0x8]
+_080517F8:
+ ldr r0, _08051818 @ =byte_3002A68
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bls _0805180C
+ ldrb r0, [r6]
+ cmp r0, 0x1
+ bne _0805180C
+ adds r0, r5, 0
+ bl DestroyTask
+_0805180C:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051814: .4byte gOtherText_PleaseWait
+_08051818: .4byte byte_3002A68
+ thumb_func_end unref_sub_80516F8
+
+ thumb_func_start sub_805181C
+sub_805181C: @ 805181C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08051858
+ cmp r0, 0x1
+ bgt _08051832
+ cmp r0, 0
+ beq _08051838
+ b _080518BE
+_08051832:
+ cmp r0, 0x2
+ beq _08051872
+ b _080518BE
+_08051838:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x8
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x58
+ ble _080518BE
+ movs r0, 0x58
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ movs r0, 0x38
+ bl PlaySE
+ b _080518BE
+_08051858:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _080518BE
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ b _080518BE
+_08051872:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x4
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xB0
+ ble _080518BE
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ adds r1, r0, 0
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080518AC
+ adds r0, r4, 0
+ bl DestroySprite
+ ldr r0, _080518A8 @ =gSpriteTemplate_821657C
+ movs r2, 0x14
+ negs r2, r2
+ movs r1, 0x78
+ movs r3, 0x2
+ bl CreateSprite
+ b _080518BE
+ .align 2, 0
+_080518A8: .4byte gSpriteTemplate_821657C
+_080518AC:
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080518C8 @ =0x0000fff0
+ strh r0, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_080518BE:
+ ldrh r0, [r4, 0x30]
+ strh r0, [r4, 0x26]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080518C8: .4byte 0x0000fff0
+ thumb_func_end sub_805181C
+
+ thumb_func_start sub_80518CC
+sub_80518CC: @ 80518CC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08051908
+ cmp r0, 0x1
+ bgt _080518E2
+ cmp r0, 0
+ beq _080518E8
+ b _0805193C
+_080518E2:
+ cmp r0, 0x2
+ beq _0805191E
+ b _0805193C
+_080518E8:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x8
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5C
+ ble _0805193C
+ movs r0, 0x5C
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ movs r0, 0x15
+ bl PlaySE
+ b _0805193C
+_08051908:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _0805193C
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _0805193C
+_0805191E:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x4
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xB0
+ ble _0805193C
+ ldr r0, _08051948 @ =gUnknown_03004854
+ ldr r1, [r0]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_0805193C:
+ ldrh r0, [r4, 0x30]
+ strh r0, [r4, 0x26]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051948: .4byte gUnknown_03004854
+ thumb_func_end sub_80518CC
+
+ thumb_func_start sub_805194C
+sub_805194C: @ 805194C
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ lsrs r3, r1, 16
+ ldr r1, _08051978 @ =gUnknown_03004854
+ ldr r1, [r1]
+ movs r2, 0xA0
+ lsls r2, 1
+ adds r1, r2
+ ldrh r2, [r1]
+ cmp r2, r0
+ bcs _08051972
+ adds r0, r2, 0x2
+ strh r0, [r1]
+ ldrh r0, [r1]
+ adds r1, r3, 0
+ bl sub_805197C
+_08051972:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051978: .4byte gUnknown_03004854
+ thumb_func_end sub_805194C
+
+ thumb_func_start sub_805197C
+sub_805197C: @ 805197C
+ push {r4-r7,lr}
+ lsls r0, 16
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r7, _08051A0C @ =0x06006000
+ lsrs r0, 10
+ bl __divsi3
+ adds r1, r0, 0
+ cmp r1, 0
+ bge _08051994
+ adds r0, r1, 0x7
+_08051994:
+ asrs r4, r0, 3
+ movs r3, 0
+ cmp r3, r4
+ bge _080519BC
+ ldr r0, _08051A10 @ =0x000081e9
+ adds r6, r0, 0
+ adds r0, 0x10
+ adds r5, r0, 0
+ adds r2, r7, 0
+ adds r2, 0x56
+ adds r0, r7, 0
+ adds r3, r4, 0
+_080519AC:
+ strh r6, [r0, 0x16]
+ strh r5, [r2]
+ adds r2, 0x2
+ adds r0, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bne _080519AC
+ adds r3, r4, 0
+_080519BC:
+ adds r0, r1, 0
+ cmp r1, 0
+ bge _080519C4
+ adds r0, r1, 0x7
+_080519C4:
+ asrs r2, r0, 3
+ lsls r0, r2, 3
+ subs r2, r1, r0
+ cmp r2, 0
+ beq _080519E2
+ lsls r0, r3, 1
+ adds r0, r7
+ ldr r4, _08051A14 @ =0xffff81e1
+ adds r1, r2, r4
+ strh r1, [r0, 0x16]
+ adds r0, 0x56
+ adds r4, 0x10
+ adds r1, r2, r4
+ strh r1, [r0]
+ adds r3, 0x1
+_080519E2:
+ cmp r3, 0x7
+ bgt _08051A06
+ ldr r0, _08051A18 @ =0x000081e1
+ adds r4, r0, 0
+ adds r0, 0x10
+ adds r2, r0, 0
+ lsls r1, r3, 1
+ adds r0, r1, 0
+ adds r0, 0x56
+ adds r0, r7
+ adds r1, r7
+_080519F8:
+ strh r4, [r1, 0x16]
+ strh r2, [r0]
+ adds r0, 0x2
+ adds r1, 0x2
+ adds r3, 0x1
+ cmp r3, 0x7
+ ble _080519F8
+_08051A06:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051A0C: .4byte 0x06006000
+_08051A10: .4byte 0x000081e9
+_08051A14: .4byte 0xffff81e1
+_08051A18: .4byte 0x000081e1
+ thumb_func_end sub_805197C
+
+ thumb_func_start sub_8051A1C
+sub_8051A1C: @ 8051A1C
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, _08051A34 @ =0x00057e40
+ muls r0, r1
+ cmp r0, 0
+ bge _08051A2E
+ ldr r1, _08051A38 @ =0x0000ffff
+ adds r0, r1
+_08051A2E:
+ asrs r0, 16
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08051A34: .4byte 0x00057e40
+_08051A38: .4byte 0x0000ffff
+ thumb_func_end sub_8051A1C
+
+ thumb_func_start sub_8051A3C
+sub_8051A3C: @ 8051A3C
+ push {r4-r6,lr}
+ sub sp, 0x8
+ lsls r0, 16
+ lsrs r0, 16
+ bl sub_8051A1C
+ adds r5, r0, 0
+ ldr r0, _08051ABC @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r1, r0, 0
+ adds r1, 0x5A
+ ldrh r0, [r1]
+ cmp r0, r5
+ bcs _08051A5A
+ strh r5, [r1]
+_08051A5A:
+ movs r6, 0
+_08051A5C:
+ mov r0, sp
+ adds r4, r0, r6
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl __umodsi3
+ strb r0, [r4]
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl __udivsi3
+ adds r5, r0, 0
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x4
+ bls _08051A5C
+ ldr r2, _08051AC0 @ =0x06006458
+ mov r0, sp
+ ldr r3, _08051AC4 @ =0x00008172
+ adds r1, r3, 0
+ ldrb r0, [r0, 0x4]
+ adds r0, r1, r0
+ strh r0, [r2]
+ adds r2, 0x2
+ mov r0, sp
+ ldrb r0, [r0, 0x3]
+ adds r0, r1
+ strh r0, [r2]
+ adds r2, 0x2
+ mov r0, sp
+ ldrb r0, [r0, 0x2]
+ adds r0, r1
+ strh r0, [r2]
+ adds r2, 0x4
+ mov r0, sp
+ ldrb r0, [r0, 0x1]
+ adds r0, r1
+ strh r0, [r2]
+ adds r2, 0x2
+ mov r0, sp
+ ldrb r0, [r0]
+ adds r1, r0
+ strh r1, [r2]
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051ABC: .4byte gUnknown_03004854
+_08051AC0: .4byte 0x06006458
+_08051AC4: .4byte 0x00008172
+ thumb_func_end sub_8051A3C
+
+ thumb_func_start sub_8051AC8
+sub_8051AC8: @ 8051AC8
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r4, r1, 16
+ lsrs r5, r4, 16
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _08051AEC
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, r5, 0
+ bl __umodsi3
+ lsrs r1, r4, 17
+ subs r0, r1
+ strh r0, [r6]
+_08051AEC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8051AC8
+
+ thumb_func_start sub_8051AF4
+sub_8051AF4: @ 8051AF4
+ push {lr}
+ adds r1, r0, 0
+ ldrh r2, [r1]
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bge _08051B06
+ adds r0, r2, 0x1
+ strh r0, [r1]
+_08051B06:
+ ldrh r2, [r1]
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ ble _08051B14
+ subs r0, r2, 0x1
+ strh r0, [r1]
+_08051B14:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8051AF4
+
+ thumb_func_start sub_8051B18
+sub_8051B18: @ 8051B18
+ push {r4,lr}
+ ldr r4, _08051B3C @ =gUnknown_03004854
+ ldr r0, [r4]
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r1
+ bl sub_8051AF4
+ ldr r0, [r4]
+ movs r1, 0xA3
+ lsls r1, 1
+ adds r0, r1
+ bl sub_8051AF4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051B3C: .4byte gUnknown_03004854
+ thumb_func_end sub_8051B18
+
+ thumb_func_start sub_8051B40
+sub_8051B40: @ 8051B40
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r5, 0x8
+ cmp r1, 0x9
+ bhi _08051B50
+ movs r5, 0x10
+_08051B50:
+ ldrh r0, [r4]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _08051B6E
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, r5, 0
+ bl __modsi3
+ lsrs r1, r5, 1
+ subs r0, r1
+ b _08051B82
+_08051B6E:
+ cmp r1, 0
+ bge _08051B76
+ adds r0, 0x1
+ strh r0, [r4]
+_08051B76:
+ ldrh r1, [r4]
+ movs r2, 0
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _08051B84
+ subs r0, r1, 0x1
+_08051B82:
+ strh r0, [r4]
+_08051B84:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8051B40
+
+ thumb_func_start sub_8051B8C
+sub_8051B8C: @ 8051B8C
+ push {r4,r5,lr}
+ ldr r5, _08051BE4 @ =gUnknown_03004854
+ ldr r2, [r5]
+ movs r4, 0x98
+ lsls r4, 1
+ adds r0, r2, r4
+ ldr r1, [r0]
+ cmp r1, 0
+ bne _08051BAC
+ movs r3, 0xA2
+ lsls r3, 1
+ adds r0, r2, r3
+ strh r1, [r0]
+ adds r3, 0x2
+ adds r0, r2, r3
+ strh r1, [r0]
+_08051BAC:
+ ldr r0, [r5]
+ adds r2, r0, r4
+ ldr r1, [r2]
+ adds r1, 0x1
+ str r1, [r2]
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r2
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8051B40
+ ldr r1, [r5]
+ movs r3, 0xA3
+ lsls r3, 1
+ adds r0, r1, r3
+ adds r1, r4
+ ldrh r1, [r1]
+ bl sub_8051B40
+ ldr r2, [r5]
+ adds r0, r2, r4
+ ldr r0, [r0]
+ cmp r0, 0x14
+ beq _08051BE8
+ movs r0, 0
+ b _08051BFC
+ .align 2, 0
+_08051BE4: .4byte gUnknown_03004854
+_08051BE8:
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r2, r1
+ movs r1, 0
+ strh r1, [r0]
+ movs r3, 0xA3
+ lsls r3, 1
+ adds r0, r2, r3
+ strh r1, [r0]
+ movs r0, 0x1
+_08051BFC:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8051B8C
+
+ thumb_func_start sub_8051C04
+sub_8051C04: @ 8051C04
+ ldr r1, _08051C20 @ =gUnknown_03004854
+ ldr r2, [r1]
+ movs r3, 0xA2
+ lsls r3, 1
+ adds r1, r2, r3
+ ldrh r1, [r1]
+ negs r1, r1
+ strh r1, [r0, 0x24]
+ adds r3, 0x2
+ adds r1, r2, r3
+ ldrh r1, [r1]
+ negs r1, r1
+ strh r1, [r0, 0x26]
+ bx lr
+ .align 2, 0
+_08051C20: .4byte gUnknown_03004854
+ thumb_func_end sub_8051C04
+
+ thumb_func_start sub_8051C24
+sub_8051C24: @ 8051C24
+ push {lr}
+ ldr r2, _08051C4C @ =gSaveBlock1
+ ldr r0, _08051C50 @ =gUnknown_03004854
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x88
+ ldrb r0, [r0]
+ subs r0, 0x2
+ lsls r0, 1
+ ldr r3, _08051C54 @ =0x0000096c
+ adds r2, r3
+ adds r2, r0, r2
+ adds r1, 0x5A
+ ldrh r1, [r1]
+ ldrh r0, [r2]
+ cmp r0, r1
+ bcs _08051C48
+ strh r1, [r2]
+_08051C48:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08051C4C: .4byte gSaveBlock1
+_08051C50: .4byte gUnknown_03004854
+_08051C54: .4byte 0x0000096c
+ thumb_func_end sub_8051C24
+
+ thumb_func_start sub_8051C58
+sub_8051C58: @ 8051C58
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x34
+ ldr r1, _08051C7C @ =gUnknown_03004854
+ ldr r0, [r1]
+ ldrb r0, [r0]
+ adds r2, r1, 0
+ cmp r0, 0x6
+ bls _08051C72
+ b _08052006
+_08051C72:
+ lsls r0, 2
+ ldr r1, _08051C80 @ =_08051C84
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08051C7C: .4byte gUnknown_03004854
+_08051C80: .4byte _08051C84
+ .align 2, 0
+_08051C84:
+ .4byte _08051CA0
+ .4byte _08051CB6
+ .4byte _08051CD0
+ .4byte _08051D20
+ .4byte _08051F40
+ .4byte _08051F54
+ .4byte _08051FF4
+_08051CA0:
+ ldr r1, [r2]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r0, [r2]
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r1
+ movs r1, 0x11
+ str r1, [r0]
+ b _08052006
+_08051CB6:
+ ldr r1, [r2]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r1, r0
+ ldr r0, [r2]
+ subs r0, 0xA
+ str r0, [r2]
+ cmp r0, 0
+ blt _08051CCA
+ b _08052006
+_08051CCA:
+ movs r0, 0
+ str r0, [r2]
+ b _08051FDE
+_08051CD0:
+ ldr r1, [r2]
+ movs r2, 0x98
+ lsls r2, 1
+ adds r1, r2
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x14
+ bgt _08051CE4
+ b _08052006
+_08051CE4:
+ movs r6, 0
+_08051CE6:
+ ldr r4, _08051D18 @ =gUnknown_03004854
+ ldr r0, [r4]
+ adds r0, 0x50
+ adds r0, r6
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08051D1C @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, 0x2
+ bls _08051CE6
+ ldr r1, [r4]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r1, r0
+ movs r0, 0
+ str r0, [r2]
+ b _08051FDE
+ .align 2, 0
+_08051D18: .4byte gUnknown_03004854
+_08051D1C: .4byte gSprites
+_08051D20:
+ movs r0, 0x4
+ movs r1, 0x2
+ movs r2, 0x19
+ movs r3, 0x11
+ bl MenuDrawTextWindow
+ ldr r0, _08051F10 @ =gOtherText_ResultsOfBlending
+ movs r1, 0x5
+ movs r2, 0x3
+ movs r3, 0xA0
+ bl sub_8072BD8
+ movs r6, 0
+ ldr r1, _08051F14 @ =gUnknown_03004854
+ ldr r0, [r1]
+ adds r0, 0x88
+ add r2, sp, 0xC
+ mov r9, r2
+ mov r2, sp
+ adds r2, 0x16
+ str r2, [sp, 0x30]
+ ldrb r0, [r0]
+ cmp r6, r0
+ bcs _08051E04
+ mov r8, r1
+ ldr r0, _08051F18 @ =gLinkPlayers
+ mov r10, r0
+_08051D56:
+ mov r1, r8
+ ldr r2, [r1]
+ movs r1, 0xB2
+ lsls r1, 1
+ adds r0, r2, r1
+ adds r0, r6
+ ldrb r5, [r0]
+ mov r7, r9
+ lsls r1, r5, 4
+ adds r1, r2
+ movs r2, 0xBF
+ lsls r2, 1
+ adds r1, r2
+ adds r0, r7, 0
+ bl StringCopy
+ lsls r4, r5, 3
+ subs r4, r5
+ lsls r4, 2
+ mov r1, r10
+ adds r0, r4, r1
+ ldrb r1, [r0, 0x1A]
+ adds r0, r7, 0
+ bl ConvertInternationalString
+ adds r0, r7, 0
+ ldr r1, _08051F1C @ =gOtherText_Berry
+ bl de_sub_8073174
+ mov r2, r8
+ ldr r0, [r2]
+ adds r7, r0, 0
+ adds r7, 0xAB
+ adds r5, r6, 0x1
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl ConvertIntToDecimalString
+ adds r7, r0, 0
+ movs r1, 0
+ strb r1, [r7]
+ movs r0, 0xAD
+ strb r0, [r7, 0x1]
+ strb r1, [r7, 0x2]
+ adds r7, 0x3
+ ldr r0, _08051F20 @ =gLinkPlayers + 0x8
+ adds r4, r0
+ adds r0, r7, 0
+ adds r1, r4, 0
+ movs r2, 0x58
+ movs r3, 0
+ bl sub_8072C74
+ adds r7, r0, 0
+ add r1, sp, 0xC
+ movs r2, 0x9D
+ movs r3, 0
+ bl sub_8072C74
+ mov r2, r8
+ ldr r1, [r2]
+ adds r0, r1, 0
+ adds r0, 0xAB
+ ldr r3, _08051F24 @ =gUnknown_082165E9
+ adds r1, 0x88
+ ldrb r2, [r1]
+ adds r3, r2, r3
+ ldr r1, _08051F28 @ =gUnknown_082165EE
+ adds r2, r1
+ ldrb r1, [r2]
+ adds r2, r6, 0
+ muls r2, r1
+ ldrb r3, [r3]
+ adds r2, r3
+ lsls r2, 24
+ lsrs r2, 24
+ movs r1, 0x5
+ bl MenuPrint
+ lsls r5, 16
+ lsrs r6, r5, 16
+ mov r1, r8
+ ldr r0, [r1]
+ adds r0, 0x88
+ ldrb r0, [r0]
+ cmp r6, r0
+ bcc _08051D56
+_08051E04:
+ ldr r6, _08051F14 @ =gUnknown_03004854
+ ldr r0, [r6]
+ adds r0, 0x5A
+ ldrh r0, [r0]
+ movs r1, 0x64
+ bl __umodsi3
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r0, r9
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r0, [r6]
+ adds r7, r0, 0
+ adds r7, 0xAB
+ ldr r1, _08051F2C @ =gOtherText_MaxSpeed
+ adds r0, r7, 0
+ bl StringCopy
+ adds r7, r0, 0
+ ldr r0, [r6]
+ adds r0, 0x5A
+ ldrh r0, [r0]
+ movs r1, 0x64
+ bl __udivsi3
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r7, 0
+ movs r2, 0x79
+ movs r3, 0x1
+ bl sub_8072C14
+ adds r7, r0, 0
+ movs r0, 0xB8
+ strb r0, [r7]
+ adds r7, 0x1
+ adds r0, r7, 0
+ mov r1, r9
+ movs r2, 0x88
+ movs r3, 0x1
+ bl sub_8072C74
+ adds r7, r0, 0
+ ldr r1, _08051F30 @ =gOtherText_RPM
+ bl StringCopy
+ ldr r0, [r6]
+ adds r0, 0xAB
+ movs r1, 0x5
+ movs r2, 0xD
+ bl MenuPrint
+ ldr r0, [r6]
+ movs r2, 0x96
+ lsls r2, 1
+ adds r0, r2
+ ldr r0, [r0]
+ movs r1, 0x3C
+ bl __udivsi3
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r4, 0
+ movs r1, 0x3C
+ bl __umodsi3
+ adds r5, r0, 0
+ lsls r5, 16
+ lsrs r5, 16
+ adds r0, r4, 0
+ movs r1, 0x3C
+ bl __udivsi3
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r0, r9
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r0, [sp, 0x30]
+ adds r1, r5, 0
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r0, [r6]
+ adds r7, r0, 0
+ adds r7, 0xAB
+ ldr r1, _08051F34 @ =gOtherText_RequiredTime
+ adds r0, r7, 0
+ bl StringCopy
+ adds r7, r0, 0
+ mov r1, r9
+ movs r2, 0x63
+ movs r3, 0x1
+ bl sub_8072C74
+ adds r7, r0, 0
+ ldr r1, _08051F38 @ =gOtherText_Min
+ bl StringAppend
+ adds r7, r0, 0
+ ldr r1, [sp, 0x30]
+ movs r2, 0x88
+ movs r3, 0x1
+ bl sub_8072C74
+ adds r7, r0, 0
+ ldr r1, _08051F3C @ =gOtherText_Sec
+ bl StringCopy
+ ldr r0, [r6]
+ adds r0, 0xAB
+ movs r1, 0x5
+ movs r2, 0xF
+ bl MenuPrint
+ ldr r1, [r6]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r1, r0
+ movs r0, 0
+ str r0, [r2]
+ b _08051FDE
+ .align 2, 0
+_08051F10: .4byte gOtherText_ResultsOfBlending
+_08051F14: .4byte gUnknown_03004854
+_08051F18: .4byte gLinkPlayers
+_08051F1C: .4byte gOtherText_Berry
+_08051F20: .4byte gLinkPlayers + 0x8
+_08051F24: .4byte gUnknown_082165E9
+_08051F28: .4byte gUnknown_082165EE
+_08051F2C: .4byte gOtherText_MaxSpeed
+_08051F30: .4byte gOtherText_RPM
+_08051F34: .4byte gOtherText_RequiredTime
+_08051F38: .4byte gOtherText_Min
+_08051F3C: .4byte gOtherText_Sec
+_08051F40:
+ ldr r0, _08051F50 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08052006
+ ldr r1, [r2]
+ b _08051FDE
+ .align 2, 0
+_08051F50: .4byte gMain
+_08051F54:
+ bl MenuZeroFillScreen
+ movs r0, 0
+ movs r1, 0xE
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ movs r6, 0
+ add r5, sp, 0x28
+ ldr r0, _08051FE8 @ =gUnknown_03004854
+ ldr r0, [r0]
+ adds r3, r0, 0
+ adds r3, 0x80
+ add r2, sp, 0x20
+_08051F72:
+ lsls r1, r6, 1
+ adds r0, r3, r1
+ ldrh r0, [r0]
+ cmp r0, 0
+ beq _08051F82
+ adds r1, r2, r1
+ subs r0, 0x85
+ strh r0, [r1]
+_08051F82:
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, 0x3
+ bls _08051F72
+ bl sub_8050760
+ ldr r4, _08051FE8 @ =gUnknown_03004854
+ ldr r3, [r4]
+ movs r1, 0xBE
+ lsls r1, 1
+ adds r0, r3, r1
+ adds r1, r3, 0
+ adds r1, 0x88
+ ldrb r2, [r1]
+ subs r1, 0x2E
+ ldrh r1, [r1]
+ str r1, [sp]
+ adds r1, r5, 0
+ add r3, sp, 0x4
+ bl sub_8050520
+ ldr r1, [r4]
+ adds r1, 0xAB
+ adds r0, r5, 0
+ bl sub_805201C
+ ldr r0, _08051FEC @ =sub_8052BD0
+ movs r1, 0x6
+ bl CreateTask
+ ldr r0, [r4]
+ adds r0, 0xAB
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrintMessage
+ ldr r0, _08051FF0 @ =gScriptItemId
+ ldrh r0, [r0]
+ movs r1, 0x1
+ bl RemoveBagItem
+ adds r0, r5, 0
+ bl sub_810CA34
+ ldr r1, [r4]
+_08051FDE:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08052006
+ .align 2, 0
+_08051FE8: .4byte gUnknown_03004854
+_08051FEC: .4byte sub_8052BD0
+_08051FF0: .4byte gScriptItemId
+_08051FF4:
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ beq _08052006
+ bl sub_8051C24
+ movs r0, 0x1
+ b _08052008
+_08052006:
+ movs r0, 0
+_08052008:
+ add sp, 0x34
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8051C58
+
+ thumb_func_start sub_805201C
+sub_805201C: @ 805201C
+ push {r4-r6,lr}
+ sub sp, 0xC
+ adds r5, r0, 0
+ adds r6, r1, 0
+ movs r0, 0xFF
+ strb r0, [r6]
+ ldr r1, _080520B0 @ =gPokeblockNames
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ adds r0, r6, 0
+ bl StringCopy
+ ldr r1, _080520B4 @ =gOtherText_PokeBlockMade
+ adds r0, r6, 0
+ bl de_sub_8073174
+ ldr r1, _080520B8 @ =gUnknown_082162C8
+ adds r0, r6, 0
+ bl StringAppend
+ adds r0, r5, 0
+ bl sub_810C9B0
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ bl sub_810C9E8
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r1, _080520BC @ =gOtherText_BlockLevelIs
+ adds r0, r6, 0
+ bl StringAppend
+ mov r0, sp
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ adds r0, r6, 0
+ mov r1, sp
+ bl StringAppend
+ ldr r1, _080520C0 @ =gOtherText_BlockFeelIs
+ adds r0, r6, 0
+ bl StringAppend
+ mov r0, sp
+ adds r1, r5, 0
+ movs r2, 0
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ adds r0, r6, 0
+ mov r1, sp
+ bl StringAppend
+ ldr r1, _080520C4 @ =gOtherText_Period
+ adds r0, r6, 0
+ bl StringAppend
+ ldr r1, _080520C8 @ =gUnknown_08216249
+ adds r0, r6, 0
+ bl StringAppend
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080520B0: .4byte gPokeblockNames
+_080520B4: .4byte gOtherText_PokeBlockMade
+_080520B8: .4byte gUnknown_082162C8
+_080520BC: .4byte gOtherText_BlockLevelIs
+_080520C0: .4byte gOtherText_BlockFeelIs
+_080520C4: .4byte gOtherText_Period
+_080520C8: .4byte gUnknown_08216249
+ thumb_func_end sub_805201C
+
+ thumb_func_start sub_80520CC
+sub_80520CC: @ 80520CC
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ mov r9, r0
+ mov r12, r2
+ lsls r1, 24
+ lsrs r7, r1, 24
+ movs r0, 0
+ cmp r0, r7
+ bge _08052118
+_080520E2:
+ movs r5, 0
+ adds r1, r0, 0x1
+ mov r8, r1
+ cmp r5, r7
+ bge _08052112
+ mov r1, r9
+ adds r6, r1, r0
+_080520F0:
+ ldrb r4, [r6]
+ lsls r1, r4, 2
+ add r1, r12
+ mov r0, r9
+ adds r2, r0, r5
+ ldrb r3, [r2]
+ lsls r0, r3, 2
+ add r0, r12
+ ldr r1, [r1]
+ ldr r0, [r0]
+ cmp r1, r0
+ bls _0805210C
+ strb r3, [r6]
+ strb r4, [r2]
+_0805210C:
+ adds r5, 0x1
+ cmp r5, r7
+ blt _080520F0
+_08052112:
+ mov r0, r8
+ cmp r0, r7
+ blt _080520E2
+_08052118:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80520CC
+
+ thumb_func_start sub_8052124
+sub_8052124: @ 8052124
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ movs r5, 0
+ ldr r1, _08052144 @ =gUnknown_03004854
+ ldr r0, [r1]
+ adds r0, 0x88
+ mov r10, r1
+ mov r2, sp
+ adds r2, 0x4
+ str r2, [sp, 0x14]
+ b _08052158
+ .align 2, 0
+_08052144: .4byte gUnknown_03004854
+_08052148:
+ mov r4, sp
+ adds r0, r4, r5
+ strb r5, [r0]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, [r1]
+ adds r0, 0x88
+_08052158:
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcc _08052148
+ movs r5, 0
+ mov r1, r10
+ ldr r0, [r1]
+ adds r1, r0, 0
+ adds r1, 0x88
+ ldrb r2, [r1]
+ cmp r5, r2
+ bcs _080521D6
+ ldr r4, [sp, 0x14]
+ mov r9, r4
+ movs r2, 0xA6
+ lsls r2, 1
+ adds r2, r0
+ mov r8, r2
+ mov r12, r1
+ movs r4, 0xA7
+ lsls r4, 1
+ adds r7, r0, r4
+ movs r1, 0xA8
+ lsls r1, 1
+ adds r6, r0, r1
+_08052188:
+ lsls r4, r5, 2
+ add r4, r9
+ lsls r3, r5, 1
+ adds r3, r5
+ lsls r3, 1
+ mov r2, r8
+ adds r0, r2, r3
+ ldrh r2, [r0]
+ lsls r0, r2, 5
+ subs r0, r2
+ lsls r1, r0, 6
+ subs r1, r0
+ lsls r1, 3
+ adds r1, r2
+ lsls r1, 6
+ str r1, [r4]
+ adds r0, r7, r3
+ ldrh r2, [r0]
+ lsls r0, r2, 5
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ str r1, [r4]
+ movs r0, 0xFA
+ lsls r0, 2
+ adds r1, r0
+ adds r3, r6, r3
+ ldrh r0, [r3]
+ subs r1, r0
+ str r1, [r4]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r1, r12
+ ldrb r1, [r1]
+ cmp r5, r1
+ bcc _08052188
+_080521D6:
+ mov r2, r10
+ ldr r0, [r2]
+ adds r0, 0x88
+ ldrb r1, [r0]
+ mov r0, sp
+ ldr r2, [sp, 0x14]
+ bl sub_80520CC
+ movs r5, 0
+ mov r4, r10
+ ldr r0, [r4]
+ adds r0, 0x88
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcs _08052218
+ mov r2, r10
+ movs r3, 0xB2
+ lsls r3, 1
+_080521FA:
+ ldr r1, [r2]
+ adds r1, r3
+ adds r1, r5
+ mov r4, sp
+ adds r0, r4, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, [r2]
+ adds r0, 0x88
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcc _080521FA
+_08052218:
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8052124
+
+ thumb_func_start sub_8052228
+sub_8052228: @ 8052228
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r1, _08052248 @ =gUnknown_03004854
+ ldr r0, [r1]
+ ldrb r0, [r0]
+ adds r2, r1, 0
+ cmp r0, 0x6
+ bls _0805223C
+ b _080524AE
+_0805223C:
+ lsls r0, 2
+ ldr r1, _0805224C @ =_08052250
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08052248: .4byte gUnknown_03004854
+_0805224C: .4byte _08052250
+ .align 2, 0
+_08052250:
+ .4byte _0805226C
+ .4byte _08052282
+ .4byte _0805229C
+ .4byte _080522B6
+ .4byte _08052464
+ .4byte _0805247E
+ .4byte _080524A4
+_0805226C:
+ ldr r1, [r2]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r0, [r2]
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r1
+ movs r1, 0xFF
+ str r1, [r0]
+ b _080524AE
+_08052282:
+ ldr r1, [r2]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r1, r0
+ ldr r0, [r2]
+ subs r0, 0xA
+ str r0, [r2]
+ cmp r0, 0
+ blt _08052296
+ b _080524AE
+_08052296:
+ movs r0, 0
+ str r0, [r2]
+ b _08052494
+_0805229C:
+ ldr r1, [r2]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r1, r0
+ ldr r0, [r2]
+ adds r0, 0x1
+ str r0, [r2]
+ cmp r0, 0x14
+ bgt _080522B0
+ b _080524AE
+_080522B0:
+ movs r0, 0
+ str r0, [r2]
+ b _08052494
+_080522B6:
+ movs r0, 0x4
+ movs r1, 0x2
+ movs r2, 0x19
+ movs r3, 0x11
+ bl MenuDrawTextWindow
+ ldr r0, _0805236C @ =gOtherText_Ranking
+ movs r1, 0x5
+ movs r2, 0x3
+ movs r3, 0xA0
+ bl sub_8072BD8
+ ldr r6, _08052370 @ =gSpriteTemplate_821645C
+ adds r0, r6, 0
+ movs r1, 0x8C
+ movs r2, 0x34
+ movs r3, 0
+ bl CreateSprite
+ ldr r7, _08052374 @ =gUnknown_03004854
+ ldr r1, [r7]
+ adds r1, 0x50
+ strb r0, [r1]
+ ldr r1, _08052378 @ =gSprites
+ mov r8, r1
+ ldr r2, [r7]
+ adds r2, 0x50
+ ldrb r1, [r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ mov r5, r8
+ adds r5, 0x1C
+ adds r0, r5
+ ldr r4, _0805237C @ =SpriteCallbackDummy
+ str r4, [r0]
+ ldrb r1, [r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r8
+ movs r1, 0x3
+ bl StartSpriteAnim
+ adds r0, r6, 0
+ movs r1, 0xA4
+ movs r2, 0x34
+ movs r3, 0
+ bl CreateSprite
+ ldr r1, [r7]
+ adds r1, 0x51
+ strb r0, [r1]
+ ldr r0, [r7]
+ adds r0, 0x51
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ str r4, [r0]
+ adds r0, r6, 0
+ movs r1, 0xBC
+ movs r2, 0x34
+ movs r3, 0
+ bl CreateSprite
+ ldr r1, [r7]
+ adds r1, 0x52
+ strb r0, [r1]
+ ldr r2, [r7]
+ adds r2, 0x52
+ ldrb r1, [r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ str r4, [r0]
+ ldrb r1, [r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r8
+ movs r1, 0x1
+ bl StartSpriteAnim
+ bl sub_8052124
+ movs r2, 0
+ mov r8, r2
+ b _0805243C
+ .align 2, 0
+_0805236C: .4byte gOtherText_Ranking
+_08052370: .4byte gSpriteTemplate_821645C
+_08052374: .4byte gUnknown_03004854
+_08052378: .4byte gSprites
+_0805237C: .4byte SpriteCallbackDummy
+_08052380:
+ ldr r1, [r7]
+ movs r2, 0xB2
+ lsls r2, 1
+ adds r0, r1, r2
+ add r0, r8
+ ldrb r5, [r0]
+ adds r2, r1, 0
+ adds r2, 0xAB
+ movs r0, 0xFC
+ strb r0, [r2]
+ movs r0, 0x13
+ strb r0, [r2, 0x1]
+ movs r0, 0x4
+ strb r0, [r2, 0x2]
+ adds r2, 0x3
+ mov r6, r8
+ adds r6, 0x1
+ adds r0, r2, 0
+ adds r1, r6, 0
+ bl ConvertIntToDecimalString
+ adds r2, r0, 0
+ movs r1, 0
+ strb r1, [r2]
+ movs r0, 0xAD
+ strb r0, [r2, 0x1]
+ strb r1, [r2, 0x2]
+ adds r2, 0x3
+ lsls r1, r5, 3
+ subs r1, r5
+ lsls r1, 2
+ ldr r0, _08052458 @ =gLinkPlayers + 0x8
+ adds r1, r0
+ adds r0, r2, 0
+ bl StringCopy
+ adds r2, r0, 0
+ ldr r0, [r7]
+ lsls r4, r5, 1
+ adds r4, r5
+ lsls r4, 1
+ movs r1, 0xA6
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r4
+ ldrh r1, [r0]
+ adds r0, r2, 0
+ movs r2, 0x6C
+ movs r3, 0x1
+ bl sub_8072C14
+ adds r2, r0, 0
+ ldr r0, [r7]
+ movs r1, 0xA7
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r4
+ ldrh r1, [r0]
+ adds r0, r2, 0
+ movs r2, 0x84
+ movs r3, 0x1
+ bl sub_8072C14
+ adds r2, r0, 0
+ ldr r0, [r7]
+ movs r1, 0xA8
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r4
+ ldrh r1, [r0]
+ adds r0, r2, 0
+ movs r2, 0x9C
+ movs r3, 0x1
+ bl sub_8072C14
+ ldr r1, [r7]
+ adds r0, r1, 0
+ adds r0, 0xAB
+ ldr r2, _0805245C @ =gUnknown_082165F3
+ adds r1, 0x88
+ ldrb r1, [r1]
+ adds r1, r2
+ ldrb r1, [r1]
+ mov r2, r8
+ muls r2, r1
+ adds r2, 0x8
+ lsls r2, 24
+ lsrs r2, 24
+ movs r1, 0x5
+ bl MenuPrint
+ lsls r6, 16
+ lsrs r6, 16
+ mov r8, r6
+_0805243C:
+ ldr r0, [r7]
+ adds r0, 0x88
+ ldrb r0, [r0]
+ cmp r8, r0
+ bcc _08052380
+ ldr r0, _08052460 @ =gUnknown_03004854
+ ldr r1, [r0]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r2, r1, r0
+ movs r0, 0
+ str r0, [r2]
+ b _08052494
+ .align 2, 0
+_08052458: .4byte gLinkPlayers + 0x8
+_0805245C: .4byte gUnknown_082165F3
+_08052460: .4byte gUnknown_03004854
+_08052464:
+ ldr r2, [r2]
+ movs r0, 0x98
+ lsls r0, 1
+ adds r1, r2, r0
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ cmp r0, 0x14
+ ble _080524AE
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ b _080524AE
+_0805247E:
+ ldr r0, _0805249C @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080524AE
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, _080524A0 @ =gUnknown_03004854
+ ldr r1, [r0]
+_08052494:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _080524AE
+ .align 2, 0
+_0805249C: .4byte gMain
+_080524A0: .4byte gUnknown_03004854
+_080524A4:
+ ldr r1, [r2]
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ b _080524B0
+_080524AE:
+ movs r0, 0
+_080524B0:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8052228
+
+ thumb_func_start unref_sub_80524BC
+unref_sub_80524BC: @ 80524BC
+ push {r4,lr}
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ bl ResetTasks
+ ldr r0, _0805251C @ =sub_804E2D8
+ bl SetVBlankCallback
+ ldr r4, _08052520 @ =gWindowConfig_81E6CE4
+ adds r0, r4, 0
+ bl SetUpWindowConfig
+ adds r0, r4, 0
+ bl InitMenuWindow
+ ldr r0, _08052524 @ =gMain
+ ldrh r0, [r0, 0x20]
+ bl SeedRng
+ movs r1, 0x80
+ lsls r1, 19
+ movs r2, 0xAA
+ lsls r2, 5
+ adds r0, r2, 0
+ strh r0, [r1]
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ ldr r1, _08052528 @ =gUnknown_03000560
+ movs r0, 0xFA
+ lsls r0, 5
+ strh r0, [r1, 0x1A]
+ ldrb r0, [r1, 0x10]
+ adds r0, 0x1
+ strb r0, [r1, 0x10]
+ ldr r0, _0805252C @ =sub_8052AF8
+ bl SetMainCallback2
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805251C: .4byte sub_804E2D8
+_08052520: .4byte gWindowConfig_81E6CE4
+_08052524: .4byte gMain
+_08052528: .4byte gUnknown_03000560
+_0805252C: .4byte sub_8052AF8
+ thumb_func_end unref_sub_80524BC
+
+ thumb_func_start sub_8052530
+sub_8052530: @ 8052530
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x98
+ ldr r1, _080525C8 @ =gOtherText_BPMAndDash
+ mov r0, sp
+ bl StringCopy
+ mov r0, sp
+ movs r1, 0x2
+ movs r2, 0
+ bl MenuPrint
+ ldr r4, _080525CC @ =gUnknown_03000560
+ movs r1, 0x1A
+ ldrsh r0, [r4, r1]
+ movs r1, 0x64
+ bl __divsi3
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ mov r0, sp
+ movs r2, 0x2
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ mov r0, sp
+ movs r1, 0x6
+ movs r2, 0
+ bl MenuPrint
+ movs r6, 0
+ mov r2, sp
+ adds r2, 0x3
+ str r2, [sp, 0x84]
+ mov r3, sp
+ adds r3, 0x6
+ str r3, [sp, 0x88]
+ mov r0, sp
+ adds r0, 0x9
+ str r0, [sp, 0x8C]
+ mov r1, sp
+ adds r1, 0xC
+ str r1, [sp, 0x90]
+ adds r2, 0xC
+ str r2, [sp, 0x94]
+ mov r8, r4
+ mov r7, sp
+ ldr r3, _080525D0 @ =gBerries
+ mov r9, r3
+ ldr r0, _080525D4 @ =gUnknown_082165F8
+ mov r10, r0
+_0805259E:
+ mov r1, r8
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ cmp r0, r6
+ bne _080525D8
+ movs r0, 0xEF
+ strb r0, [r7]
+ mov r0, r8
+ adds r0, 0x1
+ adds r0, r6, r0
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ adds r0, 0x85
+ lsls r0, 16
+ lsrs r0, 16
+ mov r1, sp
+ adds r1, 0x1
+ bl CopyItemName
+ b _080525F8
+ .align 2, 0
+_080525C8: .4byte gOtherText_BPMAndDash
+_080525CC: .4byte gUnknown_03000560
+_080525D0: .4byte gBerries
+_080525D4: .4byte gUnknown_082165F8
+_080525D8:
+ mov r0, r8
+ adds r0, 0x1
+ adds r0, r6, r0
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ adds r0, 0x85
+ lsls r0, 16
+ lsrs r0, 16
+ mov r1, sp
+ bl CopyItemName
+ movs r0, 0
+ strb r0, [r7, 0x6]
+ movs r0, 0xFF
+ strb r0, [r7, 0x7]
+_080525F8:
+ lsls r5, r6, 1
+ adds r5, r6
+ adds r5, 0x3
+ lsls r5, 24
+ lsrs r5, 24
+ mov r0, sp
+ movs r1, 0x2
+ adds r2, r5, 0
+ bl MenuPrint
+ mov r4, r8
+ adds r4, 0x1
+ adds r4, r6, r4
+ movs r1, 0
+ ldrsb r1, [r4, r1]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldrb r1, [r0, 0x15]
+ mov r0, sp
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ mov r0, sp
+ mov r1, r10
+ bl StringAppend
+ movs r1, 0
+ ldrsb r1, [r4, r1]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldrb r1, [r0, 0x16]
+ ldr r0, [sp, 0x84]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ mov r0, sp
+ mov r1, r10
+ bl StringAppend
+ movs r1, 0
+ ldrsb r1, [r4, r1]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldrb r1, [r0, 0x17]
+ ldr r0, [sp, 0x88]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ mov r0, sp
+ mov r1, r10
+ bl StringAppend
+ movs r1, 0
+ ldrsb r1, [r4, r1]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldrb r1, [r0, 0x18]
+ ldr r0, [sp, 0x8C]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ mov r0, sp
+ mov r1, r10
+ bl StringAppend
+ movs r1, 0
+ ldrsb r1, [r4, r1]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldrb r1, [r0, 0x19]
+ ldr r0, [sp, 0x90]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ mov r0, sp
+ mov r1, r10
+ bl StringAppend
+ movs r1, 0
+ ldrsb r1, [r4, r1]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldrb r1, [r0, 0x1A]
+ ldr r0, [sp, 0x94]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ movs r2, 0x1
+ negs r2, r2
+ add r3, sp, 0x80
+ strb r2, [r3]
+ movs r0, 0xFF
+ strb r0, [r7, 0x11]
+ mov r0, sp
+ movs r1, 0x7
+ adds r2, r5, 0
+ bl MenuPrint
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x3
+ bhi _080526EC
+ b _0805259E
+_080526EC:
+ mov r1, r8
+ ldrb r0, [r1, 0x8]
+ cmp r0, 0
+ beq _080527A4
+ ldr r1, _080527B4 @ =gPokeblockNames
+ mov r2, r8
+ ldrb r0, [r2, 0x8]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ mov r0, sp
+ bl StringCopy
+ mov r0, sp
+ movs r1, 0x2
+ movs r2, 0xF
+ bl MenuPrint
+ mov r3, r8
+ ldrb r1, [r3, 0x11]
+ mov r0, sp
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToHexStringN
+ ldr r4, _080527B8 @ =gUnknown_082165F8
+ mov r0, sp
+ adds r1, r4, 0
+ bl StringAppend
+ mov r0, r8
+ ldrb r1, [r0, 0x12]
+ ldr r0, [sp, 0x84]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToHexStringN
+ mov r0, sp
+ adds r1, r4, 0
+ bl StringAppend
+ mov r2, r8
+ ldrb r1, [r2, 0x13]
+ ldr r0, [sp, 0x88]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToHexStringN
+ mov r0, sp
+ adds r1, r4, 0
+ bl StringAppend
+ mov r3, r8
+ ldrb r1, [r3, 0x14]
+ ldr r0, [sp, 0x8C]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToHexStringN
+ mov r0, sp
+ adds r1, r4, 0
+ bl StringAppend
+ mov r0, r8
+ ldrb r1, [r0, 0x15]
+ ldr r0, [sp, 0x90]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToHexStringN
+ mov r0, sp
+ adds r1, r4, 0
+ bl StringAppend
+ mov r2, r8
+ ldrb r1, [r2, 0x16]
+ ldr r0, [sp, 0x94]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToHexStringN
+ mov r1, sp
+ ldrb r0, [r1, 0x11]
+ add r3, sp, 0x80
+ ldrb r3, [r3]
+ orrs r0, r3
+ strb r0, [r1, 0x11]
+ mov r0, sp
+ movs r1, 0x7
+ movs r2, 0x11
+ bl MenuPrint
+_080527A4:
+ add sp, 0x98
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080527B4: .4byte gPokeblockNames
+_080527B8: .4byte gUnknown_082165F8
+ thumb_func_end sub_8052530
+
+ thumb_func_start sub_80527BC
+sub_80527BC: @ 80527BC
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x58
+ ldr r0, _08052844 @ =gUnknown_020297DC
+ ldrb r0, [r0]
+ add r6, sp, 0x48
+ cmp r0, 0x1
+ bne _08052814
+ movs r1, 0
+ ldr r3, _08052848 @ =gUnknown_03004840
+ movs r2, 0
+_080527D6:
+ lsls r0, r1, 1
+ adds r0, r3
+ strh r2, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0x9
+ bls _080527D6
+ bl Random
+ ldr r1, _0805284C @ =gUnknown_03004830
+ strh r0, [r1]
+ ldr r1, _08052850 @ =gUnknown_020297E0
+ movs r0, 0
+ str r0, [r1]
+ ldr r1, _08052844 @ =gUnknown_020297DC
+ movs r0, 0x2
+ strb r0, [r1]
+ movs r4, 0
+ ldr r2, _08052854 @ =0x02000000
+ movs r1, 0
+_08052800:
+ adds r0, r4, r2
+ strb r1, [r0]
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0xC7
+ bls _08052800
+ ldr r1, _08052858 @ =gUnknown_020297E8
+ movs r0, 0
+ strb r0, [r1]
+_08052814:
+ movs r4, 0
+ movs r0, 0x1
+ mov r8, r0
+ ldr r7, _08052858 @ =gUnknown_020297E8
+ ldr r5, _08052850 @ =gUnknown_020297E0
+ ldr r1, _08052854 @ =0x02000000
+ mov r9, r1
+ ldr r3, _0805285C @ =gUnknown_020297E4
+_08052824:
+ str r3, [sp, 0x54]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 31
+ mov r1, r8
+ ands r0, r1
+ ldr r3, [sp, 0x54]
+ ldrb r1, [r7]
+ cmp r0, r1
+ bne _08052860
+ ldr r0, [r5]
+ adds r0, 0x1
+ str r0, [r5]
+ b _0805287A
+ .align 2, 0
+_08052844: .4byte gUnknown_020297DC
+_08052848: .4byte gUnknown_03004840
+_0805284C: .4byte gUnknown_03004830
+_08052850: .4byte gUnknown_020297E0
+_08052854: .4byte 0x02000000
+_08052858: .4byte gUnknown_020297E8
+_0805285C: .4byte gUnknown_020297E4
+_08052860:
+ ldr r2, [r3]
+ lsls r0, r2, 1
+ add r0, r9
+ ldr r1, [r5]
+ strh r1, [r0]
+ adds r2, 0x1
+ str r2, [r3]
+ movs r0, 0
+ str r0, [r5]
+ ldrb r0, [r7]
+ mov r1, r8
+ eors r0, r1
+ strb r0, [r7]
+_0805287A:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x63
+ bls _08052824
+ mov r1, sp
+ movs r0, 0xFF
+ strb r0, [r1]
+ ldr r0, _08052900 @ =gUnknown_03004830
+ ldrh r1, [r0]
+ adds r0, r6, 0
+ movs r2, 0x2
+ movs r3, 0x8
+ bl ConvertIntToHexStringN
+ mov r0, sp
+ adds r1, r6, 0
+ bl StringAppend
+ ldr r1, _08052904 @ =gUnknown_082165F8
+ mov r0, sp
+ bl StringAppend
+ ldr r0, _08052908 @ =gUnknown_020297E0
+ ldr r1, [r0]
+ adds r0, r6, 0
+ movs r2, 0x2
+ movs r3, 0x8
+ bl ConvertIntToHexStringN
+ mov r0, sp
+ adds r1, r6, 0
+ bl StringAppend
+ ldr r1, _0805290C @ =gUnknown_08216600
+ mov r0, sp
+ bl StringAppend
+ ldr r4, _08052910 @ =gUnknown_020297DC
+ ldrb r0, [r4]
+ cmp r0, 0x3
+ bne _080528E8
+ ldr r0, _08052914 @ =gUnknown_020297E4
+ ldr r1, [r0]
+ adds r0, r6, 0
+ movs r2, 0x2
+ movs r3, 0x10
+ bl ConvertIntToHexStringN
+ mov r0, sp
+ adds r1, r6, 0
+ bl StringAppend
+ movs r0, 0
+ strb r0, [r4]
+_080528E8:
+ mov r0, sp
+ movs r1, 0x2
+ movs r2, 0xF
+ bl MenuPrint
+ add sp, 0x58
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08052900: .4byte gUnknown_03004830
+_08052904: .4byte gUnknown_082165F8
+_08052908: .4byte gUnknown_020297E0
+_0805290C: .4byte gUnknown_08216600
+_08052910: .4byte gUnknown_020297DC
+_08052914: .4byte gUnknown_020297E4
+ thumb_func_end sub_80527BC
+
+ thumb_func_start sub_8052918
+sub_8052918: @ 8052918
+ push {r4-r6,lr}
+ sub sp, 0x4C
+ ldr r2, _08052A88 @ =gMain
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r1
+ ldr r4, _08052A8C @ =gUnknown_03000560
+ cmp r0, 0
+ beq _0805294C
+ movs r1, 0xFA
+ lsls r1, 2
+ adds r0, r1, 0
+ ldrh r1, [r4, 0x1A]
+ adds r0, r1
+ strh r0, [r4, 0x1A]
+ lsls r0, 16
+ ldr r1, _08052A90 @ =0x75300000
+ cmp r0, r1
+ ble _08052946
+ movs r0, 0xFA
+ lsls r0, 2
+ strh r0, [r4, 0x1A]
+_08052946:
+ ldrb r0, [r4, 0x10]
+ adds r0, 0x1
+ strb r0, [r4, 0x10]
+_0805294C:
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _08052972
+ ldr r1, _08052A94 @ =0xfffffc18
+ adds r0, r1, 0
+ ldrh r1, [r4, 0x1A]
+ adds r0, r1
+ strh r0, [r4, 0x1A]
+ lsls r0, 16
+ cmp r0, 0
+ bge _0805296C
+ ldr r0, _08052A98 @ =0x00007530
+ strh r0, [r4, 0x1A]
+_0805296C:
+ ldrb r0, [r4, 0x10]
+ adds r0, 0x1
+ strb r0, [r4, 0x10]
+_08052972:
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08052992
+ ldrb r0, [r4]
+ subs r0, 0x1
+ strb r0, [r4]
+ lsls r0, 24
+ cmp r0, 0
+ bge _0805298C
+ movs r0, 0x3
+ strb r0, [r4]
+_0805298C:
+ ldrb r0, [r4, 0x10]
+ adds r0, 0x1
+ strb r0, [r4, 0x10]
+_08052992:
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080529B4
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, 0x3
+ ble _080529AE
+ movs r0, 0
+ strb r0, [r4]
+_080529AE:
+ ldrb r0, [r4, 0x10]
+ adds r0, 0x1
+ strb r0, [r4, 0x10]
+_080529B4:
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080529E4
+ adds r3, r4, 0
+ movs r1, 0
+ ldrsb r1, [r3, r1]
+ adds r5, r3, 0x1
+ adds r1, r5
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ cmp r0, 0
+ bge _080529DE
+ movs r0, 0
+ ldrsb r0, [r3, r0]
+ adds r0, r5
+ movs r1, 0x2A
+ strb r1, [r0]
+_080529DE:
+ ldrb r0, [r4, 0x10]
+ adds r0, 0x1
+ strb r0, [r4, 0x10]
+_080529E4:
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08052A16
+ ldr r3, _08052A8C @ =gUnknown_03000560
+ movs r1, 0
+ ldrsb r1, [r3, r1]
+ adds r4, r3, 0x1
+ adds r1, r4
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, 0x2A
+ ble _08052A10
+ movs r0, 0
+ ldrsb r0, [r3, r0]
+ adds r0, r4
+ movs r1, 0
+ strb r1, [r0]
+_08052A10:
+ ldrb r0, [r3, 0x10]
+ adds r0, 0x1
+ strb r0, [r3, 0x10]
+_08052A16:
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08052AA0
+ movs r6, 0
+ movs r4, 0
+ ldr r5, _08052A8C @ =gUnknown_03000560
+_08052A26:
+ adds r0, r5, 0x1
+ adds r2, r4, r0
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ cmp r0, 0x2A
+ beq _08052A64
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsls r0, r4, 1
+ mov r1, sp
+ adds r1, r0
+ adds r1, 0x4
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ strh r0, [r1]
+ add r0, sp, 0xC
+ lsls r1, r4, 4
+ adds r0, r1
+ movs r1, 0
+ ldrsb r1, [r2, r1]
+ adds r1, 0x85
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_804E844
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x3
+ bls _08052A26
+_08052A64:
+ cmp r6, 0x1
+ bls _08052A9C
+ add r0, sp, 0xC
+ adds r1, r5, 0
+ adds r1, 0x8
+ lsls r2, r6, 24
+ lsrs r2, 24
+ adds r3, r5, 0
+ adds r3, 0x11
+ ldrh r4, [r5, 0x1A]
+ str r4, [sp]
+ bl sub_8050744
+ ldrb r0, [r5, 0x10]
+ adds r0, 0x1
+ strb r0, [r5, 0x10]
+ b _08052AA0
+ .align 2, 0
+_08052A88: .4byte gMain
+_08052A8C: .4byte gUnknown_03000560
+_08052A90: .4byte 0x75300000
+_08052A94: .4byte 0xfffffc18
+_08052A98: .4byte 0x00007530
+_08052A9C:
+ movs r0, 0xFF
+ strb r0, [r5, 0x8]
+_08052AA0:
+ ldr r4, _08052AE8 @ =gUnknown_03000560
+ ldrb r0, [r4, 0x10]
+ cmp r0, 0
+ beq _08052AB0
+ bl sub_8052530
+ movs r0, 0
+ strb r0, [r4, 0x10]
+_08052AB0:
+ ldr r3, _08052AEC @ =gMain
+ ldrh r1, [r3, 0x2E]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08052AD4
+ ldr r2, _08052AF0 @ =gUnknown_020297DC
+ ldrb r0, [r2]
+ adds r1, r0, 0
+ cmp r1, 0
+ bne _08052ADC
+ adds r0, 0x1
+ strb r0, [r2]
+ ldr r0, _08052AF4 @ =gUnknown_020297E0
+ str r1, [r0]
+ ldrh r0, [r3, 0x20]
+ bl SeedRng
+_08052AD4:
+ ldr r0, _08052AF0 @ =gUnknown_020297DC
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08052AE0
+_08052ADC:
+ bl sub_80527BC
+_08052AE0:
+ add sp, 0x4C
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08052AE8: .4byte gUnknown_03000560
+_08052AEC: .4byte gMain
+_08052AF0: .4byte gUnknown_020297DC
+_08052AF4: .4byte gUnknown_020297E0
+ thumb_func_end sub_8052918
+
+ thumb_func_start sub_8052AF8
+sub_8052AF8: @ 8052AF8
+ push {lr}
+ bl sub_8052918
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8052AF8
+
+ thumb_func_start ShowBerryBlenderRecordWindow
+ShowBerryBlenderRecordWindow: @ 8052B14
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x20
+ movs r0, 0x6
+ movs r1, 0x3
+ movs r2, 0x17
+ movs r3, 0x10
+ bl MenuDrawTextWindow
+ ldr r0, _08052BAC @ =gMultiText_BerryBlenderMaxSpeedRecord
+ movs r1, 0x8
+ movs r2, 0x4
+ bl MenuPrint
+ ldr r0, _08052BB0 @ =gMultiText_2P3P4P
+ movs r1, 0x8
+ movs r2, 0x9
+ bl MenuPrint
+ movs r0, 0
+ mov r8, r0
+ ldr r0, _08052BB4 @ =gSaveBlock1
+ movs r7, 0x90
+ lsls r7, 20
+ ldr r1, _08052BB8 @ =0x0000096c
+ adds r6, r0, r1
+_08052B4A:
+ ldrh r4, [r6]
+ adds r0, r4, 0
+ movs r1, 0x64
+ bl __udivsi3
+ adds r1, r0, 0
+ mov r0, sp
+ movs r2, 0x12
+ movs r3, 0x1
+ bl sub_8072C14
+ adds r5, r0, 0
+ movs r0, 0xB8
+ strb r0, [r5]
+ adds r5, 0x1
+ adds r0, r4, 0
+ movs r1, 0x64
+ bl __umodsi3
+ adds r1, r0, 0
+ adds r0, r5, 0
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ adds r5, r0, 0
+ ldr r1, _08052BBC @ =gOtherText_RPM
+ bl StringAppend
+ lsrs r2, r7, 24
+ mov r0, sp
+ movs r1, 0xF
+ bl MenuPrint
+ movs r0, 0x80
+ lsls r0, 18
+ adds r7, r0
+ adds r6, 0x2
+ movs r1, 0x1
+ add r8, r1
+ mov r0, r8
+ cmp r0, 0x2
+ ble _08052B4A
+ add sp, 0x20
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08052BAC: .4byte gMultiText_BerryBlenderMaxSpeedRecord
+_08052BB0: .4byte gMultiText_2P3P4P
+_08052BB4: .4byte gSaveBlock1
+_08052BB8: .4byte 0x0000096c
+_08052BBC: .4byte gOtherText_RPM
+ thumb_func_end ShowBerryBlenderRecordWindow
+
+ thumb_func_start sub_8052BD0
+sub_8052BD0: @ 8052BD0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _08052C1C @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _08052BF6
+ ldr r0, _08052C20 @ =0x0000016f
+ bl PlayFanfare
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_08052BF6:
+ bl IsFanfareTaskInactive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08052C16
+ ldr r0, _08052C24 @ =gUnknown_03004854
+ ldr r0, [r0]
+ movs r1, 0xBC
+ lsls r1, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ bl PlayBGM
+ adds r0, r5, 0
+ bl DestroyTask
+_08052C16:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08052C1C: .4byte gTasks
+_08052C20: .4byte 0x0000016f
+_08052C24: .4byte gUnknown_03004854
+ thumb_func_end sub_8052BD0