summaryrefslogtreecommitdiff
path: root/asm/berry_crush.s
diff options
context:
space:
mode:
authorPhlosioneer <mattmdrr2@gmail.com>2019-04-07 01:56:36 -0400
committerPhlosioneer <mattmdrr2@gmail.com>2019-04-07 01:56:36 -0400
commitd84d94e29a1424dd1d12ff821957bb6b1bc847d6 (patch)
treec5ba0778afca66a91f71815cd53fe9abef1bdac6 /asm/berry_crush.s
parentad2a97935e1c1f4362f0dffa58ef437d191bab4e (diff)
parentc3cfd6065825ec8ddd5e1782998071518efaa322 (diff)
Merge branch 'master' into pokenav-decomp-again
Diffstat (limited to 'asm/berry_crush.s')
-rwxr-xr-xasm/berry_crush.s5948
1 files changed, 5948 insertions, 0 deletions
diff --git a/asm/berry_crush.s b/asm/berry_crush.s
new file mode 100755
index 000000000..00bff2b56
--- /dev/null
+++ b/asm/berry_crush.s
@@ -0,0 +1,5948 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80216E0
+sub_80216E0: @ 80216E0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ adds r6, r0, 0
+ str r1, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ movs r1, 0x4E
+ adds r1, r6
+ mov r10, r1
+ mov r9, r0
+ ldrb r2, [r6, 0x9]
+ cmp r0, r2
+ bcs _080217AE
+ ldr r7, =gUnknown_082F41CC
+_08021704:
+ mov r3, r10
+ ldrh r0, [r3, 0xA]
+ mov r4, r9
+ lsls r1, r4, 1
+ add r1, r9
+ asrs r0, r1
+ lsls r0, 16
+ movs r1, 0xE0
+ lsls r1, 11
+ ands r1, r0
+ lsrs r1, 16
+ mov r8, r1
+ cmp r1, 0
+ beq _0802179E
+ ldr r0, [sp, 0x4]
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08021748
+ lsls r4, 2
+ ldr r5, [sp]
+ adds r5, 0x24
+ adds r0, r5, r4
+ ldr r0, [r0]
+ movs r1, 0x1
+ bl StartSpriteAnim
+ b _0802175A
+ .pool
+_08021748:
+ mov r0, r9
+ lsls r4, r0, 2
+ ldr r5, [sp]
+ adds r5, 0x24
+ adds r0, r5, r4
+ ldr r0, [r0]
+ movs r1, 0
+ bl StartSpriteAnim
+_0802175A:
+ adds r3, r5, r4
+ ldr r2, [r3]
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r4, 0x5
+ negs r4, r4
+ adds r1, r4, 0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r2, [r3]
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ subs r4, 0x3C
+ adds r1, r4, 0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r2, [r3]
+ movs r0, 0x3
+ mov r1, r8
+ ands r1, r0
+ mov r8, r1
+ subs r1, 0x1
+ lsls r1, 1
+ adds r0, r1, r7
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r2, 0x24]
+ ldr r2, [r3]
+ ldr r3, =gUnknown_082F41CC+1
+ adds r1, r3
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ strh r0, [r2, 0x26]
+_0802179E:
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldrb r4, [r6, 0x9]
+ cmp r9, r4
+ bcc _08021704
+_080217AE:
+ ldr r0, [sp, 0x4]
+ cmp r0, 0
+ bne _080217C0
+ adds r2, r6, 0
+ adds r2, 0x25
+ ldrb r1, [r2]
+ b _0802189C
+ .pool
+_080217C0:
+ ldrh r0, [r6, 0x28]
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ mov r1, r8
+ str r1, [sp, 0x8]
+ movs r2, 0
+ mov r9, r2
+ mov r3, r10
+ ldrh r1, [r3, 0xC]
+ lsls r0, r1, 1
+ adds r0, 0x3
+ adds r6, 0x25
+ str r6, [sp, 0xC]
+ adds r3, r1, 0
+ cmp r9, r0
+ bge _08021890
+_080217E8:
+ mov r4, r9
+ lsls r1, r4, 2
+ ldr r0, [sp]
+ adds r0, 0x4C
+ adds r7, r0, r1
+ ldr r2, [r7]
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0802187E
+ ldr r0, =sub_8022B28
+ str r0, [r2, 0x1C]
+ lsls r1, r4, 1
+ ldr r3, =gUnknown_082F41CC+6
+ adds r0, r1, r3
+ movs r4, 0
+ ldrsb r4, [r0, r4]
+ adds r0, r4, 0
+ adds r0, 0x78
+ strh r0, [r2, 0x20]
+ ldr r2, [r7]
+ ldr r0, =gUnknown_082F41CC+7
+ adds r1, r0
+ movs r6, 0
+ ldrsb r6, [r1, r6]
+ mov r1, r8
+ lsls r0, r1, 2
+ subs r0, 0x88
+ subs r0, r6, r0
+ strh r0, [r2, 0x22]
+ ldr r5, [r7]
+ ldr r2, [sp, 0x8]
+ lsls r1, r2, 2
+ adds r0, r4, 0
+ bl __divsi3
+ adds r4, r0
+ strh r4, [r5, 0x24]
+ ldr r0, [r7]
+ strh r6, [r0, 0x26]
+ mov r3, r10
+ ldrb r1, [r3, 0x4]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08021860
+ ldr r0, [r7]
+ movs r1, 0x1
+ bl StartSpriteAnim
+ b _08021868
+ .pool
+_08021860:
+ ldr r0, [r7]
+ movs r1, 0
+ bl StartSpriteAnim
+_08021868:
+ mov r0, r8
+ adds r0, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ mov r4, r10
+ ldrh r3, [r4, 0xC]
+ cmp r0, 0x3
+ bls _0802187E
+ movs r0, 0
+ mov r8, r0
+_0802187E:
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r0, r3, 1
+ adds r0, 0x3
+ cmp r9, r0
+ blt _080217E8
+_08021890:
+ ldr r2, [sp, 0xC]
+ ldrb r1, [r2]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080218A6
+_0802189C:
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ b _080218C4
+_080218A6:
+ ldr r3, [sp, 0x4]
+ cmp r3, 0x1
+ bne _080218B4
+ movs r0, 0x4E
+ bl PlaySE
+ b _080218BA
+_080218B4:
+ movs r0, 0x4D
+ bl PlaySE
+_080218BA:
+ ldr r4, [sp, 0xC]
+ ldrb r0, [r4]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4]
+_080218C4:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80216E0
+
+ thumb_func_start sub_80218D4
+sub_80218D4: @ 80218D4
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r6, r1, 0
+ movs r2, 0
+ ldrb r0, [r5, 0x9]
+ cmp r2, r0
+ bcs _08021906
+ adds r4, r6, 0
+ adds r4, 0x24
+ movs r7, 0x4
+ adds r3, r0, 0
+_080218EA:
+ lsls r0, r2, 2
+ adds r0, r4, r0
+ ldr r0, [r0]
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _08021920
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, r3
+ bcc _080218EA
+_08021906:
+ movs r2, 0
+ adds r3, r6, 0
+ adds r3, 0x4C
+ movs r4, 0x4
+_0802190E:
+ lsls r0, r2, 2
+ adds r0, r3, r0
+ ldr r0, [r0]
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _08021924
+_08021920:
+ movs r0, 0
+ b _0802193C
+_08021924:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xA
+ bls _0802190E
+ movs r1, 0x2C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _0802193A
+ movs r0, 0
+ strh r0, [r5, 0x2C]
+_0802193A:
+ movs r0, 0x1
+_0802193C:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80218D4
+
+ thumb_func_start sub_8021944
+sub_8021944: @ 8021944
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ lsls r4, r1, 16
+ lsrs r4, 16
+ movs r7, 0
+ movs r5, 0xE1
+ lsls r5, 4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl __udivsi3
+ strh r0, [r6, 0x4]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3C
+ bl __udivsi3
+ strh r0, [r6, 0x6]
+ adds r0, r4, 0
+ movs r1, 0x3C
+ bl __umodsi3
+ lsls r0, 24
+ asrs r0, 16
+ movs r1, 0x4
+ bl sub_8151534
+ adds r2, r7, 0
+ lsls r0, 16
+ asrs r3, r0, 16
+ movs r0, 0x7
+ mov r12, r0
+ ldr r5, =gUnknown_082F334C
+ movs r4, 0x1
+_08021990:
+ mov r0, r12
+ subs r1, r0, r2
+ adds r0, r3, 0
+ asrs r0, r1
+ ands r0, r4
+ cmp r0, 0
+ beq _080219A6
+ lsls r0, r2, 2
+ adds r0, r5
+ ldr r0, [r0]
+ adds r7, r0
+_080219A6:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x7
+ bls _08021990
+ ldr r1, =0x000f4240
+ adds r0, r7, 0
+ bl __udivsi3
+ strh r0, [r6, 0x8]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8021944
+
+ thumb_func_start sub_80219C8
+sub_80219C8: @ 80219C8
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0xC
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ mov r8, r3
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ movs r2, 0x1
+ negs r2, r2
+ movs r0, 0x2
+ mov r1, r8
+ bl GetStringWidth
+ lsls r4, 2
+ lsrs r0, 1
+ subs r4, r0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, r5, 1
+ adds r0, r5
+ ldr r1, =gUnknown_082F32D8
+ adds r0, r1
+ str r0, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ mov r0, r8
+ str r0, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ adds r2, r4, 0
+ movs r3, 0
+ bl AddTextPrinterParameterized3
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80219C8
+
+ thumb_func_start sub_8021A28
+sub_8021A28: @ 8021A28
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ str r0, [sp, 0xC]
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp, 0x10]
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x14]
+ lsls r3, 24
+ movs r0, 0
+ str r0, [sp, 0x18]
+ movs r1, 0
+ str r1, [sp, 0x1C]
+ ldr r2, [sp, 0xC]
+ adds r2, 0x68
+ str r2, [sp, 0x20]
+ movs r4, 0xF0
+ lsls r4, 24
+ adds r3, r4
+ lsrs r3, 24
+ ldr r0, [sp, 0x10]
+ cmp r0, 0x2
+ bne _08021A68
+ adds r0, r3, 0
+ subs r0, 0x2A
+ lsls r0, 24
+ lsrs r3, r0, 24
+_08021A68:
+ ldr r2, [sp, 0xC]
+ ldrb r1, [r2, 0x9]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 1
+ subs r6, r3, r0
+ cmp r6, 0
+ ble _08021A84
+ lsrs r0, r6, 31
+ adds r0, r6, r0
+ asrs r0, 1
+ adds r6, r0, 0
+ adds r6, 0x10
+ b _08021A86
+_08021A84:
+ movs r6, 0x10
+_08021A86:
+ movs r5, 0
+ ldr r3, [sp, 0xC]
+ ldrb r3, [r3, 0x9]
+ cmp r5, r3
+ bcc _08021A92
+ b _08021D14
+_08021A92:
+ ldr r4, [sp, 0x10]
+ lsls r4, 2
+ str r4, [sp, 0x24]
+_08021A98:
+ bl DynamicPlaceholderTextUtil_Reset
+ ldr r0, [sp, 0x10]
+ cmp r0, 0x1
+ beq _08021B48
+ cmp r0, 0x1
+ bgt _08021AC0
+ cmp r0, 0
+ beq _08021ADE
+ ldr r4, [sp, 0x14]
+ subs r4, 0x4
+ lsls r1, r6, 24
+ mov r10, r1
+ ldr r2, [sp, 0x1C]
+ adds r2, 0xA2
+ mov r9, r2
+ ldr r3, [sp, 0x18]
+ lsls r3, 5
+ mov r8, r3
+ b _08021C5A
+_08021AC0:
+ ldr r4, [sp, 0x10]
+ cmp r4, 0x2
+ bne _08021AC8
+ b _08021C1C
+_08021AC8:
+ ldr r4, [sp, 0x14]
+ subs r4, 0x4
+ lsls r0, r6, 24
+ mov r10, r0
+ ldr r1, [sp, 0x1C]
+ adds r1, 0xA2
+ mov r9, r1
+ ldr r2, [sp, 0x18]
+ lsls r2, 5
+ mov r8, r2
+ b _08021C5A
+_08021ADE:
+ ldr r0, [sp, 0x20]
+ adds r0, 0x20
+ adds r0, r5
+ ldrb r0, [r0]
+ str r0, [sp, 0x18]
+ lsls r3, r5, 1
+ ldr r2, [sp, 0x20]
+ adds r2, 0xC
+ cmp r5, 0
+ beq _08021B04
+ adds r0, r2, r3
+ subs r1, r5, 0x1
+ lsls r1, 1
+ adds r1, r2, r1
+ ldrh r0, [r0]
+ ldrh r1, [r1]
+ cmp r0, r1
+ beq _08021B04
+ str r5, [sp, 0x1C]
+_08021B04:
+ ldr r4, [sp, 0x24]
+ ldr r1, [sp, 0x10]
+ adds r0, r4, r1
+ lsls r0, 1
+ adds r0, r3, r0
+ adds r0, r2, r0
+ ldrh r1, [r0]
+ ldr r0, =gStringVar4
+ movs r2, 0x1
+ movs r3, 0x4
+ bl ConvertIntToDecimalStringN
+ ldr r0, =gUnknown_082F43B4
+ adds r0, r4, r0
+ ldr r1, [r0]
+ ldr r0, =gStringVar4
+ bl StringAppend
+ ldr r4, [sp, 0x14]
+ subs r4, 0x4
+ lsls r2, r6, 24
+ mov r10, r2
+ ldr r3, [sp, 0x1C]
+ adds r3, 0xA2
+ mov r9, r3
+ ldr r0, [sp, 0x18]
+ lsls r0, 5
+ mov r8, r0
+ b _08021C5A
+ .pool
+_08021B48:
+ ldr r1, [sp, 0x20]
+ adds r0, r1, r5
+ adds r0, 0x28
+ ldrb r0, [r0]
+ str r0, [sp, 0x18]
+ lsls r3, r5, 1
+ adds r2, r1, 0
+ adds r2, 0xC
+ cmp r5, 0
+ beq _08021B72
+ adds r0, r3, 0
+ adds r0, 0xA
+ adds r0, r2, r0
+ adds r1, r3, 0
+ adds r1, 0x8
+ adds r1, r2, r1
+ ldrh r0, [r0]
+ ldrh r1, [r1]
+ cmp r0, r1
+ beq _08021B72
+ str r5, [sp, 0x1C]
+_08021B72:
+ ldr r0, [sp, 0x24]
+ ldr r1, [sp, 0x10]
+ adds r4, r0, r1
+ lsls r4, 1
+ adds r4, r3, r4
+ adds r4, r2, r4
+ ldrh r1, [r4]
+ lsrs r1, 4
+ ldr r0, =gStringVar1
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ movs r7, 0
+ ldrb r0, [r4]
+ movs r3, 0xF
+ ands r3, r0
+ movs r2, 0
+ ldr r4, [sp, 0x10]
+ lsls r4, 2
+ str r4, [sp, 0x28]
+ ldr r4, [sp, 0x14]
+ subs r4, 0x4
+ lsls r0, r6, 24
+ mov r10, r0
+ ldr r1, [sp, 0x1C]
+ adds r1, 0xA2
+ mov r9, r1
+ ldr r0, [sp, 0x18]
+ lsls r0, 5
+ mov r8, r0
+ adds r6, 0xE
+ adds r5, 0x1
+ ldr r1, =gUnknown_082F334C
+ mov r12, r1
+_08021BB8:
+ movs r0, 0x3
+ subs r1, r0, r2
+ adds r0, r3, 0
+ asrs r0, r1
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08021BD0
+ lsls r0, r2, 2
+ add r0, r12
+ ldr r0, [r0]
+ adds r7, r0
+_08021BD0:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x3
+ bls _08021BB8
+ adds r0, r7, 0
+ ldr r1, =0x000f4240
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r0, =gStringVar2
+ adds r1, r3, 0
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r0, =gUnknown_082F43B4
+ ldr r2, [sp, 0x28]
+ adds r0, r2, r0
+ ldr r1, [r0]
+ ldr r0, =gStringVar4
+ bl StringExpandPlaceholders
+ b _08021C5E
+ .pool
+_08021C1C:
+ str r5, [sp, 0x18]
+ str r5, [sp, 0x1C]
+ lsls r7, r5, 5
+ ldr r3, [sp, 0xC]
+ adds r0, r3, r7
+ adds r0, 0xA4
+ ldrb r2, [r0]
+ cmp r2, 0x2B
+ bls _08021C30
+ movs r2, 0
+_08021C30:
+ lsls r1, r2, 3
+ subs r1, r2
+ lsls r1, 2
+ ldr r0, =gBerries
+ adds r1, r0
+ ldr r0, =gStringVar1
+ bl StringCopy
+ ldr r0, =gUnknown_082F43B4
+ ldr r1, [r0, 0x8]
+ ldr r0, =gStringVar4
+ bl StringExpandPlaceholders
+ ldr r4, [sp, 0x14]
+ subs r4, 0x4
+ lsls r0, r6, 24
+ mov r10, r0
+ movs r1, 0xA2
+ adds r1, r5
+ mov r9, r1
+ mov r8, r7
+_08021C5A:
+ adds r6, 0xE
+ adds r5, 0x1
+_08021C5E:
+ movs r0, 0x2
+ ldr r1, =gStringVar4
+ adds r2, r4, 0
+ bl GetStringRightAlignXOffset
+ adds r2, r0, 0
+ ldr r3, [sp, 0xC]
+ movs r4, 0xDD
+ lsls r4, 1
+ adds r0, r3, r4
+ ldrb r0, [r0]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r1, r10
+ lsrs r3, r1, 24
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ movs r4, 0
+ str r4, [sp, 0x4]
+ ldr r1, =gStringVar4
+ str r1, [sp, 0x8]
+ movs r1, 0x2
+ bl AddTextPrinterParameterized3
+ ldr r3, [sp, 0x18]
+ ldr r2, [sp, 0xC]
+ ldrb r2, [r2, 0x8]
+ cmp r3, r2
+ bne _08021CC0
+ ldr r0, =gStringVar3
+ ldr r1, =gText_1DotBlueF700
+ bl StringCopy
+ b _08021CC8
+ .pool
+_08021CC0:
+ ldr r0, =gStringVar3
+ ldr r1, =gText_1DotF700
+ bl StringCopy
+_08021CC8:
+ ldr r4, =gStringVar3
+ mov r3, r9
+ strb r3, [r4]
+ mov r1, r8
+ adds r1, 0x98
+ ldr r0, [sp, 0xC]
+ adds r1, r0, r1
+ movs r0, 0
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
+ ldr r0, =gStringVar4
+ adds r1, r4, 0
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
+ ldr r1, [sp, 0xC]
+ movs r2, 0xDD
+ lsls r2, 1
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ mov r4, r10
+ lsrs r3, r4, 24
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ ldr r2, =gStringVar4
+ str r2, [sp, 0x8]
+ movs r1, 0x2
+ movs r2, 0x4
+ bl AddTextPrinterParameterized3
+ lsls r0, r5, 24
+ lsrs r5, r0, 24
+ ldr r3, [sp, 0xC]
+ ldrb r3, [r3, 0x9]
+ cmp r5, r3
+ bcs _08021D14
+ b _08021A98
+_08021D14:
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8021A28
+
+ thumb_func_start sub_8021D34
+sub_8021D34: @ 8021D34
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ mov r8, r0
+ movs r0, 0
+ mov r10, r0
+ movs r6, 0
+ movs r1, 0
+ str r1, [sp, 0xC]
+ mov r2, r8
+ adds r2, 0x68
+ str r2, [sp, 0x10]
+ movs r4, 0xDD
+ lsls r4, 1
+ add r4, r8
+ mov r9, r4
+ ldrb r0, [r4]
+ movs r1, 0x4
+ bl GetWindowAttribute
+ lsls r0, 27
+ movs r1, 0xD6
+ lsls r1, 24
+ adds r0, r1
+ lsrs r7, r0, 24
+ movs r0, 0x9C
+ lsls r0, 1
+ add r0, r8
+ ldr r2, [sp, 0x10]
+ ldrh r1, [r2, 0x4]
+ bl sub_8021944
+ ldrb r0, [r4]
+ ldr r4, =gUnknown_082F32D8
+ str r4, [sp]
+ str r6, [sp, 0x4]
+ ldr r1, =gText_TimeColon
+ str r1, [sp, 0x8]
+ movs r1, 0x2
+ movs r2, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ ldr r4, =gText_SpaceSec
+ movs r0, 0x2
+ adds r1, r4, 0
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ movs r1, 0xB0
+ subs r0, r1, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r2, r9
+ ldrb r0, [r2]
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ mov r2, r10
+ str r2, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ movs r0, 0x9F
+ lsls r0, 1
+ add r0, r8
+ movs r4, 0
+ ldrsh r1, [r0, r4]
+ ldr r0, =gStringVar1
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r0, =gStringVar2
+ movs r1, 0xA0
+ lsls r1, 1
+ add r1, r8
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r5, =gStringVar4
+ ldr r1, =gText_XDotY2
+ adds r0, r5, 0
+ bl StringExpandPlaceholders
+ movs r0, 0x2
+ adds r1, r5, 0
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ subs r0, r6, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r4, r9
+ ldrb r0, [r4]
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ mov r2, r10
+ str r2, [sp, 0x4]
+ str r5, [sp, 0x8]
+ movs r1, 0x2
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ ldr r4, =gText_SpaceMin
+ movs r0, 0x2
+ adds r1, r4, 0
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ subs r0, r6, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r1, r9
+ ldrb r0, [r1]
+ ldr r2, =gUnknown_082F32D8
+ str r2, [sp]
+ mov r1, r10
+ str r1, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ movs r0, 0x9E
+ lsls r0, 1
+ add r0, r8
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ ldr r0, =gStringVar1
+ movs r2, 0x2
+ movs r3, 0x1
+ bl ConvertIntToDecimalStringN
+ ldr r1, =gText_StrVar1
+ adds r0, r5, 0
+ bl StringExpandPlaceholders
+ movs r0, 0x2
+ adds r1, r5, 0
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ subs r0, r6, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r4, r9
+ ldrb r0, [r4]
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ mov r2, r10
+ str r2, [sp, 0x4]
+ str r5, [sp, 0x8]
+ movs r1, 0x2
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ adds r0, r7, 0
+ adds r0, 0xE
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r4]
+ ldr r4, =gUnknown_082F32D8
+ str r4, [sp]
+ mov r1, r10
+ str r1, [sp, 0x4]
+ ldr r1, =gText_PressingSpeed
+ str r1, [sp, 0x8]
+ movs r1, 0x2
+ movs r2, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ ldr r4, =gText_TimesPerSec
+ movs r0, 0x2
+ adds r1, r4, 0
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ movs r2, 0xB0
+ subs r0, r2, r0
+ lsls r0, 24
+ str r0, [sp, 0x18]
+ lsrs r6, r0, 24
+ mov r1, r9
+ ldrb r0, [r1]
+ ldr r2, =gUnknown_082F32D8
+ str r2, [sp]
+ mov r1, r10
+ str r1, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ mov r4, r8
+ ldrb r2, [r4, 0x16]
+ ldrh r0, [r4, 0x16]
+ mov r12, r0
+ movs r1, 0x7
+ mov r9, r1
+ movs r5, 0x1
+ ldr r3, =gUnknown_082F334C
+_08021EEC:
+ mov r4, r9
+ mov r0, r10
+ subs r1, r4, r0
+ adds r0, r2, 0
+ asrs r0, r1
+ ands r0, r5
+ cmp r0, 0
+ beq _08021F0A
+ mov r1, r10
+ lsls r0, r1, 2
+ adds r0, r3
+ ldr r0, [r0]
+ ldr r4, [sp, 0xC]
+ adds r4, r0
+ str r4, [sp, 0xC]
+_08021F0A:
+ mov r0, r10
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ cmp r0, 0x7
+ bls _08021EEC
+ ldr r0, =gStringVar1
+ mov r2, r12
+ lsrs r1, r2, 8
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ ldr r4, =gStringVar2
+ ldr r1, =0x000f4240
+ ldr r0, [sp, 0xC]
+ bl __udivsi3
+ adds r1, r0, 0
+ adds r0, r4, 0
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r4, =gStringVar4
+ ldr r1, =gText_XDotY3
+ adds r0, r4, 0
+ bl StringExpandPlaceholders
+ movs r2, 0x1
+ negs r2, r2
+ movs r0, 0x2
+ adds r1, r4, 0
+ bl GetStringWidth
+ subs r0, r6, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r0, r8
+ adds r0, 0x25
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ beq _08021FC4
+ movs r0, 0xDD
+ lsls r0, 1
+ add r0, r8
+ ldrb r0, [r0]
+ ldr r1, =gUnknown_082F32E7
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ b _08021FDE
+ .pool
+_08021FC4:
+ movs r0, 0xDD
+ lsls r0, 1
+ add r0, r8
+ ldrb r0, [r0]
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ str r2, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+_08021FDE:
+ adds r0, r7, 0
+ adds r0, 0xE
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r4, 0xDD
+ lsls r4, 1
+ add r8, r4
+ mov r1, r8
+ ldrb r0, [r1]
+ ldr r2, =gUnknown_082F32D8
+ mov r9, r2
+ str r2, [sp]
+ movs r5, 0
+ str r5, [sp, 0x4]
+ ldr r1, =gText_Silkiness
+ str r1, [sp, 0x8]
+ movs r1, 0x2
+ movs r2, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ ldr r0, =gStringVar1
+ ldr r4, [sp, 0x10]
+ ldrh r1, [r4, 0x8]
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ ldr r4, =gStringVar4
+ ldr r1, =gText_Var1Percent
+ adds r0, r4, 0
+ bl StringExpandPlaceholders
+ movs r2, 0x1
+ negs r2, r2
+ movs r0, 0x2
+ adds r1, r4, 0
+ bl GetStringWidth
+ movs r1, 0xB0
+ subs r1, r0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ mov r1, r8
+ ldrb r0, [r1]
+ mov r2, r9
+ str r2, [sp]
+ str r5, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x2
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl AddTextPrinterParameterized3
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8021D34
+
+ thumb_func_start sub_8022070
+sub_8022070: @ 8022070
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r6, r1, 0
+ adds r0, r6, 0
+ adds r0, 0x80
+ ldrb r0, [r0]
+ cmp r0, 0x5
+ bls _08022084
+ b _08022218
+_08022084:
+ lsls r0, 2
+ ldr r1, =_08022094
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08022094:
+ .4byte _080220AC
+ .4byte _080220F8
+ .4byte _0802210C
+ .4byte _08022130
+ .4byte _080221F8
+ .4byte _08022200
+_080220AC:
+ ldrb r0, [r4, 0x9]
+ subs r0, 0x2
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r6, 0
+ bl sub_8022554
+ ldrh r0, [r4, 0x12]
+ lsls r0, 3
+ ldr r2, =gUnknown_082F32CC
+ mov r1, sp
+ adds r0, r2
+ ldm r0!, {r2,r3}
+ stm r1!, {r2,r3}
+ ldrh r0, [r4, 0x12]
+ cmp r0, 0xD
+ bne _080220DC
+ ldr r0, =gUnknown_082F3344
+ adds r0, 0x4
+ b _080220DE
+ .pool
+_080220DC:
+ ldr r0, =gUnknown_082F3344
+_080220DE:
+ adds r0, r5, r0
+ ldrb r1, [r0]
+ mov r0, sp
+ strb r1, [r0, 0x4]
+ mov r0, sp
+ bl AddWindow
+ adds r1, r6, 0
+ adds r1, 0x82
+ strb r0, [r1]
+ b _08022218
+ .pool
+_080220F8:
+ adds r4, r6, 0
+ adds r4, 0x82
+ ldrb r0, [r4]
+ bl PutWindowTilemap
+ ldrb r0, [r4]
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ b _08022218
+_0802210C:
+ adds r5, r6, 0
+ adds r5, 0x82
+ ldrb r0, [r5]
+ ldr r4, =0x0000021d
+ adds r1, r4, 0
+ movs r2, 0xD0
+ bl LoadUserWindowBorderGfx_
+ ldrb r0, [r5]
+ movs r1, 0
+ adds r2, r4, 0
+ movs r3, 0xD
+ bl DrawStdFrameWithCustomTileAndPalette
+ b _08022218
+ .pool
+_08022130:
+ ldrb r0, [r4, 0x9]
+ subs r0, 0x2
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrh r0, [r4, 0x12]
+ cmp r0, 0xC
+ beq _08022184
+ cmp r0, 0xC
+ bgt _08022148
+ cmp r0, 0xB
+ beq _0802214E
+ b _08022218
+_08022148:
+ cmp r0, 0xD
+ beq _080221C8
+ b _08022218
+_0802214E:
+ adds r0, r6, 0
+ adds r0, 0x82
+ ldrb r0, [r0]
+ ldr r3, =gText_PressesRankings
+ movs r1, 0x14
+ movs r2, 0x3
+ bl sub_80219C8
+ ldr r0, =gUnknown_082F3344
+ adds r0, r5, r0
+ ldrb r3, [r0]
+ lsls r3, 27
+ lsrs r3, 24
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0xA0
+ bl sub_8021A28
+ adds r1, r6, 0
+ adds r1, 0x80
+ movs r0, 0x5
+ b _08022220
+ .pool
+_08022184:
+ adds r0, r6, 0
+ adds r0, 0x82
+ ldrb r0, [r0]
+ ldr r2, =gUnknown_082F43B4
+ adds r1, r4, 0
+ adds r1, 0x8F
+ ldrb r1, [r1]
+ adds r1, 0x3
+ lsls r1, 2
+ adds r1, r2
+ ldr r3, [r1]
+ movs r1, 0x14
+ movs r2, 0x4
+ bl sub_80219C8
+ ldr r0, =gUnknown_082F3344
+ adds r0, r5, r0
+ ldrb r3, [r0]
+ lsls r3, 27
+ lsrs r3, 24
+ adds r0, r4, 0
+ movs r1, 0x1
+ movs r2, 0xA0
+ bl sub_8021A28
+ adds r1, r6, 0
+ adds r1, 0x80
+ movs r0, 0x5
+ b _08022220
+ .pool
+_080221C8:
+ adds r0, r6, 0
+ adds r0, 0x82
+ ldrb r0, [r0]
+ ldr r3, =gText_CrushingResults
+ movs r1, 0x16
+ movs r2, 0x3
+ bl sub_80219C8
+ ldr r0, =gUnknown_082F3344
+ adds r0, 0x4
+ adds r0, r5, r0
+ ldrb r3, [r0]
+ lsls r3, 27
+ lsrs r3, 24
+ adds r0, r4, 0
+ movs r1, 0x2
+ movs r2, 0xB0
+ bl sub_8021A28
+ b _08022218
+ .pool
+_080221F8:
+ adds r0, r4, 0
+ bl sub_8021D34
+ b _08022218
+_08022200:
+ adds r0, r6, 0
+ adds r0, 0x82
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ adds r1, r6, 0
+ adds r1, 0x80
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ b _08022224
+_08022218:
+ adds r1, r6, 0
+ adds r1, 0x80
+ ldrb r0, [r1]
+ adds r0, 0x1
+_08022220:
+ strb r0, [r1]
+ movs r0, 0
+_08022224:
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8022070
+
+ thumb_func_start sub_802222C
+sub_802222C: @ 802222C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xDD
+ lsls r0, 1
+ adds r5, r4, r0
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl ClearStdWindowAndFrameToTransparent
+ ldrb r0, [r5]
+ bl RemoveWindow
+ adds r0, r4, 0
+ bl sub_8022600
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802222C
+
+ thumb_func_start sub_8022250
+sub_8022250: @ 8022250
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r0, 0
+ mov r9, r0
+ movs r1, 0
+ str r1, [sp, 0xC]
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, =gTasks + 0x8
+ adds r6, r0, r1
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x1
+ beq _080222D0
+ cmp r0, 0x1
+ bgt _08022288
+ cmp r0, 0
+ beq _08022296
+ b _080224BA
+ .pool
+_08022288:
+ cmp r0, 0x2
+ bne _0802228E
+ b _08022480
+_0802228E:
+ cmp r0, 0x3
+ bne _08022294
+ b _08022494
+_08022294:
+ b _080224BA
+_08022296:
+ ldr r0, =gUnknown_082F32EC
+ bl AddWindow
+ strh r0, [r6, 0x2]
+ lsls r0, 24
+ lsrs r0, 24
+ bl PutWindowTilemap
+ ldrb r0, [r6, 0x2]
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ ldrb r0, [r6, 0x2]
+ ldr r4, =0x0000021d
+ adds r1, r4, 0
+ movs r2, 0xD0
+ bl LoadUserWindowBorderGfx_
+ ldrb r0, [r6, 0x2]
+ movs r1, 0
+ adds r2, r4, 0
+ movs r3, 0xD
+ bl DrawStdFrameWithCustomTileAndPalette
+ b _080224BA
+ .pool
+_080222D0:
+ ldr r0, =gText_BerryCrush2
+ mov r10, r0
+ movs r1, 0x1
+ negs r1, r1
+ mov r8, r1
+ movs r0, 0x1
+ mov r1, r10
+ mov r2, r8
+ bl GetStringWidth
+ lsrs r0, 1
+ movs r4, 0x60
+ subs r0, r4, r0
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r6, 0x2]
+ ldr r5, =gUnknown_082F32E1
+ str r5, [sp]
+ mov r1, r9
+ str r1, [sp, 0x4]
+ mov r1, r10
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ adds r2, r7, 0
+ movs r3, 0x1
+ bl AddTextPrinterParameterized3
+ ldr r0, =gText_PressingSpeedRankings
+ mov r10, r0
+ movs r0, 0x1
+ mov r1, r10
+ mov r2, r8
+ bl GetStringWidth
+ lsrs r0, 1
+ subs r4, r0
+ lsls r4, 24
+ lsrs r7, r4, 24
+ ldrb r0, [r6, 0x2]
+ str r5, [sp]
+ mov r1, r9
+ str r1, [sp, 0x4]
+ mov r1, r10
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ adds r2, r7, 0
+ movs r3, 0x11
+ bl AddTextPrinterParameterized3
+ movs r0, 0x29
+ mov r10, r0
+_08022336:
+ mov r1, r9
+ adds r1, 0x2
+ ldr r0, =gStringVar1
+ movs r2, 0
+ movs r3, 0x1
+ bl ConvertIntToDecimalStringN
+ ldr r0, =gStringVar4
+ ldr r1, =gText_Var1Players
+ bl StringExpandPlaceholders
+ ldrb r0, [r6, 0x2]
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ ldr r1, =gStringVar4
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ movs r2, 0
+ mov r3, r10
+ bl AddTextPrinterParameterized3
+ movs r0, 0x1
+ ldr r1, =gText_TimesPerSec
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ movs r1, 0xC0
+ subs r1, r0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ ldrb r0, [r6, 0x2]
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ ldr r1, =gText_TimesPerSec
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ adds r2, r7, 0
+ mov r3, r10
+ bl AddTextPrinterParameterized3
+ movs r2, 0
+ mov r0, r9
+ lsls r4, r0, 1
+ mov r1, r10
+ adds r1, 0x10
+ str r1, [sp, 0x10]
+ movs r0, 0x1
+ add r9, r0
+ adds r0, r4, r6
+ ldrb r3, [r0, 0x4]
+ movs r1, 0x7
+ mov r12, r1
+ movs r0, 0x1
+ mov r8, r0
+ ldr r5, =gUnknown_082F334C
+_080223AE:
+ mov r0, r12
+ subs r1, r0, r2
+ adds r0, r3, 0
+ asrs r0, r1
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _080223CA
+ lsls r0, r2, 2
+ adds r0, r5
+ ldr r0, [r0]
+ ldr r1, [sp, 0xC]
+ adds r1, r0
+ str r1, [sp, 0xC]
+_080223CA:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x7
+ bls _080223AE
+ adds r0, r4, r6
+ ldrh r1, [r0, 0x4]
+ lsrs r1, 8
+ ldr r0, =gStringVar1
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ ldr r0, [sp, 0xC]
+ ldr r1, =0x000f4240
+ bl __udivsi3
+ adds r1, r0, 0
+ ldr r0, =gStringVar2
+ movs r2, 0x2
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ ldr r0, =gStringVar4
+ ldr r1, =gText_XDotY3
+ bl StringExpandPlaceholders
+ movs r0, 0x1
+ ldr r1, =gStringVar4
+ movs r2, 0x1
+ negs r2, r2
+ bl GetStringWidth
+ subs r0, r7, r0
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r6, 0x2]
+ ldr r1, =gUnknown_082F32D8
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ ldr r1, =gStringVar4
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ adds r2, r7, 0
+ mov r3, r10
+ bl AddTextPrinterParameterized3
+ ldr r1, [sp, 0x10]
+ lsls r0, r1, 24
+ lsrs r0, 24
+ mov r10, r0
+ movs r0, 0
+ str r0, [sp, 0xC]
+ mov r1, r9
+ lsls r0, r1, 24
+ lsrs r0, 24
+ mov r9, r0
+ cmp r0, 0x3
+ bhi _08022444
+ b _08022336
+_08022444:
+ ldrb r0, [r6, 0x2]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ b _080224BA
+ .pool
+_08022480:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _080224BA
+ b _080224C0
+ .pool
+_08022494:
+ ldrb r0, [r6, 0x2]
+ movs r1, 0x1
+ bl ClearStdWindowAndFrameToTransparent
+ ldrb r0, [r6, 0x2]
+ bl ClearWindowTilemap
+ ldrb r0, [r6, 0x2]
+ bl RemoveWindow
+ adds r0, r4, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+ bl ScriptContext2_Disable
+ mov r0, r9
+ b _080224BE
+_080224BA:
+ ldrh r0, [r6]
+ adds r0, 0x1
+_080224BE:
+ strh r0, [r6]
+_080224C0:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8022250
+
+ thumb_func_start sub_80224D0
+sub_80224D0: @ 80224D0
+ push {lr}
+ bl ScriptContext2_Enable
+ ldr r0, =sub_8022250
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ movs r3, 0xF6
+ lsls r3, 1
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ strh r0, [r1, 0xC]
+ adds r3, 0x2
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ strh r0, [r1, 0xE]
+ adds r3, 0x2
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ strh r0, [r1, 0x10]
+ adds r3, 0x2
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ strh r0, [r1, 0x12]
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80224D0
+
+ thumb_func_start sub_8022524
+sub_8022524: @ 8022524
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8021944
+ movs r0, 0x4
+ ldrsh r1, [r4, r0]
+ movs r0, 0
+ bl sub_8035044
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r0, 0x1
+ bl sub_8035044
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ movs r0, 0x2
+ bl sub_8035044
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8022524
+
+ thumb_func_start sub_8022554
+sub_8022554: @ 8022554
+ push {lr}
+ ldr r2, [r0, 0x78]
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r3, 0x4
+ orrs r1, r3
+ strb r1, [r2]
+ ldr r1, [r0, 0x7C]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ orrs r0, r3
+ strb r0, [r1]
+ movs r0, 0x2
+ movs r1, 0x1
+ bl sub_803547C
+ movs r0, 0x1
+ movs r1, 0x1
+ bl sub_803547C
+ movs r0, 0
+ movs r1, 0x1
+ bl sub_803547C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8022554
+
+ thumb_func_start sub_8022588
+sub_8022588: @ 8022588
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ movs r6, 0
+ ldrb r0, [r5, 0x9]
+ cmp r6, r0
+ bcs _080225E8
+ ldr r7, =gUnknown_082F417C
+_08022596:
+ lsls r0, r6, 2
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r2, r5, r1
+ adds r2, r0
+ ldrb r1, [r5, 0x9]
+ subs r1, 0x2
+ lsls r0, r1, 2
+ adds r0, r1
+ adds r0, r6, r0
+ adds r0, r7
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gUnknown_082F4190
+ adds r0, r1
+ str r0, [r2]
+ ldrb r0, [r0]
+ lsls r0, 3
+ ldr r1, =gUnknown_082F32F4
+ adds r0, r1
+ bl AddWindow
+ ldr r1, =0x000001bb
+ adds r4, r5, r1
+ adds r4, r6
+ strb r0, [r4]
+ ldrb r0, [r4]
+ bl PutWindowTilemap
+ ldrb r0, [r4]
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r5, 0x9]
+ cmp r6, r0
+ bcc _08022596
+_080225E8:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8022588
+
+ thumb_func_start sub_8022600
+sub_8022600: @ 8022600
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ adds r6, r0, 0
+ movs r7, 0
+ ldrb r0, [r6, 0x9]
+ cmp r7, r0
+ bcs _080226B6
+ movs r1, 0
+ mov r8, r1
+_08022616:
+ ldr r1, =0x000001bb
+ adds r0, r6, r1
+ adds r5, r0, r7
+ ldrb r0, [r5]
+ bl PutWindowTilemap
+ ldrb r0, [r6, 0x8]
+ cmp r7, r0
+ bne _08022668
+ lsls r4, r7, 5
+ adds r4, 0x98
+ adds r4, r6, r4
+ movs r0, 0x2
+ adds r1, r4, 0
+ movs r2, 0
+ bl GetStringWidth
+ lsrs r0, 1
+ movs r2, 0x24
+ subs r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r0, [r5]
+ mov r1, r8
+ str r1, [sp]
+ str r1, [sp, 0x4]
+ ldr r1, =gUnknown_082F32DB
+ str r1, [sp, 0x8]
+ mov r1, r8
+ str r1, [sp, 0xC]
+ str r4, [sp, 0x10]
+ movs r1, 0x2
+ movs r3, 0x1
+ bl AddTextPrinterParameterized4
+ b _0802269C
+ .pool
+_08022668:
+ lsls r4, r7, 5
+ adds r4, 0x98
+ adds r4, r6, r4
+ movs r0, 0x2
+ adds r1, r4, 0
+ movs r2, 0
+ bl GetStringWidth
+ lsrs r0, 1
+ movs r2, 0x24
+ subs r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r0, [r5]
+ mov r1, r8
+ str r1, [sp]
+ str r1, [sp, 0x4]
+ ldr r1, =gUnknown_082F32DE
+ str r1, [sp, 0x8]
+ mov r1, r8
+ str r1, [sp, 0xC]
+ str r4, [sp, 0x10]
+ movs r1, 0x2
+ movs r3, 0x1
+ bl AddTextPrinterParameterized4
+_0802269C:
+ ldr r1, =0x000001bb
+ adds r0, r6, r1
+ adds r0, r7
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r6, 0x9]
+ cmp r7, r0
+ bcc _08022616
+_080226B6:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8022600
+
+ thumb_func_start sub_80226D0
+sub_80226D0: @ 80226D0
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r6, r0, 0
+ movs r5, 0
+ ldr r0, =gUnknown_08DE3FD4
+ ldr r4, =gDecompressionBuffer
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+ b _0802271A
+ .pool
+_080226EC:
+ lsls r1, r5, 2
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r6, r2
+ adds r0, r1
+ ldr r3, [r0]
+ ldrb r0, [r3]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r4, r1
+ ldrb r2, [r3, 0x1]
+ ldrb r3, [r3, 0x2]
+ movs r0, 0xA
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x3
+ bl CopyToBgTilemapBufferRect
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+_0802271A:
+ ldrb r0, [r6, 0x9]
+ cmp r5, r0
+ bcc _080226EC
+ movs r0, 0x3
+ bl CopyBgTilemapBufferToVram
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80226D0
+
+ thumb_func_start sub_8022730
+sub_8022730: @ 8022730
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ movs r5, 0
+ ldr r0, =0x0000ff98
+ strh r0, [r6, 0x2A]
+ strh r5, [r6, 0x2C]
+ ldr r1, =gSpriteCoordOffsetX
+ strh r5, [r1]
+ ldr r1, =gSpriteCoordOffsetY
+ strh r0, [r1]
+ ldr r4, =gUnknown_082F41F4
+_08022746:
+ lsls r0, r5, 3
+ adds r0, r4
+ bl LoadCompressedSpriteSheet
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3
+ bls _08022746
+ ldr r0, =gUnknown_082F421C
+ bl LoadSpritePalettes
+ ldr r0, =gUnknown_082F430C
+ movs r1, 0x78
+ movs r2, 0x58
+ movs r3, 0x5
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r0, 0xAC
+ lsls r0, 1
+ adds r3, r6, r0
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ str r0, [r3]
+ ldrb r1, [r0, 0x5]
+ movs r2, 0xC
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ ldr r1, [r3]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x2
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r1, [r3]
+ adds r1, 0x2C
+ ldrb r0, [r1]
+ movs r2, 0x40
+ orrs r0, r2
+ strb r0, [r1]
+ movs r5, 0
+ ldrb r1, [r6, 0x9]
+ cmp r5, r1
+ bcs _08022822
+ movs r7, 0x4
+_080227AA:
+ lsls r4, r5, 2
+ movs r3, 0xA2
+ lsls r3, 1
+ adds r0, r6, r3
+ adds r0, r4
+ ldr r0, [r0]
+ ldrh r1, [r0, 0x4]
+ adds r1, 0x78
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r0, 0x6]
+ adds r2, 0x20
+ lsls r2, 16
+ asrs r2, 16
+ ldr r0, =gUnknown_082F4324
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r0, 0xAE
+ lsls r0, 1
+ adds r3, r6, r0
+ adds r3, r4
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ str r1, [r3]
+ ldrb r0, [r1, 0x5]
+ movs r4, 0xD
+ negs r4, r4
+ adds r2, r4, 0
+ ands r0, r2
+ orrs r0, r7
+ strb r0, [r1, 0x5]
+ ldr r1, [r3]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ orrs r0, r7
+ strb r0, [r1]
+ ldr r2, [r3]
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r2, [r3]
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrb r0, [r6, 0x9]
+ cmp r5, r0
+ bcc _080227AA
+_08022822:
+ movs r5, 0
+ ldr r4, =gUnknown_082F41CC+6
+ adds r7, r4, 0x1
+_08022828:
+ lsls r2, r5, 1
+ adds r0, r2, r4
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ adds r1, 0x78
+ adds r2, r7
+ ldrb r2, [r2]
+ lsls r2, 24
+ asrs r2, 24
+ adds r2, 0x88
+ ldr r0, =gUnknown_082F433C
+ movs r3, 0x6
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r5, 2
+ movs r1, 0xC2
+ lsls r1, 1
+ adds r3, r6, r1
+ adds r3, r0
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ str r0, [r3]
+ ldrb r1, [r0, 0x5]
+ movs r2, 0xC
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ ldr r2, [r3]
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r2, [r3]
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, [r3]
+ strh r5, [r0, 0x2E]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xA
+ bls _08022828
+ movs r5, 0
+_0802288E:
+ lsls r1, r5, 1
+ adds r1, r5
+ lsls r1, 19
+ movs r3, 0xB0
+ lsls r3, 16
+ adds r1, r3
+ asrs r1, 16
+ ldr r0, =gUnknown_082F4354
+ movs r2, 0x8
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r5, 2
+ movs r4, 0xD8
+ lsls r4, 1
+ adds r3, r6, r4
+ adds r3, r0
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ str r0, [r3]
+ ldrb r1, [r0, 0x5]
+ movs r4, 0xD
+ negs r4, r4
+ adds r2, r4, 0
+ ands r1, r2
+ strb r1, [r0, 0x5]
+ ldr r2, [r3]
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ adds r4, 0x8
+ adds r1, r4, 0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r2, [r3]
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r3, 0x41
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x1
+ bls _0802288E
+ ldr r4, =gUnknown_082F4384
+ movs r0, 0
+ movs r1, 0
+ adds r2, r4, 0
+ bl sub_8034D14
+ adds r2, r4, 0
+ adds r2, 0x10
+ movs r0, 0x1
+ movs r1, 0
+ bl sub_8034D14
+ adds r4, 0x20
+ movs r0, 0x2
+ movs r1, 0
+ adds r2, r4, 0
+ bl sub_8034D14
+ ldrh r0, [r6, 0x12]
+ cmp r0, 0x1
+ bne _08022928
+ movs r4, 0x9C
+ lsls r4, 1
+ adds r0, r6, r4
+ bl sub_8022554
+_08022928:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8022730
+
+ thumb_func_start sub_8022960
+sub_8022960: @ 8022960
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r4, 0
+ movs r0, 0x4
+ bl FreeSpriteTilesByTag
+ movs r0, 0x3
+ bl FreeSpriteTilesByTag
+ movs r0, 0x2
+ bl FreeSpriteTilesByTag
+ movs r0, 0x1
+ bl FreeSpriteTilesByTag
+ movs r0, 0x4
+ bl FreeSpritePaletteByTag
+ movs r0, 0x2
+ bl FreeSpritePaletteByTag
+ movs r0, 0x1
+ bl FreeSpritePaletteByTag
+ movs r0, 0xD8
+ lsls r0, 1
+ adds r6, r5, r0
+_08022996:
+ lsls r0, r4, 2
+ adds r0, r6, r0
+ ldr r0, [r0]
+ bl DestroySprite
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x1
+ bls _08022996
+ movs r0, 0x2
+ bl sub_80353DC
+ movs r0, 0x1
+ bl sub_80353DC
+ movs r0, 0
+ bl sub_80353DC
+ movs r4, 0
+ movs r1, 0xC2
+ lsls r1, 1
+ adds r6, r5, r1
+_080229C4:
+ lsls r0, r4, 2
+ adds r0, r6, r0
+ ldr r0, [r0]
+ bl DestroySprite
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xA
+ bls _080229C4
+ movs r4, 0
+ ldrb r2, [r5, 0x9]
+ cmp r4, r2
+ bcs _080229FC
+_080229E0:
+ lsls r1, r4, 2
+ movs r2, 0xAE
+ lsls r2, 1
+ adds r0, r5, r2
+ adds r0, r1
+ ldr r0, [r0]
+ bl DestroySprite
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldrb r0, [r5, 0x9]
+ cmp r4, r0
+ bcc _080229E0
+_080229FC:
+ movs r1, 0xAC
+ lsls r1, 1
+ adds r0, r5, r1
+ ldr r2, [r0]
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08022A18
+ adds r0, r2, 0
+ bl DestroySprite
+_08022A18:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8022960
+
+ thumb_func_start sub_8022A20
+sub_8022A20: @ 8022A20
+ push {lr}
+ adds r3, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08022A46
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ subs r2, 0x12
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+_08022A46:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8022A20
+
+ thumb_func_start sub_8022A4C
+sub_8022A4C: @ 8022A4C
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ movs r1, 0
+ ldr r5, =SpriteCallbackDummy
+ adds r2, r3, 0
+ adds r2, 0x2E
+ movs r4, 0
+_08022A5A:
+ lsls r0, r1, 1
+ adds r0, r2, r0
+ strh r4, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x7
+ bls _08022A5A
+ movs r0, 0
+ strh r0, [r3, 0x24]
+ strh r0, [r3, 0x26]
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ subs r2, 0x12
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ str r5, [r3, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8022A4C
+
+ thumb_func_start sub_8022A94
+sub_8022A94: @ 8022A94
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r5, 0
+ adds r4, 0x2E
+ ldrh r0, [r4, 0x4]
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r4, 0x2]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r2, [r5, 0x26]
+ adds r0, r2
+ strh r0, [r5, 0x26]
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ movs r6, 0x80
+ lsls r6, 8
+ ands r0, r6
+ cmp r0, 0
+ beq _08022AFA
+ ldrh r0, [r4, 0x6]
+ ldrh r2, [r5, 0x2E]
+ adds r0, r2
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r4, 0x8]
+ adds r0, r1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 23
+ movs r2, 0xC
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r5, 0x24]
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ ands r0, r6
+ cmp r0, 0
+ beq _08022AFA
+ ldrh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 23
+ cmp r0, 0x7E
+ ble _08022AFA
+ movs r0, 0
+ strh r0, [r5, 0x24]
+ ldrh r1, [r4, 0xE]
+ ldr r0, =0x00007fff
+ ands r0, r1
+ strh r0, [r4, 0xE]
+_08022AFA:
+ ldrh r0, [r4]
+ lsls r0, 16
+ asrs r0, 23
+ strh r0, [r5, 0x20]
+ movs r2, 0x22
+ ldrsh r1, [r5, r2]
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ ldrh r2, [r4, 0xE]
+ ldr r0, =0x00007fff
+ ands r0, r2
+ cmp r1, r0
+ ble _08022B1A
+ ldr r0, =sub_8022A4C
+ str r0, [r5, 0x1C]
+_08022B1A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8022A94
+
+ thumb_func_start sub_8022B28
+sub_8022B28: @ 8022B28
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r7, r6, 0
+ adds r7, 0x2E
+ movs r0, 0
+ mov r8, r0
+ movs r2, 0xA0
+ lsls r2, 2
+ strh r2, [r7, 0x2]
+ movs r0, 0x20
+ strh r0, [r7, 0x4]
+ movs r1, 0xA8
+ strh r1, [r7, 0xE]
+ movs r0, 0x24
+ ldrsh r4, [r6, r0]
+ lsls r4, 23
+ lsrs r4, 16
+ ldrh r0, [r6, 0x22]
+ subs r1, r0
+ lsls r1, 23
+ asrs r1, 16
+ adds r2, 0x20
+ asrs r2, 1
+ movs r0, 0x7
+ bl sub_81515D4
+ adds r5, r0, 0
+ ldrh r0, [r6, 0x20]
+ lsls r0, 7
+ strh r0, [r6, 0x2E]
+ lsls r4, 16
+ asrs r4, 16
+ lsls r5, 16
+ asrs r5, 16
+ movs r0, 0x7
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_81515D4
+ strh r0, [r7, 0x6]
+ movs r0, 0x7
+ adds r1, r5, 0
+ movs r2, 0x55
+ bl sub_8151550
+ adds r2, r0, 0
+ mov r1, r8
+ strh r1, [r7, 0x8]
+ movs r1, 0xFE
+ lsls r1, 6
+ lsls r2, 16
+ asrs r2, 16
+ movs r0, 0x7
+ bl sub_81515D4
+ strh r0, [r7, 0xA]
+ movs r2, 0x24
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ bge _08022BA6
+ adds r0, 0x3
+_08022BA6:
+ asrs r0, 2
+ strh r0, [r7, 0xC]
+ ldrh r0, [r7, 0xE]
+ ldr r2, =0xffff8000
+ adds r1, r2, 0
+ orrs r0, r1
+ strh r0, [r7, 0xE]
+ mov r0, r8
+ strh r0, [r6, 0x26]
+ strh r0, [r6, 0x24]
+ ldr r0, =sub_8022A94
+ str r0, [r6, 0x1C]
+ adds r2, r6, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r2, 0x12
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8022B28
+
+ thumb_func_start sub_8022BEC
+sub_8022BEC: @ 8022BEC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r2, 0
+ lsls r0, 16
+ lsrs r5, r0, 16
+ lsls r1, 24
+ lsrs r4, r1, 24
+ mov r8, r4
+ bl sub_8020C00
+ adds r6, r0, 0
+ cmp r5, 0x19
+ bls _08022C0A
+ movs r5, 0
+_08022C0A:
+ cmp r4, 0
+ beq _08022C14
+ cmp r4, 0x1
+ beq _08022C40
+ b _08022C4A
+_08022C14:
+ cmp r5, 0
+ beq _08022C28
+ ldr r0, =gUnknown_082F43CC
+ lsls r1, r5, 2
+ adds r1, r0
+ ldr r2, [r1]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl _call_via_r2
+_08022C28:
+ ldrb r0, [r6, 0xE]
+ cmp r0, 0x19
+ bls _08022C32
+ mov r0, r8
+ strb r0, [r6, 0xE]
+_08022C32:
+ ldr r0, =gUnknown_082F43CC
+ ldrb r1, [r6, 0xE]
+ lsls r1, 2
+ b _08022C44
+ .pool
+_08022C40:
+ ldr r0, =gUnknown_082F43CC
+ lsls r1, r5, 2
+_08022C44:
+ adds r1, r0
+ ldr r0, [r1]
+ str r0, [r6, 0x4]
+_08022C4A:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8022BEC
+
+ thumb_func_start sub_8022C58
+sub_8022C58: @ 8022C58
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldrb r2, [r1]
+ ldrb r3, [r1, 0x1]
+ lsls r3, 8
+ orrs r2, r3
+ ldrb r3, [r1, 0x2]
+ lsls r3, 16
+ orrs r2, r3
+ ldrb r3, [r1, 0x3]
+ lsls r3, 24
+ adds r0, r2, 0
+ orrs r0, r3
+ ldrb r2, [r1, 0x9]
+ strb r2, [r1]
+ ldrb r4, [r1, 0x8]
+ lsls r4, 8
+ ldrb r2, [r1, 0x7]
+ orrs r4, r2
+ ldr r5, =gPaletteFade
+ ldrb r3, [r5, 0x8]
+ movs r2, 0x7F
+ ands r2, r3
+ strb r2, [r5, 0x8]
+ movs r5, 0x4
+ ldrsb r5, [r1, r5]
+ ldrb r2, [r1, 0x5]
+ ldrb r3, [r1, 0x6]
+ str r4, [sp]
+ adds r1, r5, 0
+ bl BeginNormalPaletteFade
+ bl UpdatePaletteFade
+ movs r0, 0x2
+ strb r0, [r6, 0xE]
+ movs r0, 0
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_8022C58
+
+ thumb_func_start sub_8022CB0
+sub_8022CB0: @ 8022CB0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0xC]
+ cmp r0, 0x1
+ beq _08022CE4
+ cmp r0, 0x1
+ bgt _08022CC6
+ cmp r0, 0
+ beq _08022CD0
+ b _08022D06
+_08022CC6:
+ cmp r0, 0x2
+ beq _08022CEA
+ cmp r0, 0x3
+ beq _08022CF6
+ b _08022D06
+_08022CD0:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _08022D0C
+ ldrb r0, [r5]
+ cmp r0, 0
+ bne _08022D06
+ movs r0, 0x3
+ b _08022D0A
+_08022CE4:
+ bl sub_8010434
+ b _08022D06
+_08022CEA:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ bne _08022D06
+ b _08022D0C
+_08022CF6:
+ ldrb r0, [r4, 0xF]
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r0, 0
+ strb r0, [r4, 0xC]
+ b _08022D0E
+_08022D06:
+ ldrb r0, [r4, 0xC]
+ adds r0, 0x1
+_08022D0A:
+ strb r0, [r4, 0xC]
+_08022D0C:
+ movs r0, 0
+_08022D0E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8022CB0
+
+ thumb_func_start sub_8022D14
+sub_8022D14: @ 8022D14
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ adds r7, r0, 0
+ adds r5, r1, 0
+ ldrb r4, [r5, 0x3]
+ lsls r4, 8
+ ldrb r0, [r5, 0x2]
+ orrs r4, r0
+ ldrb r6, [r7, 0xC]
+ cmp r6, 0x1
+ beq _08022DC0
+ cmp r6, 0x1
+ bgt _08022D38
+ cmp r6, 0
+ beq _08022D42
+ b _08022E08
+_08022D38:
+ cmp r6, 0x2
+ beq _08022DD8
+ cmp r6, 0x3
+ beq _08022DE8
+ b _08022E08
+_08022D42:
+ movs r0, 0
+ movs r1, 0
+ bl DrawDialogueFrame
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x2
+ mov r8, r0
+ ands r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _08022D90
+ ldr r4, =gStringVar4
+ ldr r1, =gUnknown_082F32A4
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl StringExpandPlaceholders
+ ldrb r3, [r7, 0xB]
+ str r6, [sp]
+ mov r0, r8
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x1
+ adds r2, r4, 0
+ bl AddTextPrinterParameterized2
+ b _08022DB2
+ .pool
+_08022D90:
+ ldr r1, =gUnknown_082F32A4
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [r0]
+ ldrb r3, [r7, 0xB]
+ str r4, [sp]
+ mov r0, r8
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x1
+ bl AddTextPrinterParameterized2
+_08022DB2:
+ movs r0, 0
+ movs r1, 0x3
+ bl CopyWindowToVram
+ b _08022E08
+ .pool
+_08022DC0:
+ movs r0, 0
+ bl IsTextPrinterActive
+ lsls r0, 16
+ cmp r0, 0
+ bne _08022E0E
+ cmp r4, 0
+ bne _08022E08
+ ldrb r0, [r7, 0xC]
+ adds r0, 0x1
+ strb r0, [r7, 0xC]
+ b _08022E08
+_08022DD8:
+ ldr r0, =gMain
+ ldrh r0, [r0, 0x2E]
+ ands r4, r0
+ cmp r4, 0
+ bne _08022E08
+ b _08022E0E
+ .pool
+_08022DE8:
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08022DFA
+ movs r0, 0
+ movs r1, 0x1
+ bl ClearDialogWindowAndFrame
+_08022DFA:
+ ldrb r0, [r7, 0xE]
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ ldrb r0, [r5, 0x4]
+ b _08022E0C
+_08022E08:
+ ldrb r0, [r7, 0xC]
+ adds r0, 0x1
+_08022E0C:
+ strb r0, [r7, 0xC]
+_08022E0E:
+ movs r0, 0
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8022D14
+
+ thumb_func_start sub_8022E1C
+sub_8022E1C: @ 8022E1C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_802104C
+ cmp r0, 0
+ beq _08022E34
+ ldrb r0, [r4, 0xE]
+ adds r2, r4, 0
+ adds r2, 0x36
+ movs r1, 0
+ bl sub_8022BEC
+_08022E34:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8022E1C
+
+ thumb_func_start sub_8022E3C
+sub_8022E3C: @ 8022E3C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_802130C
+ cmp r0, 0
+ beq _08022E54
+ ldrb r0, [r4, 0xE]
+ adds r2, r4, 0
+ adds r2, 0x36
+ movs r1, 0
+ bl sub_8022BEC
+_08022E54:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8022E3C
+
+ thumb_func_start sub_8022E5C
+sub_8022E5C: @ 8022E5C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrb r0, [r4, 0xC]
+ cmp r0, 0
+ beq _08022E6C
+ cmp r0, 0x1
+ beq _08022E72
+ b _08022E9C
+_08022E6C:
+ bl sub_8010434
+ b _08022E9C
+_08022E72:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08022EA2
+ ldr r0, =0x000001e5
+ bl PlayNewMapMusic
+ movs r0, 0x7
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r1, 0
+ movs r0, 0x3
+ strh r0, [r4, 0x12]
+ strb r1, [r4, 0xC]
+ b _08022EA2
+ .pool
+_08022E9C:
+ ldrb r0, [r4, 0xC]
+ adds r0, 0x1
+ strb r0, [r4, 0xC]
+_08022EA2:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8022E5C
+
+ thumb_func_start sub_8022EAC
+sub_8022EAC: @ 8022EAC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0xC]
+ cmp r0, 0
+ beq _08022EC2
+ cmp r0, 0x1
+ beq _08022EE8
+ adds r0, 0x1
+ b _08022EF8
+_08022EC2:
+ adds r0, r4, 0
+ bl sub_8024578
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl sub_8024644
+ movs r0, 0x7
+ strb r0, [r4, 0xE]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ b _08022EFA
+_08022EE8:
+ movs r0, 0x8
+ strb r0, [r4, 0xE]
+ movs r0, 0x5
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r0, 0x2
+_08022EF8:
+ strb r0, [r4, 0xC]
+_08022EFA:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8022EAC
+
+ thumb_func_start sub_8022F04
+sub_8022F04: @ 8022F04
+ push {lr}
+ movs r1, 0
+ str r1, [r0, 0x4]
+ ldr r0, =sub_8020E1C
+ bl SetMainCallback2
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_8022F04
+
+ thumb_func_start sub_8022F1C
+sub_8022F1C: @ 8022F1C
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r2, r1, 0
+ ldrb r0, [r5, 0xC]
+ cmp r0, 0x5
+ bls _08022F2C
+ b _08023060
+_08022F2C:
+ lsls r0, 2
+ ldr r1, =_08022F3C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08022F3C:
+ .4byte _08022F54
+ .4byte _08022F74
+ .4byte _08022F7A
+ .4byte _08022FAA
+ .4byte _08022FBA
+ .4byte _08023044
+_08022F54:
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r2, 0
+ movs r1, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl sub_8024644
+ movs r0, 0x9
+ strb r0, [r5, 0xE]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ b _08023066
+_08022F74:
+ bl sub_8010434
+ b _08023060
+_08022F7A:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08023066
+ adds r4, r5, 0
+ adds r4, 0x42
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0xC
+ bl memset
+ ldrb r0, [r5, 0x8]
+ lsls r0, 5
+ adds r0, r5, r0
+ adds r0, 0xA4
+ ldrh r0, [r0]
+ strh r0, [r4]
+ movs r0, 0
+ adds r1, r4, 0
+ movs r2, 0x2
+ bl SendBlock
+ b _08023060
+_08022FAA:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08023066
+ movs r0, 0
+ strh r0, [r5, 0x10]
+ b _08023060
+_08022FBA:
+ bl GetBlockReceivedStatus
+ ldr r2, =gUnknown_082F4448
+ ldrb r4, [r5, 0x9]
+ subs r1, r4, 0x2
+ adds r1, r2
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bne _08023066
+ movs r3, 0
+ cmp r3, r4
+ bcs _0802301E
+ ldr r7, =gBlockRecvBuffer
+ movs r6, 0
+ ldr r4, =gUnknown_0858AB24
+_08022FDC:
+ lsls r0, r3, 5
+ adds r0, r5, r0
+ lsls r1, r3, 8
+ adds r1, r7
+ ldrh r1, [r1]
+ adds r2, r0, 0
+ adds r2, 0xA4
+ strh r1, [r2]
+ lsls r1, 16
+ lsrs r1, 16
+ cmp r1, 0xB0
+ bls _08022FF6
+ strh r6, [r2]
+_08022FF6:
+ ldrh r1, [r2]
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x18]
+ ldrb r1, [r1]
+ adds r0, r1
+ strh r0, [r5, 0x18]
+ ldrh r0, [r2]
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r0, 0x2]
+ ldr r0, [r5, 0x1C]
+ adds r0, r1
+ str r0, [r5, 0x1C]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldrb r0, [r5, 0x9]
+ cmp r3, r0
+ bcc _08022FDC
+_0802301E:
+ movs r0, 0
+ strh r0, [r5, 0x10]
+ bl ResetBlockReceivedFlags
+ movs r1, 0x18
+ ldrsh r0, [r5, r1]
+ lsls r0, 8
+ movs r1, 0x80
+ lsls r1, 6
+ bl sub_81515FC
+ str r0, [r5, 0x20]
+ b _08023060
+ .pool
+_08023044:
+ movs r0, 0
+ movs r1, 0x1
+ bl ClearDialogWindowAndFrame
+ movs r0, 0xA
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r1, 0
+ movs r0, 0x4
+ strh r0, [r5, 0x12]
+ strb r1, [r5, 0xC]
+ b _08023066
+_08023060:
+ ldrb r0, [r5, 0xC]
+ adds r0, 0x1
+ strb r0, [r5, 0xC]
+_08023066:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8022F1C
+
+ thumb_func_start sub_8023070
+sub_8023070: @ 8023070
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrb r0, [r4, 0xC]
+ cmp r0, 0x6
+ bls _0802307C
+ b _080231A8
+_0802307C:
+ lsls r0, 2
+ ldr r1, =_0802308C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0802308C:
+ .4byte _080230A8
+ .4byte _080230BA
+ .4byte _080230E8
+ .4byte _08023120
+ .4byte _08023150
+ .4byte _08023172
+ .4byte _08023184
+_080230A8:
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r4, r0
+ adds r0, r4, 0
+ bl sub_80214A8
+ bl sub_8010434
+ b _080231A8
+_080230BA:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080231AE
+ movs r2, 0x9C
+ lsls r2, 1
+ adds r1, r4, r2
+ movs r0, 0
+ strb r0, [r1]
+ ldr r3, =0x00000139
+ adds r1, r4, r3
+ strb r0, [r1]
+ adds r2, 0x2
+ adds r1, r4, r2
+ strb r0, [r1]
+ adds r3, 0x2
+ adds r1, r4, r3
+ strb r0, [r1]
+ b _080231A8
+ .pool
+_080230E8:
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r3, r4, r0
+ ldrb r0, [r3]
+ lsls r0, 2
+ movs r2, 0xB8
+ lsls r2, 1
+ adds r1, r4, r2
+ adds r0, r1, r0
+ ldr r2, [r0]
+ ldr r0, =sub_8021608
+ str r0, [r2, 0x1C]
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r1, r0
+ ldr r1, [r1]
+ adds r1, 0x2C
+ ldrb r2, [r1]
+ movs r0, 0x7F
+ ands r0, r2
+ strb r0, [r1]
+ movs r0, 0x3D
+ bl PlaySE
+ b _080231A8
+ .pool
+_08023120:
+ movs r3, 0x9C
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r3, 0x38
+ adds r1, r4, r3
+ adds r3, r1, r0
+ ldr r0, [r3]
+ ldr r1, [r0, 0x1C]
+ ldr r0, =sub_8021608
+ cmp r1, r0
+ beq _080231AE
+ movs r0, 0
+ str r0, [r3]
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ bl sub_8010434
+ b _080231A8
+ .pool
+_08023150:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080231AE
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r4, r0
+ ldrb r0, [r1]
+ ldrb r2, [r4, 0x9]
+ cmp r0, r2
+ bcs _0802316C
+ movs r0, 0x2
+ b _080231AC
+_0802316C:
+ movs r0, 0
+ strb r0, [r1]
+ b _080231A8
+_08023172:
+ movs r3, 0x9C
+ lsls r3, 1
+ adds r1, r4, r3
+ adds r0, r4, 0
+ bl sub_80216A8
+ bl sub_8010434
+ b _080231A8
+_08023184:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080231AE
+ movs r0, 0x2B
+ bl PlaySE
+ movs r0, 0xB
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r1, 0
+ movs r0, 0x5
+ strh r0, [r4, 0x12]
+ strb r1, [r4, 0xC]
+ b _080231AE
+_080231A8:
+ ldrb r0, [r4, 0xC]
+ adds r0, 0x1
+_080231AC:
+ strb r0, [r4, 0xC]
+_080231AE:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8023070
+
+ thumb_func_start sub_80231B8
+sub_80231B8: @ 80231B8
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldrb r1, [r4, 0xC]
+ cmp r1, 0x1
+ beq _0802321C
+ cmp r1, 0x1
+ bgt _080231CC
+ cmp r1, 0
+ beq _080231D6
+ b _080232DC
+_080231CC:
+ cmp r1, 0x2
+ beq _0802329C
+ cmp r1, 0x3
+ beq _080232BE
+ b _080232DC
+_080231D6:
+ ldrh r0, [r4, 0x2A]
+ adds r0, 0x4
+ strh r0, [r4, 0x2A]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080231E4
+ b _080232E2
+_080231E4:
+ strh r1, [r4, 0x2A]
+ ldr r0, =0x00000139
+ adds r3, r4, r0
+ movs r0, 0x4
+ strb r0, [r3]
+ movs r2, 0x9C
+ lsls r2, 1
+ adds r1, r4, r2
+ movs r0, 0
+ strb r0, [r1]
+ ldr r2, =gUnknown_082F326C
+ ldrb r1, [r3]
+ lsls r0, r1, 3
+ subs r0, r1
+ adds r0, r2
+ ldrb r0, [r0]
+ movs r2, 0x9D
+ lsls r2, 1
+ adds r1, r4, r2
+ strb r0, [r1]
+ movs r0, 0xD6
+ bl PlaySE
+ b _080232DC
+ .pool
+_0802321C:
+ ldr r7, =gUnknown_082F326C
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r6, r4, r0
+ ldr r1, =0x00000139
+ adds r5, r4, r1
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ ldrb r2, [r6]
+ adds r0, r2
+ adds r0, r7
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ strh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x12
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x1A
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x1E
+ bl SetGpuReg
+ ldrb r0, [r6]
+ adds r0, 0x1
+ strb r0, [r6]
+ movs r1, 0x9D
+ lsls r1, 1
+ adds r2, r4, r1
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r2]
+ cmp r0, r1
+ bcc _080232E2
+ ldrb r0, [r5]
+ cmp r0, 0
+ beq _080232DC
+ subs r0, 0x1
+ strb r0, [r5]
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ adds r0, r7
+ ldrb r0, [r0]
+ strb r0, [r2]
+ movs r0, 0
+ strb r0, [r6]
+ b _080232E2
+ .pool
+_0802329C:
+ movs r0, 0
+ strh r0, [r4, 0x2C]
+ movs r0, 0x12
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1A
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1E
+ movs r1, 0
+ bl SetGpuReg
+ bl sub_8010434
+ b _080232DC
+_080232BE:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080232E2
+ movs r0, 0xC
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r1, 0
+ movs r0, 0x6
+ strh r0, [r4, 0x12]
+ strb r1, [r4, 0xC]
+ b _080232E2
+_080232DC:
+ ldrb r0, [r4, 0xC]
+ adds r0, 0x1
+ strb r0, [r4, 0xC]
+_080232E2:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80231B8
+
+ thumb_func_start sub_80232EC
+sub_80232EC: @ 80232EC
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrb r0, [r4, 0xC]
+ cmp r0, 0x1
+ beq _0802330C
+ cmp r0, 0x1
+ bgt _08023302
+ cmp r0, 0
+ beq _08023332
+ b _0802338C
+_08023302:
+ cmp r0, 0x2
+ beq _0802332A
+ cmp r0, 0x3
+ beq _08023338
+ b _0802338C
+_0802330C:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08023392
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r1, 0
+ movs r2, 0x78
+ movs r3, 0x50
+ bl sub_802EB24
+ b _0802338C
+_0802332A:
+ bl sub_802EB84
+ cmp r0, 0
+ bne _08023392
+_08023332:
+ bl sub_8010434
+ b _0802338C
+_08023338:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08023392
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r4, r0
+ movs r0, 0
+ strb r0, [r1]
+ ldr r2, =0x00000139
+ adds r1, r4, r2
+ strb r0, [r1]
+ adds r2, 0x1
+ adds r1, r4, r2
+ strb r0, [r1]
+ adds r2, 0x1
+ adds r1, r4, r2
+ strb r0, [r1]
+ strh r0, [r4, 0x10]
+ ldrb r0, [r4, 0x8]
+ cmp r0, 0
+ bne _08023378
+ movs r0, 0xD
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ b _08023382
+ .pool
+_08023378:
+ movs r0, 0xE
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+_08023382:
+ movs r1, 0
+ movs r0, 0x7
+ strh r0, [r4, 0x12]
+ strb r1, [r4, 0xC]
+ b _08023392
+_0802338C:
+ ldrb r0, [r4, 0xC]
+ adds r0, 0x1
+ strb r0, [r4, 0xC]
+_08023392:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80232EC
+
+ thumb_func_start sub_802339C
+sub_802339C: @ 802339C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r4, r0, 0
+ movs r0, 0
+ mov r8, r0
+ movs r2, 0
+ adds r7, r2, 0
+ ldrb r1, [r4, 0x9]
+ cmp r7, r1
+ bcs _080234AA
+ movs r2, 0x5E
+ adds r2, r4
+ mov r9, r2
+ ldr r3, =gUnknown_082F325C
+ mov r10, r3
+_080233C0:
+ lsls r0, r7, 4
+ ldr r1, =gRecvCmds
+ adds r2, r0, r1
+ ldrh r1, [r2]
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r0, r1
+ movs r3, 0xBC
+ lsls r3, 6
+ cmp r0, r3
+ bne _0802349E
+ ldrh r0, [r2, 0x2]
+ cmp r0, 0x2
+ bne _0802349E
+ ldrb r1, [r2, 0x4]
+ movs r0, 0x4
+ ands r0, r1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _08023496
+ mov r0, r9
+ ldrb r2, [r0]
+ lsrs r1, r2, 3
+ mov r3, r10
+ adds r0, r7, r3
+ ldrb r0, [r0]
+ orrs r1, r0
+ lsls r1, 3
+ movs r0, 0x7
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r9
+ strb r0, [r1]
+ lsls r2, r7, 5
+ adds r3, r4, r2
+ mov r12, r3
+ mov r1, r12
+ adds r1, 0xB5
+ movs r0, 0x1
+ strb r0, [r1]
+ subs r1, 0x7
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ mov r0, r8
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ subs r1, 0x8
+ ldrh r0, [r4, 0x28]
+ ldrh r1, [r1]
+ subs r0, r1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ mov r5, r12
+ adds r5, 0xAA
+ ldrh r1, [r5]
+ subs r0, r1, 0x1
+ adds r6, r2, 0
+ cmp r3, r0
+ blt _08023468
+ adds r0, r1, 0x1
+ cmp r3, r0
+ bgt _08023468
+ mov r1, r12
+ adds r1, 0xA8
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ strh r3, [r5]
+ mov r0, r12
+ adds r0, 0xAC
+ ldrh r1, [r1]
+ ldrh r2, [r0]
+ cmp r1, r2
+ bls _08023476
+ strh r1, [r0]
+ b _08023476
+ .pool
+_08023468:
+ adds r0, r4, r6
+ adds r2, r0, 0
+ adds r2, 0xA8
+ movs r1, 0
+ strh r1, [r2]
+ adds r0, 0xAA
+ strh r3, [r0]
+_08023476:
+ adds r1, r4, r6
+ ldrh r0, [r4, 0x28]
+ adds r3, r1, 0
+ adds r3, 0xA6
+ movs r2, 0
+ strh r0, [r3]
+ adds r1, 0xB4
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bls _0802349E
+ strb r2, [r1]
+ b _0802349E
+_08023496:
+ lsls r0, r7, 5
+ adds r0, r4, r0
+ adds r0, 0xB5
+ strb r1, [r0]
+_0802349E:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r3, [r4, 0x9]
+ cmp r7, r3
+ bcc _080233C0
+_080234AA:
+ mov r0, r8
+ cmp r0, 0x1
+ bls _080234E0
+ movs r7, 0
+ ldrb r1, [r4, 0x9]
+ cmp r7, r1
+ bcs _080234E0
+ movs r3, 0x2
+_080234BA:
+ lsls r0, r7, 5
+ adds r1, r4, r0
+ adds r2, r1, 0
+ adds r2, 0xB5
+ ldrb r0, [r2]
+ cmp r0, 0
+ beq _080234D4
+ orrs r0, r3
+ strb r0, [r2]
+ adds r1, 0xB0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+_080234D4:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r2, [r4, 0x9]
+ cmp r7, r2
+ bcc _080234BA
+_080234E0:
+ mov r3, r8
+ cmp r3, 0
+ beq _08023548
+ ldrh r0, [r4, 0x2E]
+ add r0, r8
+ strh r0, [r4, 0x2E]
+ ldr r1, =gUnknown_082F3264
+ mov r0, r8
+ subs r0, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ add r0, r8
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrh r0, [r4, 0x34]
+ add r0, r8
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x1A]
+ add r0, r8
+ strh r0, [r4, 0x1A]
+ movs r1, 0x18
+ ldrsh r0, [r4, r1]
+ movs r3, 0x1A
+ ldrsh r2, [r4, r3]
+ subs r0, r2
+ cmp r0, 0
+ ble _08023534
+ lsls r2, 8
+ ldr r1, [r4, 0x20]
+ adds r0, r2, 0
+ bl sub_81515FC
+ adds r2, r0, 0
+ asrs r2, 8
+ adds r0, r4, 0
+ adds r0, 0x24
+ strb r2, [r0]
+ b _08023548
+ .pool
+_08023534:
+ adds r1, r4, 0
+ adds r1, 0x24
+ movs r0, 0x20
+ strb r0, [r1]
+ adds r2, r4, 0
+ adds r2, 0x5E
+ ldrb r0, [r2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+_08023548:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802339C
+
+ thumb_func_start sub_8023558
+sub_8023558: @ 8023558
+ push {r4-r6,lr}
+ adds r3, r0, 0
+ movs r6, 0
+ movs r1, 0
+ adds r4, r1, 0
+ ldrb r0, [r3, 0x9]
+ cmp r4, r0
+ bcs _080235B0
+ adds r5, r3, 0
+ adds r5, 0x64
+_0802356C:
+ lsls r0, r4, 5
+ adds r1, r3, r0
+ adds r0, r1, 0
+ adds r0, 0xB5
+ ldrb r2, [r0]
+ cmp r2, 0
+ beq _080235A4
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r1, 0
+ adds r0, 0xB4
+ ldrb r0, [r0]
+ adds r1, r0, 0x1
+ movs r0, 0x2
+ ands r0, r2
+ cmp r0, 0
+ beq _08023594
+ movs r0, 0x4
+ orrs r1, r0
+_08023594:
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r1, r0
+ lsls r0, r1, 16
+ lsrs r1, r0, 16
+ ldrh r0, [r5]
+ orrs r1, r0
+ strh r1, [r5]
+_080235A4:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldrb r1, [r3, 0x9]
+ cmp r4, r1
+ bcc _0802356C
+_080235B0:
+ adds r0, r3, 0
+ adds r0, 0x24
+ ldrb r1, [r0]
+ adds r0, 0x3C
+ strh r1, [r0]
+ cmp r6, 0
+ bne _080235D4
+ ldr r2, =0x0000013b
+ adds r0, r3, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080236A0
+ movs r4, 0x9C
+ lsls r4, 1
+ adds r1, r3, r4
+ b _08023612
+ .pool
+_080235D4:
+ ldr r5, =0x0000013b
+ adds r2, r3, r5
+ ldrb r0, [r2]
+ cmp r0, 0
+ beq _0802361A
+ ldr r0, =0x00000139
+ adds r1, r3, r0
+ ldrb r2, [r1]
+ cmp r6, r2
+ beq _0802360C
+ subs r0, r6, 0x1
+ strb r0, [r1]
+ ldr r1, =gUnknown_082F3290
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r4, 0x9D
+ lsls r4, 1
+ adds r1, r3, r4
+ strb r0, [r1]
+ b _08023640
+ .pool
+_0802360C:
+ movs r5, 0x9C
+ lsls r5, 1
+ adds r1, r3, r5
+_08023612:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08023640
+_0802361A:
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r3, r0
+ movs r0, 0
+ strb r0, [r1]
+ subs r0, r6, 0x1
+ ldr r4, =0x00000139
+ adds r1, r3, r4
+ strb r0, [r1]
+ ldr r1, =gUnknown_082F3290
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r5, 0x9D
+ lsls r5, 1
+ adds r1, r3, r5
+ strb r0, [r1]
+ movs r0, 0x1
+ strb r0, [r2]
+_08023640:
+ ldr r0, =0x0000013b
+ adds r4, r3, r0
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _080236A0
+ movs r2, 0x9C
+ lsls r2, 1
+ adds r1, r3, r2
+ movs r5, 0x9D
+ lsls r5, 1
+ adds r2, r3, r5
+ ldrb r0, [r1]
+ ldrb r5, [r2]
+ cmp r0, r5
+ bcc _0802367C
+ movs r0, 0
+ strb r0, [r1]
+ ldr r5, =0x00000139
+ adds r1, r3, r5
+ strb r0, [r1]
+ strb r0, [r2]
+ strb r0, [r4]
+ movs r1, 0
+ b _08023690
+ .pool
+_0802367C:
+ ldr r2, =gUnknown_082F3290
+ ldrb r1, [r1]
+ ldr r4, =0x00000139
+ adds r0, r3, r4
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, 0x1
+ adds r1, r0
+ adds r1, r2
+ ldrb r1, [r1]
+_08023690:
+ adds r0, r3, 0
+ adds r0, 0x5F
+ strb r1, [r0]
+ b _080236A8
+ .pool
+_080236A0:
+ adds r1, r3, 0
+ adds r1, 0x5F
+ movs r0, 0
+ strb r0, [r1]
+_080236A8:
+ ldrh r1, [r3, 0x26]
+ adds r0, r3, 0
+ adds r0, 0x62
+ strh r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8023558
+
+ thumb_func_start sub_80236B8
+sub_80236B8: @ 80236B8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ ldr r3, =gMain
+ ldrh r1, [r3, 0x2E]
+ movs r4, 0x1
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080236DA
+ adds r2, r5, 0
+ adds r2, 0x5E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080236DA:
+ ldrh r1, [r3, 0x2C]
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080236FA
+ ldrb r0, [r5, 0x8]
+ lsls r0, 5
+ adds r0, r5, r0
+ adds r1, r0, 0
+ adds r1, 0xB2
+ ldrh r0, [r1]
+ ldrh r2, [r5, 0x28]
+ cmp r0, r2
+ bcs _080236FA
+ adds r0, 0x1
+ strh r0, [r1]
+_080236FA:
+ ldrb r0, [r5, 0x8]
+ adds r7, r5, 0
+ adds r7, 0x5E
+ cmp r0, 0
+ beq _08023710
+ ldrb r1, [r7]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _08023710
+ b _0802384C
+_08023710:
+ adds r4, r5, 0
+ adds r4, 0x5C
+ movs r0, 0x2
+ strh r0, [r4]
+ ldrh r0, [r5, 0x28]
+ movs r1, 0x1E
+ bl __umodsi3
+ lsls r0, 16
+ mov r8, r4
+ adds r6, r5, 0
+ adds r6, 0x25
+ cmp r0, 0
+ bne _08023768
+ movs r0, 0x2E
+ ldrsh r2, [r5, r0]
+ ldr r1, =gUnknown_082F4444
+ ldrb r0, [r5, 0x9]
+ subs r0, 0x2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r2, r0
+ ble _08023754
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ ldrb r0, [r6]
+ movs r1, 0x10
+ orrs r0, r1
+ b _0802375C
+ .pool
+_08023754:
+ ldrb r1, [r6]
+ movs r0, 0x11
+ negs r0, r0
+ ands r0, r1
+_0802375C:
+ strb r0, [r6]
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x1
+ strh r0, [r5, 0x32]
+_08023768:
+ ldrh r0, [r5, 0x28]
+ movs r1, 0xF
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080237DE
+ movs r0, 0x34
+ ldrsh r2, [r5, r0]
+ ldr r3, =gUnknown_082F4434
+ ldrb r0, [r5, 0x9]
+ subs r0, 0x2
+ lsls r1, r0, 2
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r2, r0
+ bge _08023798
+ ldrb r1, [r6]
+ movs r0, 0x1F
+ ands r0, r1
+ strb r0, [r6]
+ b _080237D8
+ .pool
+_08023798:
+ adds r0, r3, 0x1
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r2, r0
+ bge _080237AC
+ ldrb r0, [r6]
+ movs r1, 0x1F
+ ands r1, r0
+ movs r0, 0x20
+ b _080237D4
+_080237AC:
+ adds r0, r3, 0x2
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r2, r0
+ bge _080237BC
+ movs r0, 0x2
+ strh r0, [r5, 0x34]
+ b _080237D8
+_080237BC:
+ adds r0, r3, 0x3
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r2, r0
+ bge _080237CC
+ movs r0, 0x3
+ strh r0, [r5, 0x34]
+ b _080237D8
+_080237CC:
+ ldrb r0, [r6]
+ movs r1, 0x1F
+ ands r1, r0
+ movs r0, 0x80
+_080237D4:
+ orrs r1, r0
+ strb r1, [r6]
+_080237D8:
+ movs r0, 0
+ strh r0, [r5, 0x34]
+ b _0802380A
+_080237DE:
+ ldrh r0, [r5, 0x10]
+ adds r0, 0x1
+ strh r0, [r5, 0x10]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x3C
+ bls _0802380A
+ cmp r0, 0x46
+ bls _080237FA
+ bl sub_8011AC8
+ movs r0, 0
+ strh r0, [r5, 0x10]
+ b _0802380A
+_080237FA:
+ ldrb r0, [r7]
+ movs r4, 0xF8
+ ands r4, r0
+ cmp r4, 0
+ bne _0802380A
+ bl sub_8011AC8
+ strh r4, [r5, 0x10]
+_0802380A:
+ ldrh r1, [r5, 0x28]
+ ldr r0, =0x00008c9f
+ cmp r1, r0
+ bls _0802381A
+ ldrb r0, [r7]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r7]
+_0802381A:
+ ldrb r1, [r6]
+ lsls r1, 27
+ lsrs r1, 31
+ lsls r1, 1
+ ldrb r2, [r7]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r7]
+ ldrb r0, [r6]
+ lsrs r0, 5
+ adds r2, r5, 0
+ adds r2, 0x66
+ strh r0, [r2]
+ adds r4, r5, 0
+ adds r4, 0x42
+ adds r0, r4, 0
+ mov r1, r8
+ movs r2, 0xC
+ bl memcpy
+ adds r0, r4, 0
+ bl sub_800FE50
+_0802384C:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80236B8
+
+ thumb_func_start sub_802385C
+sub_802385C: @ 802385C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r4, 0
+ ldr r3, =gRecvCmds
+ ldrb r0, [r5, 0x9]
+ cmp r4, r0
+ bcs _08023880
+ movs r1, 0
+_0802386C:
+ lsls r0, r4, 5
+ adds r0, r5, r0
+ adds r0, 0xB5
+ strb r1, [r0]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldrb r0, [r5, 0x9]
+ cmp r4, r0
+ bcc _0802386C
+_08023880:
+ adds r2, r3, 0
+ ldrh r0, [r2]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r1, r0
+ movs r0, 0xBC
+ lsls r0, 6
+ cmp r1, r0
+ bne _08023898
+ ldrh r0, [r2, 0x2]
+ cmp r0, 0x2
+ beq _080238AC
+_08023898:
+ adds r2, r5, 0
+ adds r2, 0x25
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ b _080238EA
+ .pool
+_080238AC:
+ adds r4, r5, 0
+ adds r4, 0x4E
+ adds r0, r4, 0
+ adds r1, r3, 0
+ movs r2, 0xE
+ bl memcpy
+ ldrh r0, [r4, 0x6]
+ strh r0, [r5, 0x2A]
+ movs r0, 0x5
+ ldrsb r0, [r4, r0]
+ strh r0, [r5, 0x2C]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x28]
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r5, r0
+ adds r0, r5, 0
+ bl sub_80216E0
+ ldrb r1, [r4, 0x4]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080238EA
+ adds r0, r5, 0
+ adds r0, 0x25
+ ldrb r1, [r0]
+ movs r2, 0x8
+ orrs r1, r2
+ strb r1, [r0]
+_080238EA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802385C
+
+ thumb_func_start sub_80238F0
+sub_80238F0: @ 80238F0
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x5C
+ movs r1, 0
+ movs r2, 0xC
+ bl memset
+ adds r0, r4, 0
+ adds r0, 0x4E
+ movs r1, 0
+ movs r2, 0xE
+ bl memset
+ adds r0, r4, 0
+ bl sub_802385C
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x12
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x1A
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x1E
+ bl SetGpuReg
+ adds r0, r4, 0
+ adds r0, 0x25
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _08023978
+ ldrh r1, [r4, 0x28]
+ ldr r0, =0x00008c9f
+ cmp r1, r0
+ bls _08023964
+ adds r0, 0x1
+ strh r0, [r4, 0x28]
+ movs r0, 0x10
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ b _0802396E
+ .pool
+_08023964:
+ movs r0, 0xF
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+_0802396E:
+ movs r1, 0
+ movs r0, 0
+ strh r0, [r4, 0x10]
+ strb r1, [r4, 0xC]
+ b _08023992
+_08023978:
+ ldrh r0, [r4, 0x26]
+ adds r0, 0x1
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ bl sub_802339C
+ adds r0, r4, 0
+ bl sub_8023558
+ adds r0, r4, 0
+ bl sub_80236B8
+ movs r0, 0
+_08023992:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80238F0
+
+ thumb_func_start sub_8023998
+sub_8023998: @ 8023998
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x5C
+ movs r1, 0
+ movs r2, 0xC
+ bl memset
+ adds r0, r4, 0
+ adds r0, 0x4E
+ movs r1, 0
+ movs r2, 0xE
+ bl memset
+ adds r0, r4, 0
+ bl sub_802385C
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x12
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x1A
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x1E
+ bl SetGpuReg
+ adds r0, r4, 0
+ adds r0, 0x25
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _08023A20
+ ldrh r1, [r4, 0x28]
+ ldr r0, =0x00008c9f
+ cmp r1, r0
+ bls _08023A0C
+ adds r0, 0x1
+ strh r0, [r4, 0x28]
+ movs r0, 0x10
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ b _08023A16
+ .pool
+_08023A0C:
+ movs r0, 0xF
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+_08023A16:
+ movs r1, 0
+ movs r0, 0
+ strh r0, [r4, 0x10]
+ strb r1, [r4, 0xC]
+ b _08023A28
+_08023A20:
+ adds r0, r4, 0
+ bl sub_80236B8
+ movs r0, 0
+_08023A28:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8023998
+
+ thumb_func_start sub_8023A30
+sub_8023A30: @ 8023A30
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldrb r0, [r4, 0xC]
+ cmp r0, 0x5
+ bls _08023A3C
+ b _08023BB2
+_08023A3C:
+ lsls r0, 2
+ ldr r1, =_08023A4C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08023A4C:
+ .4byte _08023A64
+ .4byte _08023A8C
+ .4byte _08023ADC
+ .4byte _08023B5C
+ .4byte _08023B7A
+ .4byte _08023B94
+_08023A64:
+ movs r0, 0x8
+ strh r0, [r4, 0x12]
+ movs r0, 0xD6
+ bl PlaySE
+ movs r0, 0x1
+ negs r0, r0
+ ldr r2, =0x000003ff
+ movs r1, 0x8
+ bl BlendPalettes
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r4, r0
+ movs r0, 0x2
+ strb r0, [r1]
+ b _08023BB2
+ .pool
+_08023A8C:
+ movs r1, 0x9C
+ lsls r1, 1
+ adds r5, r4, r1
+ ldrb r0, [r5]
+ subs r0, 0x1
+ strb r0, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _08023AA2
+ b _08023BB8
+_08023AA2:
+ movs r0, 0x1
+ negs r0, r0
+ ldr r2, =0x000003ff
+ movs r1, 0
+ bl BlendPalettes
+ ldr r2, =0x00000139
+ adds r1, r4, r2
+ movs r0, 0x4
+ strb r0, [r1]
+ movs r0, 0
+ strb r0, [r5]
+ ldr r2, =gUnknown_082F326C
+ ldrb r1, [r1]
+ lsls r0, r1, 3
+ subs r0, r1
+ adds r0, r2
+ ldrb r0, [r0]
+ movs r2, 0x9D
+ lsls r2, 1
+ adds r1, r4, r2
+ strb r0, [r1]
+ b _08023BB2
+ .pool
+_08023ADC:
+ ldr r7, =gUnknown_082F326C
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r6, r4, r0
+ ldr r1, =0x00000139
+ adds r5, r4, r1
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ ldrb r2, [r6]
+ adds r0, r2
+ adds r0, r7
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ strh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x12
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x1A
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2C]
+ negs r1, r1
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x1E
+ bl SetGpuReg
+ ldrb r0, [r6]
+ adds r0, 0x1
+ strb r0, [r6]
+ movs r1, 0x9D
+ lsls r1, 1
+ adds r2, r4, r1
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r2]
+ cmp r0, r1
+ bcc _08023BB8
+ ldrb r0, [r5]
+ cmp r0, 0
+ beq _08023BB2
+ subs r0, 0x1
+ strb r0, [r5]
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ adds r0, r7
+ ldrb r0, [r0]
+ strb r0, [r2]
+ movs r0, 0
+ strb r0, [r6]
+ b _08023BB8
+ .pool
+_08023B5C:
+ movs r0, 0
+ strh r0, [r4, 0x2C]
+ movs r0, 0x12
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1A
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1E
+ movs r1, 0
+ bl SetGpuReg
+ b _08023BB2
+_08023B7A:
+ movs r2, 0x9C
+ lsls r2, 1
+ adds r1, r4, r2
+ adds r0, r4, 0
+ bl sub_80218D4
+ cmp r0, 0
+ beq _08023BB8
+ bl sub_8010434
+ movs r0, 0
+ strh r0, [r4, 0x10]
+ b _08023BB2
+_08023B94:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08023BB8
+ movs r0, 0x11
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r1, 0
+ movs r0, 0
+ strh r0, [r4, 0x10]
+ strb r1, [r4, 0xC]
+ b _08023BBA
+_08023BB2:
+ ldrb r0, [r4, 0xC]
+ adds r0, 0x1
+ strb r0, [r4, 0xC]
+_08023BB8:
+ movs r0, 0
+_08023BBA:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8023A30
+
+ thumb_func_start sub_8023BC0
+sub_8023BC0: @ 8023BC0
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldrb r0, [r5, 0xC]
+ cmp r0, 0x1
+ beq _08023C04
+ cmp r0, 0x1
+ bgt _08023BD8
+ cmp r0, 0
+ beq _08023BE2
+ b _08023C9C
+_08023BD8:
+ cmp r0, 0x2
+ beq _08023C2A
+ cmp r0, 0x3
+ beq _08023C5C
+ b _08023C9C
+_08023BE2:
+ movs r0, 0x9
+ strh r0, [r5, 0x12]
+ movs r0, 0x20
+ bl PlaySE
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0x8
+ movs r2, 0x1F
+ bl BlendPalettes
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r5, r0
+ movs r0, 0x4
+ strb r0, [r1]
+ b _08023C9C
+_08023C04:
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r4, r5, r0
+ ldrb r0, [r4]
+ subs r0, 0x1
+ strb r0, [r4]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _08023CA2
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ movs r2, 0x1F
+ bl BlendPalettes
+ movs r0, 0
+ strb r0, [r4]
+ b _08023C9C
+_08023C2A:
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r5, r0
+ adds r0, r5, 0
+ bl sub_80218D4
+ cmp r0, 0
+ beq _08023CA2
+ bl sub_8010434
+ movs r0, 0
+ strh r0, [r5, 0x10]
+ movs r0, 0x12
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1A
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1E
+ movs r1, 0
+ bl SetGpuReg
+ b _08023C9C
+_08023C5C:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08023CA2
+ ldr r0, =gStringVar1
+ ldr r1, [r5, 0x1C]
+ movs r2, 0
+ movs r3, 0x6
+ bl ConvertIntToDecimalStringN
+ movs r4, 0
+ str r4, [sp]
+ adds r0, r6, 0
+ movs r1, 0x7
+ movs r2, 0x1
+ movs r3, 0
+ bl sub_8024644
+ movs r0, 0x13
+ strb r0, [r5, 0xE]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r0, 0
+ strh r4, [r5, 0x10]
+ b _08023CA0
+ .pool
+_08023C9C:
+ ldrb r0, [r5, 0xC]
+ adds r0, 0x1
+_08023CA0:
+ strb r0, [r5, 0xC]
+_08023CA2:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8023BC0
+
+ thumb_func_start sub_8023CAC
+sub_8023CAC: @ 8023CAC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ adds r7, r0, 0
+ ldrb r0, [r7, 0xC]
+ cmp r0, 0x7
+ bls _08023CC2
+ b _0802402E
+_08023CC2:
+ lsls r0, 2
+ ldr r1, =_08023CD0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08023CD0:
+ .4byte _08023CF0
+ .4byte _08023D2A
+ .4byte _08023D38
+ .4byte _08023DA0
+ .4byte _08023F20
+ .4byte _08023FD0
+ .4byte _08023FDC
+ .4byte _08024010
+_08023CF0:
+ adds r4, r7, 0
+ adds r4, 0x42
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0x4
+ bl memset
+ ldrb r0, [r7, 0x8]
+ lsls r0, 5
+ adds r0, r7, r0
+ adds r2, r0, 0
+ adds r2, 0xB2
+ ldrh r1, [r7, 0x28]
+ ldrh r0, [r2]
+ cmp r0, r1
+ bls _08023D12
+ strh r1, [r2]
+_08023D12:
+ ldrb r0, [r7, 0x8]
+ lsls r0, 5
+ adds r0, r7, r0
+ adds r0, 0xB2
+ ldrh r0, [r0]
+ strh r0, [r4]
+ movs r0, 0
+ adds r1, r4, 0
+ movs r2, 0x2
+ bl SendBlock
+ b _0802402E
+_08023D2A:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ bne _08023D36
+ b _08024034
+_08023D36:
+ b _08024004
+_08023D38:
+ bl GetBlockReceivedStatus
+ ldr r2, =gUnknown_082F4448
+ ldrb r3, [r7, 0x9]
+ subs r1, r3, 0x2
+ adds r1, r2
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ beq _08023D50
+ b _08024034
+_08023D50:
+ movs r0, 0
+ mov r8, r0
+ adds r4, r7, 0
+ adds r4, 0x42
+ cmp r8, r3
+ bcs _08023D7E
+ ldr r2, =gBlockRecvBuffer
+_08023D5E:
+ mov r3, r8
+ lsls r1, r3, 5
+ adds r1, r7, r1
+ lsls r0, r3, 8
+ adds r0, r2
+ ldrh r0, [r0]
+ adds r1, 0xB2
+ strh r0, [r1]
+ mov r0, r8
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r6, [r7, 0x9]
+ cmp r8, r6
+ bcc _08023D5E
+_08023D7E:
+ movs r0, 0
+ strh r0, [r7, 0x10]
+ strh r0, [r4]
+ bl ResetBlockReceivedFlags
+ ldrb r0, [r7, 0x8]
+ cmp r0, 0
+ bne _08023D9C
+ movs r0, 0x3
+ b _08024032
+ .pool
+_08023D9C:
+ movs r0, 0x6
+ b _08024032
+_08023DA0:
+ adds r0, r7, 0
+ adds r0, 0x68
+ movs r1, 0
+ movs r2, 0x30
+ bl memset
+ ldrh r1, [r7, 0x28]
+ adds r0, r7, 0
+ adds r0, 0x6C
+ strh r1, [r0]
+ movs r0, 0x18
+ ldrsh r4, [r7, r0]
+ ldrh r0, [r7, 0x28]
+ movs r1, 0x3C
+ bl __udivsi3
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl __divsi3
+ adds r1, r7, 0
+ adds r1, 0x6E
+ strh r0, [r1]
+ movs r1, 0x30
+ ldrsh r0, [r7, r1]
+ lsls r0, 8
+ movs r4, 0xC8
+ lsls r4, 6
+ adds r1, r4, 0
+ bl sub_8151574
+ adds r2, r0, 0
+ movs r3, 0x32
+ ldrsh r1, [r7, r3]
+ lsls r1, 8
+ bl sub_81515FC
+ adds r2, r0, r4
+ asrs r2, 8
+ movs r1, 0x7F
+ adds r0, r2, 0
+ ands r0, r1
+ adds r1, r7, 0
+ adds r1, 0x70
+ strh r0, [r1]
+ lsls r2, 8
+ movs r1, 0xC8
+ lsls r1, 7
+ adds r0, r2, 0
+ bl sub_81515FC
+ adds r2, r0, 0
+ ldrb r1, [r7, 0x9]
+ ldr r0, [r7, 0x1C]
+ muls r0, r1
+ lsls r4, r0, 8
+ adds r0, r4, 0
+ adds r1, r2, 0
+ bl sub_8151574
+ adds r4, r0, 0
+ asrs r0, r4, 8
+ str r0, [r7, 0x68]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ adds r1, r7, 0
+ adds r1, 0x8F
+ strb r0, [r1]
+ movs r6, 0
+ mov r8, r6
+ mov r9, r1
+ ldrb r0, [r7, 0x9]
+ cmp r8, r0
+ bcc _08023E44
+ b _0802402E
+_08023E44:
+ adds r0, r7, 0
+ adds r0, 0x88
+ add r0, r8
+ mov r1, r8
+ strb r1, [r0]
+ adds r0, r7, 0
+ adds r0, 0x90
+ add r0, r8
+ strb r1, [r0]
+ mov r3, r8
+ lsls r2, r3, 1
+ adds r1, r7, 0
+ adds r1, 0x74
+ adds r1, r2
+ lsls r0, r3, 5
+ adds r3, r7, r0
+ adds r5, r3, 0
+ adds r5, 0xAE
+ ldrh r0, [r5]
+ strh r0, [r1]
+ adds r1, r7, 0
+ adds r1, 0x72
+ ldrh r6, [r1]
+ adds r0, r6
+ strh r0, [r1]
+ mov r1, r9
+ ldrb r0, [r1]
+ adds r6, r2, 0
+ cmp r0, 0x1
+ beq _08023EAE
+ cmp r0, 0x1
+ bgt _08023E8A
+ cmp r0, 0
+ beq _08023E90
+ b _08023F04
+_08023E8A:
+ cmp r0, 0x2
+ beq _08023ECC
+ b _08023F04
+_08023E90:
+ ldrh r0, [r5]
+ cmp r0, 0
+ beq _08023ED2
+ adds r0, r3, 0
+ adds r0, 0xAC
+ ldrh r2, [r0]
+ lsls r2, 8
+ adds r0, r2, 0
+ movs r1, 0xC8
+ lsls r1, 7
+ bl sub_8151574
+ adds r2, r0, 0
+ ldrh r4, [r5]
+ b _08023EFA
+_08023EAE:
+ ldrh r0, [r5]
+ cmp r0, 0
+ beq _08023ED2
+ adds r0, r3, 0
+ adds r0, 0xB0
+ ldrh r2, [r0]
+ lsls r2, 8
+ adds r0, r2, 0
+ movs r1, 0xC8
+ lsls r1, 7
+ bl sub_8151574
+ adds r2, r0, 0
+ ldrh r4, [r5]
+ b _08023EFA
+_08023ECC:
+ ldrh r0, [r5]
+ cmp r0, 0
+ bne _08023ED6
+_08023ED2:
+ movs r4, 0
+ b _08023F04
+_08023ED6:
+ adds r1, r3, 0
+ adds r1, 0xB2
+ ldrh r0, [r1]
+ ldrh r2, [r7, 0x28]
+ cmp r0, r2
+ bcc _08023EE8
+ movs r4, 0xC8
+ lsls r4, 7
+ b _08023F04
+_08023EE8:
+ ldrh r2, [r1]
+ lsls r2, 8
+ adds r0, r2, 0
+ movs r1, 0xC8
+ lsls r1, 7
+ bl sub_8151574
+ adds r2, r0, 0
+ ldrh r4, [r7, 0x28]
+_08023EFA:
+ lsls r4, 8
+ adds r1, r4, 0
+ bl sub_81515FC
+ adds r4, r0, 0
+_08023F04:
+ asrs r4, 4
+ adds r0, r7, 0
+ adds r0, 0x7E
+ adds r0, r6
+ strh r4, [r0]
+ mov r0, r8
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r3, [r7, 0x9]
+ cmp r8, r3
+ bcc _08023E44
+ b _0802402E
+_08023F20:
+ movs r6, 0
+ mov r8, r6
+ ldrb r0, [r7, 0x9]
+ subs r0, 0x1
+ adds r1, r7, 0
+ adds r1, 0x68
+ str r1, [sp, 0xC]
+ cmp r8, r0
+ bge _08023FC4
+_08023F32:
+ ldrb r0, [r7, 0x9]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r2, r8
+ adds r2, 0x1
+ str r2, [sp, 0x8]
+ cmp r4, r8
+ bls _08023FB4
+ adds r3, r7, 0
+ adds r3, 0x74
+ str r3, [sp]
+ adds r6, r7, 0
+ adds r6, 0x88
+ str r6, [sp, 0x4]
+ movs r0, 0x90
+ adds r0, r7
+ mov r10, r0
+ movs r1, 0x7E
+ adds r1, r7
+ mov r9, r1
+_08023F5C:
+ subs r2, r4, 0x1
+ mov r12, r2
+ lsls r6, r2, 1
+ ldr r0, [sp]
+ adds r3, r0, r6
+ lsls r5, r4, 1
+ adds r1, r0, r5
+ ldrh r2, [r3]
+ ldrh r0, [r1]
+ cmp r2, r0
+ bcs _08023F86
+ ldrh r0, [r1]
+ strh r2, [r1]
+ strh r0, [r3]
+ ldr r1, [sp, 0x4]
+ adds r2, r1, r4
+ ldrb r3, [r2]
+ add r1, r12
+ ldrb r0, [r1]
+ strb r0, [r2]
+ strb r3, [r1]
+_08023F86:
+ mov r2, r9
+ adds r3, r2, r6
+ adds r1, r2, r5
+ ldrh r2, [r3]
+ ldrh r6, [r1]
+ cmp r2, r6
+ bcs _08023FAA
+ ldrh r0, [r1]
+ strh r2, [r1]
+ strh r0, [r3]
+ mov r0, r10
+ adds r2, r0, r4
+ ldrb r3, [r2]
+ mov r1, r10
+ add r1, r12
+ ldrb r0, [r1]
+ strb r0, [r2]
+ strb r3, [r1]
+_08023FAA:
+ mov r1, r12
+ lsls r0, r1, 24
+ lsrs r4, r0, 24
+ cmp r4, r8
+ bhi _08023F5C
+_08023FB4:
+ ldr r2, [sp, 0x8]
+ lsls r0, r2, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r0, [r7, 0x9]
+ subs r0, 0x1
+ cmp r8, r0
+ blt _08023F32
+_08023FC4:
+ movs r0, 0
+ ldr r1, [sp, 0xC]
+ movs r2, 0x30
+ bl SendBlock
+ b _0802402E
+_08023FD0:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08024034
+ b _08024004
+_08023FDC:
+ bl GetBlockReceivedStatus
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08024034
+ adds r4, r7, 0
+ adds r4, 0x68
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0x30
+ bl memset
+ ldr r1, =gBlockRecvBuffer
+ adds r0, r4, 0
+ movs r2, 0x30
+ bl memcpy
+ bl ResetBlockReceivedFlags
+_08024004:
+ movs r0, 0
+ strh r0, [r7, 0x10]
+ b _0802402E
+ .pool
+_08024010:
+ bl sub_8020E58
+ movs r0, 0x12
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r0, 0
+ movs r1, 0xB
+ strh r1, [r7, 0x12]
+ strb r0, [r7, 0xC]
+ adds r1, r7, 0
+ adds r1, 0x24
+ strb r0, [r1]
+ b _08024034
+_0802402E:
+ ldrb r0, [r7, 0xC]
+ adds r0, 0x1
+_08024032:
+ strb r0, [r7, 0xC]
+_08024034:
+ movs r0, 0
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8023CAC
+
+ thumb_func_start sub_8024048
+sub_8024048: @ 8024048
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldrb r0, [r5, 0xC]
+ cmp r0, 0x4
+ bhi _08024124
+ lsls r0, 2
+ ldr r1, =_08024064
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08024064:
+ .4byte _08024078
+ .4byte _0802408A
+ .4byte _0802409C
+ .4byte _080240CC
+ .4byte _080240DC
+_08024078:
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r5, r0
+ adds r0, r5, 0
+ bl sub_8022070
+ cmp r0, 0
+ bne _08024124
+ b _0802412A
+_0802408A:
+ movs r0, 0
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r5, r0
+ movs r0, 0x1E
+ strb r0, [r1]
+ b _08024124
+_0802409C:
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r5, r0
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _080240AE
+ subs r0, 0x1
+ strb r0, [r1]
+ b _0802412A
+_080240AE:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0802412A
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r5, 0
+ bl sub_802222C
+ b _08024124
+ .pool
+_080240CC:
+ ldrh r0, [r5, 0x12]
+ cmp r0, 0xC
+ bhi _08024124
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r5, 0x12]
+ strb r1, [r5, 0xC]
+ b _0802412A
+_080240DC:
+ ldr r0, =gStringVar1
+ ldr r1, [r5, 0x1C]
+ movs r2, 0
+ movs r3, 0x6
+ bl ConvertIntToDecimalStringN
+ ldr r4, =gStringVar2
+ bl GetBerryPowder
+ adds r1, r0, 0
+ adds r0, r4, 0
+ movs r2, 0
+ movs r3, 0x6
+ bl ConvertIntToDecimalStringN
+ movs r4, 0
+ str r4, [sp]
+ adds r0, r6, 0
+ movs r1, 0x2
+ movs r2, 0x3
+ movs r3, 0
+ bl sub_8024644
+ movs r0, 0x13
+ strb r0, [r5, 0xE]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ strb r4, [r5, 0xC]
+ b _0802412A
+ .pool
+_08024124:
+ ldrb r0, [r5, 0xC]
+ adds r0, 0x1
+ strb r0, [r5, 0xC]
+_0802412A:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8024048
+
+ thumb_func_start sub_8024134
+sub_8024134: @ 8024134
+ push {r4,r5,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r0, [r5, 0xC]
+ cmp r0, 0x4
+ bhi _08024218
+ lsls r0, 2
+ ldr r1, =_08024150
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08024150:
+ .4byte _08024164
+ .4byte _080241A0
+ .4byte _080241A6
+ .4byte _080241F0
+ .4byte _08024204
+_08024164:
+ ldrh r1, [r5, 0x28]
+ ldr r0, =0x00008c9f
+ cmp r1, r0
+ bls _08024176
+ movs r1, 0x9C
+ lsls r1, 1
+ adds r0, r5, r1
+ bl sub_8022554
+_08024176:
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r1, 0x8
+ movs r2, 0
+ movs r3, 0
+ bl sub_8024644
+ movs r4, 0
+ movs r0, 0x13
+ strb r0, [r5, 0xE]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ strb r4, [r5, 0xC]
+ b _0802421E
+ .pool
+_080241A0:
+ bl sub_8010434
+ b _08024218
+_080241A6:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802421E
+ movs r0, 0
+ movs r1, 0
+ bl DrawDialogueFrame
+ ldr r2, =gText_SavingDontTurnOffPower
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x1
+ movs r3, 0
+ bl AddTextPrinterParameterized2
+ movs r0, 0
+ movs r1, 0x3
+ bl CopyWindowToVram
+ ldr r0, =sub_8153688
+ movs r1, 0
+ bl CreateTask
+ b _08024218
+ .pool
+_080241F0:
+ ldr r0, =sub_8153688
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ beq _08024218
+ b _0802421E
+ .pool
+_08024204:
+ movs r0, 0x14
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r1, 0
+ movs r0, 0xF
+ strh r0, [r5, 0x12]
+ strb r1, [r5, 0xC]
+ b _0802421E
+_08024218:
+ ldrb r0, [r5, 0xC]
+ adds r0, 0x1
+ strb r0, [r5, 0xC]
+_0802421E:
+ movs r0, 0
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8024134
+
+ thumb_func_start sub_8024228
+sub_8024228: @ 8024228
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldrb r0, [r5, 0xC]
+ cmp r0, 0x1
+ beq _0802426A
+ cmp r0, 0x1
+ bgt _08024240
+ cmp r0, 0
+ beq _08024246
+ b _080242D0
+_08024240:
+ cmp r0, 0x2
+ beq _08024270
+ b _080242D0
+_08024246:
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r6, 0
+ movs r1, 0x4
+ movs r2, 0
+ movs r3, 0
+ bl sub_8024644
+ movs r0, 0x14
+ strb r0, [r5, 0xE]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r0, 0
+ strb r0, [r5, 0xC]
+ b _080242D8
+_0802426A:
+ bl DisplayYesNoMenuDefaultYes
+ b _080242D0
+_08024270:
+ bl Menu_ProcessInputNoWrapClearOnChoose
+ lsls r0, 24
+ asrs r4, r0, 24
+ movs r0, 0x2
+ negs r0, r0
+ cmp r4, r0
+ beq _080242D6
+ adds r0, r5, 0
+ adds r0, 0x42
+ movs r1, 0
+ movs r2, 0xC
+ bl memset
+ cmp r4, 0
+ bne _080242A2
+ bl HasAtLeastOneBerry
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802429E
+ strh r4, [r5, 0x14]
+ b _080242A6
+_0802429E:
+ movs r0, 0x3
+ b _080242A4
+_080242A2:
+ movs r0, 0x1
+_080242A4:
+ strh r0, [r5, 0x14]
+_080242A6:
+ movs r0, 0
+ movs r1, 0x1
+ bl ClearDialogWindowAndFrame
+ movs r4, 0
+ str r4, [sp]
+ adds r0, r6, 0
+ movs r1, 0x8
+ movs r2, 0
+ movs r3, 0
+ bl sub_8024644
+ movs r0, 0x15
+ strb r0, [r5, 0xE]
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ strb r4, [r5, 0xC]
+ b _080242D6
+_080242D0:
+ ldrb r0, [r5, 0xC]
+ adds r0, 0x1
+ strb r0, [r5, 0xC]
+_080242D6:
+ movs r0, 0
+_080242D8:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8024228
+
+ thumb_func_start sub_80242E0
+sub_80242E0: @ 80242E0
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ movs r5, 0
+ ldrb r0, [r4, 0xC]
+ cmp r0, 0x1
+ beq _08024306
+ cmp r0, 0x1
+ bgt _080242F6
+ cmp r0, 0
+ beq _08024300
+ b _080243AC
+_080242F6:
+ cmp r0, 0x2
+ beq _08024328
+ cmp r0, 0x3
+ beq _08024336
+ b _080243AC
+_08024300:
+ bl sub_8010434
+ b _080243AC
+_08024306:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080243B2
+ ldrh r0, [r4, 0x14]
+ adds r1, r4, 0
+ adds r1, 0x42
+ strh r0, [r1]
+ adds r0, r4, 0
+ adds r0, 0x4E
+ strh r5, [r0]
+ movs r0, 0
+ movs r2, 0x2
+ bl SendBlock
+ b _080243AC
+_08024328:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080243B2
+ strh r5, [r4, 0x10]
+ b _080243AC
+_08024336:
+ bl GetBlockReceivedStatus
+ ldr r2, =gUnknown_082F4448
+ ldrb r3, [r4, 0x9]
+ subs r1, r3, 0x2
+ adds r1, r2
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bne _080243B2
+ adds r7, r4, 0
+ adds r7, 0x42
+ adds r6, r4, 0
+ adds r6, 0x4E
+ cmp r5, r3
+ bcs _08024374
+ adds r1, r6, 0
+ ldr r2, =gBlockRecvBuffer
+_0802435C:
+ lsls r0, r5, 8
+ adds r0, r2
+ ldrh r0, [r0]
+ ldrh r3, [r1]
+ adds r0, r3
+ strh r0, [r1]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrb r0, [r4, 0x9]
+ cmp r5, r0
+ bcc _0802435C
+_08024374:
+ ldrh r0, [r6]
+ cmp r0, 0
+ beq _08024390
+ movs r0, 0x17
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ b _0802439A
+ .pool
+_08024390:
+ movs r0, 0x16
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+_0802439A:
+ bl ResetBlockReceivedFlags
+ movs r1, 0
+ movs r0, 0
+ strh r0, [r7]
+ strh r0, [r6]
+ strh r0, [r4, 0x10]
+ strb r1, [r4, 0xC]
+ b _080243B4
+_080243AC:
+ ldrb r0, [r4, 0xC]
+ adds r0, 0x1
+ strb r0, [r4, 0xC]
+_080243B2:
+ movs r0, 0
+_080243B4:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80242E0
+
+ thumb_func_start sub_80243BC
+sub_80243BC: @ 80243BC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrb r4, [r5, 0xC]
+ cmp r4, 0x1
+ beq _080243EA
+ cmp r4, 0x1
+ bgt _080243D2
+ cmp r4, 0
+ beq _080243DC
+ b _08024434
+_080243D2:
+ cmp r4, 0x2
+ beq _080243F6
+ cmp r4, 0x3
+ beq _0802441A
+ b _08024434
+_080243DC:
+ movs r0, 0x1
+ negs r0, r0
+ str r4, [sp]
+ movs r1, 0x1
+ movs r2, 0
+ movs r3, 0x10
+ b _08024410
+_080243EA:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ beq _08024434
+ b _0802443A
+_080243F6:
+ movs r0, 0
+ movs r1, 0x1
+ bl ClearDialogWindowAndFrame
+ adds r0, r5, 0
+ bl sub_8021488
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0x10
+ movs r3, 0
+_08024410:
+ bl BeginNormalPaletteFade
+ bl UpdatePaletteFade
+ b _08024434
+_0802441A:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802443A
+ movs r0, 0x7
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ movs r0, 0
+ strh r4, [r5, 0x12]
+ b _08024438
+_08024434:
+ ldrb r0, [r5, 0xC]
+ adds r0, 0x1
+_08024438:
+ strb r0, [r5, 0xC]
+_0802443A:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80243BC
+
+ thumb_func_start sub_8024444
+sub_8024444: @ 8024444
+ push {r4,r5,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ ldrb r4, [r5, 0xC]
+ cmp r4, 0x1
+ beq _080244BC
+ cmp r4, 0x1
+ bgt _0802445A
+ cmp r4, 0
+ beq _08024460
+ b _080244F6
+_0802445A:
+ cmp r4, 0x2
+ beq _080244D4
+ b _080244F6
+_08024460:
+ movs r0, 0
+ movs r1, 0
+ bl DrawDialogueFrame
+ ldrh r1, [r5, 0x14]
+ cmp r1, 0x3
+ bne _08024490
+ ldr r0, =gUnknown_082F32A4
+ ldr r2, [r0, 0x14]
+ ldrb r3, [r5, 0xB]
+ str r4, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ str r1, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x1
+ bl AddTextPrinterParameterized2
+ b _080244AC
+ .pool
+_08024490:
+ ldr r0, =gUnknown_082F32A4
+ ldr r2, [r0, 0x18]
+ ldrb r3, [r5, 0xB]
+ str r4, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x1
+ bl AddTextPrinterParameterized2
+_080244AC:
+ movs r0, 0
+ movs r1, 0x3
+ bl CopyWindowToVram
+ b _080244F6
+ .pool
+_080244BC:
+ movs r0, 0
+ bl IsTextPrinterActive
+ lsls r0, 16
+ cmp r0, 0
+ bne _080244FC
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r5, r0
+ movs r0, 0x78
+ strb r0, [r1]
+ b _080244F6
+_080244D4:
+ movs r0, 0x9C
+ lsls r0, 1
+ adds r1, r5, r0
+ ldrb r0, [r1]
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _080244E8
+ subs r0, 0x1
+ strb r0, [r1]
+ b _080244FC
+_080244E8:
+ movs r0, 0x18
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ strb r4, [r5, 0xC]
+ b _080244FC
+_080244F6:
+ ldrb r0, [r5, 0xC]
+ adds r0, 0x1
+ strb r0, [r5, 0xC]
+_080244FC:
+ movs r0, 0
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8024444
+
+ thumb_func_start sub_8024508
+sub_8024508: @ 8024508
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrb r4, [r5, 0xC]
+ cmp r4, 0x1
+ beq _08024528
+ cmp r4, 0x1
+ bgt _0802451C
+ cmp r4, 0
+ beq _08024522
+ b _08024558
+_0802451C:
+ cmp r4, 0x2
+ beq _08024538
+ b _08024558
+_08024522:
+ bl sub_8010434
+ b _08024558
+_08024528:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802455E
+ bl sub_800AC34
+ b _08024558
+_08024538:
+ ldr r0, =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0802455E
+ movs r0, 0x19
+ strb r0, [r5, 0xE]
+ movs r0, 0x5
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_8022BEC
+ strb r4, [r5, 0xC]
+ b _0802455E
+ .pool
+_08024558:
+ ldrb r0, [r5, 0xC]
+ adds r0, 0x1
+ strb r0, [r5, 0xC]
+_0802455E:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8024508
+
+ thumb_func_start sub_8024568
+sub_8024568: @ 8024568
+ push {lr}
+ movs r0, 0
+ bl sub_8020C0C
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8024568
+
+ thumb_func_start sub_8024578
+sub_8024578: @ 8024578
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r5, 0
+ movs r0, 0x33
+ bl IncrementGameStat
+ strb r5, [r4, 0xD]
+ movs r1, 0
+ strh r5, [r4, 0x10]
+ movs r0, 0x2
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x14]
+ str r5, [r4, 0x1C]
+ strh r5, [r4, 0x18]
+ strh r5, [r4, 0x1A]
+ str r5, [r4, 0x20]
+ adds r0, r4, 0
+ adds r0, 0x24
+ strb r1, [r0]
+ adds r1, r4, 0
+ adds r1, 0x25
+ movs r0, 0
+ strb r0, [r1]
+ strh r5, [r4, 0x26]
+ strh r5, [r4, 0x28]
+ strh r5, [r4, 0x2E]
+ ldr r0, =0x0000ffff
+ strh r0, [r4, 0x32]
+ strh r5, [r4, 0x30]
+ strh r5, [r4, 0x34]
+ movs r6, 0
+ movs r3, 0
+_080245B8:
+ lsls r0, r5, 5
+ adds r2, r4, r0
+ adds r1, r2, 0
+ adds r1, 0xA4
+ ldr r0, =0x0000ffff
+ strh r0, [r1]
+ adds r0, r2, 0
+ adds r0, 0xA6
+ strh r3, [r0]
+ adds r0, 0x2
+ strh r3, [r0]
+ adds r1, 0x6
+ movs r0, 0x1
+ strh r0, [r1]
+ adds r0, r2, 0
+ adds r0, 0xAC
+ strh r3, [r0]
+ adds r0, 0x2
+ strh r3, [r0]
+ adds r0, 0x2
+ strh r3, [r0]
+ adds r0, 0x2
+ strh r3, [r0]
+ adds r0, 0x2
+ strb r6, [r0]
+ adds r0, 0x1
+ strb r6, [r0]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x4
+ bls _080245B8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8024578
+
+ thumb_func_start sub_8024604
+sub_8024604: @ 8024604
+ push {r4-r6,lr}
+ sub sp, 0x8
+ str r2, [sp, 0x4]
+ ldr r5, [sp, 0x18]
+ ldr r6, [sp, 0x1C]
+ ldr r4, [sp, 0x20]
+ mov r2, sp
+ strh r4, [r2]
+ add r4, sp, 0x4
+ ldrb r2, [r4]
+ strb r2, [r0]
+ ldrb r2, [r4, 0x1]
+ strb r2, [r0, 0x1]
+ ldrb r2, [r4, 0x2]
+ strb r2, [r0, 0x2]
+ ldrb r2, [r4, 0x3]
+ strb r2, [r0, 0x3]
+ strb r3, [r0, 0x4]
+ strb r5, [r0, 0x5]
+ strb r6, [r0, 0x6]
+ mov r2, sp
+ ldrb r2, [r2]
+ strb r2, [r0, 0x7]
+ mov r2, sp
+ ldrb r2, [r2, 0x1]
+ strb r2, [r0, 0x8]
+ strb r1, [r0, 0x9]
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8024604
+
+ thumb_func_start sub_8024644
+sub_8024644: @ 8024644
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r5, [sp, 0x10]
+ mov r4, sp
+ strh r3, [r4]
+ strb r1, [r0]
+ strb r2, [r0, 0x1]
+ mov r1, sp
+ ldrb r1, [r1]
+ strb r1, [r0, 0x2]
+ mov r1, sp
+ ldrb r1, [r1, 0x1]
+ strb r1, [r0, 0x3]
+ strb r5, [r0, 0x4]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8024644
+
+ .align 2, 0 @ don't pad with nop