summaryrefslogtreecommitdiff
path: root/asm/rom_807C828.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/rom_807C828.s')
-rw-r--r--asm/rom_807C828.s16904
1 files changed, 16904 insertions, 0 deletions
diff --git a/asm/rom_807C828.s b/asm/rom_807C828.s
new file mode 100644
index 000000000..68baca083
--- /dev/null
+++ b/asm/rom_807C828.s
@@ -0,0 +1,16904 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_807C828
+sub_807C828: @ 807C828
+ push {r4-r6,lr}
+ ldr r0, _0807C8EC
+ bl FuncIsActiveTask
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0
+ bne _0807C8E4
+ movs r0, 0x90
+ lsls r0, 5
+ bl AllocSpritePalette
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, _0807C8F0
+ lsls r1, r5, 5
+ ldr r2, _0807C8F4
+ adds r1, r2
+ ldr r2, _0807C8F8
+ bl CpuSet
+ bl sub_807CB10
+ ldr r4, _0807C8FC
+ ldr r1, _0807C900
+ adds r0, r4, r1
+ strb r5, [r0]
+ ldr r0, _0807C904
+ bl AllocSpritePalette
+ ldr r2, _0807C908
+ adds r1, r4, r2
+ strb r0, [r1]
+ ldr r1, _0807C90C
+ adds r0, r4, r1
+ strb r6, [r0]
+ adds r2, 0x4
+ adds r0, r4, r2
+ strb r6, [r0]
+ adds r1, 0x4
+ adds r0, r4, r1
+ strb r6, [r0]
+ adds r2, 0xC
+ adds r0, r4, r2
+ strb r6, [r0]
+ adds r1, 0x22
+ adds r0, r4, r1
+ strb r6, [r0]
+ adds r2, 0x17
+ adds r0, r4, r2
+ strb r6, [r0]
+ adds r1, 0x24
+ adds r0, r4, r1
+ strb r6, [r0]
+ adds r2, 0x1B
+ adds r0, r4, r2
+ strb r6, [r0]
+ subs r1, 0xD
+ adds r0, r4, r1
+ strb r6, [r0]
+ adds r2, 0x18
+ adds r0, r4, r2
+ strb r6, [r0]
+ subs r1, 0x1D
+ adds r0, r4, r1
+ strb r6, [r0]
+ movs r0, 0x10
+ movs r1, 0
+ bl sub_807DB64
+ movs r2, 0xDA
+ lsls r2, 3
+ adds r0, r4, r2
+ strb r6, [r0]
+ ldr r0, _0807C910
+ adds r1, r4, r0
+ movs r0, 0x3
+ strb r0, [r1]
+ movs r1, 0xD9
+ lsls r1, 3
+ adds r0, r4, r1
+ strb r6, [r0]
+ adds r2, 0x3
+ adds r1, r4, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, _0807C914
+ movs r1, 0x50
+ bl CreateTask
+ ldr r1, _0807C918
+ adds r4, r1
+ strb r0, [r4]
+_0807C8E4:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807C8EC: .4byte sub_807CA34
+_0807C8F0: .4byte gUnknown_083970E8
+_0807C8F4: .4byte gPlttBufferUnfaded + 0x200
+_0807C8F8: .4byte REG_BG0CNT
+_0807C8FC: .4byte gUnknown_0202F7E8
+_0807C900: .4byte 0x000006d5
+_0807C904: .4byte 0x00001201
+_0807C908: .4byte 0x000006d4
+_0807C90C: .4byte 0x000006da
+_0807C910: .4byte 0x000006c6
+_0807C914: .4byte sub_807C9E4
+_0807C918: .4byte 0x000006c9
+ thumb_func_end sub_807C828
+
+ thumb_func_start sub_807C91C
+sub_807C91C: @ 807C91C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x3
+ beq _0807C932
+ cmp r4, 0x5
+ beq _0807C932
+ cmp r4, 0xD
+ beq _0807C932
+ bl play_some_sound
+_0807C932:
+ ldr r1, _0807C974
+ ldr r2, _0807C978
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, r4
+ beq _0807C956
+ movs r3, 0xDA
+ lsls r3, 3
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, r4
+ bne _0807C956
+ ldr r0, _0807C97C
+ lsls r1, r4, 4
+ adds r1, r0
+ ldr r0, [r1]
+ bl _call_via_r0
+_0807C956:
+ ldr r1, _0807C974
+ ldr r2, _0807C980
+ adds r0, r1, r2
+ movs r2, 0
+ strb r2, [r0]
+ ldr r3, _0807C978
+ adds r0, r1, r3
+ strb r4, [r0]
+ ldr r0, _0807C984
+ adds r1, r0
+ strh r2, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807C974: .4byte gUnknown_0202F7E8
+_0807C978: .4byte 0x000006d1
+_0807C97C: .4byte gUnknown_08396FC8
+_0807C980: .4byte 0x000006d3
+_0807C984: .4byte 0x000006ce
+ thumb_func_end sub_807C91C
+
+ thumb_func_start sub_807C988
+sub_807C988: @ 807C988
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl play_some_sound
+ ldr r0, _0807C9AC
+ movs r2, 0xDA
+ lsls r2, 3
+ adds r1, r0, r2
+ strb r4, [r1]
+ ldr r1, _0807C9B0
+ adds r0, r1
+ strb r4, [r0]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807C9AC: .4byte gUnknown_0202F7E8
+_0807C9B0: .4byte 0x000006d1
+ thumb_func_end sub_807C988
+
+ thumb_func_start sub_807C9B4
+sub_807C9B4: @ 807C9B4
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl play_some_sound
+ ldr r1, _0807C9E0
+ movs r2, 0xDA
+ lsls r2, 3
+ adds r0, r1, r2
+ strb r4, [r0]
+ adds r2, 0x1
+ adds r0, r1, r2
+ strb r4, [r0]
+ movs r0, 0xD9
+ lsls r0, 3
+ adds r1, r0
+ movs r0, 0x1
+ strb r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807C9E0: .4byte gUnknown_0202F7E8
+ thumb_func_end sub_807C9B4
+
+ thumb_func_start sub_807C9E4
+sub_807C9E4: @ 807C9E4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r2, _0807CA24
+ movs r1, 0xD9
+ lsls r1, 3
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807CA1C
+ ldr r1, _0807CA28
+ movs r3, 0xDA
+ lsls r3, 3
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ lsls r0, 4
+ adds r1, 0x8
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r1, _0807CA2C
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _0807CA30
+ str r1, [r0]
+_0807CA1C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807CA24: .4byte gUnknown_0202F7E8
+_0807CA28: .4byte gUnknown_08396FC8
+_0807CA2C: .4byte gTasks
+_0807CA30: .4byte sub_807CA34
+ thumb_func_end sub_807C9E4
+
+ thumb_func_start sub_807CA34
+sub_807CA34: @ 807CA34
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r5, _0807CA90
+ movs r0, 0xDA
+ lsls r0, 3
+ adds r6, r5, r0
+ ldr r1, _0807CA94
+ adds r7, r5, r1
+ ldrb r0, [r6]
+ ldrb r2, [r7]
+ cmp r0, r2
+ beq _0807CAA8
+ ldr r0, _0807CA98
+ mov r8, r0
+ ldrb r0, [r6]
+ lsls r0, 4
+ mov r1, r8
+ adds r1, 0xC
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _0807CAB8
+ ldrb r0, [r7]
+ lsls r0, 4
+ add r0, r8
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r1, _0807CA9C
+ adds r0, r5, r1
+ strb r4, [r0]
+ ldr r2, _0807CAA0
+ adds r0, r5, r2
+ strb r4, [r0]
+ ldrb r0, [r7]
+ strb r0, [r6]
+ ldr r0, _0807CAA4
+ adds r1, r5, r0
+ movs r0, 0x1
+ strb r0, [r1]
+ b _0807CAB8
+ .align 2, 0
+_0807CA90: .4byte gUnknown_0202F7E8
+_0807CA94: .4byte 0x000006d1
+_0807CA98: .4byte gUnknown_08396FC8
+_0807CA9C: .4byte 0x000006c3
+_0807CAA0: .4byte 0x000006c6
+_0807CAA4: .4byte 0x000006d3
+_0807CAA8:
+ ldr r0, _0807CAD8
+ ldrb r1, [r6]
+ lsls r1, 4
+ adds r0, 0x4
+ adds r1, r0
+ ldr r0, [r1]
+ bl _call_via_r0
+_0807CAB8:
+ ldr r1, _0807CADC
+ ldr r0, _0807CAE0
+ ldr r2, _0807CAE4
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807CAD8: .4byte gUnknown_08396FC8
+_0807CADC: .4byte gUnknown_083970B8
+_0807CAE0: .4byte gUnknown_0202F7E8
+_0807CAE4: .4byte 0x000006c6
+ thumb_func_end sub_807CA34
+
+ thumb_func_start sub_807CAE8
+sub_807CAE8: @ 807CAE8
+ ldr r0, _0807CAFC
+ ldr r2, _0807CB00
+ adds r1, r0, r2
+ movs r2, 0
+ strb r2, [r1]
+ ldr r1, _0807CB04
+ adds r0, r1
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+_0807CAFC: .4byte gUnknown_0202F7E8
+_0807CB00: .4byte 0x000006c1
+_0807CB04: .4byte 0x000006c2
+ thumb_func_end sub_807CAE8
+
+ thumb_func_start nullsub_38
+nullsub_38: @ 807CB08
+ bx lr
+ thumb_func_end nullsub_38
+
+ thumb_func_start sub_807CB0C
+sub_807CB0C: @ 807CB0C
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_807CB0C
+
+ thumb_func_start sub_807CB10
+sub_807CB10: @ 807CB10
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r1, _0807CB50
+ ldr r0, _0807CB54
+ str r0, [r1]
+ movs r0, 0
+ mov r12, r0
+ ldr r1, _0807CB58
+ mov r10, r1
+_0807CB28:
+ mov r7, r10
+ mov r0, r12
+ cmp r0, 0
+ bne _0807CB34
+ ldr r1, _0807CB5C
+ adds r7, r1
+_0807CB34:
+ movs r5, 0
+ movs r0, 0x1
+ add r0, r12
+ mov r9, r0
+_0807CB3C:
+ lsls r1, r5, 8
+ lsls r0, r5, 24
+ lsrs r2, r0, 16
+ mov r0, r12
+ cmp r0, 0
+ bne _0807CB60
+ adds r0, r1, 0
+ lsls r0, 12
+ lsrs r4, r0, 16
+ b _0807CB62
+ .align 2, 0
+_0807CB50: .4byte gUnknown_030006DC
+_0807CB54: .4byte gUnknown_083970C8
+_0807CB58: .4byte gUnknown_0202FC48
+_0807CB5C: .4byte 0xfffffda0
+_0807CB60:
+ movs r4, 0
+_0807CB62:
+ movs r3, 0
+ adds r1, r5, 0x1
+ mov r8, r1
+_0807CB68:
+ subs r1, r2, r4
+ lsls r1, 16
+ lsrs r2, r1, 16
+ lsls r0, r3, 5
+ adds r0, r7
+ adds r0, r5
+ lsrs r1, 24
+ strb r1, [r0]
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0x2
+ bls _0807CB68
+ adds r6, r2, 0
+ movs r0, 0xF8
+ lsls r0, 5
+ subs r0, r2
+ cmp r0, 0
+ bge _0807CB90
+ adds r0, 0xF
+_0807CB90:
+ lsls r0, 12
+ lsrs r4, r0, 16
+ cmp r5, 0xB
+ bhi _0807CBDA
+ cmp r3, 0x12
+ bhi _0807CC00
+_0807CB9C:
+ adds r0, r2, r4
+ lsls r0, 16
+ lsrs r2, r0, 16
+ subs r0, r2, r6
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r1, 0
+ ble _0807CBB8
+ lsrs r0, 31
+ adds r0, r1, r0
+ asrs r0, 1
+ subs r0, r2, r0
+ lsls r0, 16
+ lsrs r2, r0, 16
+_0807CBB8:
+ lsls r0, r3, 5
+ adds r0, r7
+ adds r1, r0, r5
+ lsrs r0, r2, 8
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1F
+ bls _0807CBCE
+ movs r0, 0x1F
+ strb r0, [r1]
+_0807CBCE:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0x12
+ bls _0807CB9C
+ b _0807CC00
+_0807CBDA:
+ cmp r3, 0x12
+ bhi _0807CC00
+ movs r6, 0x1F
+_0807CBE0:
+ adds r1, r2, r4
+ lsls r1, 16
+ lsrs r2, r1, 16
+ lsls r0, r3, 5
+ adds r0, r7
+ adds r0, r5
+ lsrs r1, 24
+ strb r1, [r0]
+ cmp r1, 0x1F
+ bls _0807CBF6
+ strb r6, [r0]
+_0807CBF6:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0x12
+ bls _0807CBE0
+_0807CC00:
+ mov r1, r8
+ lsls r0, r1, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x1F
+ bls _0807CB3C
+ mov r1, r9
+ lsls r0, r1, 16
+ lsrs r0, 16
+ mov r12, r0
+ cmp r0, 0x1
+ bls _0807CB28
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807CB10
+
+ thumb_func_start sub_807CC24
+sub_807CC24: @ 807CC24
+ push {r4-r7,lr}
+ ldr r0, _0807CC50
+ movs r1, 0xD8
+ lsls r1, 3
+ adds r4, r0, r1
+ ldr r2, _0807CC54
+ adds r1, r0, r2
+ ldrb r7, [r4]
+ mov r12, r7
+ movs r6, 0
+ ldrsb r6, [r4, r6]
+ movs r5, 0
+ ldrsb r5, [r1, r5]
+ adds r3, r0, 0
+ cmp r6, r5
+ bne _0807CC5C
+ ldr r0, _0807CC58
+ adds r1, r3, r0
+ movs r0, 0x3
+ strb r0, [r1]
+ b _0807CCA4
+ .align 2, 0
+_0807CC50: .4byte gUnknown_0202F7E8
+_0807CC54: .4byte 0x000006c1
+_0807CC58: .4byte 0x000006c6
+_0807CC5C:
+ ldr r1, _0807CC84
+ adds r2, r3, r1
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ ldr r7, _0807CC88
+ adds r1, r3, r7
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0807CCA4
+ movs r0, 0
+ strb r0, [r2]
+ mov r0, r12
+ cmp r6, r5
+ bge _0807CC8C
+ adds r0, 0x1
+ b _0807CC90
+ .align 2, 0
+_0807CC84: .4byte 0x000006c3
+_0807CC88: .4byte 0x000006c2
+_0807CC8C:
+ mov r0, r12
+ subs r0, 0x1
+_0807CC90:
+ strb r0, [r4]
+ movs r1, 0xD8
+ lsls r1, 3
+ adds r0, r3, r1
+ movs r2, 0
+ ldrsb r2, [r0, r2]
+ movs r0, 0
+ movs r1, 0x20
+ bl sub_807CEBC
+_0807CCA4:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807CC24
+
+ thumb_func_start sub_807CCAC
+sub_807CCAC: @ 807CCAC
+ push {lr}
+ ldr r2, _0807CCE4
+ ldr r0, _0807CCE8
+ adds r1, r2, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _0807CCCA
+ ldr r3, _0807CCEC
+ adds r1, r2, r3
+ movs r0, 0
+ strb r0, [r1]
+_0807CCCA:
+ movs r1, 0xDA
+ lsls r1, 3
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ subs r0, 0x3
+ cmp r0, 0xA
+ bhi _0807CD94
+ lsls r0, 2
+ ldr r1, _0807CCF0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807CCE4: .4byte gUnknown_0202F7E8
+_0807CCE8: .4byte 0x000006cb
+_0807CCEC: .4byte 0x000006ca
+_0807CCF0: .4byte _0807CCF4
+ .align 2, 0
+_0807CCF4:
+ .4byte _0807CD20
+ .4byte _0807CD20
+ .4byte _0807CD20
+ .4byte _0807CD6C
+ .4byte _0807CD94
+ .4byte _0807CD94
+ .4byte _0807CD94
+ .4byte _0807CD94
+ .4byte _0807CD20
+ .4byte _0807CD48
+ .4byte _0807CD20
+_0807CD20:
+ bl sub_807CDC4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807CDB4
+ ldr r0, _0807CD40
+ movs r2, 0xD8
+ lsls r2, 3
+ adds r1, r0, r2
+ movs r2, 0x3
+ strb r2, [r1]
+ ldr r3, _0807CD44
+ adds r0, r3
+ strb r2, [r0]
+ b _0807CDB4
+ .align 2, 0
+_0807CD40: .4byte gUnknown_0202F7E8
+_0807CD44: .4byte 0x000006c6
+_0807CD48:
+ bl sub_807CE24
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807CDB4
+ ldr r1, _0807CD64
+ movs r0, 0xD8
+ lsls r0, 3
+ adds r2, r1, r0
+ movs r0, 0xFA
+ strb r0, [r2]
+ ldr r2, _0807CD68
+ adds r1, r2
+ b _0807CDB0
+ .align 2, 0
+_0807CD64: .4byte gUnknown_0202F7E8
+_0807CD68: .4byte 0x000006c6
+_0807CD6C:
+ bl sub_807CE7C
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ bne _0807CDB4
+ ldr r0, _0807CD8C
+ movs r3, 0xD8
+ lsls r3, 3
+ adds r1, r0, r3
+ strb r2, [r1]
+ ldr r1, _0807CD90
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0]
+ b _0807CDB4
+ .align 2, 0
+_0807CD8C: .4byte gUnknown_0202F7E8
+_0807CD90: .4byte 0x000006c6
+_0807CD94:
+ ldr r0, _0807CDB8
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0807CDB4
+ ldr r3, _0807CDBC
+ adds r0, r2, r3
+ ldrb r1, [r0]
+ subs r3, 0x1
+ adds r0, r2, r3
+ strb r1, [r0]
+ ldr r0, _0807CDC0
+ adds r1, r2, r0
+_0807CDB0:
+ movs r0, 0x3
+ strb r0, [r1]
+_0807CDB4:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807CDB8: .4byte gPaletteFade
+_0807CDBC: .4byte 0x000006c1
+_0807CDC0: .4byte 0x000006c6
+ thumb_func_end sub_807CCAC
+
+ thumb_func_start sub_807CDC4
+sub_807CDC4: @ 807CDC4
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r2, _0807CE00
+ ldr r0, _0807CE04
+ adds r4, r2, r0
+ ldrb r0, [r4]
+ cmp r0, 0x10
+ beq _0807CE1A
+ adds r1, r0, 0x1
+ strb r1, [r4]
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, 0xF
+ bhi _0807CE0C
+ movs r3, 0x10
+ subs r3, r1
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r1, _0807CE08
+ adds r0, r2, r1
+ ldrh r0, [r0]
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0x20
+ movs r2, 0x3
+ bl sub_807D1BC
+ movs r0, 0x1
+ b _0807CE1C
+ .align 2, 0
+_0807CE00: .4byte gUnknown_0202F7E8
+_0807CE04: .4byte 0x000006c7
+_0807CE08: .4byte 0x000006c4
+_0807CE0C:
+ movs r0, 0
+ movs r1, 0x20
+ movs r2, 0x3
+ bl sub_807CEBC
+ movs r0, 0x10
+ strb r0, [r4]
+_0807CE1A:
+ movs r0, 0
+_0807CE1C:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807CDC4
+
+ thumb_func_start sub_807CE24
+sub_807CE24: @ 807CE24
+ push {r4,lr}
+ ldr r2, _0807CE58
+ ldr r0, _0807CE5C
+ adds r4, r2, r0
+ ldrb r0, [r4]
+ cmp r0, 0x10
+ beq _0807CE74
+ adds r3, r0, 0x1
+ strb r3, [r4]
+ lsls r0, r3, 24
+ lsrs r0, 24
+ cmp r0, 0xF
+ bhi _0807CE64
+ movs r0, 0x6
+ negs r0, r0
+ movs r1, 0x10
+ subs r1, r3
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r3, _0807CE60
+ adds r2, r3
+ ldrh r2, [r2]
+ bl sub_807D304
+ movs r0, 0x1
+ b _0807CE76
+ .align 2, 0
+_0807CE58: .4byte gUnknown_0202F7E8
+_0807CE5C: .4byte 0x000006c7
+_0807CE60: .4byte 0x000006c4
+_0807CE64:
+ movs r2, 0x6
+ negs r2, r2
+ movs r0, 0
+ movs r1, 0x20
+ bl sub_807CEBC
+ movs r0, 0x10
+ strb r0, [r4]
+_0807CE74:
+ movs r0, 0
+_0807CE76:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807CE24
+
+ thumb_func_start sub_807CE7C
+sub_807CE7C: @ 807CE7C
+ push {lr}
+ ldr r2, _0807CEA4
+ ldr r1, _0807CEA8
+ adds r0, r2, r1
+ ldrb r1, [r0]
+ cmp r1, 0x10
+ beq _0807CEB0
+ adds r1, 0x1
+ strb r1, [r0]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _0807CEAC
+ adds r1, r2, r3
+ ldrh r1, [r1]
+ bl sub_807D424
+ movs r0, 0x1
+ b _0807CEB2
+ .align 2, 0
+_0807CEA4: .4byte gUnknown_0202F7E8
+_0807CEA8: .4byte 0x000006c7
+_0807CEAC: .4byte 0x000006c4
+_0807CEB0:
+ movs r0, 0
+_0807CEB2:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807CE7C
+
+ thumb_func_start nullsub_39
+nullsub_39: @ 807CEB8
+ bx lr
+ thumb_func_end nullsub_39
+
+ thumb_func_start sub_807CEBC
+sub_807CEBC: @ 807CEBC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r4, r3, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r2, 24
+ asrs r0, r2, 24
+ cmp r0, 0
+ bgt _0807CEDE
+ b _0807D048
+_0807CEDE:
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ lsls r5, r3, 4
+ adds r0, r1, r3
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ cmp r4, r9
+ bcc _0807CEF6
+ b _0807D1A2
+_0807CEF6:
+ ldr r1, [sp]
+ lsls r0, r1, 24
+ asrs r0, 19
+ str r0, [sp, 0x4]
+_0807CEFE:
+ ldr r0, _0807CF30
+ ldr r0, [r0]
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807CF3C
+ lsls r1, r5, 1
+ ldr r0, _0807CF34
+ adds r0, r1, r0
+ ldr r2, _0807CF38
+ adds r1, r2
+ movs r2, 0x8
+ bl CpuFastSet
+ adds r0, r5, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r5, r0, 16
+ mov r2, r9
+ lsls r2, 16
+ mov r8, r2
+ adds r4, 0x1
+ mov r12, r4
+ b _0807D032
+ .align 2, 0
+_0807CF30: .4byte gUnknown_030006DC
+_0807CF34: .4byte gPlttBufferUnfaded
+_0807CF38: .4byte gPlttBufferFaded
+_0807CF3C:
+ cmp r0, 0x2
+ beq _0807CF50
+ adds r1, r4, 0
+ subs r1, 0x10
+ ldr r2, _0807CF54
+ ldr r3, _0807CF58
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _0807CF60
+_0807CF50:
+ ldr r0, _0807CF5C
+ b _0807CF66
+ .align 2, 0
+_0807CF54: .4byte gUnknown_0202F7E8
+_0807CF58: .4byte 0x000006d5
+_0807CF5C: .4byte gUnknown_0202FC48
+_0807CF60:
+ movs r3, 0x80
+ lsls r3, 2
+ adds r0, r2, r3
+_0807CF66:
+ ldr r1, [sp, 0x4]
+ adds r6, r1, r0
+ cmp r4, 0x10
+ beq _0807CF72
+ cmp r4, 0x1B
+ bls _0807CFE2
+_0807CF72:
+ movs r7, 0
+ mov r2, r9
+ lsls r2, 16
+ mov r8, r2
+ adds r4, 0x1
+ mov r12, r4
+ ldr r3, _0807CF9C
+ mov r10, r3
+_0807CF82:
+ adds r2, r5, 0
+ lsls r0, r5, 1
+ ldr r4, _0807CFA0
+ adds r1, r0, r4
+ ldrh r0, [r1]
+ ldr r3, _0807CFA4
+ cmp r0, r3
+ bne _0807CFA8
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ b _0807CFD6
+ .align 2, 0
+_0807CF9C: .4byte gPlttBufferFaded
+_0807CFA0: .4byte gPlttBufferUnfaded
+_0807CFA4: .4byte 0x00002d9f
+_0807CFA8:
+ ldr r1, [r1]
+ lsls r0, r1, 27
+ lsrs r0, 27
+ adds r0, r6, r0
+ ldrb r4, [r0]
+ lsls r0, r1, 22
+ lsrs r0, 27
+ adds r0, r6, r0
+ ldrb r3, [r0]
+ lsls r1, 17
+ lsrs r1, 27
+ adds r1, r6, r1
+ ldrb r1, [r1]
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ lsls r2, 1
+ add r2, r10
+ lsls r0, r1, 10
+ lsls r1, r3, 5
+ orrs r0, r1
+ orrs r0, r4
+ strh r0, [r2]
+_0807CFD6:
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ cmp r7, 0xF
+ bls _0807CF82
+ b _0807D032
+_0807CFE2:
+ movs r7, 0
+ mov r0, r9
+ lsls r0, 16
+ mov r8, r0
+ adds r4, 0x1
+ mov r12, r4
+ ldr r1, _0807D040
+ mov r10, r1
+_0807CFF2:
+ adds r2, r5, 0
+ lsls r0, r2, 1
+ ldr r3, _0807D044
+ adds r0, r3
+ ldr r1, [r0]
+ lsls r0, r1, 27
+ lsrs r0, 27
+ adds r0, r6, r0
+ ldrb r4, [r0]
+ lsls r0, r1, 22
+ lsrs r0, 27
+ adds r0, r6, r0
+ ldrb r3, [r0]
+ lsls r1, 17
+ lsrs r1, 27
+ adds r1, r6, r1
+ ldrb r1, [r1]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ lsls r2, 1
+ add r2, r10
+ lsls r0, r1, 10
+ lsls r1, r3, 5
+ orrs r0, r1
+ orrs r0, r4
+ strh r0, [r2]
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ cmp r7, 0xF
+ bls _0807CFF2
+_0807D032:
+ mov r4, r12
+ lsls r0, r4, 16
+ lsrs r4, r0, 16
+ cmp r0, r8
+ bcs _0807D03E
+ b _0807CEFE
+_0807D03E:
+ b _0807D1A2
+ .align 2, 0
+_0807D040: .4byte gPlttBufferFaded
+_0807D044: .4byte gPlttBufferUnfaded
+_0807D048:
+ cmp r0, 0
+ blt _0807D04E
+ b _0807D190
+_0807D04E:
+ mvns r0, r0
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ lsls r5, r3, 4
+ adds r0, r1, r3
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ adds r4, r3, 0
+ cmp r4, r9
+ bcc _0807D068
+ b _0807D1A2
+_0807D068:
+ ldr r0, _0807D098
+ ldr r0, [r0]
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807D0A4
+ lsls r1, r5, 1
+ ldr r0, _0807D09C
+ adds r0, r1, r0
+ ldr r2, _0807D0A0
+ adds r1, r2
+ movs r2, 0x8
+ bl CpuFastSet
+ adds r0, r5, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r5, r0, 16
+ mov r0, r9
+ lsls r0, 16
+ mov r8, r0
+ adds r4, 0x1
+ mov r12, r4
+ b _0807D174
+ .align 2, 0
+_0807D098: .4byte gUnknown_030006DC
+_0807D09C: .4byte gPlttBufferUnfaded
+_0807D0A0: .4byte gPlttBufferFaded
+_0807D0A4:
+ cmp r4, 0x10
+ beq _0807D0AC
+ cmp r4, 0x1B
+ bls _0807D11C
+_0807D0AC:
+ movs r7, 0
+ mov r1, r9
+ lsls r1, 16
+ mov r8, r1
+ adds r4, 0x1
+ mov r12, r4
+ ldr r2, _0807D10C
+ mov r10, r2
+ ldr r3, [sp]
+ lsls r0, r3, 24
+ asrs r6, r0, 11
+_0807D0C2:
+ lsls r1, r5, 1
+ ldr r4, _0807D110
+ adds r0, r1, r4
+ ldrh r0, [r0]
+ lsls r4, r0, 16
+ ldr r2, _0807D114
+ cmp r0, r2
+ beq _0807D0FA
+ ldr r3, _0807D118
+ adds r3, r1, r3
+ lsrs r0, r4, 17
+ movs r1, 0xF
+ ands r0, r1
+ lsrs r1, r4, 18
+ movs r2, 0xF0
+ ands r1, r2
+ orrs r0, r1
+ lsrs r1, r4, 19
+ movs r4, 0xF0
+ lsls r4, 4
+ adds r2, r4, 0
+ ands r1, r2
+ orrs r0, r1
+ lsls r0, 1
+ adds r0, r6
+ add r0, r10
+ ldrh r0, [r0]
+ strh r0, [r3]
+_0807D0FA:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ cmp r7, 0xF
+ bls _0807D0C2
+ b _0807D174
+ .align 2, 0
+_0807D10C: .4byte 0x02000000
+_0807D110: .4byte gPlttBufferUnfaded
+_0807D114: .4byte 0x00002d9f
+_0807D118: .4byte gPlttBufferFaded
+_0807D11C:
+ movs r7, 0
+ ldr r1, [sp]
+ lsls r0, r1, 24
+ mov r2, r9
+ lsls r2, 16
+ mov r8, r2
+ adds r4, 0x1
+ mov r12, r4
+ ldr r3, _0807D184
+ mov r10, r3
+ asrs r6, r0, 11
+_0807D132:
+ lsls r0, r5, 1
+ ldr r1, _0807D188
+ adds r4, r0, r1
+ ldr r2, _0807D18C
+ adds r0, r2
+ ldrh r3, [r0]
+ lsls r3, 16
+ lsrs r0, r3, 17
+ movs r1, 0xF
+ ands r0, r1
+ lsrs r1, r3, 18
+ movs r2, 0xF0
+ ands r1, r2
+ orrs r0, r1
+ lsrs r3, 19
+ movs r2, 0xF0
+ lsls r2, 4
+ adds r1, r2, 0
+ ands r3, r1
+ orrs r0, r3
+ lsls r0, 1
+ adds r0, r6
+ add r0, r10
+ ldrh r0, [r0]
+ strh r0, [r4]
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ cmp r7, 0xF
+ bls _0807D132
+_0807D174:
+ mov r3, r12
+ lsls r0, r3, 16
+ lsrs r4, r0, 16
+ cmp r0, r8
+ bcs _0807D180
+ b _0807D068
+_0807D180:
+ b _0807D1A2
+ .align 2, 0
+_0807D184: .4byte 0x02000000
+_0807D188: .4byte gPlttBufferFaded
+_0807D18C: .4byte gPlttBufferUnfaded
+_0807D190:
+ lsls r1, r4, 5
+ ldr r0, _0807D1B4
+ adds r0, r1, r0
+ ldr r2, _0807D1B8
+ adds r1, r2
+ mov r4, r9
+ lsls r2, r4, 3
+ bl CpuFastSet
+_0807D1A2:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D1B4: .4byte gPlttBufferUnfaded
+_0807D1B8: .4byte gPlttBufferFaded
+ thumb_func_end sub_807CEBC
+
+ thumb_func_start sub_807D1BC
+sub_807D1BC: @ 807D1BC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ ldr r4, [sp, 0x34]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r3, 24
+ lsrs r3, 24
+ mov r8, r3
+ mov r1, sp
+ strh r4, [r1]
+ ldr r1, [sp]
+ lsls r3, r1, 27
+ lsrs r3, 27
+ str r3, [sp, 0x4]
+ lsls r3, r1, 22
+ lsrs r3, 27
+ str r3, [sp, 0x8]
+ lsls r1, 17
+ lsrs r1, 27
+ str r1, [sp, 0xC]
+ lsls r6, r0, 4
+ mov r3, r10
+ adds r1, r3, r0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r2, 24
+ movs r1, 0xFF
+ lsls r1, 24
+ adds r2, r1
+ lsrs r2, 24
+ adds r4, r0, 0
+ cmp r4, r10
+ bcs _0807D2E8
+ lsls r0, r2, 24
+ asrs r0, 19
+ str r0, [sp, 0x10]
+_0807D214:
+ ldr r0, _0807D244
+ ldr r0, [r0]
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807D248
+ mov r0, sp
+ ldrh r3, [r0]
+ adds r0, r6, 0
+ movs r1, 0x10
+ mov r2, r8
+ bl BlendPalette
+ adds r0, r6, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r6, r0, 16
+ mov r3, r10
+ lsls r3, 16
+ mov r9, r3
+ adds r4, 0x1
+ mov r12, r4
+ b _0807D2DE
+ .align 2, 0
+_0807D244: .4byte gUnknown_030006DC
+_0807D248:
+ cmp r0, 0x1
+ bne _0807D258
+ ldr r0, _0807D254
+ ldr r1, [sp, 0x10]
+ adds r5, r1, r0
+ b _0807D25E
+ .align 2, 0
+_0807D254: .4byte gUnknown_0202F9E8
+_0807D258:
+ ldr r0, _0807D2F8
+ ldr r3, [sp, 0x10]
+ adds r5, r3, r0
+_0807D25E:
+ movs r7, 0
+ mov r0, r10
+ lsls r0, 16
+ mov r9, r0
+ adds r4, 0x1
+ mov r12, r4
+_0807D26A:
+ adds r4, r6, 0
+ lsls r0, r4, 1
+ ldr r1, _0807D2FC
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r0, r1, 27
+ lsrs r0, 27
+ adds r0, r5, r0
+ ldrb r3, [r0]
+ lsls r0, r1, 22
+ lsrs r0, 27
+ adds r0, r5, r0
+ ldrb r2, [r0]
+ lsls r1, 17
+ lsrs r1, 27
+ adds r1, r5, r1
+ ldrb r1, [r1]
+ ldr r6, [sp, 0x4]
+ subs r0, r6, r3
+ mov r6, r8
+ muls r6, r0
+ adds r0, r6, 0
+ asrs r0, 4
+ adds r3, r0
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r6, [sp, 0x8]
+ subs r0, r6, r2
+ mov r6, r8
+ muls r6, r0
+ adds r0, r6, 0
+ asrs r0, 4
+ adds r2, r0
+ lsls r2, 24
+ ldr r6, [sp, 0xC]
+ subs r0, r6, r1
+ mov r6, r8
+ muls r6, r0
+ adds r0, r6, 0
+ asrs r0, 4
+ adds r1, r0
+ lsls r1, 24
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsls r4, 1
+ ldr r0, _0807D300
+ adds r4, r0
+ lsrs r1, 14
+ lsrs r2, 19
+ orrs r1, r2
+ orrs r1, r3
+ strh r1, [r4]
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ cmp r7, 0xF
+ bls _0807D26A
+_0807D2DE:
+ mov r1, r12
+ lsls r0, r1, 16
+ lsrs r4, r0, 16
+ cmp r0, r9
+ bcc _0807D214
+_0807D2E8:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D2F8: .4byte gUnknown_0202FC48
+_0807D2FC: .4byte gPlttBufferUnfaded
+_0807D300: .4byte gPlttBufferFaded
+ thumb_func_end sub_807D1BC
+
+ thumb_func_start sub_807D304
+sub_807D304: @ 807D304
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ lsls r1, 24
+ lsrs r6, r1, 24
+ mov r1, sp
+ strh r2, [r1]
+ lsls r0, 24
+ movs r1, 0xFF
+ lsls r1, 24
+ eors r0, r1
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ ldr r0, [sp]
+ lsls r1, r0, 27
+ lsrs r1, 27
+ str r1, [sp, 0x8]
+ lsls r1, r0, 22
+ lsrs r1, 27
+ str r1, [sp, 0xC]
+ lsls r0, 17
+ lsrs r0, 27
+ mov r10, r0
+ movs r5, 0
+ movs r4, 0
+_0807D33C:
+ ldr r0, _0807D364
+ ldr r0, [r0]
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807D368
+ mov r0, sp
+ ldrh r3, [r0]
+ adds r0, r5, 0
+ movs r1, 0x10
+ adds r2, r6, 0
+ bl BlendPalette
+ adds r0, r5, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r4, 0x1
+ mov r8, r4
+ b _0807D3FE
+ .align 2, 0
+_0807D364: .4byte gUnknown_030006DC
+_0807D368:
+ movs r0, 0
+ mov r12, r0
+ ldr r1, [sp, 0x4]
+ lsls r0, r1, 24
+ adds r4, 0x1
+ mov r8, r4
+ movs r7, 0x1E
+ asrs r0, 11
+ mov r9, r0
+_0807D37A:
+ adds r4, r5, 0
+ lsls r0, r4, 1
+ ldr r5, _0807D418
+ adds r0, r5
+ ldr r0, [r0]
+ lsls r2, r0, 27
+ lsrs r2, 27
+ lsls r1, r0, 22
+ lsrs r1, 27
+ lsls r0, 17
+ lsrs r0, 27
+ ands r0, r7
+ lsls r0, 7
+ ands r1, r7
+ lsls r1, 3
+ orrs r0, r1
+ ands r2, r7
+ lsls r0, 1
+ orrs r0, r2
+ add r0, r9
+ ldr r1, _0807D41C
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r3, r1, 27
+ lsrs r3, 27
+ lsls r2, r1, 22
+ lsrs r2, 27
+ lsls r1, 17
+ lsrs r1, 27
+ ldr r5, [sp, 0x8]
+ subs r0, r5, r3
+ muls r0, r6
+ asrs r0, 4
+ adds r3, r0
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r5, [sp, 0xC]
+ subs r0, r5, r2
+ muls r0, r6
+ asrs r0, 4
+ adds r2, r0
+ lsls r2, 24
+ mov r5, r10
+ subs r0, r5, r1
+ muls r0, r6
+ asrs r0, 4
+ adds r1, r0
+ lsls r1, 24
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ lsls r4, 1
+ ldr r0, _0807D420
+ adds r4, r0
+ lsrs r1, 14
+ lsrs r2, 19
+ orrs r1, r2
+ orrs r1, r3
+ strh r1, [r4]
+ mov r0, r12
+ adds r0, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ mov r12, r0
+ cmp r0, 0xF
+ bls _0807D37A
+_0807D3FE:
+ mov r1, r8
+ lsls r0, r1, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x1F
+ bls _0807D33C
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D418: .4byte gPlttBufferUnfaded
+_0807D41C: .4byte 0x02000000
+_0807D420: .4byte gPlttBufferFaded
+ thumb_func_end sub_807D304
+
+ thumb_func_start sub_807D424
+sub_807D424: @ 807D424
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ adds r3, r1, 0
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r3, 16
+ lsrs r3, 16
+ mov r0, sp
+ strh r3, [r0]
+ movs r1, 0x80
+ lsls r1, 1
+ movs r0, 0
+ adds r2, r7, 0
+ bl BlendPalette
+ ldr r0, [sp]
+ lsls r1, r0, 27
+ lsrs r1, 27
+ str r1, [sp, 0x4]
+ lsls r1, r0, 22
+ lsrs r1, 27
+ str r1, [sp, 0x8]
+ lsls r0, 17
+ lsrs r0, 27
+ mov r10, r0
+ movs r4, 0x10
+_0807D460:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_807D574
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807D510
+ adds r0, r4, 0x1
+ lsls r1, r0, 20
+ lsrs r1, 16
+ mov r12, r1
+ lsls r1, r4, 20
+ lsrs r6, r1, 16
+ mov r9, r0
+ cmp r6, r12
+ bcs _0807D524
+ movs r0, 0x1C
+ mov r8, r0
+_0807D484:
+ lsls r5, r6, 1
+ ldr r0, _0807D508
+ adds r0, r5, r0
+ ldr r2, [r0]
+ lsls r4, r2, 27
+ lsrs r4, 27
+ lsls r3, r2, 22
+ lsrs r3, 27
+ lsls r2, 17
+ lsrs r2, 27
+ mov r0, r8
+ subs r1, r0, r4
+ lsls r0, r1, 1
+ adds r0, r1
+ asrs r0, 2
+ adds r4, r0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r1, 0x1F
+ subs r1, r3
+ lsls r0, r1, 1
+ adds r0, r1
+ asrs r0, 2
+ adds r3, r0
+ lsls r3, 24
+ lsrs r3, 24
+ mov r0, r8
+ subs r1, r0, r2
+ lsls r0, r1, 1
+ adds r0, r1
+ asrs r0, 2
+ adds r2, r0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, [sp, 0x4]
+ subs r0, r1, r4
+ muls r0, r7
+ asrs r0, 4
+ adds r4, r0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, [sp, 0x8]
+ subs r0, r1, r3
+ muls r0, r7
+ asrs r0, 4
+ adds r3, r0
+ lsls r3, 24
+ mov r1, r10
+ subs r0, r1, r2
+ muls r0, r7
+ asrs r0, 4
+ adds r2, r0
+ lsls r2, 24
+ ldr r0, _0807D50C
+ adds r5, r0
+ lsrs r2, 14
+ lsrs r3, 19
+ orrs r2, r3
+ orrs r2, r4
+ strh r2, [r5]
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, r12
+ bcc _0807D484
+ b _0807D524
+ .align 2, 0
+_0807D508: .4byte gPlttBufferUnfaded
+_0807D50C: .4byte gPlttBufferFaded
+_0807D510:
+ lsls r0, r4, 20
+ lsrs r0, 16
+ mov r1, sp
+ ldrh r3, [r1]
+ movs r1, 0x10
+ adds r2, r7, 0
+ bl BlendPalette
+ adds r4, 0x1
+ mov r9, r4
+_0807D524:
+ mov r1, r9
+ lsls r0, r1, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x1F
+ bls _0807D460
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807D424
+
+ thumb_func_start sub_807D540
+sub_807D540: @ 807D540
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r3, _0807D568
+ ldr r0, _0807D56C
+ adds r1, r3, r0
+ ldrb r0, [r1]
+ cmp r0, 0x5
+ bhi _0807D562
+ ldr r4, _0807D570
+ adds r0, r3, r4
+ ldrb r3, [r1]
+ adds r0, r3
+ strb r2, [r0]
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0807D562:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D568: .4byte gUnknown_0202F7E8
+_0807D56C: .4byte 0x000006fa
+_0807D570: .4byte 0x000006f4
+ thumb_func_end sub_807D540
+
+ thumb_func_start sub_807D574
+sub_807D574: @ 807D574
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ movs r1, 0
+ ldr r2, _0807D59C
+ ldr r4, _0807D5A0
+ adds r0, r2, r4
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcs _0807D5B2
+ ldr r5, _0807D5A4
+ adds r4, r2, r5
+ adds r2, r0, 0
+_0807D58E:
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, r3
+ bne _0807D5A8
+ movs r0, 0x1
+ b _0807D5B4
+ .align 2, 0
+_0807D59C: .4byte gUnknown_0202F7E8
+_0807D5A0: .4byte 0x000006fa
+_0807D5A4: .4byte 0x000006f4
+_0807D5A8:
+ adds r0, r1, 0x1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, r2
+ bcc _0807D58E
+_0807D5B2:
+ movs r0, 0
+_0807D5B4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807D574
+
+ thumb_func_start sub_807D5BC
+sub_807D5BC: @ 807D5BC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r5, _0807D5E8
+ ldr r1, _0807D5EC
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0807D5E2
+ lsls r2, r4, 24
+ asrs r2, 24
+ movs r0, 0
+ movs r1, 0x20
+ bl sub_807CEBC
+ movs r1, 0xD8
+ lsls r1, 3
+ adds r0, r5, r1
+ strb r4, [r0]
+_0807D5E2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D5E8: .4byte gUnknown_0202F7E8
+_0807D5EC: .4byte 0x000006c6
+ thumb_func_end sub_807D5BC
+
+ thumb_func_start sub_807D5F0
+sub_807D5F0: @ 807D5F0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r3, _0807D638
+ ldr r0, _0807D63C
+ adds r2, r3, r0
+ ldrb r0, [r2]
+ cmp r0, 0x3
+ bne _0807D630
+ movs r1, 0
+ strb r1, [r2]
+ movs r2, 0xD8
+ lsls r2, 3
+ adds r0, r3, r2
+ strb r4, [r0]
+ adds r2, 0x1
+ adds r0, r3, r2
+ strb r5, [r0]
+ adds r2, 0x2
+ adds r0, r3, r2
+ strb r1, [r0]
+ ldr r1, _0807D640
+ adds r0, r3, r1
+ strb r6, [r0]
+ lsls r0, r4, 24
+ asrs r0, 24
+ bl sub_807D5BC
+_0807D630:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D638: .4byte gUnknown_0202F7E8
+_0807D63C: .4byte 0x000006c6
+_0807D640: .4byte 0x000006c2
+ thumb_func_end sub_807D5F0
+
+ thumb_func_start fade_screen
+fade_screen: @ 807D644
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ cmp r0, 0x1
+ beq _0807D67C
+ cmp r0, 0x1
+ bgt _0807D660
+ cmp r0, 0
+ beq _0807D66A
+ b _0807D758
+_0807D660:
+ cmp r2, 0x2
+ beq _0807D670
+ cmp r2, 0x3
+ beq _0807D680
+ b _0807D758
+_0807D66A:
+ movs r4, 0
+ movs r1, 0
+ b _0807D684
+_0807D670:
+ ldr r4, _0807D678
+ movs r1, 0
+ b _0807D684
+ .align 2, 0
+_0807D678: .4byte 0x0000ffff
+_0807D67C:
+ movs r4, 0
+ b _0807D682
+_0807D680:
+ ldr r4, _0807D6A4
+_0807D682:
+ movs r1, 0x1
+_0807D684:
+ ldr r0, _0807D6A8
+ movs r2, 0xDA
+ lsls r2, 3
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ blt _0807D6AC
+ cmp r0, 0x6
+ ble _0807D69E
+ cmp r0, 0xD
+ bgt _0807D6AC
+ cmp r0, 0xB
+ blt _0807D6AC
+_0807D69E:
+ movs r2, 0x1
+ b _0807D6AE
+ .align 2, 0
+_0807D6A4: .4byte 0x0000ffff
+_0807D6A8: .4byte gUnknown_0202F7E8
+_0807D6AC:
+ movs r2, 0
+_0807D6AE:
+ cmp r1, 0
+ beq _0807D6F0
+ cmp r2, 0
+ beq _0807D6C2
+ ldr r0, _0807D6E0
+ ldr r1, _0807D6E4
+ movs r2, 0x80
+ lsls r2, 1
+ bl CpuFastSet
+_0807D6C2:
+ movs r0, 0x1
+ negs r0, r0
+ lsls r1, r5, 24
+ asrs r1, 24
+ str r4, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r0, _0807D6E8
+ ldr r3, _0807D6EC
+ adds r0, r3
+ movs r1, 0x2
+ strb r1, [r0]
+ b _0807D758
+ .align 2, 0
+_0807D6E0: .4byte gPlttBufferFaded
+_0807D6E4: .4byte gPlttBufferUnfaded
+_0807D6E8: .4byte gUnknown_0202F7E8
+_0807D6EC: .4byte 0x000006c6
+_0807D6F0:
+ ldr r1, _0807D708
+ ldr r3, _0807D70C
+ adds r0, r1, r3
+ strh r4, [r0]
+ cmp r2, 0
+ beq _0807D714
+ ldr r0, _0807D710
+ adds r1, r0
+ movs r0, 0
+ strb r0, [r1]
+ b _0807D726
+ .align 2, 0
+_0807D708: .4byte gUnknown_0202F7E8
+_0807D70C: .4byte 0x000006c4
+_0807D710: .4byte 0x000006c7
+_0807D714:
+ movs r0, 0x1
+ negs r0, r0
+ lsls r1, r5, 24
+ asrs r1, 24
+ str r4, [sp]
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+_0807D726:
+ ldr r4, _0807D760
+ ldr r1, _0807D764
+ adds r0, r4, r1
+ movs r1, 0
+ movs r5, 0x1
+ strb r5, [r0]
+ ldr r2, _0807D768
+ adds r0, r4, r2
+ strb r5, [r0]
+ ldr r3, _0807D76C
+ adds r0, r4, r3
+ strb r1, [r0]
+ movs r1, 0xE6
+ lsls r1, 3
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ adds r2, 0x68
+ adds r1, r4, r2
+ ldrb r1, [r1]
+ bl sub_807DB64
+ movs r3, 0xD9
+ lsls r3, 3
+ adds r4, r3
+ strb r5, [r4]
+_0807D758:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D760: .4byte gUnknown_0202F7E8
+_0807D764: .4byte 0x000006c6
+_0807D768: .4byte 0x000006ca
+_0807D76C: .4byte 0x000006cb
+ thumb_func_end fade_screen
+
+ thumb_func_start sub_807D770
+sub_807D770: @ 807D770
+ ldr r0, _0807D784
+ ldr r1, _0807D788
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ eors r1, r0
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ bx lr
+ .align 2, 0
+_0807D784: .4byte gUnknown_0202F7E8
+_0807D788: .4byte 0x000006c6
+ thumb_func_end sub_807D770
+
+ thumb_func_start sub_807D78C
+sub_807D78C: @ 807D78C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 8
+ movs r1, 0x80
+ lsls r1, 13
+ adds r0, r1
+ lsrs r4, r0, 16
+ ldr r5, _0807D7CC
+ ldr r2, _0807D7D0
+ adds r0, r5, r2
+ ldrb r0, [r0]
+ adds r1, r5, 0
+ cmp r0, 0x1
+ beq _0807D7D4
+ cmp r0, 0x2
+ beq _0807D820
+ adds r2, 0xA
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ beq _0807D858
+ lsls r0, r4, 24
+ lsrs r0, 24
+ subs r2, 0x10
+ adds r1, r2
+ movs r2, 0
+ ldrsb r2, [r1, r2]
+ movs r1, 0x1
+ bl sub_807CEBC
+ b _0807D868
+ .align 2, 0
+_0807D7CC: .4byte gUnknown_0202F7E8
+_0807D7D0: .4byte 0x000006c6
+_0807D7D4:
+ ldr r2, _0807D814
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807D868
+ adds r2, 0x6
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ bne _0807D7F0
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_807D540
+_0807D7F0:
+ lsls r0, r4, 20
+ lsrs r4, r0, 16
+ movs r2, 0
+ ldr r6, _0807D818
+ ldr r0, _0807D81C
+ adds r3, r5, r0
+_0807D7FC:
+ adds r0, r4, r2
+ lsls r0, 1
+ adds r0, r6
+ ldrh r1, [r3]
+ strh r1, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0xF
+ bls _0807D7FC
+ b _0807D868
+ .align 2, 0
+_0807D814: .4byte 0x000006ca
+_0807D818: .4byte gPlttBufferFaded
+_0807D81C: .4byte 0x000006c4
+_0807D820:
+ lsls r0, r4, 20
+ lsrs r4, r0, 16
+ lsls r1, r4, 1
+ ldr r0, _0807D84C
+ adds r0, r1, r0
+ ldr r2, _0807D850
+ adds r1, r2
+ movs r2, 0x8
+ bl CpuFastSet
+ ldr r0, _0807D854
+ ldrh r2, [r0, 0x4]
+ lsls r2, 21
+ lsrs r2, 27
+ ldrh r3, [r0, 0x6]
+ lsls r3, 17
+ lsrs r3, 17
+ adds r0, r4, 0
+ movs r1, 0x10
+ bl BlendPalette
+ b _0807D868
+ .align 2, 0
+_0807D84C: .4byte gPlttBufferFaded
+_0807D850: .4byte gPlttBufferUnfaded
+_0807D854: .4byte gPaletteFade
+_0807D858:
+ lsls r0, r4, 20
+ lsrs r4, r0, 16
+ ldr r3, _0807D870
+ adds r0, r4, 0
+ movs r1, 0x10
+ movs r2, 0xC
+ bl BlendPalette
+_0807D868:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D870: .4byte 0x000073fc
+ thumb_func_end sub_807D78C
+
+ thumb_func_start sub_807D874
+sub_807D874: @ 807D874
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0807D890
+ movs r2, 0xD8
+ lsls r2, 3
+ adds r1, r2
+ movs r2, 0
+ ldrsb r2, [r1, r2]
+ movs r1, 0x1
+ bl sub_807CEBC
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D890: .4byte gUnknown_0202F7E8
+ thumb_func_end sub_807D874
+
+ thumb_func_start unref_sub_807D894
+unref_sub_807D894: @ 807D894
+ push {lr}
+ ldr r1, _0807D8A8
+ ldr r2, _0807D8AC
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0807D8B0
+ movs r0, 0
+ b _0807D8B6
+ .align 2, 0
+_0807D8A8: .4byte gUnknown_0202F7E8
+_0807D8AC: .4byte 0x000006c6
+_0807D8B0:
+ ldr r2, _0807D8BC
+ adds r0, r1, r2
+ ldrb r0, [r0]
+_0807D8B6:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0807D8BC: .4byte 0x000006ca
+ thumb_func_end unref_sub_807D894
+
+ thumb_func_start sub_807D8C0
+sub_807D8C0: @ 807D8C0
+ push {r4,lr}
+ ldr r4, _0807D8E8
+ ldr r1, _0807D8EC
+ adds r4, r1
+ ldrb r1, [r4]
+ lsls r1, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r1, r2
+ lsrs r1, 16
+ movs r2, 0x20
+ bl LoadPalette
+ ldrb r0, [r4]
+ bl sub_807D78C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D8E8: .4byte gUnknown_0202F7E8
+_0807D8EC: .4byte 0x000006d4
+ thumb_func_end sub_807D8C0
+
+ thumb_func_start sub_807D8F0
+sub_807D8F0: @ 807D8F0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ mov r8, r1
+ ldrb r4, [r7]
+ cmp r4, 0x6
+ bhi _0807D99A
+ subs r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0807D94C
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r0, [r0]
+ lsls r6, r4, 13
+ ldr r5, _0807D950
+ adds r1, r6, r5
+ bl LZ77UnCompWram
+ subs r0, r4, 0x1
+ cmp r4, 0
+ bne _0807D95C
+ ldr r0, _0807D954
+ strh r0, [r5]
+ movs r2, 0x1
+ adds r4, r5, 0
+ movs r3, 0
+ ldr r5, _0807D958
+_0807D92A:
+ lsls r1, r2, 1
+ adds r1, r3
+ adds r1, r4
+ subs r0, r2, 0x1
+ lsls r0, 1
+ adds r0, r3
+ adds r0, r4
+ ldrh r0, [r0]
+ ldrh r6, [r1]
+ adds r0, r6
+ strh r0, [r1]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r5
+ bls _0807D92A
+ b _0807D984
+ .align 2, 0
+_0807D94C: .4byte gUnknown_08396FA8
+_0807D950: .4byte 0x02000000
+_0807D954: .4byte 0x00000421
+_0807D958: .4byte 0x00000fff
+_0807D95C:
+ movs r2, 0
+ adds r3, r5, 0
+ adds r5, r6, 0
+ lsls r4, r0, 13
+ ldr r0, _0807D9A4
+ mov r12, r0
+_0807D968:
+ lsls r0, r2, 1
+ adds r1, r0, r5
+ adds r1, r3
+ adds r0, r4
+ adds r0, r3
+ ldrh r0, [r0]
+ ldrh r6, [r1]
+ adds r0, r6
+ strh r0, [r1]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r12
+ bls _0807D968
+_0807D984:
+ ldrb r0, [r7]
+ adds r0, 0x1
+ strb r0, [r7]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x7
+ bne _0807D99A
+ movs r0, 0x20
+ strb r0, [r7]
+ mov r1, r8
+ strb r0, [r1]
+_0807D99A:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807D9A4: .4byte 0x00000fff
+ thumb_func_end sub_807D8F0
+
+ thumb_func_start sub_807D9A8
+sub_807D9A8: @ 807D9A8
+ ldr r0, _0807D9BC
+ ldr r2, _0807D9C0
+ adds r1, r0, r2
+ movs r2, 0x1
+ strb r2, [r1]
+ ldr r1, _0807D9C4
+ adds r0, r1
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+_0807D9BC: .4byte gUnknown_0202F7E8
+_0807D9C0: .4byte 0x0000074d
+_0807D9C4: .4byte 0x0000074e
+ thumb_func_end sub_807D9A8
+
+ thumb_func_start sub_807D9C8
+sub_807D9C8: @ 807D9C8
+ push {r4,lr}
+ ldr r1, _0807D9F0
+ ldr r0, _0807D9F4
+ adds r4, r1, r0
+ movs r0, 0
+ ldrsb r0, [r4, r0]
+ cmp r0, 0x1F
+ bgt _0807D9FC
+ ldr r0, _0807D9F8
+ adds r1, r0
+ adds r0, r4, 0
+ bl sub_807D8F0
+ movs r0, 0
+ ldrsb r0, [r4, r0]
+ cmp r0, 0x1F
+ bgt _0807D9FC
+ movs r0, 0x1
+ b _0807D9FE
+ .align 2, 0
+_0807D9F0: .4byte gUnknown_0202F7E8
+_0807D9F4: .4byte 0x0000074d
+_0807D9F8: .4byte 0x0000074e
+_0807D9FC:
+ movs r0, 0
+_0807D9FE:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807D9C8
+
+ thumb_func_start sub_807DA04
+sub_807DA04: @ 807DA04
+ push {lr}
+ lsls r0, 24
+ asrs r0, 24
+ mvns r0, r0
+ bl sub_807D5BC
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807DA04
+
+ thumb_func_start sub_807DA14
+sub_807DA14: @ 807DA14
+ ldr r1, _0807DA3C
+ ldr r2, _0807DA40
+ adds r0, r1, r2
+ movs r2, 0
+ strh r2, [r0]
+ movs r3, 0xE8
+ lsls r3, 3
+ adds r0, r1, r3
+ strh r2, [r0]
+ adds r3, 0x2
+ adds r0, r1, r3
+ strh r2, [r0]
+ ldr r0, _0807DA44
+ adds r1, r0
+ strh r2, [r1]
+ ldr r1, _0807DA48
+ movs r0, 0x5
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_0807DA3C: .4byte gUnknown_0202F7E8
+_0807DA40: .4byte 0x0000073c
+_0807DA44: .4byte 0x0000073e
+_0807DA48: .4byte gUnknown_0202FF58
+ thumb_func_end sub_807DA14
+
+ thumb_func_start sub_807DA4C
+sub_807DA4C: @ 807DA4C
+ push {r4-r7,lr}
+ ldr r5, _0807DA68
+ ldr r0, _0807DA6C
+ adds r7, r5, r0
+ movs r1, 0
+ ldrsh r2, [r7, r1]
+ cmp r2, 0x1
+ beq _0807DAC8
+ cmp r2, 0x1
+ bgt _0807DA70
+ cmp r2, 0
+ beq _0807DA76
+ b _0807DB54
+ .align 2, 0
+_0807DA68: .4byte gUnknown_0202F7E8
+_0807DA6C: .4byte 0x00000742
+_0807DA70:
+ cmp r2, 0x2
+ beq _0807DB1C
+ b _0807DB54
+_0807DA76:
+ movs r3, 0xE8
+ lsls r3, 3
+ adds r6, r5, r3
+ ldrh r0, [r6]
+ adds r0, 0x1
+ strh r0, [r6]
+ lsls r0, 16
+ asrs r0, 16
+ ldr r1, _0807DABC
+ ldrh r1, [r1]
+ cmp r0, r1
+ ble _0807DB54
+ strh r2, [r6]
+ ldr r0, _0807DAC0
+ adds r4, r5, r0
+ ldrh r0, [r4]
+ adds r1, r0, 0x1
+ strh r1, [r4]
+ lsls r0, 24
+ asrs r0, 24
+ bl sub_807DA04
+ ldrh r1, [r4]
+ movs r2, 0
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x5
+ ble _0807DB54
+ ldr r3, _0807DAC4
+ adds r0, r5, r3
+ strh r1, [r0]
+ movs r0, 0x1
+ strh r0, [r7]
+ movs r0, 0x3C
+ strh r0, [r6]
+ b _0807DB54
+ .align 2, 0
+_0807DABC: .4byte gUnknown_0202FF58
+_0807DAC0: .4byte 0x0000073c
+_0807DAC4: .4byte 0x0000073e
+_0807DAC8:
+ movs r0, 0xE8
+ lsls r0, 3
+ adds r2, r5, r0
+ ldrh r0, [r2]
+ adds r0, 0x3
+ movs r1, 0x7F
+ ands r0, r1
+ strh r0, [r2]
+ ldr r1, _0807DB10
+ movs r3, 0
+ ldrsh r0, [r2, r3]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ subs r0, 0x1
+ asrs r0, 6
+ adds r0, 0x2
+ ldr r2, _0807DB14
+ adds r6, r5, r2
+ adds r2, r0, 0
+ strh r0, [r6]
+ ldr r3, _0807DB18
+ adds r4, r5, r3
+ movs r3, 0
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ beq _0807DB08
+ lsls r0, r2, 24
+ asrs r0, 24
+ bl sub_807DA04
+_0807DB08:
+ ldrh r0, [r6]
+ strh r0, [r4]
+ b _0807DB54
+ .align 2, 0
+_0807DB10: .4byte gSineTable
+_0807DB14: .4byte 0x0000073c
+_0807DB18: .4byte 0x0000073e
+_0807DB1C:
+ movs r0, 0xE8
+ lsls r0, 3
+ adds r2, r5, r0
+ ldrh r0, [r2]
+ adds r0, 0x1
+ movs r6, 0
+ strh r0, [r2]
+ lsls r0, 16
+ asrs r0, 16
+ ldr r1, _0807DB5C
+ ldrh r1, [r1]
+ cmp r0, r1
+ ble _0807DB54
+ strh r6, [r2]
+ ldr r1, _0807DB60
+ adds r4, r5, r1
+ ldrh r0, [r4]
+ subs r0, 0x1
+ strh r0, [r4]
+ lsls r0, 24
+ asrs r0, 24
+ bl sub_807DA04
+ movs r2, 0
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3
+ bne _0807DB54
+ strh r6, [r7]
+_0807DB54:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807DB5C: .4byte gUnknown_0202FF58
+_0807DB60: .4byte 0x0000073c
+ thumb_func_end sub_807DA4C
+
+ thumb_func_start sub_807DB64
+sub_807DB64: @ 807DB64
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r3, _0807DB98
+ movs r4, 0xE6
+ lsls r4, 3
+ adds r2, r3, r4
+ strh r0, [r2]
+ adds r4, 0x2
+ adds r2, r3, r4
+ strh r1, [r2]
+ adds r4, 0x2
+ adds r2, r3, r4
+ strh r0, [r2]
+ ldr r2, _0807DB9C
+ adds r3, r2
+ strh r1, [r3]
+ ldr r2, _0807DBA0
+ lsls r1, 8
+ orrs r1, r0
+ strh r1, [r2]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807DB98: .4byte gUnknown_0202F7E8
+_0807DB9C: .4byte 0x00000736
+_0807DBA0: .4byte REG_BLDALPHA
+ thumb_func_end sub_807DB64
+
+ thumb_func_start sub_807DBA4
+sub_807DBA4: @ 807DBA4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r3, _0807DBD8
+ ldr r5, _0807DBDC
+ adds r4, r3, r5
+ movs r5, 0
+ strh r0, [r4]
+ ldr r4, _0807DBE0
+ adds r0, r3, r4
+ strh r1, [r0]
+ ldr r1, _0807DBE4
+ adds r0, r3, r1
+ strb r2, [r0]
+ adds r4, 0x3
+ adds r0, r3, r4
+ strb r5, [r0]
+ movs r0, 0xE7
+ lsls r0, 3
+ adds r3, r0
+ strb r5, [r3]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807DBD8: .4byte gUnknown_0202F7E8
+_0807DBDC: .4byte 0x00000734
+_0807DBE0: .4byte 0x00000736
+_0807DBE4: .4byte 0x0000073a
+ thumb_func_end sub_807DBA4
+
+ thumb_func_start sub_807DBE8
+sub_807DBE8: @ 807DBE8
+ push {r4-r6,lr}
+ ldr r0, _0807DC40
+ movs r1, 0xE6
+ lsls r1, 3
+ adds r3, r0, r1
+ ldr r2, [r3]
+ ldr r6, _0807DC44
+ adds r5, r0, r6
+ ldr r1, [r5]
+ adds r4, r0, 0
+ cmp r2, r1
+ beq _0807DCAC
+ ldr r0, _0807DC48
+ adds r2, r4, r0
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ ldr r6, _0807DC4C
+ adds r1, r4, r6
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bls _0807DC78
+ movs r0, 0
+ strb r0, [r2]
+ movs r0, 0xE7
+ lsls r0, 3
+ adds r1, r4, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0807DC50
+ ldrh r1, [r3]
+ adds r2, r1, 0
+ ldrh r0, [r5]
+ cmp r2, r0
+ bcs _0807DC70
+ adds r0, r1, 0x1
+ b _0807DC76
+ .align 2, 0
+_0807DC40: .4byte gUnknown_0202F7E8
+_0807DC44: .4byte 0x00000734
+_0807DC48: .4byte 0x00000739
+_0807DC4C: .4byte 0x0000073a
+_0807DC50:
+ ldr r1, _0807DC68
+ adds r3, r4, r1
+ ldr r2, _0807DC6C
+ adds r0, r4, r2
+ ldrh r1, [r3]
+ adds r2, r1, 0
+ ldrh r0, [r0]
+ cmp r2, r0
+ bcs _0807DC70
+ adds r0, r1, 0x1
+ b _0807DC76
+ .align 2, 0
+_0807DC68: .4byte 0x00000732
+_0807DC6C: .4byte 0x00000736
+_0807DC70:
+ cmp r2, r0
+ bls _0807DC78
+ subs r0, r1, 0x1
+_0807DC76:
+ strh r0, [r3]
+_0807DC78:
+ ldr r3, _0807DCA0
+ ldr r6, _0807DCA4
+ adds r0, r4, r6
+ ldrh r0, [r0]
+ lsls r0, 8
+ movs r1, 0xE6
+ lsls r1, 3
+ adds r2, r4, r1
+ ldrh r1, [r2]
+ orrs r0, r1
+ strh r0, [r3]
+ ldr r1, [r2]
+ ldr r2, _0807DCA8
+ adds r0, r4, r2
+ ldr r0, [r0]
+ cmp r1, r0
+ beq _0807DCAC
+ movs r0, 0
+ b _0807DCAE
+ .align 2, 0
+_0807DCA0: .4byte REG_BLDALPHA
+_0807DCA4: .4byte 0x00000732
+_0807DCA8: .4byte 0x00000734
+_0807DCAC:
+ movs r0, 0x1
+_0807DCAE:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807DBE8
+
+ thumb_func_start unref_sub_807DCB4
+unref_sub_807DCB4: @ 807DCB4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x1
+ cmp r0, 0x9
+ bhi _0807DD46
+ lsls r0, 2
+ ldr r1, _0807DCCC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807DCCC: .4byte _0807DCD0
+ .align 2, 0
+_0807DCD0:
+ .4byte _0807DCF8
+ .4byte _0807DD00
+ .4byte _0807DD08
+ .4byte _0807DD10
+ .4byte _0807DD18
+ .4byte _0807DD20
+ .4byte _0807DD28
+ .4byte _0807DD30
+ .4byte _0807DD38
+ .4byte _0807DD40
+_0807DCF8:
+ movs r0, 0x1
+ bl sub_808070C
+ b _0807DD46
+_0807DD00:
+ movs r0, 0x2
+ bl sub_808070C
+ b _0807DD46
+_0807DD08:
+ movs r0, 0x3
+ bl sub_808070C
+ b _0807DD46
+_0807DD10:
+ movs r0, 0x4
+ bl sub_808070C
+ b _0807DD46
+_0807DD18:
+ movs r0, 0x5
+ bl sub_808070C
+ b _0807DD46
+_0807DD20:
+ movs r0, 0x6
+ bl sub_808070C
+ b _0807DD46
+_0807DD28:
+ movs r0, 0x9
+ bl sub_808070C
+ b _0807DD46
+_0807DD30:
+ movs r0, 0x7
+ bl sub_808070C
+ b _0807DD46
+_0807DD38:
+ movs r0, 0x8
+ bl sub_808070C
+ b _0807DD46
+_0807DD40:
+ movs r0, 0xB
+ bl sub_808070C
+_0807DD46:
+ pop {r0}
+ bx r0
+ thumb_func_end unref_sub_807DCB4
+
+ thumb_func_start weather_get_current
+weather_get_current: @ 807DD4C
+ ldr r0, _0807DD58
+ movs r1, 0xDA
+ lsls r1, 3
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0807DD58: .4byte gUnknown_0202F7E8
+ thumb_func_end weather_get_current
+
+ thumb_func_start sub_807DD5C
+sub_807DD5C: @ 807DD5C
+ push {lr}
+ lsls r0, 16
+ lsrs r2, r0, 16
+ ldr r1, _0807DD7C
+ ldr r3, _0807DD80
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _0807DDAE
+ cmp r2, 0x53
+ beq _0807DD94
+ cmp r2, 0x53
+ bgt _0807DD84
+ cmp r2, 0x51
+ beq _0807DDA0
+ b _0807DDAE
+ .align 2, 0
+_0807DD7C: .4byte gUnknown_0202F7E8
+_0807DD80: .4byte 0x000006c6
+_0807DD84:
+ cmp r2, 0x55
+ bne _0807DDAE
+ ldr r0, _0807DD90
+ adds r1, r0
+ movs r0, 0
+ b _0807DDA6
+ .align 2, 0
+_0807DD90: .4byte 0x000006dd
+_0807DD94:
+ ldr r3, _0807DD9C
+ adds r1, r3
+ movs r0, 0x1
+ b _0807DDA6
+ .align 2, 0
+_0807DD9C: .4byte 0x000006dd
+_0807DDA0:
+ ldr r0, _0807DDB4
+ adds r1, r0
+ movs r0, 0x2
+_0807DDA6:
+ strb r0, [r1]
+ adds r0, r2, 0
+ bl PlaySE
+_0807DDAE:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807DDB4: .4byte 0x000006dd
+ thumb_func_end sub_807DD5C
+
+ thumb_func_start play_some_sound
+play_some_sound: @ 807DDB8
+ push {lr}
+ bl IsSpecialSEPlaying
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807DDF6
+ ldr r0, _0807DDE0
+ ldr r1, _0807DDE4
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0807DDE8
+ cmp r0, 0x1
+ bgt _0807DDF0
+ cmp r0, 0
+ bne _0807DDF0
+ movs r0, 0x56
+ bl PlaySE
+ b _0807DDF6
+ .align 2, 0
+_0807DDE0: .4byte gUnknown_0202F7E8
+_0807DDE4: .4byte 0x000006dd
+_0807DDE8:
+ movs r0, 0x54
+ bl PlaySE
+ b _0807DDF6
+_0807DDF0:
+ movs r0, 0x52
+ bl PlaySE
+_0807DDF6:
+ pop {r0}
+ bx r0
+ thumb_func_end play_some_sound
+
+ thumb_func_start sub_807DDFC
+sub_807DDFC: @ 807DDFC
+ ldr r0, _0807DE08
+ ldr r1, _0807DE0C
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0807DE08: .4byte gUnknown_0202F7E8
+_0807DE0C: .4byte 0x000006d3
+ thumb_func_end sub_807DDFC
+
+ thumb_func_start sub_807DE10
+sub_807DE10: @ 807DE10
+ ldr r0, _0807DE1C
+ ldr r1, _0807DE20
+ adds r0, r1
+ movs r1, 0x2
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+_0807DE1C: .4byte gUnknown_0202F7E8
+_0807DE20: .4byte 0x000006c6
+ thumb_func_end sub_807DE10
+
+ thumb_func_start unref_sub_807DE24
+unref_sub_807DE24: @ 807DE24
+ ldr r0, _0807DE30
+ ldr r1, _0807DE34
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+_0807DE30: .4byte gUnknown_0202F7E8
+_0807DE34: .4byte 0x000006c6
+ thumb_func_end unref_sub_807DE24
+
+ thumb_func_start sub_807DE38
+sub_807DE38: @ 807DE38
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _0807DE5C
+ ldr r5, _0807DE60
+ adds r1, r5, 0
+ movs r2, 0x10
+ bl CpuSet
+ adds r4, r5
+ movs r0, 0
+ strb r0, [r4]
+ ldr r0, _0807DE64
+ str r5, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807DE5C: .4byte gUnknown_083970C8
+_0807DE60: .4byte gUnknown_0202FF38
+_0807DE64: .4byte gUnknown_030006DC
+ thumb_func_end sub_807DE38
+
+ thumb_func_start sub_807DE68
+sub_807DE68: @ 807DE68
+ ldr r1, _0807DE70
+ ldr r0, _0807DE74
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_0807DE70: .4byte gUnknown_030006DC
+_0807DE74: .4byte gUnknown_083970C8
+ thumb_func_end sub_807DE68
+
+ thumb_func_start sub_807DE78
+sub_807DE78: @ 807DE78
+ push {lr}
+ ldr r0, _0807DEB0
+ ldr r0, [r0]
+ ldr r2, _0807DEB4
+ adds r1, r0, r2
+ movs r2, 0
+ strb r2, [r1]
+ ldr r1, _0807DEB8
+ adds r3, r0, r1
+ movs r1, 0x14
+ strb r1, [r3]
+ ldr r3, _0807DEBC
+ adds r1, r0, r3
+ strb r2, [r1]
+ subs r3, 0x6
+ adds r1, r0, r3
+ strh r2, [r1]
+ ldr r1, _0807DEC0
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807DEAC
+ movs r0, 0
+ movs r1, 0x10
+ bl sub_807DB64
+_0807DEAC:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807DEB0: .4byte gUnknown_08396FC4
+_0807DEB4: .4byte 0x000006c1
+_0807DEB8: .4byte 0x000006c2
+_0807DEBC: .4byte 0x000006d2
+_0807DEC0: .4byte 0x000006de
+ thumb_func_end sub_807DE78
+
+ thumb_func_start sub_807DEC4
+sub_807DEC4: @ 807DEC4
+ push {r4,lr}
+ bl sub_807DE78
+ ldr r0, _0807DEEC
+ ldr r1, [r0]
+ ldr r2, _0807DEF0
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807DEE4
+ adds r4, r1, r2
+_0807DEDA:
+ bl sub_807DEF4
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807DEDA
+_0807DEE4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807DEEC: .4byte gUnknown_08396FC4
+_0807DEF0: .4byte 0x000006d2
+ thumb_func_end sub_807DEC4
+
+ thumb_func_start sub_807DEF4
+sub_807DEF4: @ 807DEF4
+ push {r4,r5,lr}
+ ldr r0, _0807DF10
+ ldr r5, [r0]
+ ldr r0, _0807DF14
+ adds r4, r5, r0
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _0807DF24
+ cmp r0, 0x1
+ bgt _0807DF18
+ cmp r0, 0
+ beq _0807DF1E
+ b _0807DF48
+ .align 2, 0
+_0807DF10: .4byte gUnknown_08396FC4
+_0807DF14: .4byte 0x000006cc
+_0807DF18:
+ cmp r0, 0x2
+ beq _0807DF30
+ b _0807DF48
+_0807DF1E:
+ bl sub_807DFD4
+ b _0807DF42
+_0807DF24:
+ movs r0, 0xC
+ movs r1, 0x8
+ movs r2, 0x1
+ bl sub_807DBA4
+ b _0807DF42
+_0807DF30:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807DF48
+ ldr r0, _0807DF50
+ adds r1, r5, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_0807DF42:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+_0807DF48:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807DF50: .4byte 0x000006d2
+ thumb_func_end sub_807DEF4
+
+ thumb_func_start sub_807DF54
+sub_807DF54: @ 807DF54
+ push {r4,lr}
+ ldr r0, _0807DF6C
+ ldr r0, [r0]
+ ldr r1, _0807DF70
+ adds r4, r0, r1
+ ldrh r0, [r4]
+ cmp r0, 0
+ beq _0807DF74
+ cmp r0, 0x1
+ beq _0807DF80
+ movs r0, 0
+ b _0807DF96
+ .align 2, 0
+_0807DF6C: .4byte gUnknown_08396FC4
+_0807DF70: .4byte 0x000006ce
+_0807DF74:
+ movs r0, 0
+ movs r1, 0x10
+ movs r2, 0x1
+ bl sub_807DBA4
+ b _0807DF8E
+_0807DF80:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807DF94
+ bl sub_807E0A0
+_0807DF8E:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+_0807DF94:
+ movs r0, 0x1
+_0807DF96:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807DF54
+
+ thumb_func_start sub_807DF9C
+sub_807DF9C: @ 807DF9C
+ ldr r0, _0807DFB4
+ ldr r1, [r0]
+ ldr r0, _0807DFB8
+ adds r2, r1, r0
+ movs r0, 0
+ strb r0, [r2]
+ ldr r0, _0807DFBC
+ adds r1, r0
+ movs r0, 0x14
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_0807DFB4: .4byte gUnknown_08396FC4
+_0807DFB8: .4byte 0x000006c1
+_0807DFBC: .4byte 0x000006c2
+ thumb_func_end sub_807DF9C
+
+ thumb_func_start sub_807DFC0
+sub_807DFC0: @ 807DFC0
+ push {lr}
+ bl sub_807DF9C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807DFC0
+
+ thumb_func_start nullsub_55
+nullsub_55: @ 807DFCC
+ bx lr
+ thumb_func_end nullsub_55
+
+ thumb_func_start sub_807DFD0
+sub_807DFD0: @ 807DFD0
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_807DFD0
+
+ thumb_func_start sub_807DFD4
+sub_807DFD4: @ 807DFD4
+ push {r4,r5,lr}
+ ldr r0, _0807E04C
+ ldr r0, [r0]
+ ldr r1, _0807E050
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0807E090
+ ldr r0, _0807E054
+ bl LoadSpriteSheet
+ ldr r0, _0807E058
+ bl sub_807D8C0
+ movs r5, 0
+_0807DFF2:
+ ldr r0, _0807E05C
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0xFF
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x40
+ beq _0807E068
+ ldr r0, _0807E04C
+ ldr r1, [r0]
+ lsls r2, r5, 2
+ movs r0, 0xFA
+ lsls r0, 1
+ adds r1, r0
+ adds r1, r2
+ lsls r4, r3, 4
+ adds r4, r3
+ lsls r4, 2
+ ldr r0, _0807E060
+ adds r4, r0
+ str r4, [r1]
+ ldr r0, _0807E064
+ adds r2, r0
+ ldrh r0, [r2]
+ adds r0, 0x7
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r1, [r2, 0x2]
+ adds r1, 0x7
+ lsls r1, 16
+ asrs r1, 16
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ bl sub_80603CC
+ adds r4, 0x3E
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ b _0807E07A
+ .align 2, 0
+_0807E04C: .4byte gUnknown_08396FC4
+_0807E050: .4byte 0x000006de
+_0807E054: .4byte gUnknown_0839A9D4
+_0807E058: .4byte gUnknown_08397108
+_0807E05C: .4byte gSpriteTemplate_839A9F0
+_0807E060: .4byte gSprites
+_0807E064: .4byte gUnknown_0839A9C8
+_0807E068:
+ ldr r0, _0807E098
+ ldr r1, [r0]
+ lsls r0, r5, 2
+ movs r2, 0xFA
+ lsls r2, 1
+ adds r1, r2
+ adds r1, r0
+ movs r0, 0
+ str r0, [r1]
+_0807E07A:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x2
+ bls _0807DFF2
+ ldr r0, _0807E098
+ ldr r0, [r0]
+ ldr r1, _0807E09C
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+_0807E090:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E098: .4byte gUnknown_08396FC4
+_0807E09C: .4byte 0x000006de
+ thumb_func_end sub_807DFD4
+
+ thumb_func_start sub_807E0A0
+sub_807E0A0: @ 807E0A0
+ push {r4,r5,lr}
+ ldr r0, _0807E0EC
+ ldr r1, [r0]
+ ldr r2, _0807E0F0
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807E0E4
+ movs r4, 0
+ movs r0, 0xFA
+ lsls r0, 1
+ adds r5, r1, r0
+_0807E0B8:
+ lsls r0, r4, 2
+ adds r0, r5, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0807E0C6
+ bl DestroySprite
+_0807E0C6:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x2
+ bls _0807E0B8
+ movs r0, 0x90
+ lsls r0, 5
+ bl FreeSpriteTilesByTag
+ ldr r0, _0807E0EC
+ ldr r0, [r0]
+ ldr r1, _0807E0F0
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+_0807E0E4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E0EC: .4byte gUnknown_08396FC4
+_0807E0F0: .4byte 0x000006de
+ thumb_func_end sub_807E0A0
+
+ thumb_func_start sub_807E0F4
+sub_807E0F4: @ 807E0F4
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ movs r1, 0x1
+ ands r0, r1
+ strh r0, [r2, 0x2E]
+ cmp r0, 0
+ beq _0807E10C
+ ldrh r0, [r2, 0x20]
+ subs r0, 0x1
+ strh r0, [r2, 0x20]
+_0807E10C:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807E0F4
+
+ thumb_func_start sub_807E110
+sub_807E110: @ 807E110
+ ldr r0, _0807E134
+ ldr r1, [r0]
+ ldr r0, _0807E138
+ adds r3, r1, r0
+ movs r2, 0
+ movs r0, 0
+ strh r0, [r3]
+ ldr r3, _0807E13C
+ adds r0, r1, r3
+ strb r2, [r0]
+ subs r3, 0x11
+ adds r0, r1, r3
+ strb r2, [r0]
+ ldr r0, _0807E140
+ adds r1, r0
+ strb r2, [r1]
+ bx lr
+ .align 2, 0
+_0807E134: .4byte gUnknown_08396FC4
+_0807E138: .4byte 0x000006cc
+_0807E13C: .4byte 0x000006d2
+_0807E140: .4byte 0x000006c2
+ thumb_func_end sub_807E110
+
+ thumb_func_start sub_807E144
+sub_807E144: @ 807E144
+ push {r4,lr}
+ bl sub_807E110
+ ldr r0, _0807E16C
+ ldr r1, [r0]
+ ldr r2, _0807E170
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807E164
+ adds r4, r1, r2
+_0807E15A:
+ bl sub_807E174
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807E15A
+_0807E164:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E16C: .4byte gUnknown_08396FC4
+_0807E170: .4byte 0x000006d2
+ thumb_func_end sub_807E144
+
+ thumb_func_start sub_807E174
+sub_807E174: @ 807E174
+ push {lr}
+ ldr r1, _0807E190
+ ldr r0, [r1]
+ ldr r2, _0807E194
+ adds r0, r2
+ ldrh r0, [r0]
+ adds r2, r1, 0
+ cmp r0, 0x4
+ bhi _0807E250
+ lsls r0, 2
+ ldr r1, _0807E198
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807E190: .4byte gUnknown_08396FC4
+_0807E194: .4byte 0x000006cc
+_0807E198: .4byte _0807E19C
+ .align 2, 0
+_0807E19C:
+ .4byte _0807E1B0
+ .4byte _0807E1CC
+ .4byte _0807E1E4
+ .4byte _0807E200
+ .4byte _0807E218
+_0807E1B0:
+ ldr r1, [r2]
+ ldr r2, _0807E1C4
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807E254
+ ldr r0, _0807E1C8
+ adds r1, r0
+ b _0807E238
+ .align 2, 0
+_0807E1C4: .4byte 0x000006c6
+_0807E1C8: .4byte 0x000006cc
+_0807E1CC:
+ bl sub_807D9A8
+ ldr r0, _0807E1DC
+ ldr r1, [r0]
+ ldr r2, _0807E1E0
+ adds r1, r2
+ b _0807E238
+ .align 2, 0
+_0807E1DC: .4byte gUnknown_08396FC4
+_0807E1E0: .4byte 0x000006cc
+_0807E1E4:
+ bl sub_807D9C8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807E254
+ ldr r0, _0807E1F8
+ ldr r1, [r0]
+ ldr r0, _0807E1FC
+ adds r1, r0
+ b _0807E238
+ .align 2, 0
+_0807E1F8: .4byte gUnknown_08396FC4
+_0807E1FC: .4byte 0x000006cc
+_0807E200:
+ bl sub_807DA14
+ ldr r0, _0807E210
+ ldr r1, [r0]
+ ldr r2, _0807E214
+ adds r1, r2
+ b _0807E238
+ .align 2, 0
+_0807E210: .4byte gUnknown_08396FC4
+_0807E214: .4byte 0x000006cc
+_0807E218:
+ bl sub_807DA4C
+ ldr r0, _0807E240
+ ldr r2, [r0]
+ ldr r1, _0807E244
+ adds r0, r2, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x6
+ bne _0807E254
+ ldr r0, _0807E248
+ adds r1, r2, r0
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, _0807E24C
+ adds r1, r2, r0
+_0807E238:
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ b _0807E254
+ .align 2, 0
+_0807E240: .4byte gUnknown_08396FC4
+_0807E244: .4byte 0x0000073c
+_0807E248: .4byte 0x000006d2
+_0807E24C: .4byte 0x000006cc
+_0807E250:
+ bl sub_807DA4C
+_0807E254:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807E174
+
+ thumb_func_start sub_807E258
+sub_807E258: @ 807E258
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_807E258
+
+ thumb_func_start sub_807E25C
+sub_807E25C: @ 807E25C
+ push {lr}
+ ldr r0, _0807E26C
+ movs r1, 0x50
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E26C: .4byte task50_0807B6D4
+ thumb_func_end sub_807E25C
+
+ thumb_func_start task50_0807B6D4
+task50_0807B6D4: @ 807E270
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _0807E294
+ adds r3, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x4
+ bhi _0807E35E
+ lsls r0, 2
+ ldr r1, _0807E298
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807E294: .4byte gTasks
+_0807E298: .4byte _0807E29C
+ .align 2, 0
+_0807E29C:
+ .4byte _0807E2B0
+ .4byte _0807E2D2
+ .4byte _0807E300
+ .4byte _0807E334
+ .4byte _0807E354
+_0807E2B0:
+ movs r2, 0
+ strh r2, [r3, 0xA]
+ strh r2, [r3, 0xC]
+ ldr r1, _0807E2F4
+ ldrh r0, [r1]
+ strh r0, [r3, 0xE]
+ ldr r4, _0807E2F8
+ adds r0, r4, 0
+ strh r0, [r1]
+ adds r1, 0x8
+ movs r0, 0x9E
+ strh r0, [r1]
+ ldr r0, _0807E2FC
+ strh r2, [r0]
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+_0807E2D2:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x3
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _0807E2E4
+ movs r0, 0x10
+ strh r0, [r3, 0xA]
+_0807E2E4:
+ ldr r0, _0807E2FC
+ ldrh r1, [r3, 0xA]
+ strh r1, [r0]
+ movs r1, 0xA
+ ldrsh r0, [r3, r1]
+ cmp r0, 0xF
+ ble _0807E35E
+ b _0807E344
+ .align 2, 0
+_0807E2F4: .4byte REG_WININ
+_0807E2F8: .4byte 0x00003f3f
+_0807E2FC: .4byte REG_BLDY
+_0807E300:
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r3, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ ble _0807E35E
+ strh r1, [r3, 0xC]
+ ldrh r0, [r3, 0xA]
+ subs r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _0807E326
+ strh r1, [r3, 0xA]
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+_0807E326:
+ ldr r1, _0807E330
+ ldrh r0, [r3, 0xA]
+ strh r0, [r1]
+ b _0807E35E
+ .align 2, 0
+_0807E330: .4byte REG_BLDY
+_0807E334:
+ ldr r0, _0807E34C
+ movs r1, 0
+ strh r1, [r0]
+ adds r0, 0x4
+ strh r1, [r0]
+ ldr r1, _0807E350
+ ldrh r0, [r3, 0xE]
+ strh r0, [r1]
+_0807E344:
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+ b _0807E35E
+ .align 2, 0
+_0807E34C: .4byte REG_BLDCNT
+_0807E350: .4byte REG_WININ
+_0807E354:
+ bl EnableBothScriptContexts
+ adds r0, r4, 0
+ bl DestroyTask
+_0807E35E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end task50_0807B6D4
+
+ thumb_func_start sub_807E364
+sub_807E364: @ 807E364
+ push {r4,lr}
+ ldr r0, _0807E3B4
+ ldr r1, [r0]
+ ldr r2, _0807E3B8
+ adds r0, r1, r2
+ movs r3, 0
+ movs r2, 0
+ strh r2, [r0]
+ ldr r4, _0807E3BC
+ adds r0, r1, r4
+ strb r3, [r0]
+ adds r4, 0x4
+ adds r0, r1, r4
+ strh r2, [r0]
+ ldr r0, _0807E3C0
+ adds r2, r1, r0
+ movs r0, 0x8
+ strb r0, [r2]
+ ldr r2, _0807E3C4
+ adds r0, r1, r2
+ strb r3, [r0]
+ adds r4, 0x3
+ adds r2, r1, r4
+ movs r0, 0xA
+ strb r0, [r2]
+ ldr r0, _0807E3C8
+ adds r2, r1, r0
+ movs r0, 0x3
+ strb r0, [r2]
+ ldr r2, _0807E3CC
+ adds r1, r2
+ movs r0, 0x14
+ strb r0, [r1]
+ movs r0, 0x55
+ bl sub_807DD5C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E3B4: .4byte gUnknown_08396FC4
+_0807E3B8: .4byte 0x000006cc
+_0807E3BC: .4byte 0x000006d2
+_0807E3C0: .4byte 0x000006db
+_0807E3C4: .4byte 0x000006dc
+_0807E3C8: .4byte 0x000006c1
+_0807E3CC: .4byte 0x000006c2
+ thumb_func_end sub_807E364
+
+ thumb_func_start sub_807E3D0
+sub_807E3D0: @ 807E3D0
+ push {r4,lr}
+ bl sub_807E364
+ ldr r0, _0807E3F8
+ ldr r1, [r0]
+ ldr r2, _0807E3FC
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807E3F0
+ adds r4, r1, r2
+_0807E3E6:
+ bl sub_807E400
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807E3E6
+_0807E3F0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E3F8: .4byte gUnknown_08396FC4
+_0807E3FC: .4byte 0x000006d2
+ thumb_func_end sub_807E3D0
+
+ thumb_func_start sub_807E400
+sub_807E400: @ 807E400
+ push {r4,r5,lr}
+ ldr r0, _0807E41C
+ ldr r5, [r0]
+ ldr r0, _0807E420
+ adds r4, r5, r0
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _0807E430
+ cmp r0, 0x1
+ bgt _0807E424
+ cmp r0, 0
+ beq _0807E42A
+ b _0807E454
+ .align 2, 0
+_0807E41C: .4byte gUnknown_08396FC4
+_0807E420: .4byte 0x000006cc
+_0807E424:
+ cmp r0, 0x2
+ beq _0807E43C
+ b _0807E454
+_0807E42A:
+ bl sub_807E7A4
+ b _0807E44E
+_0807E430:
+ bl sub_807E7B4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807E454
+ b _0807E44E
+_0807E43C:
+ bl sub_807E8E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807E454
+ ldr r0, _0807E45C
+ adds r1, r5, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_0807E44E:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+_0807E454:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E45C: .4byte 0x000006d2
+ thumb_func_end sub_807E400
+
+ thumb_func_start sub_807E460
+sub_807E460: @ 807E460
+ push {r4,r5,lr}
+ ldr r0, _0807E47C
+ ldr r2, [r0]
+ ldr r1, _0807E480
+ adds r3, r2, r1
+ ldrh r1, [r3]
+ adds r4, r0, 0
+ cmp r1, 0
+ beq _0807E484
+ cmp r1, 0x1
+ beq _0807E4B8
+ movs r0, 0
+ b _0807E4E6
+ .align 2, 0
+_0807E47C: .4byte gUnknown_08396FC4
+_0807E480: .4byte 0x000006ce
+_0807E484:
+ ldr r5, _0807E4A4
+ adds r0, r2, r5
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ beq _0807E496
+ cmp r0, 0x5
+ beq _0807E496
+ cmp r0, 0xD
+ bne _0807E4AC
+_0807E496:
+ ldr r0, [r4]
+ ldr r1, _0807E4A8
+ adds r0, r1
+ movs r1, 0xFF
+ strh r1, [r0]
+ movs r0, 0
+ b _0807E4E6
+ .align 2, 0
+_0807E4A4: .4byte 0x000006d1
+_0807E4A8: .4byte 0x000006ce
+_0807E4AC:
+ ldr r4, _0807E4D8
+ adds r0, r2, r4
+ strb r1, [r0]
+ ldrh r0, [r3]
+ adds r0, 0x1
+ strh r0, [r3]
+_0807E4B8:
+ bl sub_807E8E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807E4E4
+ bl sub_807E974
+ ldr r0, _0807E4DC
+ ldr r1, [r0]
+ ldr r5, _0807E4E0
+ adds r1, r5
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ movs r0, 0
+ b _0807E4E6
+ .align 2, 0
+_0807E4D8: .4byte 0x000006d9
+_0807E4DC: .4byte gUnknown_08396FC4
+_0807E4E0: .4byte 0x000006ce
+_0807E4E4:
+ movs r0, 0x1
+_0807E4E6:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807E460
+
+ thumb_func_start sub_807E4EC
+sub_807E4EC: @ 807E4EC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r7, r1]
+ cmp r0, 0
+ bne _0807E500
+ ldr r0, _0807E5A4
+ strh r0, [r7, 0x30]
+_0807E500:
+ movs r2, 0x30
+ ldrsh r1, [r7, r2]
+ ldr r0, _0807E5A8
+ muls r0, r1
+ ldr r3, _0807E5AC
+ adds r0, r3
+ lsls r0, 1
+ lsrs r0, 17
+ movs r1, 0x96
+ lsls r1, 2
+ bl __umodsi3
+ movs r1, 0
+ mov r8, r1
+ strh r0, [r7, 0x30]
+ ldr r1, _0807E5B0
+ ldr r0, _0807E5B4
+ ldr r5, [r0]
+ ldr r2, _0807E5B8
+ adds r5, r2
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldrh r6, [r0]
+ movs r3, 0x30
+ ldrsh r0, [r7, r3]
+ movs r1, 0x1E
+ bl __modsi3
+ adds r4, r0, 0
+ lsls r4, 16
+ asrs r4, 16
+ lsls r0, r4, 3
+ strh r0, [r7, 0x32]
+ movs r1, 0x30
+ ldrsh r0, [r7, r1]
+ movs r1, 0x1E
+ bl __divsi3
+ lsls r0, 16
+ lsls r4, 7
+ strh r4, [r7, 0x32]
+ asrs r0, 9
+ strh r0, [r7, 0x34]
+ ldr r2, _0807E5BC
+ ldrb r1, [r5]
+ lsls r1, 2
+ adds r1, r2
+ movs r3, 0
+ ldrsh r1, [r1, r3]
+ muls r1, r6
+ subs r4, r1
+ strh r4, [r7, 0x32]
+ ldrb r1, [r5]
+ lsls r1, 2
+ adds r2, 0x2
+ adds r1, r2
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ muls r1, r6
+ subs r0, r1
+ strh r0, [r7, 0x34]
+ adds r0, r7, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ mov r3, r8
+ strh r3, [r7, 0x36]
+ adds r2, r7, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ strh r6, [r7, 0x2E]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E5A4: .4byte 0x00000169
+_0807E5A8: .4byte 0x41c64e6d
+_0807E5AC: .4byte 0x00003039
+_0807E5B0: .4byte gUnknown_0839AAC4
+_0807E5B4: .4byte gUnknown_08396FC4
+_0807E5B8: .4byte 0x000006dc
+_0807E5BC: .4byte gUnknown_0839AABC
+ thumb_func_end sub_807E4EC
+
+ thumb_func_start sub_807E5C0
+sub_807E5C0: @ 807E5C0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x36
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0807E69C
+ ldr r3, _0807E634
+ ldr r4, _0807E638
+ ldr r2, [r4]
+ ldr r0, _0807E63C
+ adds r2, r0
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0]
+ ldrh r0, [r5, 0x32]
+ adds r1, r0
+ strh r1, [r5, 0x32]
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r3, 0x2
+ adds r0, r3
+ ldrh r0, [r0]
+ ldrh r2, [r5, 0x34]
+ adds r0, r2
+ strh r0, [r5, 0x34]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r5, 0x20]
+ lsls r0, 16
+ asrs r2, r0, 20
+ strh r2, [r5, 0x22]
+ movs r3, 0x38
+ ldrsh r0, [r5, r3]
+ adds r3, r4, 0
+ cmp r0, 0
+ beq _0807E640
+ adds r0, r1, 0
+ adds r0, 0x8
+ lsls r0, 16
+ movs r1, 0x80
+ lsls r1, 17
+ cmp r0, r1
+ bhi _0807E640
+ adds r1, r2, 0
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ blt _0807E640
+ cmp r1, 0xB0
+ bgt _0807E640
+ adds r0, r5, 0
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ b _0807E64A
+ .align 2, 0
+_0807E634: .4byte gUnknown_0839AABC
+_0807E638: .4byte gUnknown_08396FC4
+_0807E63C: .4byte 0x000006dc
+_0807E640:
+ adds r0, r5, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+_0807E64A:
+ strb r1, [r0]
+ adds r4, r0, 0
+ ldrh r0, [r5, 0x2E]
+ subs r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0807E6BC
+ ldr r0, [r3]
+ ldr r1, _0807E690
+ adds r0, r1
+ ldrb r1, [r0]
+ adds r1, 0x1
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x36]
+ ldr r1, _0807E694
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r1]
+ subs r0, r1
+ strh r0, [r5, 0x20]
+ ldr r1, _0807E698
+ ldrh r0, [r5, 0x22]
+ ldrh r1, [r1]
+ subs r0, r1
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ b _0807E6BC
+ .align 2, 0
+_0807E690: .4byte 0x000006dc
+_0807E694: .4byte gSpriteCoordOffsetX
+_0807E698: .4byte gSpriteCoordOffsetY
+_0807E69C:
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0807E6BC
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ adds r0, r5, 0
+ bl sub_807E4EC
+_0807E6BC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807E5C0
+
+ thumb_func_start sub_807E6C4
+sub_807E6C4: @ 807E6C4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _0807E6E4
+ adds r0, r4, 0
+ bl sub_807E4EC
+ ldr r0, _0807E6E0
+ str r0, [r4, 0x1C]
+ b _0807E6E8
+ .align 2, 0
+_0807E6E0: .4byte sub_807E5C0
+_0807E6E4:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+_0807E6E8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807E6C4
+
+ thumb_func_start sub_807E6F0
+sub_807E6F0: @ 807E6F0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ lsls r5, r1, 16
+ lsrs r5, 16
+ ldr r2, _0807E774
+ ldr r0, _0807E778
+ ldr r0, [r0]
+ ldr r1, _0807E77C
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r1, r0, r2
+ ldrh r1, [r1]
+ mov r8, r1
+ adds r2, 0x2
+ adds r0, r2
+ ldrh r4, [r0]
+ add r4, r8
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl __divsi3
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl __modsi3
+ lsls r0, 16
+ lsrs r4, r0, 16
+ subs r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ ldr r0, _0807E780
+ cmp r6, r0
+ beq _0807E74E
+ adds r5, r0, 0
+_0807E73E:
+ adds r0, r7, 0
+ bl sub_807E4EC
+ subs r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, r5
+ bne _0807E73E
+_0807E74E:
+ cmp r4, r8
+ bcs _0807E784
+ subs r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r0, _0807E780
+ cmp r4, r0
+ beq _0807E770
+ adds r5, r0, 0
+_0807E760:
+ adds r0, r7, 0
+ bl sub_807E5C0
+ subs r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, r5
+ bne _0807E760
+_0807E770:
+ movs r0, 0
+ b _0807E798
+ .align 2, 0
+_0807E774: .4byte gUnknown_0839AAC4
+_0807E778: .4byte gUnknown_08396FC4
+_0807E77C: .4byte 0x000006dc
+_0807E780: .4byte 0x0000ffff
+_0807E784:
+ mov r1, r8
+ subs r0, r4, r1
+ strh r0, [r7, 0x2E]
+ adds r2, r7, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+_0807E798:
+ strh r0, [r7, 0x3A]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807E6F0
+
+ thumb_func_start sub_807E7A4
+sub_807E7A4: @ 807E7A4
+ push {lr}
+ ldr r0, _0807E7B0
+ bl LoadSpriteSheet
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E7B0: .4byte gUnknown_0839AACC
+ thumb_func_end sub_807E7A4
+
+ thumb_func_start sub_807E7B4
+sub_807E7B4: @ 807E7B4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r0, _0807E860
+ ldr r4, [r0]
+ ldr r0, _0807E864
+ adds r2, r4, r0
+ ldrb r0, [r2]
+ cmp r0, 0x18
+ bne _0807E7CE
+ b _0807E8D4
+_0807E7CE:
+ ldrb r7, [r2]
+ ldr r0, _0807E868
+ ldr r2, _0807E86C
+ lsls r6, r7, 2
+ adds r2, r6, r2
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ movs r3, 0x2
+ ldrsh r2, [r2, r3]
+ movs r3, 0x4E
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x40
+ beq _0807E87C
+ ldr r3, _0807E870
+ lsls r4, r5, 4
+ adds r1, r4, r5
+ lsls r1, 2
+ adds r1, r3
+ movs r0, 0
+ strh r0, [r1, 0x38]
+ lsls r2, r7, 3
+ adds r0, r2, r7
+ lsls r0, 4
+ adds r0, r7
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ ldr r1, _0807E874
+ mov r10, r6
+ mov r9, r3
+ mov r12, r4
+ mov r8, r2
+ cmp r0, r1
+ ble _0807E832
+ adds r2, r1, 0
+_0807E81A:
+ adds r0, r4, r5
+ lsls r0, 2
+ ldr r6, _0807E870
+ adds r0, r6
+ ldr r3, _0807E878
+ ldrh r6, [r0, 0x30]
+ adds r1, r3, r6
+ strh r1, [r0, 0x30]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, r2
+ bgt _0807E81A
+_0807E832:
+ mov r0, r12
+ adds r4, r0, r5
+ lsls r4, 2
+ add r4, r9
+ adds r0, r4, 0
+ bl sub_807E4EC
+ mov r3, r8
+ adds r1, r3, r7
+ adds r0, r4, 0
+ bl sub_807E6F0
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0807E860
+ ldr r0, [r0]
+ add r0, r10
+ str r4, [r0]
+ b _0807E882
+ .align 2, 0
+_0807E860: .4byte gUnknown_08396FC4
+_0807E864: .4byte 0x000006da
+_0807E868: .4byte gSpriteTemplate_839AAA4
+_0807E86C: .4byte gUnknown_0839AA08
+_0807E870: .4byte gSprites
+_0807E874: .4byte 0x00000257
+_0807E878: .4byte 0xfffffda8
+_0807E87C:
+ adds r1, r4, r6
+ movs r0, 0
+ str r0, [r1]
+_0807E882:
+ ldr r0, _0807E8B8
+ ldr r2, [r0]
+ ldr r6, _0807E8BC
+ adds r1, r2, r6
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x18
+ bne _0807E8D8
+ movs r3, 0
+ adds r1, r2, 0
+ ldr r5, _0807E8C0
+ ldr r4, _0807E8C4
+_0807E8A0:
+ lsls r0, r3, 2
+ adds r0, r1, r0
+ ldr r2, [r0]
+ cmp r2, 0
+ beq _0807E8CA
+ movs r6, 0x3A
+ ldrsh r0, [r2, r6]
+ cmp r0, 0
+ bne _0807E8C8
+ str r5, [r2, 0x1C]
+ b _0807E8CA
+ .align 2, 0
+_0807E8B8: .4byte gUnknown_08396FC4
+_0807E8BC: .4byte 0x000006da
+_0807E8C0: .4byte sub_807E5C0
+_0807E8C4: .4byte sub_807E6C4
+_0807E8C8:
+ str r4, [r2, 0x1C]
+_0807E8CA:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0x17
+ bls _0807E8A0
+_0807E8D4:
+ movs r0, 0
+ b _0807E8DA
+_0807E8D8:
+ movs r0, 0x1
+_0807E8DA:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807E7B4
+
+ thumb_func_start sub_807E8E8
+sub_807E8E8: @ 807E8E8
+ push {r4-r7,lr}
+ ldr r0, _0807E904
+ ldr r3, [r0]
+ movs r0, 0xDB
+ lsls r0, 3
+ adds r4, r3, r0
+ ldr r1, _0807E908
+ adds r5, r3, r1
+ ldrb r0, [r4]
+ ldrb r7, [r5]
+ cmp r0, r7
+ bne _0807E90C
+ movs r0, 0
+ b _0807E96E
+ .align 2, 0
+_0807E904: .4byte gUnknown_08396FC4
+_0807E908: .4byte 0x000006d9
+_0807E90C:
+ ldr r0, _0807E944
+ adds r2, r3, r0
+ ldrh r0, [r2]
+ adds r0, 0x1
+ movs r6, 0
+ strh r0, [r2]
+ ldr r7, _0807E948
+ adds r1, r3, r7
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r1, [r1]
+ cmp r0, r1
+ bls _0807E96C
+ strh r6, [r2]
+ ldrb r0, [r4]
+ adds r1, r0, 0
+ ldrb r5, [r5]
+ cmp r1, r5
+ bcs _0807E94C
+ adds r0, 0x1
+ strb r0, [r4]
+ lsls r0, r1, 2
+ adds r0, r3, r0
+ ldr r1, [r0]
+ movs r0, 0x1
+ strh r0, [r1, 0x38]
+ b _0807E96C
+ .align 2, 0
+_0807E944: .4byte 0x000006d6
+_0807E948: .4byte 0x000006db
+_0807E94C:
+ subs r0, 0x1
+ strb r0, [r4]
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r3, r0
+ ldr r0, [r0]
+ strh r6, [r0, 0x38]
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r3, r0
+ ldr r1, [r0]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+_0807E96C:
+ movs r0, 0x1
+_0807E96E:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807E8E8
+
+ thumb_func_start sub_807E974
+sub_807E974: @ 807E974
+ push {r4-r7,lr}
+ movs r4, 0
+ ldr r0, _0807E9BC
+ ldr r2, [r0]
+ ldr r3, _0807E9C0
+ adds r1, r2, r3
+ adds r7, r0, 0
+ ldrb r1, [r1]
+ cmp r4, r1
+ bcs _0807E9A6
+ adds r5, r2, 0
+ adds r6, r5, r3
+_0807E98C:
+ lsls r0, r4, 2
+ adds r0, r5, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0807E99A
+ bl DestroySprite
+_0807E99A:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldrb r0, [r6]
+ cmp r4, r0
+ bcc _0807E98C
+_0807E9A6:
+ ldr r0, [r7]
+ ldr r1, _0807E9C0
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, _0807E9C4
+ bl FreeSpriteTilesByTag
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807E9BC: .4byte gUnknown_08396FC4
+_0807E9C0: .4byte 0x000006da
+_0807E9C4: .4byte 0x00001206
+ thumb_func_end sub_807E974
+
+ thumb_func_start sub_807E9C8
+sub_807E9C8: @ 807E9C8
+ push {r4,lr}
+ ldr r0, _0807EA04
+ ldr r1, [r0]
+ ldr r2, _0807EA08
+ adds r0, r1, r2
+ movs r2, 0
+ movs r3, 0
+ strh r3, [r0]
+ ldr r4, _0807EA0C
+ adds r0, r1, r4
+ strb r2, [r0]
+ ldr r0, _0807EA10
+ adds r2, r1, r0
+ movs r0, 0x3
+ strb r0, [r2]
+ subs r4, 0x10
+ adds r2, r1, r4
+ movs r0, 0x14
+ strb r0, [r2]
+ ldr r0, _0807EA14
+ adds r2, r1, r0
+ movs r0, 0x10
+ strb r0, [r2]
+ movs r2, 0xDC
+ lsls r2, 3
+ adds r1, r2
+ strh r3, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807EA04: .4byte gUnknown_08396FC4
+_0807EA08: .4byte 0x000006cc
+_0807EA0C: .4byte 0x000006d2
+_0807EA10: .4byte 0x000006c1
+_0807EA14: .4byte 0x000006e5
+ thumb_func_end sub_807E9C8
+
+ thumb_func_start sub_807EA18
+sub_807EA18: @ 807EA18
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ bl sub_807E9C8
+ ldr r2, _0807EA78
+ ldr r1, [r2]
+ ldr r3, _0807EA7C
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807EA6E
+ mov r8, r2
+ adds r7, r1, r3
+_0807EA34:
+ bl snowflakes_progress2
+ movs r4, 0
+ mov r1, r8
+ ldr r0, [r1]
+ ldr r3, _0807EA80
+ adds r0, r3
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _0807EA68
+ ldr r0, _0807EA78
+ ldr r5, [r0]
+ adds r6, r5, r3
+_0807EA4E:
+ lsls r1, r4, 2
+ adds r0, r5, 0
+ adds r0, 0x60
+ adds r0, r1
+ ldr r0, [r0]
+ bl sub_807ED48
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldrb r0, [r6]
+ cmp r4, r0
+ bcc _0807EA4E
+_0807EA68:
+ ldrb r0, [r7]
+ cmp r0, 0
+ beq _0807EA34
+_0807EA6E:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807EA78: .4byte gUnknown_08396FC4
+_0807EA7C: .4byte 0x000006d2
+_0807EA80: .4byte 0x000006e4
+ thumb_func_end sub_807EA18
+
+ thumb_func_start snowflakes_progress2
+snowflakes_progress2: @ 807EA84
+ push {r4,r5,lr}
+ ldr r0, _0807EAB4
+ ldr r5, [r0]
+ ldr r0, _0807EAB8
+ adds r4, r5, r0
+ ldrh r0, [r4]
+ cmp r0, 0
+ bne _0807EAAC
+ bl snowflakes_progress
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807EAAC
+ ldr r0, _0807EABC
+ adds r1, r5, r0
+ movs r0, 0x1
+ strb r0, [r1]
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+_0807EAAC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807EAB4: .4byte gUnknown_08396FC4
+_0807EAB8: .4byte 0x000006cc
+_0807EABC: .4byte 0x000006d2
+ thumb_func_end snowflakes_progress2
+
+ thumb_func_start sub_807EAC0
+sub_807EAC0: @ 807EAC0
+ push {r4,lr}
+ ldr r0, _0807EAD8
+ ldr r2, [r0]
+ ldr r0, _0807EADC
+ adds r3, r2, r0
+ ldrh r1, [r3]
+ cmp r1, 0
+ beq _0807EAE0
+ cmp r1, 0x1
+ beq _0807EAF2
+ movs r0, 0
+ b _0807EB1E
+ .align 2, 0
+_0807EAD8: .4byte gUnknown_08396FC4
+_0807EADC: .4byte 0x000006ce
+_0807EAE0:
+ ldr r4, _0807EB10
+ adds r0, r2, r4
+ strb r1, [r0]
+ subs r4, 0x5
+ adds r0, r2, r4
+ strh r1, [r0]
+ ldrh r0, [r3]
+ adds r0, 0x1
+ strh r0, [r3]
+_0807EAF2:
+ bl snowflakes_progress
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807EB1C
+ ldr r0, _0807EB14
+ ldr r1, [r0]
+ ldr r0, _0807EB18
+ adds r1, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ movs r0, 0
+ b _0807EB1E
+ .align 2, 0
+_0807EB10: .4byte 0x000006e5
+_0807EB14: .4byte gUnknown_08396FC4
+_0807EB18: .4byte 0x000006ce
+_0807EB1C:
+ movs r0, 0x1
+_0807EB1E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807EAC0
+
+ thumb_func_start snowflakes_progress
+snowflakes_progress: @ 807EB24
+ push {r4,lr}
+ ldr r0, _0807EB40
+ ldr r1, [r0]
+ ldr r0, _0807EB44
+ adds r3, r1, r0
+ ldr r4, _0807EB48
+ adds r2, r1, r4
+ ldrb r0, [r3]
+ ldrb r4, [r2]
+ cmp r0, r4
+ bne _0807EB4C
+ movs r0, 0
+ b _0807EB8E
+ .align 2, 0
+_0807EB40: .4byte gUnknown_08396FC4
+_0807EB44: .4byte 0x000006e4
+_0807EB48: .4byte 0x000006e5
+_0807EB4C:
+ movs r0, 0xDC
+ lsls r0, 3
+ adds r1, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x24
+ bls _0807EB76
+ movs r0, 0
+ strh r0, [r1]
+ ldrb r0, [r3]
+ ldrb r2, [r2]
+ cmp r0, r2
+ bcs _0807EB72
+ bl snowflake_add
+ b _0807EB76
+_0807EB72:
+ bl snowflake_remove
+_0807EB76:
+ ldr r0, _0807EB94
+ ldr r0, [r0]
+ ldr r2, _0807EB98
+ adds r1, r0, r2
+ ldr r4, _0807EB9C
+ adds r0, r4
+ ldrb r1, [r1]
+ ldrb r0, [r0]
+ eors r1, r0
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+_0807EB8E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0807EB94: .4byte gUnknown_08396FC4
+_0807EB98: .4byte 0x000006e4
+_0807EB9C: .4byte 0x000006e5
+ thumb_func_end snowflakes_progress
+
+ thumb_func_start snowflake_add
+snowflake_add: @ 807EBA0
+ push {r4-r6,lr}
+ ldr r0, _0807EBF4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x4E
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _0807EC04
+ ldr r0, _0807EBF8
+ lsls r4, r1, 4
+ adds r4, r1
+ lsls r4, 2
+ adds r4, r0
+ ldr r0, _0807EBFC
+ ldr r5, [r0]
+ ldr r0, _0807EC00
+ adds r6, r5, r0
+ ldrb r0, [r6]
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_807EC40
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+ ldrb r0, [r6]
+ adds r1, r0, 0x1
+ strb r1, [r6]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r5, 0x60
+ adds r5, r0
+ str r4, [r5]
+ movs r0, 0x1
+ b _0807EC06
+ .align 2, 0
+_0807EBF4: .4byte gSpriteTemplate_839AB04
+_0807EBF8: .4byte gSprites
+_0807EBFC: .4byte gUnknown_08396FC4
+_0807EC00: .4byte 0x000006e4
+_0807EC04:
+ movs r0, 0
+_0807EC06:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end snowflake_add
+
+ thumb_func_start snowflake_remove
+snowflake_remove: @ 807EC0C
+ push {lr}
+ ldr r0, _0807EC20
+ ldr r1, [r0]
+ ldr r0, _0807EC24
+ adds r2, r1, r0
+ ldrb r0, [r2]
+ cmp r0, 0
+ bne _0807EC28
+ movs r0, 0
+ b _0807EC3C
+ .align 2, 0
+_0807EC20: .4byte gUnknown_08396FC4
+_0807EC24: .4byte 0x000006e4
+_0807EC28:
+ subs r0, 0x1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r1, 0x60
+ adds r1, r0
+ ldr r0, [r1]
+ bl DestroySprite
+ movs r0, 0x1
+_0807EC3C:
+ pop {r1}
+ bx r1
+ thumb_func_end snowflake_remove
+
+ thumb_func_start sub_807EC40
+sub_807EC40: @ 807EC40
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ bl Random
+ movs r1, 0x36
+ ldrsh r2, [r5, r1]
+ lsls r1, r2, 2
+ adds r1, r2
+ movs r2, 0x7
+ ands r1, r2
+ lsls r4, r1, 4
+ subs r4, r1
+ lsls r4, 1
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1E
+ bl __umodsi3
+ adds r4, r0
+ lsls r4, 16
+ lsrs r4, 16
+ ldr r1, _0807ECE4
+ adds r0, r5, 0
+ adds r0, 0x29
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r1, [r1]
+ adds r0, r1
+ movs r2, 0x3
+ negs r2, r2
+ adds r1, r2, 0
+ subs r1, r0
+ movs r7, 0
+ strh r1, [r5, 0x22]
+ ldr r1, _0807ECE8
+ adds r0, r5, 0
+ adds r0, 0x28
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r1, [r1]
+ adds r0, r1
+ subs r4, r0
+ strh r4, [r5, 0x20]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ lsls r0, 7
+ strh r0, [r5, 0x2E]
+ strh r7, [r5, 0x24]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ adds r6, r0, 0
+ movs r4, 0x3
+ ands r4, r6
+ lsls r0, r4, 2
+ adds r0, r4
+ adds r0, 0x40
+ strh r0, [r5, 0x30]
+ strh r0, [r5, 0x3C]
+ movs r1, 0x1
+ bics r1, r6
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ strh r7, [r5, 0x34]
+ movs r0, 0x1
+ cmp r4, 0
+ bne _0807ECD0
+ movs r0, 0x2
+_0807ECD0:
+ strh r0, [r5, 0x32]
+ movs r0, 0x1F
+ ands r0, r6
+ adds r0, 0xD2
+ strh r0, [r5, 0x3A]
+ strh r7, [r5, 0x38]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807ECE4: .4byte gSpriteCoordOffsetY
+_0807ECE8: .4byte gSpriteCoordOffsetX
+ thumb_func_end sub_807EC40
+
+ thumb_func_start sub_807ECEC
+sub_807ECEC: @ 807ECEC
+ push {r4,lr}
+ adds r3, r0, 0
+ ldr r0, _0807ED38
+ ldr r0, [r0]
+ ldr r1, _0807ED3C
+ adds r4, r0, r1
+ ldrh r0, [r4]
+ cmp r0, 0x12
+ bls _0807ED32
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, _0807ED40
+ str r0, [r3, 0x1C]
+ ldr r1, _0807ED44
+ adds r0, r3, 0
+ adds r0, 0x29
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r1, [r1]
+ adds r0, r1
+ movs r1, 0xFA
+ subs r1, r0
+ movs r2, 0
+ strh r1, [r3, 0x22]
+ movs r1, 0x22
+ ldrsh r0, [r3, r1]
+ lsls r0, 7
+ strh r0, [r3, 0x2E]
+ strh r2, [r4]
+_0807ED32:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807ED38: .4byte gUnknown_08396FC4
+_0807ED3C: .4byte 0x000006e2
+_0807ED40: .4byte sub_807ED48
+_0807ED44: .4byte gSpriteCoordOffsetY
+ thumb_func_end sub_807ECEC
+
+ thumb_func_start sub_807ED48
+sub_807ED48: @ 807ED48
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x2E]
+ adds r0, r1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 23
+ strh r0, [r4, 0x22]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x34]
+ adds r0, r2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x34]
+ ldr r1, _0807EDC0
+ movs r3, 0x34
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bge _0807ED7A
+ adds r0, 0x3F
+_0807ED7A:
+ asrs r0, 6
+ strh r0, [r4, 0x24]
+ adds r0, r4, 0
+ adds r0, 0x28
+ movs r5, 0
+ ldrsb r5, [r0, r5]
+ ldrh r0, [r4, 0x20]
+ adds r0, r5
+ ldr r1, _0807EDC4
+ ldrh r1, [r1]
+ adds r3, r1, r0
+ ldr r2, _0807EDC8
+ adds r0, r2, 0
+ ands r3, r0
+ adds r2, r3, 0
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r2
+ cmp r0, 0
+ beq _0807EDAC
+ ldr r3, _0807EDCC
+ adds r0, r3, 0
+ orrs r2, r0
+ lsls r0, r2, 16
+ lsrs r3, r0, 16
+_0807EDAC:
+ lsls r0, r3, 16
+ asrs r0, 16
+ movs r2, 0x3
+ negs r2, r2
+ cmp r0, r2
+ bge _0807EDD0
+ adds r1, r5
+ movs r0, 0xF2
+ subs r0, r1
+ b _0807EDD8
+ .align 2, 0
+_0807EDC0: .4byte gSineTable
+_0807EDC4: .4byte gSpriteCoordOffsetX
+_0807EDC8: .4byte 0x000001ff
+_0807EDCC: .4byte 0xffffff00
+_0807EDD0:
+ cmp r0, 0xF2
+ ble _0807EDDA
+ adds r0, r1, r5
+ subs r0, r2, r0
+_0807EDD8:
+ strh r0, [r4, 0x20]
+_0807EDDA:
+ adds r0, r4, 0
+ adds r0, 0x29
+ movs r3, 0
+ ldrsb r3, [r0, r3]
+ ldrh r0, [r4, 0x22]
+ adds r0, r3
+ ldr r1, _0807EE18
+ ldrh r1, [r1]
+ adds r2, r1, r0
+ movs r0, 0xFF
+ ands r2, r0
+ adds r0, r2, 0
+ subs r0, 0xA4
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x6
+ bhi _0807EE1C
+ adds r1, r3
+ movs r0, 0xFA
+ subs r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x22]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ lsls r0, 7
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x38]
+ movs r0, 0xDC
+ strh r0, [r4, 0x3A]
+ b _0807EE48
+ .align 2, 0
+_0807EE18: .4byte gSpriteCoordOffsetY
+_0807EE1C:
+ adds r0, r2, 0
+ subs r0, 0xF3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x6
+ bhi _0807EE48
+ movs r1, 0
+ movs r0, 0xA3
+ strh r0, [r4, 0x22]
+ lsls r0, 7
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x38]
+ movs r0, 0xDC
+ strh r0, [r4, 0x3A]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0807EE7C
+ str r0, [r4, 0x1C]
+_0807EE48:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x3A
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bne _0807EE74
+ adds r0, r4, 0
+ bl sub_807EC40
+ movs r0, 0xFA
+ strh r0, [r4, 0x22]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0807EE7C
+ str r0, [r4, 0x1C]
+_0807EE74:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807EE7C: .4byte sub_807ECEC
+ thumb_func_end sub_807ED48
+
+ thumb_func_start sub_807EE80
+sub_807EE80: @ 807EE80
+ push {r4,r5,lr}
+ ldr r0, _0807EED8
+ ldr r1, [r0]
+ ldr r2, _0807EEDC
+ adds r0, r1, r2
+ movs r3, 0
+ movs r2, 0
+ strh r2, [r0]
+ ldr r5, _0807EEE0
+ adds r4, r1, r5
+ strb r3, [r4]
+ adds r5, 0x4
+ adds r0, r1, r5
+ strh r2, [r0]
+ ldr r0, _0807EEE4
+ adds r2, r1, r0
+ movs r0, 0x4
+ strb r0, [r2]
+ ldr r2, _0807EEE8
+ adds r0, r1, r2
+ strb r3, [r0]
+ adds r5, 0x3
+ adds r2, r1, r5
+ movs r0, 0x10
+ strb r0, [r2]
+ ldr r0, _0807EEEC
+ adds r2, r1, r0
+ movs r0, 0x3
+ strb r0, [r2]
+ subs r5, 0x17
+ adds r2, r1, r5
+ movs r0, 0x14
+ strb r0, [r2]
+ strb r3, [r4]
+ ldr r0, _0807EEF0
+ adds r1, r0
+ strb r3, [r1]
+ movs r0, 0x51
+ bl sub_807DD5C
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807EED8: .4byte gUnknown_08396FC4
+_0807EEDC: .4byte 0x000006cc
+_0807EEE0: .4byte 0x000006d2
+_0807EEE4: .4byte 0x000006db
+_0807EEE8: .4byte 0x000006dc
+_0807EEEC: .4byte 0x000006c1
+_0807EEF0: .4byte 0x000006ed
+ thumb_func_end sub_807EE80
+
+ thumb_func_start sub_807EEF4
+sub_807EEF4: @ 807EEF4
+ push {r4,lr}
+ bl sub_807EE80
+ ldr r0, _0807EF1C
+ ldr r1, [r0]
+ ldr r2, _0807EF20
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807EF14
+ adds r4, r1, r2
+_0807EF0A:
+ bl sub_807EFC0
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807EF0A
+_0807EF14:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807EF1C: .4byte gUnknown_08396FC4
+_0807EF20: .4byte 0x000006d2
+ thumb_func_end sub_807EEF4
+
+ thumb_func_start sub_807EF24
+sub_807EF24: @ 807EF24
+ push {r4,r5,lr}
+ ldr r0, _0807EF78
+ ldr r1, [r0]
+ ldr r2, _0807EF7C
+ adds r0, r1, r2
+ movs r4, 0
+ movs r2, 0
+ strh r2, [r0]
+ ldr r5, _0807EF80
+ adds r3, r1, r5
+ strb r4, [r3]
+ adds r5, 0x4
+ adds r0, r1, r5
+ strh r2, [r0]
+ ldr r0, _0807EF84
+ adds r2, r1, r0
+ movs r0, 0x4
+ strb r0, [r2]
+ adds r5, 0x6
+ adds r2, r1, r5
+ movs r0, 0x1
+ strb r0, [r2]
+ ldr r0, _0807EF88
+ adds r2, r1, r0
+ movs r0, 0x18
+ strb r0, [r2]
+ subs r5, 0x1B
+ adds r2, r1, r5
+ movs r0, 0x3
+ strb r0, [r2]
+ ldr r0, _0807EF8C
+ adds r1, r0
+ movs r0, 0x14
+ strb r0, [r1]
+ strb r4, [r3]
+ movs r0, 0x53
+ bl sub_807DD5C
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807EF78: .4byte gUnknown_08396FC4
+_0807EF7C: .4byte 0x000006cc
+_0807EF80: .4byte 0x000006d2
+_0807EF84: .4byte 0x000006db
+_0807EF88: .4byte 0x000006d9
+_0807EF8C: .4byte 0x000006c2
+ thumb_func_end sub_807EF24
+
+ thumb_func_start sub_807EF90
+sub_807EF90: @ 807EF90
+ push {r4,lr}
+ bl sub_807EF24
+ ldr r0, _0807EFB8
+ ldr r1, [r0]
+ ldr r2, _0807EFBC
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807EFB0
+ adds r4, r1, r2
+_0807EFA6:
+ bl sub_807EFC0
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807EFA6
+_0807EFB0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807EFB8: .4byte gUnknown_08396FC4
+_0807EFBC: .4byte 0x000006d2
+ thumb_func_end sub_807EF90
+
+ thumb_func_start sub_807EFC0
+sub_807EFC0: @ 807EFC0
+ push {r4,r5,lr}
+ bl sub_807F434
+ ldr r0, _0807EFE0
+ ldr r0, [r0]
+ ldr r1, _0807EFE4
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, 0xE
+ bls _0807EFD6
+ b _0807F336
+_0807EFD6:
+ lsls r0, 2
+ ldr r1, _0807EFE8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807EFE0: .4byte gUnknown_08396FC4
+_0807EFE4: .4byte 0x000006cc
+_0807EFE8: .4byte _0807EFEC
+ .align 2, 0
+_0807EFEC:
+ .4byte _0807F028
+ .4byte _0807F044
+ .4byte _0807F068
+ .4byte _0807F098
+ .4byte _0807F0BC
+ .4byte _0807F0EC
+ .4byte _0807F11C
+ .4byte _0807F148
+ .4byte _0807F166
+ .4byte _0807F1C4
+ .4byte _0807F248
+ .4byte _0807F270
+ .4byte _0807F2A0
+ .4byte _0807F2E4
+ .4byte _0807F318
+_0807F028:
+ bl sub_807E7A4
+ ldr r0, _0807F03C
+ ldr r1, [r0]
+ ldr r2, _0807F040
+ adds r1, r2
+ ldrh r0, [r1]
+ adds r0, 0x1
+ b _0807F334
+ .align 2, 0
+_0807F03C: .4byte gUnknown_08396FC4
+_0807F040: .4byte 0x000006cc
+_0807F044:
+ bl sub_807E7B4
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807F050
+ b _0807F336
+_0807F050:
+ ldr r0, _0807F060
+ ldr r1, [r0]
+ ldr r3, _0807F064
+ adds r1, r3
+ ldrh r0, [r1]
+ adds r0, 0x1
+ b _0807F334
+ .align 2, 0
+_0807F060: .4byte gUnknown_08396FC4
+_0807F064: .4byte 0x000006cc
+_0807F068:
+ bl sub_807E8E8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807F074
+ b _0807F336
+_0807F074:
+ ldr r0, _0807F08C
+ ldr r1, [r0]
+ ldr r0, _0807F090
+ adds r2, r1, r0
+ movs r0, 0x1
+ strb r0, [r2]
+ ldr r2, _0807F094
+ adds r1, r2
+ ldrh r0, [r1]
+ adds r0, 0x1
+ b _0807F334
+ .align 2, 0
+_0807F08C: .4byte gUnknown_08396FC4
+_0807F090: .4byte 0x000006d2
+_0807F094: .4byte 0x000006cc
+_0807F098:
+ ldr r0, _0807F0B0
+ ldr r1, [r0]
+ ldr r3, _0807F0B4
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807F0A8
+ b _0807F336
+_0807F0A8:
+ ldr r0, _0807F0B8
+ adds r1, r0
+ movs r0, 0x6
+ b _0807F334
+ .align 2, 0
+_0807F0B0: .4byte gUnknown_08396FC4
+_0807F0B4: .4byte 0x000006c6
+_0807F0B8: .4byte 0x000006cc
+_0807F0BC:
+ ldr r0, _0807F10C
+ ldr r4, [r0]
+ ldr r2, _0807F110
+ adds r1, r4, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r5, 0xB4
+ lsls r5, 1
+ adds r1, r5, 0
+ bl __umodsi3
+ adds r0, r5
+ ldr r3, _0807F114
+ adds r1, r4, r3
+ strh r0, [r1]
+ ldr r0, _0807F118
+ adds r4, r0
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+_0807F0EC:
+ ldr r0, _0807F10C
+ ldr r2, [r0]
+ ldr r3, _0807F114
+ adds r1, r2, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ lsls r0, 16
+ cmp r0, 0
+ beq _0807F102
+ b _0807F336
+_0807F102:
+ ldr r0, _0807F118
+ adds r1, r2, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ b _0807F334
+ .align 2, 0
+_0807F10C: .4byte gUnknown_08396FC4
+_0807F110: .4byte 0x000006ea
+_0807F114: .4byte 0x000006e6
+_0807F118: .4byte 0x000006cc
+_0807F11C:
+ ldr r0, _0807F13C
+ ldr r4, [r0]
+ ldr r1, _0807F140
+ adds r0, r4, r1
+ movs r5, 0x1
+ strb r5, [r0]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ ands r0, r5
+ ldr r2, _0807F144
+ adds r1, r4, r2
+ strb r0, [r1]
+ b _0807F1A4
+ .align 2, 0
+_0807F13C: .4byte gUnknown_08396FC4
+_0807F140: .4byte 0x000006ea
+_0807F144: .4byte 0x000006eb
+_0807F148:
+ bl Random
+ ldr r1, _0807F1B0
+ ldr r2, [r1]
+ movs r1, 0x1
+ ands r1, r0
+ adds r1, 0x1
+ ldr r3, _0807F1B4
+ adds r0, r2, r3
+ strb r1, [r0]
+ ldr r0, _0807F1B8
+ adds r2, r0
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+_0807F166:
+ movs r0, 0x13
+ bl sub_807D5BC
+ ldr r0, _0807F1B0
+ ldr r1, [r0]
+ ldr r2, _0807F1BC
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807F18A
+ ldr r3, _0807F1B4
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0807F18A
+ movs r0, 0x14
+ bl sub_807F3F8
+_0807F18A:
+ bl Random
+ ldr r1, _0807F1B0
+ ldr r4, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ adds r0, 0x6
+ ldr r2, _0807F1C0
+ adds r1, r4, r2
+ strh r0, [r1]
+_0807F1A4:
+ ldr r3, _0807F1B8
+ adds r4, r3
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _0807F336
+ .align 2, 0
+_0807F1B0: .4byte gUnknown_08396FC4
+_0807F1B4: .4byte 0x000006ec
+_0807F1B8: .4byte 0x000006cc
+_0807F1BC: .4byte 0x000006eb
+_0807F1C0: .4byte 0x000006e6
+_0807F1C4:
+ ldr r0, _0807F210
+ ldr r4, [r0]
+ ldr r0, _0807F214
+ adds r5, r4, r0
+ ldrh r0, [r5]
+ subs r0, 0x1
+ strh r0, [r5]
+ lsls r0, 16
+ cmp r0, 0
+ beq _0807F1DA
+ b _0807F336
+_0807F1DA:
+ movs r0, 0x3
+ bl sub_807D5BC
+ ldr r2, _0807F218
+ adds r1, r4, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r3, _0807F21C
+ adds r1, r4, r3
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807F224
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xF
+ ands r0, r1
+ adds r0, 0x3C
+ strh r0, [r5]
+ ldr r0, _0807F220
+ adds r1, r4, r0
+ movs r0, 0xA
+ b _0807F334
+ .align 2, 0
+_0807F210: .4byte gUnknown_08396FC4
+_0807F214: .4byte 0x000006e6
+_0807F218: .4byte 0x000006ea
+_0807F21C: .4byte 0x000006ec
+_0807F220: .4byte 0x000006cc
+_0807F224:
+ ldr r1, _0807F234
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807F23C
+ ldr r2, _0807F238
+ adds r1, r4, r2
+ b _0807F332
+ .align 2, 0
+_0807F234: .4byte 0x000006eb
+_0807F238: .4byte 0x000006cc
+_0807F23C:
+ ldr r3, _0807F244
+ adds r1, r4, r3
+ movs r0, 0xB
+ b _0807F334
+ .align 2, 0
+_0807F244: .4byte 0x000006cc
+_0807F248:
+ ldr r0, _0807F264
+ ldr r2, [r0]
+ ldr r0, _0807F268
+ adds r1, r2, r0
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0807F336
+ ldr r3, _0807F26C
+ adds r1, r2, r3
+ movs r0, 0x8
+ b _0807F334
+ .align 2, 0
+_0807F264: .4byte gUnknown_08396FC4
+_0807F268: .4byte 0x000006e6
+_0807F26C: .4byte 0x000006cc
+_0807F270:
+ bl Random
+ ldr r1, _0807F294
+ ldr r2, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xF
+ ands r0, r1
+ adds r0, 0x3C
+ ldr r3, _0807F298
+ adds r1, r2, r3
+ strh r0, [r1]
+ ldr r0, _0807F29C
+ adds r2, r0
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ b _0807F336
+ .align 2, 0
+_0807F294: .4byte gUnknown_08396FC4
+_0807F298: .4byte 0x000006e6
+_0807F29C: .4byte 0x000006cc
+_0807F2A0:
+ ldr r0, _0807F2D8
+ ldr r5, [r0]
+ ldr r1, _0807F2DC
+ adds r4, r5, r1
+ ldrh r0, [r4]
+ subs r0, 0x1
+ strh r0, [r4]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0807F336
+ movs r0, 0x64
+ bl sub_807F3F8
+ movs r0, 0x13
+ bl sub_807D5BC
+ bl Random
+ movs r1, 0xF
+ ands r1, r0
+ adds r1, 0x1E
+ strh r1, [r4]
+ ldr r2, _0807F2E0
+ adds r1, r5, r2
+ ldrh r0, [r1]
+ adds r0, 0x1
+ b _0807F334
+ .align 2, 0
+_0807F2D8: .4byte gUnknown_08396FC4
+_0807F2DC: .4byte 0x000006e6
+_0807F2E0: .4byte 0x000006cc
+_0807F2E4:
+ ldr r0, _0807F30C
+ ldr r4, [r0]
+ ldr r3, _0807F310
+ adds r1, r4, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0807F336
+ movs r0, 0x13
+ movs r1, 0x3
+ movs r2, 0x5
+ bl sub_807D5F0
+ ldr r0, _0807F314
+ adds r1, r4, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ b _0807F334
+ .align 2, 0
+_0807F30C: .4byte gUnknown_08396FC4
+_0807F310: .4byte 0x000006e6
+_0807F314: .4byte 0x000006cc
+_0807F318:
+ ldr r0, _0807F33C
+ ldr r2, [r0]
+ ldr r1, _0807F340
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0807F336
+ ldr r3, _0807F344
+ adds r1, r2, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, _0807F348
+ adds r1, r2, r0
+_0807F332:
+ movs r0, 0x4
+_0807F334:
+ strh r0, [r1]
+_0807F336:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F33C: .4byte gUnknown_08396FC4
+_0807F340: .4byte 0x000006c6
+_0807F344: .4byte 0x000006ea
+_0807F348: .4byte 0x000006cc
+ thumb_func_end sub_807EFC0
+
+ thumb_func_start sub_807F34C
+sub_807F34C: @ 807F34C
+ push {r4-r6,lr}
+ ldr r0, _0807F368
+ ldr r6, [r0]
+ ldr r0, _0807F36C
+ adds r5, r6, r0
+ ldrh r1, [r5]
+ cmp r1, 0x1
+ beq _0807F382
+ cmp r1, 0x1
+ bgt _0807F370
+ cmp r1, 0
+ beq _0807F376
+ b _0807F3E8
+ .align 2, 0
+_0807F368: .4byte gUnknown_08396FC4
+_0807F36C: .4byte 0x000006ce
+_0807F370:
+ cmp r1, 0x2
+ beq _0807F3CC
+ b _0807F3E8
+_0807F376:
+ ldr r2, _0807F3BC
+ adds r0, r6, r2
+ strb r1, [r0]
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+_0807F382:
+ bl sub_807EFC0
+ ldr r0, _0807F3C0
+ ldr r2, [r0]
+ ldr r1, _0807F3BC
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807F3F0
+ subs r1, 0x19
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ beq _0807F3E8
+ cmp r0, 0x5
+ beq _0807F3E8
+ cmp r0, 0xD
+ beq _0807F3E8
+ ldr r0, _0807F3C4
+ adds r1, r2, r0
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, _0807F3C8
+ adds r1, r2, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ b _0807F3F0
+ .align 2, 0
+_0807F3BC: .4byte 0x000006ea
+_0807F3C0: .4byte gUnknown_08396FC4
+_0807F3C4: .4byte 0x000006d9
+_0807F3C8: .4byte 0x000006ce
+_0807F3CC:
+ bl sub_807E8E8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _0807F3F0
+ bl sub_807E974
+ ldr r1, _0807F3EC
+ adds r0, r6, r1
+ strb r4, [r0]
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+_0807F3E8:
+ movs r0, 0
+ b _0807F3F2
+ .align 2, 0
+_0807F3EC: .4byte 0x000006ed
+_0807F3F0:
+ movs r0, 0x1
+_0807F3F2:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807F34C
+
+ thumb_func_start sub_807F3F8
+sub_807F3F8: @ 807F3F8
+ push {r4-r6,lr}
+ lsls r0, 16
+ lsrs r6, r0, 16
+ ldr r0, _0807F42C
+ ldr r4, [r0]
+ ldr r0, _0807F430
+ adds r5, r4, r0
+ ldrb r0, [r5]
+ cmp r0, 0
+ bne _0807F426
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, r6, 0
+ bl __umodsi3
+ movs r2, 0xDD
+ lsls r2, 3
+ adds r1, r4, r2
+ strh r0, [r1]
+ movs r0, 0x1
+ strb r0, [r5]
+_0807F426:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F42C: .4byte gUnknown_08396FC4
+_0807F430: .4byte 0x000006ed
+ thumb_func_end sub_807F3F8
+
+ thumb_func_start sub_807F434
+sub_807F434: @ 807F434
+ push {r4,lr}
+ ldr r0, _0807F46C
+ ldr r1, [r0]
+ ldr r2, _0807F470
+ adds r0, r1, r2
+ ldrb r4, [r0]
+ cmp r4, 0x1
+ bne _0807F494
+ movs r0, 0xDD
+ lsls r0, 3
+ adds r1, r0
+ ldrh r0, [r1]
+ cmp r0, 0
+ bne _0807F490
+ bl IsSEPlaying
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807F494
+ bl Random
+ ands r4, r0
+ cmp r4, 0
+ beq _0807F474
+ movs r0, 0x57
+ bl PlaySE
+ b _0807F47A
+ .align 2, 0
+_0807F46C: .4byte gUnknown_08396FC4
+_0807F470: .4byte 0x000006ed
+_0807F474:
+ movs r0, 0x58
+ bl PlaySE
+_0807F47A:
+ ldr r0, _0807F488
+ ldr r0, [r0]
+ ldr r1, _0807F48C
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+ b _0807F494
+ .align 2, 0
+_0807F488: .4byte gUnknown_08396FC4
+_0807F48C: .4byte 0x000006ed
+_0807F490:
+ subs r0, 0x1
+ strh r0, [r1]
+_0807F494:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807F434
+
+ thumb_func_start sub_807F49C
+sub_807F49C: @ 807F49C
+ push {lr}
+ ldr r0, _0807F4E8
+ ldr r3, [r0]
+ ldr r0, _0807F4EC
+ adds r1, r3, r0
+ movs r2, 0
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _0807F4F0
+ adds r0, r3, r1
+ strb r2, [r0]
+ subs r1, 0x11
+ adds r0, r3, r1
+ strb r2, [r0]
+ ldr r2, _0807F4F4
+ adds r1, r3, r2
+ movs r0, 0x14
+ strb r0, [r1]
+ ldr r1, _0807F4F8
+ adds r0, r3, r1
+ ldrb r1, [r0]
+ cmp r1, 0
+ bne _0807F4E4
+ adds r2, 0x2E
+ adds r0, r3, r2
+ strh r1, [r0]
+ adds r2, 0x2
+ adds r0, r3, r2
+ strh r1, [r0]
+ subs r2, 0x4
+ adds r0, r3, r2
+ strh r1, [r0]
+ movs r0, 0
+ movs r1, 0x10
+ bl sub_807DB64
+_0807F4E4:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F4E8: .4byte gUnknown_08396FC4
+_0807F4EC: .4byte 0x000006cc
+_0807F4F0: .4byte 0x000006d2
+_0807F4F4: .4byte 0x000006c2
+_0807F4F8: .4byte 0x000006fb
+ thumb_func_end sub_807F49C
+
+ thumb_func_start sub_807F4FC
+sub_807F4FC: @ 807F4FC
+ push {r4,lr}
+ bl sub_807F49C
+ ldr r0, _0807F524
+ ldr r1, [r0]
+ ldr r2, _0807F528
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807F51C
+ adds r4, r1, r2
+_0807F512:
+ bl sub_807F52C
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807F512
+_0807F51C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F524: .4byte gUnknown_08396FC4
+_0807F528: .4byte 0x000006d2
+ thumb_func_end sub_807F4FC
+
+ thumb_func_start sub_807F52C
+sub_807F52C: @ 807F52C
+ push {r4-r6,lr}
+ ldr r0, _0807F578
+ ldr r6, [r0]
+ ldr r0, _0807F57C
+ ldr r1, _0807F580
+ adds r2, r6, r1
+ ldrh r0, [r0]
+ ldrh r1, [r2]
+ subs r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ ldr r3, _0807F584
+ adds r1, r6, r3
+ strh r0, [r1]
+ movs r0, 0xDE
+ lsls r0, 3
+ adds r1, r6, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x3
+ bls _0807F566
+ movs r0, 0
+ strh r0, [r1]
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+_0807F566:
+ ldr r1, _0807F588
+ adds r5, r6, r1
+ ldrh r4, [r5]
+ cmp r4, 0
+ beq _0807F58C
+ cmp r4, 0x1
+ beq _0807F5CC
+ b _0807F5E2
+ .align 2, 0
+_0807F578: .4byte gUnknown_08396FC4
+_0807F57C: .4byte gSpriteCoordOffsetX
+_0807F580: .4byte 0x000006f2
+_0807F584: .4byte 0x000006ee
+_0807F588: .4byte 0x000006cc
+_0807F58C:
+ bl sub_807F6E8
+ movs r3, 0xDA
+ lsls r3, 3
+ adds r0, r6, r3
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ bne _0807F5A8
+ movs r0, 0xC
+ movs r1, 0x8
+ movs r2, 0x3
+ bl sub_807DBA4
+ b _0807F5B2
+_0807F5A8:
+ movs r0, 0x4
+ movs r1, 0x10
+ movs r2, 0
+ bl sub_807DBA4
+_0807F5B2:
+ ldr r0, _0807F5C4
+ ldr r1, [r0]
+ ldr r0, _0807F5C8
+ adds r1, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ b _0807F5E2
+ .align 2, 0
+_0807F5C4: .4byte gUnknown_08396FC4
+_0807F5C8: .4byte 0x000006cc
+_0807F5CC:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807F5E2
+ ldr r1, _0807F5E8
+ adds r0, r6, r1
+ strb r4, [r0]
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+_0807F5E2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F5E8: .4byte 0x000006d2
+ thumb_func_end sub_807F52C
+
+ thumb_func_start sub_807F5EC
+sub_807F5EC: @ 807F5EC
+ push {r4,lr}
+ ldr r0, _0807F63C
+ ldr r2, [r0]
+ ldr r0, _0807F640
+ ldr r1, _0807F644
+ adds r3, r2, r1
+ ldrh r0, [r0]
+ ldrh r1, [r3]
+ subs r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ ldr r4, _0807F648
+ adds r1, r2, r4
+ strh r0, [r1]
+ movs r0, 0xDE
+ lsls r0, 3
+ adds r1, r2, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x3
+ bls _0807F626
+ movs r0, 0
+ strh r0, [r1]
+ ldrh r0, [r3]
+ adds r0, 0x1
+ strh r0, [r3]
+_0807F626:
+ ldr r1, _0807F64C
+ adds r4, r2, r1
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _0807F662
+ cmp r0, 0x1
+ bgt _0807F650
+ cmp r0, 0
+ beq _0807F656
+ b _0807F67A
+ .align 2, 0
+_0807F63C: .4byte gUnknown_08396FC4
+_0807F640: .4byte gSpriteCoordOffsetX
+_0807F644: .4byte 0x000006f2
+_0807F648: .4byte 0x000006ee
+_0807F64C: .4byte 0x000006ce
+_0807F650:
+ cmp r0, 0x2
+ beq _0807F66E
+ b _0807F67A
+_0807F656:
+ movs r0, 0
+ movs r1, 0x10
+ movs r2, 0x3
+ bl sub_807DBA4
+ b _0807F672
+_0807F662:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807F67E
+ b _0807F672
+_0807F66E:
+ bl sub_807F7A4
+_0807F672:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _0807F67E
+_0807F67A:
+ movs r0, 0
+ b _0807F680
+_0807F67E:
+ movs r0, 0x1
+_0807F680:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807F5EC
+
+ thumb_func_start sub_807F688
+sub_807F688: @ 807F688
+ push {r4,lr}
+ adds r3, r0, 0
+ ldr r0, _0807F6D4
+ ldrb r0, [r0]
+ strh r0, [r3, 0x26]
+ ldr r0, _0807F6D8
+ ldr r0, [r0]
+ ldr r1, _0807F6DC
+ adds r2, r0, r1
+ ldrh r1, [r2]
+ adds r1, 0x20
+ movs r4, 0x2E
+ ldrsh r0, [r3, r4]
+ lsls r0, 6
+ adds r1, r0
+ strh r1, [r3, 0x20]
+ lsls r1, 16
+ ldr r0, _0807F6E0
+ cmp r1, r0
+ ble _0807F6CC
+ movs r0, 0xF0
+ lsls r0, 1
+ adds r1, r0, 0
+ ldrh r2, [r2]
+ adds r1, r2
+ movs r4, 0x2E
+ ldrsh r2, [r3, r4]
+ movs r0, 0x4
+ subs r0, r2
+ lsls r0, 6
+ subs r1, r0
+ ldr r0, _0807F6E4
+ ands r1, r0
+ strh r1, [r3, 0x20]
+_0807F6CC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F6D4: .4byte gSpriteCoordOffsetY
+_0807F6D8: .4byte gUnknown_08396FC4
+_0807F6DC: .4byte 0x000006ee
+_0807F6E0: .4byte 0x010f0000
+_0807F6E4: .4byte 0x000001ff
+ thumb_func_end sub_807F688
+
+ thumb_func_start sub_807F6E8
+sub_807F6E8: @ 807F6E8
+ push {r4,r5,lr}
+ sub sp, 0x8
+ ldr r0, _0807F75C
+ ldr r0, [r0]
+ ldr r1, _0807F760
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807F792
+ ldr r0, _0807F764
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ mov r0, sp
+ bl LoadSpriteSheet
+ movs r5, 0
+_0807F70C:
+ ldr r0, _0807F768
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0xFF
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _0807F770
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0807F76C
+ adds r4, r0
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl __umodsi3
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ lsrs r0, 10
+ adds r0, 0x20
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl __udivsi3
+ lsls r0, 16
+ lsrs r0, 10
+ adds r0, 0x20
+ strh r0, [r4, 0x22]
+ ldr r2, _0807F75C
+ ldr r0, [r2]
+ lsls r1, r5, 2
+ adds r0, 0xA0
+ adds r0, r1
+ str r4, [r0]
+ b _0807F77E
+ .align 2, 0
+_0807F75C: .4byte gUnknown_08396FC4
+_0807F760: .4byte 0x000006fb
+_0807F764: .4byte gUnknown_0839ABA8
+_0807F768: .4byte gSpriteTemplate_839AB90
+_0807F76C: .4byte gSprites
+_0807F770:
+ ldr r2, _0807F79C
+ ldr r1, [r2]
+ lsls r0, r5, 2
+ adds r1, 0xA0
+ adds r1, r0
+ movs r0, 0
+ str r0, [r1]
+_0807F77E:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x13
+ bls _0807F70C
+ ldr r0, [r2]
+ ldr r1, _0807F7A0
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+_0807F792:
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F79C: .4byte gUnknown_08396FC4
+_0807F7A0: .4byte 0x000006fb
+ thumb_func_end sub_807F6E8
+
+ thumb_func_start sub_807F7A4
+sub_807F7A4: @ 807F7A4
+ push {r4,r5,lr}
+ ldr r0, _0807F7EC
+ ldr r1, [r0]
+ ldr r2, _0807F7F0
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807F7E4
+ movs r4, 0
+ adds r5, r1, 0
+ adds r5, 0xA0
+_0807F7BA:
+ lsls r0, r4, 2
+ adds r0, r5, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0807F7C8
+ bl DestroySprite
+_0807F7C8:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x13
+ bls _0807F7BA
+ ldr r0, _0807F7F4
+ bl FreeSpriteTilesByTag
+ ldr r0, _0807F7EC
+ ldr r0, [r0]
+ ldr r1, _0807F7F0
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+_0807F7E4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F7EC: .4byte gUnknown_08396FC4
+_0807F7F0: .4byte 0x000006fb
+_0807F7F4: .4byte 0x00001201
+ thumb_func_end sub_807F7A4
+
+ thumb_func_start sub_807F7F8
+sub_807F7F8: @ 807F7F8
+ push {lr}
+ ldr r0, _0807F844
+ ldr r1, [r0]
+ ldr r0, _0807F848
+ adds r2, r1, r0
+ movs r3, 0
+ movs r0, 0
+ strh r0, [r2]
+ ldr r2, _0807F84C
+ adds r0, r1, r2
+ strb r3, [r0]
+ subs r2, 0x11
+ adds r0, r1, r2
+ strb r3, [r0]
+ ldr r3, _0807F850
+ adds r0, r1, r3
+ movs r2, 0x14
+ strb r2, [r0]
+ adds r3, 0x3C
+ adds r0, r1, r3
+ strh r2, [r0]
+ movs r0, 0xE0
+ lsls r0, 3
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _0807F840
+ movs r0, 0
+ movs r1, 0x10
+ bl sub_807DB64
+ ldr r1, _0807F854
+ movs r2, 0xFD
+ lsls r2, 6
+ adds r0, r2, 0
+ strh r0, [r1]
+_0807F840:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F844: .4byte gUnknown_08396FC4
+_0807F848: .4byte 0x000006cc
+_0807F84C: .4byte 0x000006d2
+_0807F850: .4byte 0x000006c2
+_0807F854: .4byte REG_BLDALPHA
+ thumb_func_end sub_807F7F8
+
+ thumb_func_start sub_807F858
+sub_807F858: @ 807F858
+ push {r4,lr}
+ bl sub_807F7F8
+ ldr r0, _0807F880
+ ldr r1, [r0]
+ ldr r2, _0807F884
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807F878
+ adds r4, r1, r2
+_0807F86E:
+ bl sub_807F888
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807F86E
+_0807F878:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F880: .4byte gUnknown_08396FC4
+_0807F884: .4byte 0x000006d2
+ thumb_func_end sub_807F858
+
+ thumb_func_start sub_807F888
+sub_807F888: @ 807F888
+ push {r4,r5,lr}
+ ldr r2, _0807F8CC
+ ldr r1, [r2]
+ ldr r0, _0807F8D0
+ ldrh r0, [r0]
+ ldr r3, _0807F8D4
+ ands r3, r0
+ ldr r0, _0807F8D8
+ adds r1, r0
+ strh r3, [r1]
+ cmp r3, 0xEF
+ bls _0807F8B4
+ adds r4, r1, 0
+ adds r1, r3, 0
+_0807F8A4:
+ adds r3, r1, 0
+ subs r3, 0xF0
+ adds r1, r3, 0
+ lsls r0, r3, 16
+ lsrs r0, 16
+ cmp r0, 0xEF
+ bhi _0807F8A4
+ strh r3, [r4]
+_0807F8B4:
+ ldr r5, [r2]
+ ldr r1, _0807F8DC
+ adds r4, r5, r1
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _0807F8EC
+ cmp r0, 0x1
+ bgt _0807F8E0
+ cmp r0, 0
+ beq _0807F8E6
+ b _0807F928
+ .align 2, 0
+_0807F8CC: .4byte gUnknown_08396FC4
+_0807F8D0: .4byte gSpriteCoordOffsetX
+_0807F8D4: .4byte 0x000001ff
+_0807F8D8: .4byte 0x000006fc
+_0807F8DC: .4byte 0x000006cc
+_0807F8E0:
+ cmp r0, 0x2
+ beq _0807F908
+ b _0807F928
+_0807F8E6:
+ bl sub_807F99C
+ b _0807F91A
+_0807F8EC:
+ movs r1, 0xE0
+ lsls r1, 3
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807F8FC
+ bl sub_807F9AC
+_0807F8FC:
+ movs r0, 0x10
+ movs r1, 0
+ movs r2, 0x1
+ bl sub_807DBA4
+ b _0807F91A
+_0807F908:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807F92C
+ ldr r0, _0807F924
+ adds r1, r5, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_0807F91A:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _0807F92C
+ .align 2, 0
+_0807F924: .4byte 0x000006d2
+_0807F928:
+ bl sub_807DBE8
+_0807F92C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807F888
+
+ thumb_func_start sub_807F934
+sub_807F934: @ 807F934
+ push {r4,lr}
+ ldr r0, _0807F950
+ ldr r0, [r0]
+ ldr r1, _0807F954
+ adds r4, r0, r1
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _0807F96A
+ cmp r0, 0x1
+ bgt _0807F958
+ cmp r0, 0
+ beq _0807F95E
+ b _0807F98C
+ .align 2, 0
+_0807F950: .4byte gUnknown_08396FC4
+_0807F954: .4byte 0x000006ce
+_0807F958:
+ cmp r0, 0x2
+ beq _0807F980
+ b _0807F98C
+_0807F95E:
+ movs r0, 0
+ movs r1, 0x10
+ movs r2, 0x1
+ bl sub_807DBA4
+ b _0807F978
+_0807F96A:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807F994
+ bl sub_807FA54
+_0807F978:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _0807F994
+_0807F980:
+ ldr r1, _0807F990
+ movs r0, 0
+ strh r0, [r1]
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+_0807F98C:
+ movs r0, 0
+ b _0807F996
+ .align 2, 0
+_0807F990: .4byte REG_BLDALPHA
+_0807F994:
+ movs r0, 0x1
+_0807F996:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807F934
+
+ thumb_func_start sub_807F99C
+sub_807F99C: @ 807F99C
+ push {lr}
+ ldr r0, _0807F9A8
+ bl LoadSpriteSheet
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807F9A8: .4byte gUnknown_0839ABB0
+ thumb_func_end sub_807F99C
+
+ thumb_func_start sub_807F9AC
+sub_807F9AC: @ 807F9AC
+ push {r4,r5,lr}
+ ldr r0, _0807FA18
+ ldr r0, [r0]
+ movs r1, 0xE0
+ lsls r1, 3
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807FA48
+ movs r5, 0
+_0807F9C0:
+ ldr r0, _0807FA1C
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x4E
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _0807FA24
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0807FA20
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x34]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ lsls r0, 6
+ adds r0, 0x20
+ strh r0, [r4, 0x2E]
+ ldr r2, _0807FA18
+ ldr r0, [r2]
+ lsls r1, r5, 2
+ adds r0, 0xF0
+ adds r0, r1
+ str r4, [r0]
+ b _0807FA32
+ .align 2, 0
+_0807FA18: .4byte gUnknown_08396FC4
+_0807FA1C: .4byte gSpriteTemplate_839ABD0
+_0807FA20: .4byte gSprites
+_0807FA24:
+ ldr r2, _0807FA50
+ ldr r1, [r2]
+ lsls r0, r5, 2
+ adds r1, 0xF0
+ adds r1, r0
+ movs r0, 0
+ str r0, [r1]
+_0807FA32:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x13
+ bls _0807F9C0
+ ldr r0, [r2]
+ movs r1, 0xE0
+ lsls r1, 3
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+_0807FA48:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FA50: .4byte gUnknown_08396FC4
+ thumb_func_end sub_807F9AC
+
+ thumb_func_start sub_807FA54
+sub_807FA54: @ 807FA54
+ push {r4,r5,lr}
+ ldr r0, _0807FAA0
+ ldr r1, [r0]
+ movs r2, 0xE0
+ lsls r2, 3
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807FA98
+ movs r4, 0
+ adds r5, r1, 0
+ adds r5, 0xF0
+_0807FA6C:
+ lsls r0, r4, 2
+ adds r0, r5, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0807FA7A
+ bl DestroySprite
+_0807FA7A:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x13
+ bls _0807FA6C
+ ldr r0, _0807FAA4
+ bl FreeSpriteTilesByTag
+ ldr r0, _0807FAA0
+ ldr r0, [r0]
+ movs r1, 0xE0
+ lsls r1, 3
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+_0807FA98:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FAA0: .4byte gUnknown_08396FC4
+_0807FAA4: .4byte 0x00001202
+ thumb_func_end sub_807FA54
+
+ thumb_func_start sub_807FAA8
+sub_807FAA8: @ 807FAA8
+ push {r4,lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ ble _0807FAC4
+ movs r0, 0
+ strh r0, [r3, 0x30]
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+_0807FAC4:
+ ldr r1, _0807FB10
+ ldrh r0, [r3, 0x2E]
+ ldrh r1, [r1]
+ adds r0, r1
+ strh r0, [r3, 0x22]
+ ldr r0, _0807FB14
+ ldr r0, [r0]
+ ldr r1, _0807FB18
+ adds r2, r0, r1
+ ldrh r1, [r2]
+ adds r1, 0x20
+ movs r4, 0x32
+ ldrsh r0, [r3, r4]
+ lsls r0, 6
+ adds r1, r0
+ strh r1, [r3, 0x20]
+ lsls r1, 16
+ ldr r0, _0807FB1C
+ cmp r1, r0
+ ble _0807FB08
+ movs r0, 0xF0
+ lsls r0, 1
+ adds r1, r0, 0
+ ldrh r2, [r2]
+ adds r1, r2
+ movs r4, 0x32
+ ldrsh r2, [r3, r4]
+ movs r0, 0x4
+ subs r0, r2
+ lsls r0, 6
+ subs r1, r0
+ ldr r0, _0807FB20
+ ands r1, r0
+ strh r1, [r3, 0x20]
+_0807FB08:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FB10: .4byte gSpriteCoordOffsetY
+_0807FB14: .4byte gUnknown_08396FC4
+_0807FB18: .4byte 0x000006fc
+_0807FB1C: .4byte 0x010f0000
+_0807FB20: .4byte 0x000001ff
+ thumb_func_end sub_807FAA8
+
+ thumb_func_start sub_807FB24
+sub_807FB24: @ 807FB24
+ push {r4,lr}
+ ldr r0, _0807FB94
+ ldr r3, [r0]
+ ldr r1, _0807FB98
+ adds r0, r3, r1
+ movs r1, 0
+ movs r2, 0
+ strh r2, [r0]
+ ldr r4, _0807FB9C
+ adds r0, r3, r4
+ strb r1, [r0]
+ subs r4, 0x11
+ adds r0, r3, r4
+ strb r1, [r0]
+ ldr r0, _0807FBA0
+ adds r1, r3, r0
+ movs r0, 0x14
+ strb r0, [r1]
+ movs r1, 0xDE
+ lsls r1, 3
+ adds r0, r3, r1
+ strh r2, [r0]
+ adds r4, 0x31
+ adds r1, r3, r4
+ movs r0, 0x1
+ strh r0, [r1]
+ ldr r1, _0807FBA4
+ adds r0, r3, r1
+ ldrb r2, [r0]
+ cmp r2, 0
+ bne _0807FB8E
+ adds r4, 0x2A
+ adds r0, r3, r4
+ strh r2, [r0]
+ subs r1, 0x6
+ adds r0, r3, r1
+ strh r2, [r0]
+ adds r4, 0x4
+ adds r0, r3, r4
+ strh r2, [r0]
+ adds r1, 0x4
+ adds r0, r3, r1
+ strh r2, [r0]
+ subs r4, 0x8
+ adds r0, r3, r4
+ strh r2, [r0]
+ subs r1, 0x8
+ adds r0, r3, r1
+ strh r2, [r0]
+ movs r0, 0
+ movs r1, 0x10
+ bl sub_807DB64
+_0807FB8E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FB94: .4byte gUnknown_08396FC4
+_0807FB98: .4byte 0x000006cc
+_0807FB9C: .4byte 0x000006d2
+_0807FBA0: .4byte 0x000006c2
+_0807FBA4: .4byte 0x00000724
+ thumb_func_end sub_807FB24
+
+ thumb_func_start sub_807FBA8
+sub_807FBA8: @ 807FBA8
+ push {r4,lr}
+ bl sub_807FB24
+ ldr r0, _0807FBD0
+ ldr r1, [r0]
+ ldr r2, _0807FBD4
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807FBC8
+ adds r4, r1, r2
+_0807FBBE:
+ bl sub_807FBD8
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807FBBE
+_0807FBC8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FBD0: .4byte gUnknown_08396FC4
+_0807FBD4: .4byte 0x000006d2
+ thumb_func_end sub_807FBA8
+
+ thumb_func_start sub_807FBD8
+sub_807FBD8: @ 807FBD8
+ push {r4,r5,lr}
+ bl sub_807FC9C
+ ldr r0, _0807FBF8
+ ldr r5, [r0]
+ ldr r0, _0807FBFC
+ adds r4, r5, r0
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _0807FC0C
+ cmp r0, 0x1
+ bgt _0807FC00
+ cmp r0, 0
+ beq _0807FC06
+ b _0807FC30
+ .align 2, 0
+_0807FBF8: .4byte gUnknown_08396FC4
+_0807FBFC: .4byte 0x000006cc
+_0807FC00:
+ cmp r0, 0x2
+ beq _0807FC18
+ b _0807FC30
+_0807FC06:
+ bl sub_807FD30
+ b _0807FC2A
+_0807FC0C:
+ movs r0, 0xC
+ movs r1, 0x8
+ movs r2, 0x8
+ bl sub_807DBA4
+ b _0807FC2A
+_0807FC18:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807FC30
+ ldr r0, _0807FC38
+ adds r1, r5, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_0807FC2A:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+_0807FC30:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FC38: .4byte 0x000006d2
+ thumb_func_end sub_807FBD8
+
+ thumb_func_start sub_807FC3C
+sub_807FC3C: @ 807FC3C
+ push {r4,lr}
+ bl sub_807FC9C
+ ldr r0, _0807FC5C
+ ldr r0, [r0]
+ ldr r1, _0807FC60
+ adds r4, r0, r1
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _0807FC76
+ cmp r0, 0x1
+ bgt _0807FC64
+ cmp r0, 0
+ beq _0807FC6A
+ b _0807FC8E
+ .align 2, 0
+_0807FC5C: .4byte gUnknown_08396FC4
+_0807FC60: .4byte 0x000006ce
+_0807FC64:
+ cmp r0, 0x2
+ beq _0807FC82
+ b _0807FC8E
+_0807FC6A:
+ movs r0, 0
+ movs r1, 0x10
+ movs r2, 0x1
+ bl sub_807DBA4
+ b _0807FC86
+_0807FC76:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807FC92
+ b _0807FC86
+_0807FC82:
+ bl sub_807FDE8
+_0807FC86:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _0807FC92
+_0807FC8E:
+ movs r0, 0
+ b _0807FC94
+_0807FC92:
+ movs r0, 0x1
+_0807FC94:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807FC3C
+
+ thumb_func_start sub_807FC9C
+sub_807FC9C: @ 807FC9C
+ push {r4,r5,lr}
+ ldr r0, _0807FD14
+ ldr r3, [r0]
+ ldr r0, _0807FD18
+ adds r2, r3, r0
+ ldrh r0, [r2]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r2]
+ ldr r1, _0807FD1C
+ adds r4, r1, 0
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bls _0807FCC8
+ movs r0, 0xE4
+ lsls r0, 3
+ adds r1, r3, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ strh r5, [r2]
+_0807FCC8:
+ ldr r1, _0807FD20
+ adds r2, r3, r1
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ ands r0, r4
+ cmp r0, 0x4
+ bls _0807FCE4
+ ldr r0, _0807FD24
+ adds r1, r3, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ strh r5, [r2]
+_0807FCE4:
+ ldr r0, _0807FD28
+ movs r2, 0xE4
+ lsls r2, 3
+ adds r1, r3, r2
+ ldrh r0, [r0]
+ ldrh r1, [r1]
+ subs r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ subs r2, 0x8
+ adds r1, r3, r2
+ strh r0, [r1]
+ ldr r1, _0807FD2C
+ adds r2, 0xA
+ adds r0, r3, r2
+ ldrh r0, [r0]
+ ldrh r1, [r1]
+ adds r0, r1
+ subs r2, 0x8
+ adds r1, r3, r2
+ strh r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FD14: .4byte gUnknown_08396FC4
+_0807FD18: .4byte 0x0000071c
+_0807FD1C: .4byte 0x0000ffff
+_0807FD20: .4byte 0x0000071e
+_0807FD24: .4byte 0x00000722
+_0807FD28: .4byte gSpriteCoordOffsetX
+_0807FD2C: .4byte gSpriteCoordOffsetY
+ thumb_func_end sub_807FC9C
+
+ thumb_func_start sub_807FD30
+sub_807FD30: @ 807FD30
+ push {r4-r6,lr}
+ sub sp, 0x8
+ ldr r0, _0807FD9C
+ ldr r0, [r0]
+ ldr r1, _0807FDA0
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807FDD6
+ ldr r0, _0807FDA4
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ mov r0, sp
+ bl LoadSpriteSheet
+ movs r6, 0
+_0807FD54:
+ adds r0, r6, 0
+ movs r1, 0x5
+ bl __udivsi3
+ adds r5, r0, 0
+ lsls r2, r5, 22
+ asrs r2, 16
+ ldr r0, _0807FDA8
+ movs r1, 0
+ movs r3, 0xFF
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _0807FDB0
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0807FDAC
+ adds r4, r0
+ adds r0, r6, 0
+ movs r1, 0x5
+ bl __umodsi3
+ strh r0, [r4, 0x2E]
+ strh r5, [r4, 0x30]
+ ldr r2, _0807FD9C
+ ldr r0, [r2]
+ lsls r1, r6, 2
+ movs r3, 0xA0
+ lsls r3, 1
+ adds r0, r3
+ adds r0, r1
+ str r4, [r0]
+ b _0807FDC2
+ .align 2, 0
+_0807FD9C: .4byte gUnknown_08396FC4
+_0807FDA0: .4byte 0x00000724
+_0807FDA4: .4byte gUnknown_0839ABE8
+_0807FDA8: .4byte gSpriteTemplate_839AC04
+_0807FDAC: .4byte gSprites
+_0807FDB0:
+ ldr r2, _0807FDE0
+ ldr r1, [r2]
+ lsls r0, r6, 2
+ movs r3, 0xA0
+ lsls r3, 1
+ adds r1, r3
+ adds r1, r0
+ movs r0, 0
+ str r0, [r1]
+_0807FDC2:
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, 0x13
+ bls _0807FD54
+ ldr r0, [r2]
+ ldr r1, _0807FDE4
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+_0807FDD6:
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FDE0: .4byte gUnknown_08396FC4
+_0807FDE4: .4byte 0x00000724
+ thumb_func_end sub_807FD30
+
+ thumb_func_start sub_807FDE8
+sub_807FDE8: @ 807FDE8
+ push {r4,r5,lr}
+ ldr r0, _0807FE30
+ ldr r1, [r0]
+ ldr r2, _0807FE34
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807FE2A
+ movs r4, 0
+ movs r0, 0xA0
+ lsls r0, 1
+ adds r5, r1, r0
+_0807FE00:
+ lsls r0, r4, 2
+ adds r0, r5, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0807FE0E
+ bl DestroySprite
+_0807FE0E:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x13
+ bls _0807FE00
+ ldr r0, _0807FE38
+ bl FreeSpriteTilesByTag
+ ldr r0, _0807FE30
+ ldr r0, [r0]
+ ldr r1, _0807FE34
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+_0807FE2A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FE30: .4byte gUnknown_08396FC4
+_0807FE34: .4byte 0x00000724
+_0807FE38: .4byte 0x00001203
+ thumb_func_end sub_807FDE8
+
+ thumb_func_start sub_807FE3C
+sub_807FE3C: @ 807FE3C
+ push {r4,lr}
+ adds r3, r0, 0
+ ldr r0, _0807FE8C
+ ldr r1, [r0]
+ ldr r2, _0807FE90
+ adds r0, r1, r2
+ ldrh r0, [r0]
+ strh r0, [r3, 0x26]
+ movs r4, 0xE3
+ lsls r4, 3
+ adds r2, r1, r4
+ ldrh r1, [r2]
+ adds r1, 0x20
+ movs r4, 0x2E
+ ldrsh r0, [r3, r4]
+ lsls r0, 6
+ adds r1, r0
+ strh r1, [r3, 0x20]
+ lsls r1, 16
+ ldr r0, _0807FE94
+ cmp r1, r0
+ ble _0807FE84
+ movs r0, 0xF0
+ lsls r0, 1
+ adds r1, r0, 0
+ ldrh r2, [r2]
+ adds r1, r2
+ movs r4, 0x2E
+ ldrsh r2, [r3, r4]
+ movs r0, 0x4
+ subs r0, r2
+ lsls r0, 6
+ subs r1, r0
+ ldr r0, _0807FE98
+ ands r1, r0
+ strh r1, [r3, 0x20]
+_0807FE84:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FE8C: .4byte gUnknown_08396FC4
+_0807FE90: .4byte 0x0000071a
+_0807FE94: .4byte 0x010f0000
+_0807FE98: .4byte 0x000001ff
+ thumb_func_end sub_807FE3C
+
+ thumb_func_start sub_807FE9C
+sub_807FE9C: @ 807FE9C
+ push {r4,lr}
+ ldr r0, _0807FF00
+ ldr r3, [r0]
+ ldr r0, _0807FF04
+ adds r1, r3, r0
+ movs r2, 0
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _0807FF08
+ adds r0, r3, r1
+ strb r2, [r0]
+ ldr r4, _0807FF0C
+ adds r0, r3, r4
+ strb r2, [r0]
+ ldr r0, _0807FF10
+ adds r1, r3, r0
+ movs r0, 0x14
+ strb r0, [r1]
+ ldr r1, _0807FF14
+ adds r0, r3, r1
+ ldrb r2, [r0]
+ cmp r2, 0
+ bne _0807FEF8
+ adds r4, 0x43
+ adds r1, r3, r4
+ adds r4, 0x4
+ adds r0, r3, r4
+ str r2, [r0]
+ str r2, [r1]
+ ldr r0, _0807FF18
+ adds r1, r3, r0
+ movs r0, 0x8
+ strh r0, [r1]
+ adds r4, 0xC
+ adds r0, r3, r4
+ strh r2, [r0]
+ ldrh r2, [r1]
+ cmp r2, 0x5F
+ bls _0807FEF0
+ movs r0, 0x80
+ subs r0, r2
+ strh r0, [r1]
+_0807FEF0:
+ movs r0, 0
+ movs r1, 0x10
+ bl sub_807DB64
+_0807FEF8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FF00: .4byte gUnknown_08396FC4
+_0807FF04: .4byte 0x000006cc
+_0807FF08: .4byte 0x000006d2
+_0807FF0C: .4byte 0x000006c1
+_0807FF10: .4byte 0x000006c2
+_0807FF14: .4byte 0x00000716
+_0807FF18: .4byte 0x00000712
+ thumb_func_end sub_807FE9C
+
+ thumb_func_start sub_807FF1C
+sub_807FF1C: @ 807FF1C
+ push {r4,lr}
+ bl sub_807FE9C
+ ldr r0, _0807FF44
+ ldr r1, [r0]
+ ldr r2, _0807FF48
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807FF3C
+ adds r4, r1, r2
+_0807FF32:
+ bl sub_807FF4C
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807FF32
+_0807FF3C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FF44: .4byte gUnknown_08396FC4
+_0807FF48: .4byte 0x000006d2
+ thumb_func_end sub_807FF1C
+
+ thumb_func_start sub_807FF4C
+sub_807FF4C: @ 807FF4C
+ push {r4,r5,lr}
+ bl sub_8080064
+ bl sub_808002C
+ ldr r0, _0807FF7C
+ ldr r5, [r0]
+ ldr r0, _0807FF80
+ adds r1, r5, r0
+ ldrh r0, [r1]
+ cmp r0, 0x5F
+ bls _0807FF68
+ movs r0, 0x20
+ strh r0, [r1]
+_0807FF68:
+ ldr r0, _0807FF84
+ adds r4, r5, r0
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _0807FF98
+ cmp r0, 0x1
+ bgt _0807FF88
+ cmp r0, 0
+ beq _0807FF8E
+ b _0807FFBC
+ .align 2, 0
+_0807FF7C: .4byte gUnknown_08396FC4
+_0807FF80: .4byte 0x00000712
+_0807FF84: .4byte 0x000006cc
+_0807FF88:
+ cmp r0, 0x2
+ beq _0807FFA4
+ b _0807FFBC
+_0807FF8E:
+ bl sub_8080178
+ bl sub_8080238
+ b _0807FFB6
+_0807FF98:
+ movs r0, 0x10
+ movs r1, 0
+ movs r2, 0
+ bl sub_807DBA4
+ b _0807FFB6
+_0807FFA4:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807FFBC
+ ldr r0, _0807FFC4
+ adds r1, r5, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_0807FFB6:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+_0807FFBC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807FFC4: .4byte 0x000006d2
+ thumb_func_end sub_807FF4C
+
+ thumb_func_start sub_807FFC8
+sub_807FFC8: @ 807FFC8
+ push {r4,lr}
+ bl sub_8080064
+ bl sub_808002C
+ ldr r0, _0807FFEC
+ ldr r0, [r0]
+ ldr r1, _0807FFF0
+ adds r4, r0, r1
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _08080006
+ cmp r0, 0x1
+ bgt _0807FFF4
+ cmp r0, 0
+ beq _0807FFFA
+ b _0808001E
+ .align 2, 0
+_0807FFEC: .4byte gUnknown_08396FC4
+_0807FFF0: .4byte 0x000006ce
+_0807FFF4:
+ cmp r0, 0x2
+ beq _08080012
+ b _0808001E
+_0807FFFA:
+ movs r0, 0
+ movs r1, 0x10
+ movs r2, 0
+ bl sub_807DBA4
+ b _08080016
+_08080006:
+ bl sub_807DBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _08080022
+ b _08080016
+_08080012:
+ bl sub_80800E4
+_08080016:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _08080022
+_0808001E:
+ movs r0, 0
+ b _08080024
+_08080022:
+ movs r0, 0x1
+_08080024:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807FFC8
+
+ thumb_func_start sub_808002C
+sub_808002C: @ 808002C
+ push {lr}
+ ldr r0, _08080058
+ ldr r2, [r0]
+ ldr r0, _0808005C
+ adds r3, r2, r0
+ ldrh r0, [r3]
+ adds r1, r0, 0x1
+ strh r1, [r3]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x4
+ bls _08080052
+ ldr r1, _08080060
+ adds r0, r2, r1
+ ldrh r1, [r0]
+ adds r1, 0x1
+ movs r2, 0
+ strh r1, [r0]
+ strh r2, [r3]
+_08080052:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080058: .4byte gUnknown_08396FC4
+_0808005C: .4byte 0x00000714
+_08080060: .4byte 0x00000712
+ thumb_func_end sub_808002C
+
+ thumb_func_start sub_8080064
+sub_8080064: @ 8080064
+ push {r4-r6,lr}
+ ldr r0, _080800C8
+ ldr r2, [r0]
+ ldr r0, _080800CC
+ adds r4, r2, r0
+ ldr r6, _080800D0
+ ldr r1, _080800D4
+ adds r5, r2, r1
+ ldrh r0, [r5]
+ lsls r0, 1
+ adds r0, r6
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ lsls r1, 2
+ ldr r0, [r4]
+ subs r0, r1
+ str r0, [r4]
+ movs r0, 0xE1
+ lsls r0, 3
+ adds r3, r2, r0
+ ldrh r0, [r5]
+ lsls r0, 1
+ adds r0, r6
+ movs r5, 0
+ ldrsh r1, [r0, r5]
+ ldr r0, [r3]
+ subs r0, r1
+ str r0, [r3]
+ ldr r1, _080800D8
+ ldr r0, [r4]
+ lsrs r0, 8
+ ldrh r1, [r1]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ ldr r4, _080800DC
+ adds r1, r2, r4
+ strh r0, [r1]
+ ldr r1, _080800E0
+ ldr r0, [r3]
+ lsrs r0, 8
+ ldrh r1, [r1]
+ adds r0, r1
+ movs r5, 0xE2
+ lsls r5, 3
+ adds r2, r5
+ strh r0, [r2]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080800C8: .4byte gUnknown_08396FC4
+_080800CC: .4byte 0x00000704
+_080800D0: .4byte gSineTable
+_080800D4: .4byte 0x00000712
+_080800D8: .4byte gSpriteCoordOffsetX
+_080800DC: .4byte 0x0000070e
+_080800E0: .4byte gSpriteCoordOffsetY
+ thumb_func_end sub_8080064
+
+ thumb_func_start sub_80800E4
+sub_80800E4: @ 80800E4
+ push {r4,r5,lr}
+ ldr r0, _08080168
+ ldr r1, [r0]
+ ldr r2, _0808016C
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08080126
+ movs r4, 0
+ movs r0, 0xC8
+ lsls r0, 1
+ adds r5, r1, r0
+_080800FC:
+ lsls r0, r4, 2
+ adds r0, r5, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0808010A
+ bl DestroySprite
+_0808010A:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x13
+ bls _080800FC
+ ldr r0, _08080168
+ ldr r0, [r0]
+ ldr r1, _0808016C
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, _08080170
+ bl FreeSpriteTilesByTag
+_08080126:
+ ldr r0, _08080168
+ ldr r1, [r0]
+ ldr r2, _08080174
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08080160
+ movs r4, 0
+ movs r0, 0xF0
+ lsls r0, 1
+ adds r5, r1, r0
+_0808013C:
+ lsls r0, r4, 2
+ adds r0, r5, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0808014A
+ bl DestroySprite
+_0808014A:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x4
+ bls _0808013C
+ ldr r0, _08080168
+ ldr r0, [r0]
+ ldr r1, _08080174
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+_08080160:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080168: .4byte gUnknown_08396FC4
+_0808016C: .4byte 0x00000716
+_08080170: .4byte 0x00001204
+_08080174: .4byte 0x00000717
+ thumb_func_end sub_80800E4
+
+ thumb_func_start sub_8080178
+sub_8080178: @ 8080178
+ push {r4-r7,lr}
+ sub sp, 0x4
+ ldr r0, _080801E8
+ ldr r0, [r0]
+ ldr r1, _080801EC
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08080226
+ ldr r0, _080801F0
+ bl LoadSpriteSheet
+ ldr r0, _080801F4
+ bl sub_807D8C0
+ movs r7, 0
+_08080198:
+ adds r0, r7, 0
+ movs r1, 0x5
+ bl __udivsi3
+ adds r6, r0, 0
+ lsls r2, r6, 22
+ asrs r2, 16
+ ldr r0, _080801F8
+ movs r1, 0
+ movs r3, 0x1
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _08080200
+ ldr r2, _080801E8
+ ldr r5, [r2]
+ lsls r0, r7, 2
+ movs r3, 0xC8
+ lsls r3, 1
+ adds r5, r3
+ adds r5, r0
+ lsls r4, r1, 4
+ adds r4, r1
+ lsls r4, 2
+ ldr r0, _080801FC
+ adds r4, r0
+ str r4, [r5]
+ adds r0, r7, 0
+ movs r1, 0x5
+ str r2, [sp]
+ bl __umodsi3
+ strh r0, [r4, 0x2E]
+ ldr r0, [r5]
+ strh r6, [r0, 0x30]
+ ldr r2, [sp]
+ b _08080212
+ .align 2, 0
+_080801E8: .4byte gUnknown_08396FC4
+_080801EC: .4byte 0x00000716
+_080801F0: .4byte gUnknown_0839AC54
+_080801F4: .4byte gUnknown_08397128
+_080801F8: .4byte gSpriteTemplate_839AC3C
+_080801FC: .4byte gSprites
+_08080200:
+ ldr r2, _08080230
+ ldr r1, [r2]
+ lsls r0, r7, 2
+ movs r3, 0xC8
+ lsls r3, 1
+ adds r1, r3
+ adds r1, r0
+ movs r0, 0
+ str r0, [r1]
+_08080212:
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ cmp r7, 0x13
+ bls _08080198
+ ldr r0, [r2]
+ ldr r1, _08080234
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+_08080226:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080230: .4byte gUnknown_08396FC4
+_08080234: .4byte 0x00000716
+ thumb_func_end sub_8080178
+
+ thumb_func_start sub_8080238
+sub_8080238: @ 8080238
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r4, _080802E0
+ ldr r0, [r4]
+ ldr r1, _080802E4
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08080324
+ movs r7, 0
+ mov r9, r4
+ movs r2, 0
+ mov r10, r2
+_08080258:
+ lsls r0, r7, 1
+ mov r8, r0
+ adds r6, r0, r7
+ lsls r5, r6, 4
+ adds r1, r5, 0
+ adds r1, 0x18
+ lsls r1, 16
+ asrs r1, 16
+ ldr r0, _080802E8
+ movs r2, 0xD0
+ movs r3, 0x1
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080802FC
+ mov r2, r9
+ ldr r4, [r2]
+ lsls r0, r7, 2
+ movs r2, 0xF0
+ lsls r2, 1
+ adds r4, r2
+ adds r4, r0
+ lsls r2, r1, 4
+ adds r2, r1
+ lsls r2, 2
+ ldr r0, _080802EC
+ adds r2, r0
+ str r2, [r4]
+ ldrb r1, [r2, 0x3]
+ movs r0, 0x3F
+ ands r0, r1
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2, 0x3]
+ ldr r1, [r4]
+ adds r0, r6, r5
+ strh r0, [r1, 0x30]
+ ldr r1, [r4]
+ movs r0, 0x8
+ strh r0, [r1, 0x2E]
+ ldr r0, [r4]
+ mov r1, r10
+ strh r1, [r0, 0x32]
+ ldr r1, [r4]
+ ldr r0, _080802F0
+ strh r0, [r1, 0x36]
+ ldr r1, [r4]
+ ldr r0, _080802F4
+ add r0, r8
+ ldrh r0, [r0]
+ strh r0, [r1, 0x34]
+ ldr r0, [r4]
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldr r0, [r4]
+ movs r1, 0
+ movs r2, 0x2
+ movs r3, 0
+ bl CalcCenterToCornerVec
+ ldr r1, [r4]
+ ldr r0, _080802F8
+ str r0, [r1, 0x1C]
+ b _0808030E
+ .align 2, 0
+_080802E0: .4byte gUnknown_08396FC4
+_080802E4: .4byte 0x00000717
+_080802E8: .4byte gSpriteTemplate_839AC3C
+_080802EC: .4byte gSprites
+_080802F0: .4byte 0x00006730
+_080802F4: .4byte gUnknown_0839AC5C
+_080802F8: .4byte sub_8080398
+_080802FC:
+ mov r2, r9
+ ldr r0, [r2]
+ lsls r1, r7, 2
+ movs r2, 0xF0
+ lsls r2, 1
+ adds r0, r2
+ adds r0, r1
+ mov r1, r10
+ str r1, [r0]
+_0808030E:
+ mov r2, r9
+ ldr r0, [r2]
+ ldr r1, _08080334
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ cmp r7, 0x4
+ bls _08080258
+_08080324:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080334: .4byte 0x00000717
+ thumb_func_end sub_8080238
+
+ thumb_func_start sub_8080338
+sub_8080338: @ 8080338
+ push {r4,lr}
+ adds r3, r0, 0
+ ldr r0, _08080388
+ ldr r1, [r0]
+ movs r2, 0xE2
+ lsls r2, 3
+ adds r0, r1, r2
+ ldrh r0, [r0]
+ strh r0, [r3, 0x26]
+ ldr r4, _0808038C
+ adds r2, r1, r4
+ ldrh r1, [r2]
+ adds r1, 0x20
+ movs r4, 0x2E
+ ldrsh r0, [r3, r4]
+ lsls r0, 6
+ adds r1, r0
+ strh r1, [r3, 0x20]
+ lsls r1, 16
+ ldr r0, _08080390
+ cmp r1, r0
+ ble _08080380
+ movs r0, 0xF0
+ lsls r0, 1
+ adds r1, r0, 0
+ ldrh r2, [r2]
+ adds r1, r2
+ movs r4, 0x2E
+ ldrsh r2, [r3, r4]
+ movs r0, 0x4
+ subs r0, r2
+ lsls r0, 6
+ subs r1, r0
+ ldr r0, _08080394
+ ands r1, r0
+ strh r1, [r3, 0x20]
+_08080380:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080388: .4byte gUnknown_08396FC4
+_0808038C: .4byte 0x0000070e
+_08080390: .4byte 0x010f0000
+_08080394: .4byte 0x000001ff
+ thumb_func_end sub_8080338
+
+ thumb_func_start sub_8080398
+sub_8080398: @ 8080398
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x34]
+ subs r0, 0x1
+ strh r0, [r2, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080803B2
+ ldr r0, _080803B8
+ str r0, [r2, 0x1C]
+_080803B2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080803B8: .4byte sub_80803BC
+ thumb_func_end sub_8080398
+
+ thumb_func_start sub_80803BC
+sub_80803BC: @ 80803BC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x22]
+ subs r0, 0x1
+ strh r0, [r5, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x30
+ negs r1, r1
+ cmp r0, r1
+ bge _080803DA
+ movs r0, 0xD0
+ strh r0, [r5, 0x22]
+ movs r0, 0x4
+ strh r0, [r5, 0x2E]
+_080803DA:
+ movs r0, 0x2E
+ ldrsh r4, [r5, r0]
+ ldr r3, _0808042C
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ lsls r0, r1, 1
+ adds r0, r3
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ adds r2, r4, 0
+ muls r2, r0
+ adds r1, 0x40
+ lsls r1, 1
+ adds r1, r3
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ muls r0, r4
+ lsrs r2, 8
+ strh r2, [r5, 0x24]
+ lsrs r0, 8
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x30]
+ adds r0, 0xA
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x1
+ strh r0, [r5, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _08080426
+ movs r0, 0
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+_08080426:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808042C: .4byte gSineTable
+ thumb_func_end sub_80803BC
+
+ thumb_func_start sub_8080430
+sub_8080430: @ 8080430
+ ldr r0, _08080450
+ ldr r1, [r0]
+ ldr r0, _08080454
+ adds r2, r1, r0
+ movs r0, 0
+ strh r0, [r2]
+ ldr r0, _08080458
+ adds r2, r1, r0
+ movs r0, 0x3
+ strb r0, [r2]
+ ldr r0, _0808045C
+ adds r1, r0
+ movs r0, 0x14
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_08080450: .4byte gUnknown_08396FC4
+_08080454: .4byte 0x000006cc
+_08080458: .4byte 0x000006c1
+_0808045C: .4byte 0x000006c2
+ thumb_func_end sub_8080430
+
+ thumb_func_start sub_8080460
+sub_8080460: @ 8080460
+ push {lr}
+ bl sub_8080430
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080460
+
+ thumb_func_start nullsub_56
+nullsub_56: @ 808046C
+ bx lr
+ thumb_func_end nullsub_56
+
+ thumb_func_start sub_8080470
+sub_8080470: @ 8080470
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_8080470
+
+ thumb_func_start sub_8080474
+sub_8080474: @ 8080474
+ push {r4,r5,lr}
+ bl sub_807F49C
+ ldr r0, _080804B4
+ ldr r4, [r0]
+ ldr r1, _080804B8
+ adds r0, r4, r1
+ ldrb r5, [r0]
+ cmp r5, 0
+ bne _080804AC
+ ldr r0, _080804BC
+ bl LoadSpriteSheet
+ movs r2, 0xE5
+ lsls r2, 3
+ adds r0, r4, r2
+ strh r5, [r0]
+ ldr r0, _080804C0
+ ldrb r1, [r0]
+ subs r2, 0x2
+ adds r0, r4, r2
+ strh r1, [r0]
+ ldr r1, _080804C4
+ adds r0, r4, r1
+ strh r5, [r0]
+ adds r2, 0x6
+ adds r0, r4, r2
+ strh r5, [r0]
+_080804AC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080804B4: .4byte gUnknown_08396FC4
+_080804B8: .4byte 0x0000072e
+_080804BC: .4byte gUnknown_0839AC70
+_080804C0: .4byte gUnknown_0839AC68
+_080804C4: .4byte 0x0000072a
+ thumb_func_end sub_8080474
+
+ thumb_func_start sub_80804C8
+sub_80804C8: @ 80804C8
+ push {r4,lr}
+ bl sub_8080474
+ ldr r0, _080804F0
+ ldr r1, [r0]
+ ldr r2, _080804F4
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080804E8
+ adds r4, r1, r2
+_080804DE:
+ bl sub_80804F8
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _080804DE
+_080804E8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080804F0: .4byte gUnknown_08396FC4
+_080804F4: .4byte 0x000006d2
+ thumb_func_end sub_80804C8
+
+ thumb_func_start sub_80804F8
+sub_80804F8: @ 80804F8
+ push {r4-r7,lr}
+ bl sub_807F52C
+ ldr r0, _08080558
+ ldr r5, [r0]
+ ldr r0, _0808055C
+ adds r4, r5, r0
+ ldrh r0, [r4]
+ adds r0, 0x1
+ movs r6, 0
+ strh r0, [r4]
+ ldr r1, _08080560
+ adds r7, r1, 0
+ ldr r2, _08080564
+ movs r1, 0xE5
+ lsls r1, 3
+ adds r3, r5, r1
+ ldrh r1, [r3]
+ adds r1, r2
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r1, [r1]
+ cmp r0, r1
+ bls _08080550
+ strh r6, [r4]
+ ldrh r0, [r3]
+ adds r0, 0x1
+ strh r0, [r3]
+ ands r0, r7
+ cmp r0, 0x7
+ bls _08080538
+ strh r6, [r3]
+_08080538:
+ ldr r0, _08080568
+ adds r4, r5, r0
+ ldrh r0, [r4]
+ bl sub_8080588
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ ands r0, r7
+ cmp r0, 0xC
+ bls _08080550
+ strh r6, [r4]
+_08080550:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080558: .4byte gUnknown_08396FC4
+_0808055C: .4byte 0x00000726
+_08080560: .4byte 0x0000ffff
+_08080564: .4byte gUnknown_0839AC68
+_08080568: .4byte 0x0000072a
+ thumb_func_end sub_80804F8
+
+ thumb_func_start sub_808056C
+sub_808056C: @ 808056C
+ push {lr}
+ bl sub_807F5EC
+ lsls r0, 24
+ cmp r0, 0
+ beq _0808057C
+ movs r0, 0x1
+ b _08080582
+_0808057C:
+ bl sub_8080610
+ movs r0, 0
+_08080582:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_808056C
+
+ thumb_func_start sub_8080588
+sub_8080588: @ 8080588
+ push {r4,lr}
+ lsls r0, 16
+ ldr r1, _080805F8
+ lsrs r0, 14
+ adds r3, r0, r1
+ adds r1, 0x2
+ adds r0, r1
+ ldr r1, _080805FC
+ ldrh r2, [r0]
+ ldrh r0, [r1]
+ subs r2, r0
+ ldr r0, _08080600
+ movs r4, 0
+ ldrsh r1, [r3, r4]
+ lsls r2, 16
+ asrs r2, 16
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080805F0
+ ldr r0, _08080604
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+ adds r3, r1, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r2, 0x2
+ orrs r0, r2
+ strb r0, [r3]
+ movs r0, 0
+ strh r0, [r1, 0x2E]
+ strh r0, [r1, 0x30]
+ strh r0, [r1, 0x32]
+ ldr r0, _08080608
+ ldr r1, [r0]
+ ldr r0, _0808060C
+ adds r1, r0
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+_080805F0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080805F8: .4byte gUnknown_0839AC78
+_080805FC: .4byte gSpriteCoordOffsetY
+_08080600: .4byte gSpriteTemplate_839ACBC
+_08080604: .4byte gSprites
+_08080608: .4byte gUnknown_08396FC4
+_0808060C: .4byte 0x0000072c
+ thumb_func_end sub_8080588
+
+ thumb_func_start sub_8080610
+sub_8080610: @ 8080610
+ push {r4,r5,lr}
+ movs r4, 0
+ ldr r5, _08080648
+_08080616:
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r2, r0, 2
+ adds r0, r5, 0
+ adds r0, 0x14
+ adds r0, r2, r0
+ ldr r1, [r0]
+ ldr r0, _0808064C
+ cmp r1, r0
+ bne _08080630
+ adds r0, r2, r5
+ bl DestroySprite
+_08080630:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x3F
+ bls _08080616
+ ldr r0, _08080650
+ bl FreeSpriteTilesByTag
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080648: .4byte gSprites
+_0808064C: .4byte gSpriteTemplate_839ACBC
+_08080650: .4byte 0x00001205
+ thumb_func_end sub_8080610
+
+ thumb_func_start unc_0807DAB4
+unc_0807DAB4: @ 8080654
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x2E]
+ movs r2, 0
+ adds r0, 0x2
+ strh r0, [r1, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _08080694
+ strh r2, [r1, 0x2E]
+ movs r3, 0x30
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _08080686
+ ldrh r0, [r1, 0x24]
+ adds r0, 0x1
+ strh r0, [r1, 0x24]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _08080694
+ movs r0, 0x1
+ strh r0, [r1, 0x30]
+ b _08080694
+_08080686:
+ ldrh r0, [r1, 0x24]
+ subs r0, 0x1
+ strh r0, [r1, 0x24]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _08080694
+ strh r2, [r1, 0x30]
+_08080694:
+ ldrh r0, [r1, 0x22]
+ subs r0, 0x3
+ strh r0, [r1, 0x22]
+ ldrh r0, [r1, 0x32]
+ adds r0, 0x1
+ strh r0, [r1, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x77
+ ble _080806AE
+ adds r0, r1, 0
+ bl DestroySprite
+_080806AE:
+ pop {r0}
+ bx r0
+ thumb_func_end unc_0807DAB4
+
+ thumb_func_start sub_80806B4
+sub_80806B4: @ 80806B4
+ push {r4,r5,lr}
+ ldr r4, _080806D4
+ adds r4, 0x2E
+ ldrb r5, [r4]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8080764
+ strb r0, [r4]
+ ldrb r0, [r4]
+ adds r1, r5, 0
+ bl sub_8080854
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080806D4: .4byte gSaveBlock1
+ thumb_func_end sub_80806B4
+
+ thumb_func_start sav1_get_weather_probably
+sav1_get_weather_probably: @ 80806D8
+ ldr r0, _080806E0
+ adds r0, 0x2E
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080806E0: .4byte gSaveBlock1
+ thumb_func_end sav1_get_weather_probably
+
+ thumb_func_start sub_80806E4
+sub_80806E4: @ 80806E4
+ push {r4,r5,lr}
+ ldr r4, _08080704
+ adds r4, 0x2E
+ ldrb r5, [r4]
+ ldr r0, _08080708
+ ldrb r0, [r0, 0x16]
+ bl sub_8080764
+ strb r0, [r4]
+ ldrb r0, [r4]
+ adds r1, r5, 0
+ bl sub_8080854
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080704: .4byte gSaveBlock1
+_08080708: .4byte gMapHeader
+ thumb_func_end sub_80806E4
+
+ thumb_func_start sub_808070C
+sub_808070C: @ 808070C
+ push {lr}
+ bl sub_80806B4
+ bl sav1_get_weather_probably
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_807C91C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_808070C
+
+ thumb_func_start sub_8080724
+sub_8080724: @ 8080724
+ push {lr}
+ bl sub_80806B4
+ bl sav1_get_weather_probably
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_807C988
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080724
+
+ thumb_func_start sub_808073C
+sub_808073C: @ 808073C
+ push {lr}
+ bl sav1_get_weather_probably
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_807C91C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_808073C
+
+ thumb_func_start sub_8080750
+sub_8080750: @ 8080750
+ push {lr}
+ bl sav1_get_weather_probably
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_807C988
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080750
+
+ thumb_func_start sub_8080764
+sub_8080764: @ 8080764
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x15
+ bhi _0808082C
+ lsls r0, 2
+ ldr r1, _08080778
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08080778: .4byte _0808077C
+ .align 2, 0
+_0808077C:
+ .4byte _0808082C
+ .4byte _080807D4
+ .4byte _080807D8
+ .4byte _080807DC
+ .4byte _080807E0
+ .4byte _080807E4
+ .4byte _080807E8
+ .4byte _080807EC
+ .4byte _080807F0
+ .4byte _080807F4
+ .4byte _080807F8
+ .4byte _080807FC
+ .4byte _08080800
+ .4byte _08080804
+ .4byte _08080808
+ .4byte _0808082C
+ .4byte _0808082C
+ .4byte _0808082C
+ .4byte _0808082C
+ .4byte _0808082C
+ .4byte _0808080C
+ .4byte _08080814
+_080807D4:
+ movs r0, 0x1
+ b _0808082E
+_080807D8:
+ movs r0, 0x2
+ b _0808082E
+_080807DC:
+ movs r0, 0x3
+ b _0808082E
+_080807E0:
+ movs r0, 0x4
+ b _0808082E
+_080807E4:
+ movs r0, 0x5
+ b _0808082E
+_080807E8:
+ movs r0, 0x6
+ b _0808082E
+_080807EC:
+ movs r0, 0x7
+ b _0808082E
+_080807F0:
+ movs r0, 0x8
+ b _0808082E
+_080807F4:
+ movs r0, 0x9
+ b _0808082E
+_080807F8:
+ movs r0, 0xA
+ b _0808082E
+_080807FC:
+ movs r0, 0xB
+ b _0808082E
+_08080800:
+ movs r0, 0xC
+ b _0808082E
+_08080804:
+ movs r0, 0xD
+ b _0808082E
+_08080808:
+ movs r0, 0xE
+ b _0808082E
+_0808080C:
+ ldr r1, _08080810
+ b _08080816
+ .align 2, 0
+_08080810: .4byte gUnknown_0839ACD4
+_08080814:
+ ldr r1, _08080824
+_08080816:
+ ldr r0, _08080828
+ adds r0, 0x2F
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ b _0808082E
+ .align 2, 0
+_08080824: .4byte gUnknown_0839ACD8
+_08080828: .4byte gSaveBlock1
+_0808082C:
+ movs r0, 0
+_0808082E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8080764
+
+ thumb_func_start sub_8080834
+sub_8080834: @ 8080834
+ lsls r0, 16
+ ldr r2, _08080850
+ adds r2, 0x2F
+ lsrs r0, 16
+ ldrb r1, [r2]
+ adds r0, r1
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ lsrs r1, 16
+ strb r1, [r2]
+ bx lr
+ .align 2, 0
+_08080850: .4byte gSaveBlock1
+ thumb_func_end sub_8080834
+
+ thumb_func_start sub_8080854
+sub_8080854: @ 8080854
+ push {lr}
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r2, r0, 24
+ cmp r0, r1
+ beq _0808086E
+ cmp r2, 0x3
+ beq _08080868
+ cmp r2, 0x5
+ bne _0808086E
+_08080868:
+ movs r0, 0x28
+ bl sav12_xor_increment
+_0808086E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080854
+
+ thumb_func_start palette_bg_faded_fill_black
+palette_bg_faded_fill_black: @ 8080874
+ push {lr}
+ sub sp, 0x4
+ ldr r0, _0808088C
+ str r0, [sp]
+ ldr r1, _08080890
+ ldr r2, _08080894
+ mov r0, sp
+ bl CpuFastSet
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808088C: .4byte 0x7fff7fff
+_08080890: .4byte gPlttBufferFaded
+_08080894: .4byte 0x01000100
+ thumb_func_end palette_bg_faded_fill_black
+
+ thumb_func_start palette_bg_faded_fill_white
+palette_bg_faded_fill_white: @ 8080898
+ push {lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ ldr r1, _080808B0
+ ldr r2, _080808B4
+ mov r0, sp
+ bl CpuFastSet
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080808B0: .4byte gPlttBufferFaded
+_080808B4: .4byte 0x01000100
+ thumb_func_end palette_bg_faded_fill_white
+
+ thumb_func_start pal_fill_for_maplights
+pal_fill_for_maplights: @ 80808B8
+ push {r4,lr}
+ bl get_map_light_from_warp0
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl sav1_map_get_light_level
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl fade_type_for_given_maplight_pair
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _080808E2
+ cmp r0, 0x1
+ beq _080808F0
+ b _080808FC
+_080808E2:
+ movs r0, 0
+ movs r1, 0
+ bl fade_screen
+ bl palette_bg_faded_fill_white
+ b _080808FC
+_080808F0:
+ movs r0, 0x2
+ movs r1, 0
+ bl fade_screen
+ bl palette_bg_faded_fill_black
+_080808FC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end pal_fill_for_maplights
+
+ thumb_func_start pal_fill_black
+pal_fill_black: @ 8080904
+ push {lr}
+ movs r0, 0
+ movs r1, 0
+ bl fade_screen
+ bl palette_bg_faded_fill_white
+ pop {r0}
+ bx r0
+ thumb_func_end pal_fill_black
+
+ thumb_func_start sub_8080918
+sub_8080918: @ 8080918
+ push {r4,lr}
+ bl sav1_map_get_light_level
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl warp1_get_mapheader
+ ldrb r1, [r0, 0x17]
+ adds r0, r4, 0
+ bl sub_810CDB8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _0808093E
+ cmp r0, 0x1
+ beq _08080948
+ b _08080950
+_0808093E:
+ movs r0, 0x1
+ movs r1, 0
+ bl fade_screen
+ b _08080950
+_08080948:
+ movs r0, 0x3
+ movs r1, 0
+ bl fade_screen
+_08080950:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080918
+
+ thumb_func_start sub_8080958
+sub_8080958: @ 8080958
+ push {lr}
+ lsls r0, 24
+ movs r1, 0
+ cmp r0, 0
+ bne _08080964
+ movs r1, 0x1
+_08080964:
+ adds r0, r1, 0
+ bl sub_8059B88
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080958
+
+ thumb_func_start task0A_asap_script_env_2_enable_and_set_ctx_running
+task0A_asap_script_env_2_enable_and_set_ctx_running: @ 8080970
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8080E70
+ cmp r0, 0x1
+ bne _08080988
+ adds r0, r4, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+_08080988:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end task0A_asap_script_env_2_enable_and_set_ctx_running
+
+ thumb_func_start sub_8080990
+sub_8080990: @ 8080990
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053E90
+ bl pal_fill_black
+ ldr r0, _080809AC
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080809AC: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running
+ thumb_func_end sub_8080990
+
+ thumb_func_start sub_80809B0
+sub_80809B0: @ 80809B0
+ push {lr}
+ bl ScriptContext2_Enable
+ bl pal_fill_black
+ ldr r0, _080809C8
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080809C8: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running
+ thumb_func_end sub_80809B0
+
+ thumb_func_start task_mpl_807DD60
+task_mpl_807DD60: @ 80809CC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r2, _080809F0
+ adds r4, r0, r2
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08080A06
+ cmp r0, 0x1
+ bgt _080809F4
+ cmp r0, 0
+ beq _080809FA
+ b _08080A36
+ .align 2, 0
+_080809F0: .4byte gTasks
+_080809F4:
+ cmp r0, 0x2
+ beq _08080A24
+ b _08080A36
+_080809FA:
+ bl sub_8083664
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xA]
+ b _08080A1C
+_08080A06:
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0x1
+ beq _08080A36
+ bl pal_fill_for_maplights
+_08080A1C:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08080A36
+_08080A24:
+ bl sub_8080E70
+ cmp r0, 0x1
+ bne _08080A36
+ bl ScriptContext2_Disable
+ adds r0, r5, 0
+ bl DestroyTask
+_08080A36:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end task_mpl_807DD60
+
+ thumb_func_start sub_8080A3C
+sub_8080A3C: @ 8080A3C
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053E90
+ bl palette_bg_faded_fill_white
+ ldr r0, _08080A58
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080A58: .4byte task_mpl_807DD60
+ thumb_func_end sub_8080A3C
+
+ thumb_func_start sub_8080A5C
+sub_8080A5C: @ 8080A5C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08080A80
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08080A90
+ cmp r0, 0x1
+ bgt _08080A84
+ cmp r0, 0
+ beq _08080A8A
+ b _08080ABC
+ .align 2, 0
+_08080A80: .4byte gTasks
+_08080A84:
+ cmp r0, 0x2
+ beq _08080AA6
+ b _08080ABC
+_08080A8A:
+ bl sub_80084A4
+ b _08080A9E
+_08080A90:
+ bl sub_8007ECC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08080ABC
+ bl pal_fill_for_maplights
+_08080A9E:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08080ABC
+_08080AA6:
+ bl sub_8080E70
+ cmp r0, 0x1
+ bne _08080ABC
+ bl sub_8007B14
+ bl ScriptContext2_Disable
+ adds r0, r5, 0
+ bl DestroyTask
+_08080ABC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080A5C
+
+ thumb_func_start sub_8080AC4
+sub_8080AC4: @ 8080AC4
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053E90
+ bl palette_bg_faded_fill_white
+ ldr r0, _08080AE0
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080AE0: .4byte sub_8080A5C
+ thumb_func_end sub_8080AC4
+
+ thumb_func_start sub_8080AE4
+sub_8080AE4: @ 8080AE4
+ push {r4,lr}
+ sub sp, 0x4
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8056EAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08080B1C
+ ldr r1, _08080B18
+ b _08080B2E
+ .align 2, 0
+_08080B18: .4byte sub_8080B9C
+_08080B1C:
+ adds r0, r4, 0
+ bl sub_8056F08
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _08080B40
+ cmp r0, 0x1
+ bne _08080B2E
+ ldr r1, _08080B44
+_08080B2E:
+ adds r0, r1, 0
+ movs r1, 0xA
+ bl CreateTask
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080B40: .4byte task_map_chg_seq_0807E2CC
+_08080B44: .4byte task_map_chg_seq_0807E20C
+ thumb_func_end sub_8080AE4
+
+ thumb_func_start mapldr_default
+mapldr_default: @ 8080B48
+ push {lr}
+ bl sub_8053E90
+ bl pal_fill_for_maplights
+ bl sub_8080AE4
+ bl ScriptContext2_Enable
+ pop {r0}
+ bx r0
+ thumb_func_end mapldr_default
+
+ thumb_func_start sub_8080B60
+sub_8080B60: @ 8080B60
+ push {lr}
+ bl sub_8053E90
+ bl pal_fill_black
+ bl sub_8080AE4
+ bl ScriptContext2_Enable
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080B60
+
+ thumb_func_start sub_8080B78
+sub_8080B78: @ 8080B78
+ push {lr}
+ bl sub_8053E90
+ bl pal_fill_for_maplights
+ movs r0, 0x2E
+ bl PlaySE
+ ldr r0, _08080B98
+ movs r1, 0xA
+ bl CreateTask
+ bl ScriptContext2_Enable
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080B98: .4byte task_map_chg_seq_0807E2CC
+ thumb_func_end sub_8080B78
+
+ thumb_func_start sub_8080B9C
+sub_8080B9C: @ 8080B9C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _08080BC8
+ adds r5, r0, r1
+ adds r6, r5, 0
+ adds r6, 0xC
+ adds r7, r5, 0
+ adds r7, 0xE
+ movs r2, 0x8
+ ldrsh r0, [r5, r2]
+ adds r2, r1, 0
+ cmp r0, 0x4
+ bhi _08080CAE
+ lsls r0, 2
+ ldr r1, _08080BCC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08080BC8: .4byte gTasks
+_08080BCC: .4byte _08080BD0
+ .align 2, 0
+_08080BD0:
+ .4byte _08080BE4
+ .4byte _08080C08
+ .4byte _08080C40
+ .4byte _08080C84
+ .4byte _08080CA4
+_08080BE4:
+ movs r0, 0
+ bl sub_8080958
+ bl player_bitmagic
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl PlayerGetDestCoords
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ movs r2, 0
+ ldrsh r1, [r7, r2]
+ bl sub_80586B4
+ movs r0, 0x1
+ strh r0, [r5, 0x8]
+ b _08080CAE
+_08080C08:
+ bl sub_8080E70
+ cmp r0, 0
+ beq _08080CAE
+ movs r0, 0x1
+ bl sub_8080958
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0
+ bl GetFieldObjectIdByLocalIdAndMap
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08080C3C
+ adds r0, r1
+ movs r1, 0x8
+ bl FieldObjectSetSpecialAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x8]
+ b _08080CAE
+ .align 2, 0
+_08080C3C: .4byte gMapObjects
+_08080C40:
+ bl walkrun_is_standing_still
+ lsls r0, 24
+ cmp r0, 0
+ beq _08080CAE
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ movs r2, 0
+ ldrsh r1, [r7, r2]
+ bl sub_805870C
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0xA]
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0
+ bl GetFieldObjectIdByLocalIdAndMap
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08080C80
+ adds r0, r1
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ movs r0, 0x3
+ strh r0, [r5, 0x8]
+ b _08080CAE
+ .align 2, 0
+_08080C80: .4byte gMapObjects
+_08080C84:
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ blt _08080C9A
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0x1
+ beq _08080CAE
+_08080C9A:
+ bl sub_806451C
+ movs r0, 0x4
+ strh r0, [r5, 0x8]
+ b _08080CAE
+_08080CA4:
+ bl ScriptContext2_Disable
+ adds r0, r4, 0
+ bl DestroyTask
+_08080CAE:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080B9C
+
+ thumb_func_start task_map_chg_seq_0807E20C
+task_map_chg_seq_0807E20C: @ 8080CB4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _08080CE0
+ adds r5, r0, r1
+ adds r6, r5, 0
+ adds r6, 0xC
+ adds r7, r5, 0
+ adds r7, 0xE
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _08080D06
+ cmp r0, 0x1
+ bgt _08080CE4
+ cmp r0, 0
+ beq _08080CEE
+ b _08080D6E
+ .align 2, 0
+_08080CE0: .4byte gTasks
+_08080CE4:
+ cmp r0, 0x2
+ beq _08080D50
+ cmp r0, 0x3
+ beq _08080D64
+ b _08080D6E
+_08080CEE:
+ movs r0, 0
+ bl sub_8080958
+ bl player_bitmagic
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl PlayerGetDestCoords
+ movs r0, 0x1
+ strh r0, [r5, 0x8]
+ b _08080D6E
+_08080D06:
+ bl sub_8080E70
+ cmp r0, 0
+ beq _08080D6E
+ movs r0, 0x1
+ bl sub_8080958
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0
+ bl GetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08080D4C
+ adds r4, r0
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetGoSpeed0AnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x8]
+ b _08080D6E
+ .align 2, 0
+_08080D4C: .4byte gMapObjects
+_08080D50:
+ bl walkrun_is_standing_still
+ lsls r0, 24
+ cmp r0, 0
+ beq _08080D6E
+ bl sub_806451C
+ movs r0, 0x3
+ strh r0, [r5, 0x8]
+ b _08080D6E
+_08080D64:
+ bl ScriptContext2_Disable
+ adds r0, r4, 0
+ bl DestroyTask
+_08080D6E:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end task_map_chg_seq_0807E20C
+
+ thumb_func_start task_map_chg_seq_0807E2CC
+task_map_chg_seq_0807E2CC: @ 8080D74
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _08080D94
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _08080D98
+ cmp r0, 0x1
+ beq _08080DA8
+ b _08080DBE
+ .align 2, 0
+_08080D94: .4byte gTasks
+_08080D98:
+ bl player_bitmagic
+ bl ScriptContext2_Enable
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08080DBE
+_08080DA8:
+ bl sub_8080E70
+ cmp r0, 0
+ beq _08080DBE
+ bl sub_806451C
+ bl ScriptContext2_Disable
+ adds r0, r5, 0
+ bl DestroyTask
+_08080DBE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end task_map_chg_seq_0807E2CC
+
+ thumb_func_start sub_8080DC4
+sub_8080DC4: @ 8080DC4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8080E70
+ cmp r0, 0x1
+ bne _08080DE0
+ adds r0, r4, 0
+ bl DestroyTask
+ ldr r0, _08080DE8
+ movs r1, 0x50
+ bl CreateTask
+_08080DE0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080DE8: .4byte sub_80712B4
+ thumb_func_end sub_8080DC4
+
+ thumb_func_start atk17_seteffectuser
+atk17_seteffectuser: @ 8080DEC
+ push {lr}
+ bl pal_fill_black
+ ldr r0, _08080E00
+ bl CreateStartMenuTask
+ bl ScriptContext2_Enable
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080E00: .4byte sub_8080DC4
+ thumb_func_end atk17_seteffectuser
+
+ thumb_func_start task_mpl_807E3C8
+task_mpl_807E3C8: @ 8080E04
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8080E70
+ cmp r0, 0x1
+ bne _08080E20
+ bl ScriptContext2_Disable
+ adds r0, r4, 0
+ bl DestroyTask
+ bl sub_8064E2C
+_08080E20:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end task_mpl_807E3C8
+
+ thumb_func_start sub_8080E28
+sub_8080E28: @ 8080E28
+ push {lr}
+ bl ScriptContext2_Enable
+ bl pal_fill_black
+ ldr r0, _08080E40
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080E40: .4byte task_mpl_807E3C8
+ thumb_func_end sub_8080E28
+
+ thumb_func_start sub_8080E44
+sub_8080E44: @ 8080E44
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053E90
+ bl pal_fill_black
+ ldr r0, _08080E60
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080E60: .4byte task_mpl_807E3C8
+ thumb_func_end sub_8080E44
+
+ thumb_func_start sub_8080E64
+sub_8080E64: @ 8080E64
+ ldr r0, _08080E6C
+ ldrb r0, [r0, 0x7]
+ lsrs r0, 7
+ bx lr
+ .align 2, 0
+_08080E6C: .4byte gPaletteFade
+ thumb_func_end sub_8080E64
+
+ thumb_func_start sub_8080E70
+sub_8080E70: @ 8080E70
+ push {lr}
+ bl sub_807D770
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08080E82
+ movs r0, 0
+ b _08080E84
+_08080E82:
+ movs r0, 0x1
+_08080E84:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8080E70
+
+ thumb_func_start sub_8080E88
+sub_8080E88: @ 8080E88
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053FF8
+ bl sub_8080918
+ bl play_some_sound
+ movs r0, 0x9
+ bl PlaySE
+ ldr r0, _08080EB4
+ ldr r1, _08080EB8
+ str r1, [r0]
+ ldr r0, _08080EBC
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080EB4: .4byte gUnknown_0300485C
+_08080EB8: .4byte mapldr_default
+_08080EBC: .4byte task0A_fade_n_map_maybe
+ thumb_func_end sub_8080E88
+
+ thumb_func_start sp13E_warp_to_last_warp
+sp13E_warp_to_last_warp: @ 8080EC0
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053FF8
+ bl sub_8080918
+ bl play_some_sound
+ ldr r0, _08080EE4
+ ldr r1, _08080EE8
+ str r1, [r0]
+ ldr r0, _08080EEC
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080EE4: .4byte gUnknown_0300485C
+_08080EE8: .4byte mapldr_default
+_08080EEC: .4byte task0A_fade_n_map_maybe
+ thumb_func_end sp13E_warp_to_last_warp
+
+ thumb_func_start sub_8080EF0
+sub_8080EF0: @ 8080EF0
+ push {lr}
+ bl ScriptContext2_Enable
+ ldr r0, _08080F08
+ ldr r1, _08080F0C
+ str r1, [r0]
+ ldr r0, _08080F10
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080F08: .4byte gUnknown_0300485C
+_08080F0C: .4byte mapldr_default
+_08080F10: .4byte sub_808115C
+ thumb_func_end sub_8080EF0
+
+ thumb_func_start sp13F_fall_to_last_warp
+sp13F_fall_to_last_warp: @ 8080F14
+ push {lr}
+ bl sp13E_warp_to_last_warp
+ ldr r1, _08080F24
+ ldr r0, _08080F28
+ str r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080F24: .4byte gUnknown_0300485C
+_08080F28: .4byte sub_8086748
+ thumb_func_end sp13F_fall_to_last_warp
+
+ thumb_func_start sub_8080F2C
+sub_8080F2C: @ 8080F2C
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl ScriptContext2_Enable
+ adds r0, r4, 0
+ movs r1, 0xA
+ bl sub_8086A2C
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080F2C
+
+ thumb_func_start sub_8080F48
+sub_8080F48: @ 8080F48
+ push {lr}
+ bl ScriptContext2_Enable
+ movs r0, 0xA
+ bl sub_80871B8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080F48
+
+ thumb_func_start sub_8080F58
+sub_8080F58: @ 8080F58
+ push {lr}
+ bl ScriptContext2_Enable
+ movs r0, 0xA
+ bl sub_8087654
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8080F58
+
+ thumb_func_start sub_8080F68
+sub_8080F68: @ 8080F68
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053FF8
+ bl sub_8080918
+ movs r0, 0x2D
+ bl PlaySE
+ ldr r0, _08080F90
+ movs r1, 0xA
+ bl CreateTask
+ ldr r1, _08080F94
+ ldr r0, _08080F98
+ str r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080F90: .4byte task0A_fade_n_map_maybe
+_08080F94: .4byte gUnknown_0300485C
+_08080F98: .4byte sub_8080B78
+ thumb_func_end sub_8080F68
+
+ thumb_func_start sub_8080F9C
+sub_8080F9C: @ 8080F9C
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8080918
+ ldr r0, _08080FB8
+ movs r1, 0xA
+ bl CreateTask
+ ldr r1, _08080FBC
+ ldr r0, _08080FC0
+ str r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08080FB8: .4byte task0A_fade_n_map_maybe
+_08080FBC: .4byte gUnknown_0300485C
+_08080FC0: .4byte sub_80C791C
+ thumb_func_end sub_8080F9C
+
+ thumb_func_start sub_8080FC4
+sub_8080FC4: @ 8080FC4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08080FE8
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08080FF8
+ cmp r0, 0x1
+ bgt _08080FEC
+ cmp r0, 0
+ beq _08080FF2
+ b _08081022
+ .align 2, 0
+_08080FE8: .4byte gTasks
+_08080FEC:
+ cmp r0, 0x2
+ beq _08081012
+ b _08081022
+_08080FF2:
+ bl ScriptContext2_Enable
+ b _0808100A
+_08080FF8:
+ bl sub_8080E64
+ cmp r0, 0
+ bne _08081022
+ bl sub_8054034
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081022
+_0808100A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08081022
+_08081012:
+ bl warp_in
+ ldr r0, _08081028
+ bl SetMainCallback2
+ adds r0, r5, 0
+ bl DestroyTask
+_08081022:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081028: .4byte sub_8054588
+ thumb_func_end sub_8080FC4
+
+ thumb_func_start sub_808102C
+sub_808102C: @ 808102C
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053FF8
+ bl sub_8080918
+ movs r0, 0x9
+ bl PlaySE
+ ldr r0, _0808104C
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808104C: .4byte sub_8080FC4
+ thumb_func_end sub_808102C
+
+ thumb_func_start sub_8081050
+sub_8081050: @ 8081050
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08081074
+ adds r4, r0, r1
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08081096
+ cmp r0, 0x1
+ bgt _08081078
+ cmp r0, 0
+ beq _0808107E
+ b _080810CC
+ .align 2, 0
+_08081074: .4byte gUnknown_03004B28
+_08081078:
+ cmp r0, 0x2
+ beq _080810B4
+ b _080810CC
+_0808107E:
+ bl ClearLinkCallback_2
+ movs r0, 0x1
+ movs r1, 0
+ bl fade_screen
+ bl sub_8053FF8
+ movs r0, 0x9
+ bl PlaySE
+ b _080810AC
+_08081096:
+ bl sub_8080E64
+ cmp r0, 0
+ bne _080810CC
+ bl sub_8054034
+ lsls r0, 24
+ cmp r0, 0
+ beq _080810CC
+ bl sub_800832C
+_080810AC:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _080810CC
+_080810B4:
+ ldr r0, _080810D4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080810CC
+ bl warp_in
+ ldr r0, _080810D8
+ bl SetMainCallback2
+ adds r0, r5, 0
+ bl DestroyTask
+_080810CC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080810D4: .4byte gReceivedRemoteLinkPlayers
+_080810D8: .4byte CB2_LoadMap
+ thumb_func_end sub_8081050
+
+ thumb_func_start sub_80810DC
+sub_80810DC: @ 80810DC
+ push {lr}
+ ldr r0, _080810EC
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080810EC: .4byte sub_8081050
+ thumb_func_end sub_80810DC
+
+ thumb_func_start task0A_fade_n_map_maybe
+task0A_fade_n_map_maybe: @ 80810F0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08081114
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08081128
+ cmp r0, 0x1
+ bgt _08081118
+ cmp r0, 0
+ beq _0808111E
+ b _08081152
+ .align 2, 0
+_08081114: .4byte gTasks
+_08081118:
+ cmp r0, 0x2
+ beq _08081142
+ b _08081152
+_0808111E:
+ bl player_bitmagic
+ bl ScriptContext2_Enable
+ b _0808113A
+_08081128:
+ bl sub_8080E64
+ cmp r0, 0
+ bne _08081152
+ bl sub_8054034
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081152
+_0808113A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08081152
+_08081142:
+ bl warp_in
+ ldr r0, _08081158
+ bl SetMainCallback2
+ adds r0, r5, 0
+ bl DestroyTask
+_08081152:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081158: .4byte CB2_LoadMap
+ thumb_func_end task0A_fade_n_map_maybe
+
+ thumb_func_start sub_808115C
+sub_808115C: @ 808115C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0808118C
+ adds r5, r1, r0
+ adds r4, r5, 0
+ adds r4, 0xC
+ adds r6, r5, 0
+ adds r6, 0xE
+ movs r2, 0x8
+ ldrsh r1, [r5, r2]
+ adds r2, r0, 0
+ cmp r1, 0x4
+ bls _08081180
+ b _080812BC
+_08081180:
+ lsls r0, r1, 2
+ ldr r1, _08081190
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0808118C: .4byte gTasks
+_08081190: .4byte _08081194
+ .align 2, 0
+_08081194:
+ .4byte _080811A8
+ .4byte _080811E4
+ .4byte _08081240
+ .4byte _0808128C
+ .4byte _080812A8
+_080811A8:
+ bl player_bitmagic
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl PlayerGetDestCoords
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r2, 0
+ ldrsh r1, [r6, r2]
+ subs r1, 0x1
+ bl sub_8058790
+ lsls r0, 16
+ lsrs r0, 16
+ bl PlaySE
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r2, 0
+ ldrsh r1, [r6, r2]
+ subs r1, 0x1
+ bl task_overworld_door_add_if_role_69_for_opening_door_at
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0xA]
+ movs r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080812BC
+_080811E4:
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ blt _080811FA
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0x1
+ beq _080812BC
+_080811FA:
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0
+ bl GetFieldObjectIdByLocalIdAndMap
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, _0808123C
+ adds r0, r4
+ bl FieldObjectClearAnimIfSpecialAnimActive
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0
+ bl GetFieldObjectIdByLocalIdAndMap
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x9
+ bl FieldObjectSetSpecialAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x8]
+ b _080812BC
+ .align 2, 0
+_0808123C: .4byte gMapObjects
+_08081240:
+ bl walkrun_is_standing_still
+ lsls r0, 24
+ cmp r0, 0
+ beq _080812BC
+ movs r2, 0
+ ldrsh r0, [r4, r2]
+ movs r2, 0
+ ldrsh r1, [r6, r2]
+ subs r1, 0x1
+ bl sub_805870C
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0xA]
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0
+ bl GetFieldObjectIdByLocalIdAndMap
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08081288
+ adds r0, r1
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ movs r0, 0
+ bl sub_8080958
+ movs r0, 0x3
+ strh r0, [r5, 0x8]
+ b _080812BC
+ .align 2, 0
+_08081288: .4byte gMapObjects
+_0808128C:
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ blt _080812A2
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0x1
+ beq _080812BC
+_080812A2:
+ movs r0, 0x4
+ strh r0, [r5, 0x8]
+ b _080812BC
+_080812A8:
+ bl sub_8053FF8
+ bl sub_8080918
+ bl play_some_sound
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ ldr r0, _080812C4
+ str r0, [r5]
+_080812BC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080812C4: .4byte task0A_fade_n_map_maybe
+ thumb_func_end sub_808115C
+
+ thumb_func_start sub_80812C8
+sub_80812C8: @ 80812C8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080812EC
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08081300
+ cmp r0, 0x1
+ bgt _080812F0
+ cmp r0, 0
+ beq _080812F6
+ b _0808132A
+ .align 2, 0
+_080812EC: .4byte gTasks
+_080812F0:
+ cmp r0, 0x2
+ beq _0808131A
+ b _0808132A
+_080812F6:
+ bl player_bitmagic
+ bl ScriptContext2_Enable
+ b _08081312
+_08081300:
+ bl sub_8080E64
+ cmp r0, 0
+ bne _0808132A
+ bl sub_8054034
+ lsls r0, 24
+ cmp r0, 0
+ beq _0808132A
+_08081312:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0808132A
+_0808131A:
+ bl warp_in
+ ldr r0, _08081330
+ bl SetMainCallback2
+ adds r0, r5, 0
+ bl DestroyTask
+_0808132A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081330: .4byte sub_8054534
+ thumb_func_end sub_80812C8
+
+ thumb_func_start sub_8081334
+sub_8081334: @ 8081334
+ push {lr}
+ bl ScriptContext2_Enable
+ bl sub_8053FF8
+ bl sub_8080918
+ bl play_some_sound
+ movs r0, 0x9
+ bl PlaySE
+ ldr r0, _08081360
+ ldr r1, _08081364
+ str r1, [r0]
+ ldr r0, _08081368
+ movs r1, 0xA
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081360: .4byte gUnknown_0300485C
+_08081364: .4byte sub_8080B60
+_08081368: .4byte sub_80812C8
+ thumb_func_end sub_8081334
+
+ thumb_func_start sub_808136C
+sub_808136C: @ 808136C
+ push {lr}
+ cmp r1, 0xA0
+ bhi _08081394
+ cmp r2, 0
+ bge _08081378
+ movs r2, 0
+_08081378:
+ cmp r2, 0xFF
+ ble _0808137E
+ movs r2, 0xFF
+_0808137E:
+ cmp r3, 0
+ bge _08081384
+ movs r3, 0
+_08081384:
+ cmp r3, 0xFF
+ ble _0808138A
+ movs r3, 0xFF
+_0808138A:
+ lsls r1, 1
+ adds r1, r0
+ lsls r0, r2, 8
+ orrs r0, r3
+ strh r0, [r1]
+_08081394:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_808136C
+
+ thumb_func_start sub_8081398
+sub_8081398: @ 8081398
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ str r0, [sp]
+ mov r10, r1
+ mov r9, r2
+ adds r6, r3, 0
+ mov r8, r6
+ movs r7, 0
+ cmp r6, 0
+ blt _08081414
+_080813B4:
+ mov r0, r9
+ subs r1, r0, r7
+ mov r0, r10
+ subs r4, r0, r6
+ adds r5, r0, r6
+ ldr r0, [sp]
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl sub_808136C
+ mov r0, r9
+ adds r1, r0, r7
+ ldr r0, [sp]
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl sub_808136C
+ mov r0, r9
+ subs r1, r0, r6
+ mov r0, r10
+ subs r4, r0, r7
+ adds r5, r0, r7
+ ldr r0, [sp]
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl sub_808136C
+ mov r0, r9
+ adds r1, r0, r6
+ ldr r0, [sp]
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl sub_808136C
+ mov r1, r8
+ adds r1, 0x1
+ lsls r0, r7, 1
+ subs r1, r0
+ mov r8, r1
+ adds r7, 0x1
+ cmp r1, 0
+ bge _08081410
+ subs r1, r6, 0x1
+ lsls r0, r1, 1
+ add r8, r0
+ adds r6, r1, 0
+_08081410:
+ cmp r6, r7
+ bge _080813B4
+_08081414:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8081398
+
+ thumb_func_start sub_8081424
+sub_8081424: @ 8081424
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08081448
+ adds r4, r0, r1
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08081480
+ cmp r0, 0x1
+ bgt _0808144C
+ cmp r0, 0
+ beq _08081452
+ b _080814E2
+ .align 2, 0
+_08081448: .4byte gUnknown_03004B28
+_0808144C:
+ cmp r0, 0x2
+ beq _080814D8
+ b _080814E2
+_08081452:
+ ldr r0, _08081478
+ ldrb r1, [r0, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ ldr r1, _0808147C
+ adds r0, r1
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r5, 0x6
+ ldrsh r3, [r4, r5]
+ bl sub_8081398
+ movs r0, 0x1
+ strh r0, [r4]
+ b _080814E2
+ .align 2, 0
+_08081478: .4byte gUnknown_03004DC0
+_0808147C: .4byte gUnknown_03004DE0
+_08081480:
+ ldr r0, _080814C8
+ ldrb r1, [r0, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ ldr r1, _080814CC
+ adds r0, r1
+ movs r6, 0x2
+ ldrsh r1, [r4, r6]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r6, 0x6
+ ldrsh r3, [r4, r6]
+ bl sub_8081398
+ movs r0, 0
+ strh r0, [r4]
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r4, 0x6]
+ adds r0, r1
+ strh r0, [r4, 0x6]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x8
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ ble _080814E2
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x1
+ bne _080814D0
+ bl remove_some_task
+ movs r0, 0x2
+ strh r0, [r4]
+ b _080814E2
+ .align 2, 0
+_080814C8: .4byte gUnknown_03004DC0
+_080814CC: .4byte gUnknown_03004DE0
+_080814D0:
+ adds r0, r5, 0
+ bl DestroyTask
+ b _080814E2
+_080814D8:
+ bl dp12_8087EA4
+ adds r0, r5, 0
+ bl DestroyTask
+_080814E2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8081424
+
+ thumb_func_start sub_80814E8
+sub_80814E8: @ 80814E8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _0808150C
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081504
+ bl EnableBothScriptContexts
+ adds r0, r4, 0
+ bl DestroyTask
+_08081504:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808150C: .4byte sub_8081424
+ thumb_func_end sub_80814E8
+
+ thumb_func_start sub_8081510
+sub_8081510: @ 8081510
+ push {r4,lr}
+ ldr r4, _08081530
+ adds r0, r4, 0
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081528
+ adds r0, r4, 0
+ movs r1, 0x50
+ bl CreateTask
+_08081528:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081530: .4byte sub_80814E8
+ thumb_func_end sub_8081510
+
+ thumb_func_start sub_8081534
+sub_8081534: @ 8081534
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ mov r8, r0
+ mov r9, r1
+ adds r5, r2, 0
+ adds r4, r3, 0
+ ldr r6, [sp, 0x1C]
+ ldr r0, [sp, 0x20]
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _08081578
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _0808157C
+ adds r1, r0, r1
+ strh r5, [r1, 0x6]
+ strh r4, [r1, 0x8]
+ mov r0, r8
+ strh r0, [r1, 0x2]
+ mov r0, r9
+ strh r0, [r1, 0x4]
+ strh r6, [r1, 0xC]
+ cmp r5, r4
+ bge _08081580
+ strh r7, [r1, 0xA]
+ b _08081584
+ .align 2, 0
+_08081578: .4byte sub_8081424
+_0808157C: .4byte gUnknown_03004B28
+_08081580:
+ negs r0, r7
+ strh r0, [r1, 0xA]
+_08081584:
+ adds r0, r2, 0
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8081534
+
+ thumb_func_start sub_8081594
+sub_8081594: @ 8081594
+ push {r4,r5,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ bl sav1_get_flash_used_on_map
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ cmp r4, 0
+ bne _080815AE
+ movs r5, 0x1
+_080815AE:
+ ldr r1, _080815DC
+ lsls r0, 1
+ adds r0, r1
+ ldrh r2, [r0]
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r3, [r0]
+ str r5, [sp]
+ movs r0, 0x1
+ str r0, [sp, 0x4]
+ movs r0, 0x78
+ movs r1, 0x50
+ bl sub_8081534
+ bl sub_8081510
+ bl ScriptContext2_Enable
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080815DC: .4byte gUnknown_0839ACDC
+ thumb_func_end sub_8081594
+
+ thumb_func_start sub_80815E0
+sub_80815E0: @ 80815E0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _0808160E
+ ldr r4, _08081614
+ ldr r1, _08081618
+ lsls r0, 1
+ adds r0, r1
+ ldrh r3, [r0]
+ adds r0, r4, 0
+ movs r1, 0x78
+ movs r2, 0x50
+ bl sub_8081398
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r1, r4, r0
+ movs r2, 0xF0
+ lsls r2, 1
+ adds r0, r4, 0
+ bl CpuFastSet
+_0808160E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081614: .4byte gUnknown_03004DE0
+_08081618: .4byte gUnknown_0839ACDC
+ thumb_func_end sub_80815E0
+
+ thumb_func_start sub_808161C
+sub_808161C: @ 808161C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0808162A
+ movs r1, 0x1F
+ b _08081630
+_0808162A:
+ movs r0, 0xF8
+ lsls r0, 7
+ adds r1, r0, 0
+_08081630:
+ mov r0, sp
+ strh r1, [r0]
+ movs r5, 0
+ movs r4, 0xF0
+ lsls r4, 16
+_0808163A:
+ lsrs r1, r4, 16
+ mov r0, sp
+ movs r2, 0x2
+ bl LoadPalette
+ movs r0, 0x80
+ lsls r0, 9
+ adds r4, r0
+ adds r5, 0x1
+ cmp r5, 0xF
+ ble _0808163A
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_808161C
+
+ thumb_func_start sub_8081658
+sub_8081658: @ 8081658
+ push {lr}
+ lsls r0, 16
+ ldr r2, _08081678
+ ldrh r1, [r2]
+ lsls r1, 24
+ lsrs r3, r1, 24
+ ldrh r1, [r2]
+ lsrs r2, r1, 8
+ cmp r0, 0
+ beq _0808167C
+ cmp r3, 0
+ beq _08081686
+ subs r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ b _08081686
+ .align 2, 0
+_08081678: .4byte REG_BLDALPHA
+_0808167C:
+ cmp r2, 0xF
+ bhi _08081686
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+_08081686:
+ ldr r1, _0808169C
+ lsls r0, r2, 8
+ orrs r0, r3
+ strh r0, [r1]
+ cmp r3, 0
+ bne _080816A0
+ cmp r2, 0x10
+ bne _080816A0
+ movs r0, 0x1
+ b _080816A2
+ .align 2, 0
+_0808169C: .4byte REG_BLDALPHA
+_080816A0:
+ movs r0, 0
+_080816A2:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8081658
+
+ thumb_func_start sub_80816A8
+sub_80816A8: @ 80816A8
+ push {r4-r7,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080816D0
+ adds r7, r0, r1
+ movs r1, 0
+ ldrsh r0, [r7, r1]
+ cmp r0, 0x7
+ bls _080816C4
+ b _08081892
+_080816C4:
+ lsls r0, 2
+ ldr r1, _080816D4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080816D0: .4byte gUnknown_03004B28
+_080816D4: .4byte _080816D8
+ .align 2, 0
+_080816D8:
+ .4byte _080816F8
+ .4byte _08081790
+ .4byte _080817BC
+ .4byte _080817D8
+ .4byte _080817EE
+ .4byte _08081852
+ .4byte _08081818
+ .4byte _08081826
+_080816F8:
+ movs r2, 0x80
+ lsls r2, 19
+ ldrh r0, [r2]
+ strh r0, [r7, 0xC]
+ ldr r3, _0808176C
+ ldrh r0, [r3]
+ strh r0, [r7, 0xE]
+ ldr r6, _08081770
+ ldrh r0, [r6]
+ strh r0, [r7, 0x10]
+ ldr r5, _08081774
+ ldrh r0, [r5]
+ strh r0, [r7, 0x12]
+ ldr r4, _08081778
+ ldrh r0, [r4]
+ strh r0, [r7, 0x14]
+ ldrh r1, [r2]
+ ldr r0, _0808177C
+ ands r0, r1
+ strh r0, [r2]
+ ldr r1, _08081780
+ ldrh r0, [r3]
+ ldrh r1, [r1]
+ orrs r0, r1
+ strh r0, [r3]
+ ldr r2, _08081784
+ adds r0, r2, 0
+ strh r0, [r6]
+ movs r0, 0x3F
+ strh r0, [r5]
+ movs r0, 0x1E
+ strh r0, [r4]
+ ldr r4, _08081788
+ movs r0, 0x4
+ ldrsh r1, [r7, r0]
+ movs r0, 0x6
+ ldrsh r2, [r7, r0]
+ adds r0, r4, 0
+ movs r3, 0x1
+ bl sub_8081398
+ movs r2, 0xF0
+ lsls r2, 3
+ adds r1, r4, r2
+ movs r2, 0xF0
+ lsls r2, 1
+ adds r0, r4, 0
+ bl CpuFastSet
+ ldr r2, _0808178C
+ ldr r0, [r2]
+ ldr r1, [r2, 0x4]
+ ldr r2, [r2, 0x8]
+ bl sub_80895F8
+ movs r0, 0x1
+ strh r0, [r7]
+ b _08081892
+ .align 2, 0
+_0808176C: .4byte REG_BLDCNT
+_08081770: .4byte REG_BLDALPHA
+_08081774: .4byte REG_WININ
+_08081778: .4byte REG_WINOUT
+_0808177C: .4byte 0x0000bfff
+_08081780: .4byte gUnknown_081E29E8
+_08081784: .4byte 0x0000070c
+_08081788: .4byte gUnknown_03004DE0
+_0808178C: .4byte gUnknown_0839ACEC
+_08081790:
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuFillWindowRectWithBlankTile
+ ldrb r0, [r7, 0x2]
+ bl sub_808161C
+ movs r1, 0x4
+ ldrsh r0, [r7, r1]
+ movs r2, 0x6
+ ldrsh r1, [r7, r2]
+ movs r2, 0x1
+ str r2, [sp]
+ movs r4, 0x2
+ str r4, [sp, 0x4]
+ movs r3, 0xA0
+ bl sub_8081534
+ strh r4, [r7]
+ b _08081892
+_080817BC:
+ ldr r0, _080817D4
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081892
+ bl EnableBothScriptContexts
+ movs r0, 0x3
+ strh r0, [r7]
+ b _08081892
+ .align 2, 0
+_080817D4: .4byte sub_8081424
+_080817D8:
+ bl InstallCameraPanAheadCallback
+ movs r0, 0
+ bl SetCameraPanningCallback
+ movs r0, 0
+ strh r0, [r7, 0xA]
+ movs r0, 0x4
+ strh r0, [r7, 0x8]
+ strh r0, [r7]
+ b _08081892
+_080817EE:
+ ldrh r0, [r7, 0x8]
+ subs r0, 0x1
+ strh r0, [r7, 0x8]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08081892
+ movs r0, 0x4
+ strh r0, [r7, 0x8]
+ ldrh r0, [r7, 0xA]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r7, 0xA]
+ movs r1, 0x4
+ negs r1, r1
+ cmp r0, 0
+ beq _08081810
+ movs r1, 0x4
+_08081810:
+ movs r0, 0
+ bl SetCameraPanning
+ b _08081892
+_08081818:
+ bl InstallCameraPanAheadCallback
+ movs r0, 0x8
+ strh r0, [r7, 0x8]
+ movs r0, 0x7
+ strh r0, [r7]
+ b _08081892
+_08081826:
+ ldrh r0, [r7, 0x8]
+ subs r0, 0x1
+ strh r0, [r7, 0x8]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08081892
+ movs r0, 0x8
+ strh r0, [r7, 0x8]
+ ldrh r0, [r7, 0xA]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r7, 0xA]
+ ldrh r0, [r7, 0xA]
+ bl sub_8081658
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08081892
+ movs r0, 0x5
+ strh r0, [r7]
+ b _08081892
+_08081852:
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuZeroFillWindowRect
+ ldr r0, _0808189C
+ bl LoadFontDefaultPalette
+ ldr r1, _080818A0
+ movs r0, 0xFF
+ strh r0, [r1]
+ subs r1, 0x40
+ ldrh r0, [r7, 0xC]
+ strh r0, [r1]
+ adds r1, 0x50
+ ldrh r0, [r7, 0xE]
+ strh r0, [r1]
+ adds r1, 0x2
+ ldrh r0, [r7, 0x10]
+ strh r0, [r1]
+ subs r1, 0xA
+ ldrh r0, [r7, 0x12]
+ strh r0, [r1]
+ adds r1, 0x2
+ ldrh r0, [r7, 0x14]
+ strh r0, [r1]
+ bl EnableBothScriptContexts
+ adds r0, r4, 0
+ bl DestroyTask
+_08081892:
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808189C: .4byte gWindowConfig_81E6CE4
+_080818A0: .4byte REG_WIN0H
+ thumb_func_end sub_80816A8
+
+ thumb_func_start sub_80818A4
+sub_80818A4: @ 80818A4
+ push {lr}
+ ldr r0, _080818CC
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080818D0
+ adds r1, r0
+ ldr r0, _080818D4
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _080818D8
+ strh r0, [r1, 0x2]
+ movs r0, 0x68
+ b _080818F0
+ .align 2, 0
+_080818CC: .4byte sub_80816A8
+_080818D0: .4byte gUnknown_03004B28
+_080818D4: .4byte gScriptResult
+_080818D8:
+ cmp r0, 0x1
+ bne _080818E2
+ strh r0, [r1, 0x2]
+ movs r0, 0x68
+ b _080818F0
+_080818E2:
+ cmp r0, 0x2
+ bne _080818EA
+ movs r0, 0
+ b _080818EC
+_080818EA:
+ movs r0, 0x1
+_080818EC:
+ strh r0, [r1, 0x2]
+ movs r0, 0x78
+_080818F0:
+ strh r0, [r1, 0x4]
+ movs r0, 0x50
+ strh r0, [r1, 0x6]
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80818A4
+
+ thumb_func_start sub_80818FC
+sub_80818FC: @ 80818FC
+ push {lr}
+ ldr r0, _0808191C
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08081920
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r0, 0x6
+ strh r0, [r1, 0x8]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808191C: .4byte sub_80816A8
+_08081920: .4byte gTasks
+ thumb_func_end sub_80818FC
+
+ thumb_func_start sub_8081924
+sub_8081924: @ 8081924
+ push {lr}
+ bl sub_8054044
+ ldr r0, _08081938
+ movs r1, 0x50
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081938: .4byte task50_0807F0C8
+ thumb_func_end sub_8081924
+
+ thumb_func_start task50_0807F0C8
+task50_0807F0C8: @ 808193C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8054034
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08081958
+ adds r0, r4, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+_08081958:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end task50_0807F0C8
+
+ thumb_func_start task01_battle_start
+task01_battle_start: @ 8081960
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08081980
+ adds r4, r0, r1
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _08081984
+ cmp r0, 0x1
+ beq _0808199A
+ b _080819BA
+ .align 2, 0
+_08081980: .4byte gUnknown_03004B28
+_08081984:
+ bl c3_80A0DD8_is_running
+ cmp r0, 0
+ bne _080819BA
+ ldrb r0, [r4, 0x2]
+ bl sub_811AABC
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _080819BA
+_0808199A:
+ bl sub_811AAE8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080819BA
+ ldr r0, _080819C0
+ bl SetMainCallback2
+ bl prev_quest_postbuffer_cursor_backup_reset
+ bl overworld_poison_timer_set
+ adds r0, r5, 0
+ bl DestroyTask
+_080819BA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080819C0: .4byte sub_800E7C4
+ thumb_func_end task01_battle_start
+
+ thumb_func_start task_add_01_battle_start
+task_add_01_battle_start: @ 80819C4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 16
+ lsrs r5, 16
+ ldr r0, _080819F8
+ movs r1, 0x1
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080819FC
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r4, [r1, 0xA]
+ adds r0, r5, 0
+ bl current_map_music_set__default_for_battle
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080819F8: .4byte task01_battle_start
+_080819FC: .4byte gTasks
+ thumb_func_end task_add_01_battle_start
+
+ thumb_func_start sub_8081A00
+sub_8081A00: @ 8081A00
+ push {lr}
+ bl GetSafariZoneFlag
+ cmp r0, 0
+ beq _08081A10
+ bl sub_8081AA4
+ b _08081A14
+_08081A10:
+ bl sub_8081A18
+_08081A14:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8081A00
+
+ thumb_func_start sub_8081A18
+sub_8081A18: @ 8081A18
+ push {lr}
+ bl ScriptContext2_Enable
+ bl player_bitmagic
+ bl sub_80597F4
+ ldr r1, _08081A50
+ ldr r0, _08081A54
+ str r0, [r1, 0x8]
+ ldr r1, _08081A58
+ movs r0, 0
+ strh r0, [r1]
+ bl sub_8082034
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl task_add_01_battle_start
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x8
+ bl sav12_xor_increment
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081A50: .4byte gMain
+_08081A54: .4byte sub_8081C8C
+_08081A58: .4byte gUnknown_020239F8
+ thumb_func_end sub_8081A18
+
+ thumb_func_start sub_8081A5C
+sub_8081A5C: @ 8081A5C
+ push {lr}
+ bl ScriptContext2_Enable
+ bl player_bitmagic
+ bl sub_80597F4
+ ldr r1, _08081A98
+ ldr r0, _08081A9C
+ str r0, [r1, 0x8]
+ ldr r1, _08081AA0
+ movs r2, 0x80
+ lsls r2, 3
+ adds r0, r2, 0
+ strh r0, [r1]
+ bl sub_8082034
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl task_add_01_battle_start
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x8
+ bl sav12_xor_increment
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081A98: .4byte gMain
+_08081A9C: .4byte sub_8081C8C
+_08081AA0: .4byte gUnknown_020239F8
+ thumb_func_end sub_8081A5C
+
+ thumb_func_start sub_8081AA4
+sub_8081AA4: @ 8081AA4
+ push {lr}
+ bl ScriptContext2_Enable
+ bl player_bitmagic
+ bl sub_80597F4
+ ldr r1, _08081AD0
+ ldr r0, _08081AD4
+ str r0, [r1, 0x8]
+ ldr r1, _08081AD8
+ movs r0, 0x80
+ strh r0, [r1]
+ bl sub_8082034
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl task_add_01_battle_start
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081AD0: .4byte gMain
+_08081AD4: .4byte sub_80C824C
+_08081AD8: .4byte gUnknown_020239F8
+ thumb_func_end sub_8081AA4
+
+ thumb_func_start task_add_01_battle_start_with_music_and_stats
+task_add_01_battle_start_with_music_and_stats: @ 8081ADC
+ push {lr}
+ bl sub_8082080
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl task_add_01_battle_start
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x9
+ bl sav12_xor_increment
+ pop {r0}
+ bx r0
+ thumb_func_end task_add_01_battle_start_with_music_and_stats
+
+ thumb_func_start sub_8081AFC
+sub_8081AFC: @ 8081AFC
+ push {lr}
+ ldr r0, _08081B2C
+ movs r1, 0xC4
+ lsls r1, 1
+ movs r2, 0x5
+ bl CreateMaleMon
+ bl ScriptContext2_Enable
+ ldr r1, _08081B30
+ ldr r0, _08081B34
+ str r0, [r1, 0x8]
+ ldr r1, _08081B38
+ movs r2, 0x80
+ lsls r2, 2
+ adds r0, r2, 0
+ strh r0, [r1]
+ movs r0, 0x8
+ movs r1, 0
+ bl task_add_01_battle_start
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081B2C: .4byte gEnemyParty
+_08081B30: .4byte gMain
+_08081B34: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08081B38: .4byte gUnknown_020239F8
+ thumb_func_end sub_8081AFC
+
+ thumb_func_start sub_8081B3C
+sub_8081B3C: @ 8081B3C
+ push {lr}
+ bl ScriptContext2_Enable
+ ldr r1, _08081B6C
+ ldr r0, _08081B70
+ str r0, [r1, 0x8]
+ ldr r1, _08081B74
+ movs r0, 0
+ strh r0, [r1]
+ bl sub_8082034
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl task_add_01_battle_start
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x8
+ bl sav12_xor_increment
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081B6C: .4byte gMain
+_08081B70: .4byte sub_8081CEC
+_08081B74: .4byte gUnknown_020239F8
+ thumb_func_end sub_8081B3C
+
+ thumb_func_start sub_8081B78
+sub_8081B78: @ 8081B78
+ push {lr}
+ bl ScriptContext2_Enable
+ ldr r1, _08081BAC
+ ldr r0, _08081BB0
+ str r0, [r1, 0x8]
+ ldr r1, _08081BB4
+ movs r2, 0x80
+ lsls r2, 6
+ adds r0, r2, 0
+ strh r0, [r1]
+ bl sub_8082034
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl task_add_01_battle_start
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x8
+ bl sav12_xor_increment
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081BAC: .4byte gMain
+_08081BB0: .4byte sub_8081CEC
+_08081BB4: .4byte gUnknown_020239F8
+ thumb_func_end sub_8081B78
+
+ thumb_func_start sub_8081BB8
+sub_8081BB8: @ 8081BB8
+ push {lr}
+ bl ScriptContext2_Enable
+ ldr r1, _08081BE8
+ ldr r0, _08081BEC
+ str r0, [r1, 0x8]
+ ldr r1, _08081BF0
+ movs r2, 0x80
+ lsls r2, 6
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _08081BF4
+ movs r0, 0
+ bl task_add_01_battle_start
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x8
+ bl sav12_xor_increment
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081BE8: .4byte gMain
+_08081BEC: .4byte sub_8081CEC
+_08081BF0: .4byte gUnknown_020239F8
+_08081BF4: .4byte 0x000001cf
+ thumb_func_end sub_8081BB8
+
+ thumb_func_start sub_8081BF8
+sub_8081BF8: @ 8081BF8
+ push {lr}
+ bl ScriptContext2_Enable
+ ldr r1, _08081C20
+ ldr r0, _08081C24
+ str r0, [r1, 0x8]
+ ldr r1, _08081C28
+ movs r2, 0xC0
+ lsls r2, 6
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _08081C2C
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _08081C34
+ ldr r1, _08081C30
+ movs r0, 0xB
+ bl task_add_01_battle_start
+ b _08081C3C
+ .align 2, 0
+_08081C20: .4byte gMain
+_08081C24: .4byte sub_8081CEC
+_08081C28: .4byte gUnknown_020239F8
+_08081C2C: .4byte gGameVersion
+_08081C30: .4byte 0x000001cf
+_08081C34:
+ ldr r1, _08081C4C
+ movs r0, 0x6
+ bl task_add_01_battle_start
+_08081C3C:
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x8
+ bl sav12_xor_increment
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081C4C: .4byte 0x000001cf
+ thumb_func_end sub_8081BF8
+
+ thumb_func_start sub_8081C50
+sub_8081C50: @ 8081C50
+ push {lr}
+ bl ScriptContext2_Enable
+ ldr r1, _08081C80
+ ldr r0, _08081C84
+ str r0, [r1, 0x8]
+ ldr r1, _08081C88
+ movs r2, 0xC0
+ lsls r2, 7
+ adds r0, r2, 0
+ strh r0, [r1]
+ movs r1, 0xE7
+ lsls r1, 1
+ movs r0, 0xA
+ bl task_add_01_battle_start
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x8
+ bl sav12_xor_increment
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081C80: .4byte gMain
+_08081C84: .4byte sub_8081CEC
+_08081C88: .4byte gUnknown_020239F8
+ thumb_func_end sub_8081C50
+
+ thumb_func_start sub_8081C8C
+sub_8081C8C: @ 8081C8C
+ push {lr}
+ sub sp, 0x4
+ mov r1, sp
+ movs r0, 0
+ strh r0, [r1]
+ movs r1, 0xA0
+ lsls r1, 19
+ ldr r2, _08081CC0
+ mov r0, sp
+ bl CpuSet
+ movs r0, 0
+ movs r1, 0x80
+ bl ResetOamRange
+ ldr r0, _08081CC4
+ ldrb r0, [r0]
+ bl battle_exit_is_player_defeat
+ cmp r0, 0x1
+ bne _08081CCC
+ ldr r0, _08081CC8
+ bl SetMainCallback2
+ b _08081CD8
+ .align 2, 0
+_08081CC0: .4byte 0x01000100
+_08081CC4: .4byte gUnknown_02024D26
+_08081CC8: .4byte c2_whiteout
+_08081CCC:
+ ldr r0, _08081CE0
+ bl SetMainCallback2
+ ldr r1, _08081CE4
+ ldr r0, _08081CE8
+ str r0, [r1]
+_08081CD8:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081CE0: .4byte c2_exit_to_overworld_2_switch
+_08081CE4: .4byte gUnknown_0300485C
+_08081CE8: .4byte sub_8080E44
+ thumb_func_end sub_8081C8C
+
+ thumb_func_start sub_8081CEC
+sub_8081CEC: @ 8081CEC
+ push {lr}
+ sub sp, 0x4
+ mov r1, sp
+ movs r0, 0
+ strh r0, [r1]
+ movs r1, 0xA0
+ lsls r1, 19
+ ldr r2, _08081D20
+ mov r0, sp
+ bl CpuSet
+ movs r0, 0
+ movs r1, 0x80
+ bl ResetOamRange
+ ldr r0, _08081D24
+ ldrb r0, [r0]
+ bl battle_exit_is_player_defeat
+ cmp r0, 0x1
+ bne _08081D2C
+ ldr r0, _08081D28
+ bl SetMainCallback2
+ b _08081D32
+ .align 2, 0
+_08081D20: .4byte 0x01000100
+_08081D24: .4byte gUnknown_02024D26
+_08081D28: .4byte c2_whiteout
+_08081D2C:
+ ldr r0, _08081D38
+ bl SetMainCallback2
+_08081D32:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08081D38: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end sub_8081CEC
+
+ thumb_func_start sub_8081D3C
+sub_8081D3C: @ 8081D3C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 16
+ lsrs r5, r0, 16
+ lsls r0, r5, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl MetatileBehavior_IsTallGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081D72
+ movs r0, 0
+ b _08081E86
+_08081D72:
+ adds r0, r4, 0
+ bl MetatileBehavior_IsLongGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081D82
+ movs r0, 0x1
+ b _08081E86
+_08081D82:
+ adds r0, r4, 0
+ bl MetatileBehavior_IsSandOrDeepSand
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081E84
+ ldr r0, _08081DA4
+ ldrb r0, [r0, 0x17]
+ subs r0, 0x1
+ cmp r0, 0x8
+ bhi _08081E08
+ lsls r0, 2
+ ldr r1, _08081DA8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08081DA4: .4byte gMapHeader
+_08081DA8: .4byte _08081DAC
+ .align 2, 0
+_08081DAC:
+ .4byte _08081E08
+ .4byte _08081E08
+ .4byte _08081E08
+ .4byte _08081DD0
+ .4byte _08081DF4
+ .4byte _08081DF8
+ .4byte _08081E08
+ .4byte _08081DE0
+ .4byte _08081DE0
+_08081DD0:
+ lsls r0, r5, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_80574C4
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081DE4
+_08081DE0:
+ movs r0, 0x8
+ b _08081E86
+_08081DE4:
+ adds r0, r4, 0
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081E4C
+ movs r0, 0x7
+ b _08081E86
+_08081DF4:
+ movs r0, 0x3
+ b _08081E86
+_08081DF8:
+ lsls r0, r5, 24
+ lsrs r0, 24
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081E5E
+ b _08081E7A
+_08081E08:
+ lsls r0, r5, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8057568
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081E5E
+ adds r0, r4, 0
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081E4C
+ adds r0, r4, 0
+ bl sub_80574D8
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081E34
+ movs r0, 0x6
+ b _08081E86
+_08081E34:
+ movs r0, 0x8
+ bl TestPlayerAvatarFlags
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081E62
+ adds r0, r4, 0
+ bl sub_8057450
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081E50
+_08081E4C:
+ movs r0, 0x5
+ b _08081E86
+_08081E50:
+ adds r0, r4, 0
+ bl sub_8057434
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08081E62
+_08081E5E:
+ movs r0, 0x4
+ b _08081E86
+_08081E62:
+ ldr r0, _08081E80
+ ldrh r1, [r0, 0x4]
+ movs r0, 0xE0
+ lsls r0, 5
+ cmp r1, r0
+ beq _08081E84
+ bl sav1_get_weather_probably
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x8
+ beq _08081E84
+_08081E7A:
+ movs r0, 0x9
+ b _08081E86
+ .align 2, 0
+_08081E80: .4byte gSaveBlock1
+_08081E84:
+ movs r0, 0x2
+_08081E86:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8081D3C
+
+ thumb_func_start sub_8081E90
+sub_8081E90: @ 8081E90
+ push {r4,lr}
+ sub sp, 0x4
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 16
+ lsrs r4, r0, 16
+ bl sav1_get_flash_used_on_map
+ lsls r0, 24
+ cmp r0, 0
+ beq _08081EC0
+ movs r0, 0x2
+ b _08081EEA
+_08081EC0:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _08081EE8
+ ldr r0, _08081EE0
+ ldrb r0, [r0, 0x17]
+ cmp r0, 0x4
+ beq _08081EE4
+ cmp r0, 0x5
+ beq _08081EE8
+ movs r0, 0
+ b _08081EEA
+ .align 2, 0
+_08081EE0: .4byte gMapHeader
+_08081EE4:
+ movs r0, 0x1
+ b _08081EEA
+_08081EE8:
+ movs r0, 0x3
+_08081EEA:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8081E90
+
+ thumb_func_start sub_8081EF4
+sub_8081EF4: @ 8081EF4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r7, 0
+ movs r6, 0
+_08081EFE:
+ movs r0, 0x64
+ adds r1, r6, 0
+ muls r1, r0
+ ldr r0, _08081F50
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ adds r1, r0, 0
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r1, r0
+ beq _08081F42
+ cmp r1, 0
+ beq _08081F42
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _08081F42
+ adds r0, r4, 0
+ movs r1, 0x38
+ bl GetMonData
+ adds r0, r7, r0
+ lsls r0, 24
+ lsrs r7, r0, 24
+ subs r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ beq _08081F48
+_08081F42:
+ adds r6, 0x1
+ cmp r6, 0x5
+ ble _08081EFE
+_08081F48:
+ adds r0, r7, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08081F50: .4byte gPlayerParty
+ thumb_func_end sub_8081EF4
+
+ thumb_func_start reads_trainer_data_byte0
+reads_trainer_data_byte0: @ 8081F54
+ push {r4,r5,lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldr r5, _08081F88
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r2, r1, r5
+ adds r0, r2, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, r4
+ bcs _08081F74
+ adds r4, r0, 0
+_08081F74:
+ movs r3, 0
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ beq _08081FBC
+ cmp r0, 0x1
+ bgt _08081F8C
+ cmp r0, 0
+ beq _08081F96
+ b _0808202C
+ .align 2, 0
+_08081F88: .4byte gTrainers
+_08081F8C:
+ cmp r0, 0x2
+ beq _08081FE2
+ cmp r0, 0x3
+ beq _08082008
+ b _0808202C
+_08081F96:
+ adds r0, r5, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldr r1, [r0]
+ movs r2, 0
+ cmp r3, r4
+ bcs _0808202C
+_08081FA4:
+ lsls r0, r2, 3
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ adds r0, r3, r0
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, r4
+ bcc _08081FA4
+ b _0808202C
+_08081FBC:
+ adds r0, r5, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldr r1, [r0]
+ movs r2, 0
+ cmp r3, r4
+ bcs _0808202C
+_08081FCA:
+ lsls r0, r2, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ adds r0, r3, r0
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, r4
+ bcc _08081FCA
+ b _0808202C
+_08081FE2:
+ adds r0, r5, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldr r1, [r0]
+ movs r2, 0
+ cmp r3, r4
+ bcs _0808202C
+_08081FF0:
+ lsls r0, r2, 3
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ adds r0, r3, r0
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, r4
+ bcc _08081FF0
+ b _0808202C
+_08082008:
+ adds r0, r5, 0
+ adds r0, 0x24
+ adds r0, r1, r0
+ ldr r1, [r0]
+ movs r2, 0
+ cmp r3, r4
+ bcs _0808202C
+_08082016:
+ lsls r0, r2, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ adds r0, r3, r0
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, r4
+ bcc _08082016
+_0808202C:
+ adds r0, r3, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end reads_trainer_data_byte0
+
+ thumb_func_start sub_8082034
+sub_8082034: @ 8082034
+ push {r4,r5,lr}
+ bl sub_8081E90
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _08082064
+ movs r1, 0x38
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x1
+ bl sub_8081EF4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bcc _0808206C
+ ldr r0, _08082068
+ lsls r1, r5, 1
+ adds r0, 0x1
+ b _08082070
+ .align 2, 0
+_08082064: .4byte gEnemyParty
+_08082068: .4byte gUnknown_0839ACF8
+_0808206C:
+ ldr r0, _0808207C
+ lsls r1, r5, 1
+_08082070:
+ adds r1, r0
+ ldrb r0, [r1]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808207C: .4byte gUnknown_0839ACF8
+ thumb_func_end sub_8082034
+
+ thumb_func_start sub_8082080
+sub_8082080: @ 8082080
+ push {r4-r6,lr}
+ ldr r4, _080820AC
+ ldrh r1, [r4]
+ movs r0, 0x80
+ lsls r0, 3
+ cmp r1, r0
+ beq _080820E4
+ ldr r1, _080820B0
+ ldrh r2, [r4]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0x1]
+ cmp r1, 0x18
+ bne _080820E0
+ adds r1, r2, 0
+ ldr r0, _080820B4
+ cmp r1, r0
+ bne _080820B8
+ movs r0, 0xC
+ b _0808212C
+ .align 2, 0
+_080820AC: .4byte word_202FF5E
+_080820B0: .4byte gTrainers
+_080820B4: .4byte 0x00000105
+_080820B8:
+ movs r0, 0x83
+ lsls r0, 1
+ cmp r1, r0
+ bne _080820C4
+ movs r0, 0xD
+ b _0808212C
+_080820C4:
+ ldr r0, _080820D0
+ cmp r1, r0
+ bne _080820D4
+ movs r0, 0xE
+ b _0808212C
+ .align 2, 0
+_080820D0: .4byte 0x00000107
+_080820D4:
+ movs r0, 0x84
+ lsls r0, 1
+ cmp r1, r0
+ bne _080820E4
+ movs r0, 0xF
+ b _0808212C
+_080820E0:
+ cmp r1, 0x20
+ bne _080820E8
+_080820E4:
+ movs r0, 0x10
+ b _0808212C
+_080820E8:
+ ldrb r0, [r0, 0x18]
+ movs r5, 0x1
+ cmp r0, 0x1
+ bne _080820F2
+ movs r5, 0x2
+_080820F2:
+ bl sub_8081E90
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrh r0, [r4]
+ adds r1, r5, 0
+ bl reads_trainer_data_byte0
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ bl sub_8081EF4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bcc _08082124
+ ldr r0, _08082120
+ lsls r1, r6, 1
+ adds r0, 0x1
+ b _08082128
+ .align 2, 0
+_08082120: .4byte gUnknown_0839AD00
+_08082124:
+ ldr r0, _08082134
+ lsls r1, r6, 1
+_08082128:
+ adds r1, r0
+ ldrb r0, [r1]
+_0808212C:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082134: .4byte gUnknown_0839AD00
+ thumb_func_end sub_8082080
+
+ thumb_func_start sub_8082138
+sub_8082138: @ 8082138
+ push {r4,lr}
+ ldr r0, _0808215C
+ movs r1, 0x38
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x1
+ bl sub_8081EF4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bcc _08082160
+ movs r0, 0x3
+ b _08082162
+ .align 2, 0
+_0808215C: .4byte gEnemyParty
+_08082160:
+ movs r0, 0x4
+_08082162:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082138
+
+ thumb_func_start sub_8082168
+sub_8082168: @ 8082168
+ push {lr}
+ ldr r0, _0808217C
+ bl SetMainCallback2
+ ldr r1, _08082180
+ ldr r0, _08082184
+ str r0, [r1, 0x8]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808217C: .4byte CB2_ChooseStarter
+_08082180: .4byte gMain
+_08082184: .4byte sub_8082188
+ thumb_func_end sub_8082168
+
+ thumb_func_start sub_8082188
+sub_8082188: @ 8082188
+ push {lr}
+ sub sp, 0x8
+ ldr r0, _080821CC
+ bl GetVarPointer
+ ldr r2, _080821D0
+ ldrh r1, [r2]
+ strh r1, [r0]
+ ldrh r0, [r2]
+ bl GetStarterPokemon
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0
+ str r1, [sp]
+ str r1, [sp, 0x4]
+ movs r1, 0x5
+ movs r2, 0
+ movs r3, 0
+ bl sub_80C5374
+ bl ResetTasks
+ bl sub_80408BC
+ ldr r0, _080821D4
+ bl SetMainCallback2
+ movs r0, 0
+ bl sub_811AAD8
+ add sp, 0x8
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080821CC: .4byte 0x00004023
+_080821D0: .4byte gScriptResult
+_080821D4: .4byte sub_80821D8
+ thumb_func_end sub_8082188
+
+ thumb_func_start sub_80821D8
+sub_80821D8: @ 80821D8
+ push {lr}
+ bl UpdatePaletteFade
+ bl RunTasks
+ bl sub_811AAE8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08082214
+ ldr r1, _08082218
+ movs r0, 0x10
+ strh r0, [r1]
+ ldr r1, _0808221C
+ ldr r0, _08082220
+ str r0, [r1, 0x8]
+ ldr r0, _08082224
+ bl SetMainCallback2
+ bl prev_quest_postbuffer_cursor_backup_reset
+ bl overworld_poison_timer_set
+ movs r0, 0x7
+ bl sav12_xor_increment
+ movs r0, 0x8
+ bl sav12_xor_increment
+_08082214:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082218: .4byte gUnknown_020239F8
+_0808221C: .4byte gMain
+_08082220: .4byte sub_8082228
+_08082224: .4byte sub_800E7C4
+ thumb_func_end sub_80821D8
+
+ thumb_func_start sub_8082228
+sub_8082228: @ 8082228
+ push {lr}
+ bl sav1_reset_battle_music_maybe
+ ldr r0, _08082238
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end sub_8082228
+
+ thumb_func_start TrainerBattleLoadArg32
+TrainerBattleLoadArg32: @ 808223C
+ adds r2, r0, 0
+ ldrb r0, [r2]
+ ldrb r1, [r2, 0x1]
+ lsls r1, 8
+ orrs r0, r1
+ ldrb r1, [r2, 0x2]
+ lsls r1, 16
+ orrs r0, r1
+ ldrb r1, [r2, 0x3]
+ lsls r1, 24
+ orrs r0, r1
+ bx lr
+ thumb_func_end TrainerBattleLoadArg32
+
+ thumb_func_start TrainerBattleLoadArg16
+TrainerBattleLoadArg16: @ 8082254
+ adds r1, r0, 0
+ ldrb r0, [r1]
+ ldrb r1, [r1, 0x1]
+ lsls r1, 8
+ orrs r0, r1
+ bx lr
+ thumb_func_end TrainerBattleLoadArg16
+
+ thumb_func_start TrainerBattleLoadArg8
+TrainerBattleLoadArg8: @ 8082260
+ ldrb r0, [r0]
+ bx lr
+ thumb_func_end TrainerBattleLoadArg8
+
+ thumb_func_start trainerflag_opponent
+trainerflag_opponent: @ 8082264
+ ldr r1, _08082278
+ movs r2, 0xA0
+ lsls r2, 3
+ adds r0, r2, 0
+ ldrh r1, [r1]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ bx lr
+ .align 2, 0
+_08082278: .4byte word_202FF5E
+ thumb_func_end trainerflag_opponent
+
+ thumb_func_start battle_exit_is_player_defeat
+battle_exit_is_player_defeat: @ 808227C
+ push {lr}
+ subs r0, 0x1
+ cmp r0, 0x6
+ bhi _080822B4
+ lsls r0, 2
+ ldr r1, _08082290
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08082290: .4byte _08082294
+ .align 2, 0
+_08082294:
+ .4byte _080822B4
+ .4byte _080822B0
+ .4byte _080822B0
+ .4byte _080822B4
+ .4byte _080822B4
+ .4byte _080822B4
+ .4byte _080822B4
+_080822B0:
+ movs r0, 0x1
+ b _080822B6
+_080822B4:
+ movs r0, 0
+_080822B6:
+ pop {r1}
+ bx r1
+ thumb_func_end battle_exit_is_player_defeat
+
+ thumb_func_start sub_80822BC
+sub_80822BC: @ 80822BC
+ ldr r0, _080822E8
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080822EC
+ strh r1, [r0]
+ ldr r0, _080822F0
+ strh r1, [r0]
+ ldr r0, _080822F4
+ movs r1, 0
+ str r1, [r0]
+ ldr r0, _080822F8
+ str r1, [r0]
+ ldr r0, _080822FC
+ str r1, [r0]
+ ldr r0, _08082300
+ str r1, [r0]
+ ldr r0, _08082304
+ str r1, [r0]
+ ldr r0, _08082308
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_080822E8: .4byte gUnknown_0202FF5C
+_080822EC: .4byte word_202FF5E
+_080822F0: .4byte gUnknown_0202FF60
+_080822F4: .4byte gUnknown_0202FF64
+_080822F8: .4byte gUnknown_0202FF68
+_080822FC: .4byte gUnknown_0202FF6C
+_08082300: .4byte gUnknown_0202FF70
+_08082304: .4byte gUnknown_0202FF74
+_08082308: .4byte gUnknown_0202FF78
+ thumb_func_end sub_80822BC
+
+ thumb_func_start TrainerBattleLoadArgs
+TrainerBattleLoadArgs: @ 808230C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+_08082312:
+ ldrb r0, [r4, 0x4]
+ cmp r0, 0x6
+ bhi _08082384
+ lsls r0, 2
+ ldr r1, _08082324
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08082324: .4byte _08082328
+ .align 2, 0
+_08082328:
+ .4byte _08082344
+ .4byte _08082352
+ .4byte _08082360
+ .4byte _0808236E
+ .4byte _08082376
+ .4byte _0808237E
+ .4byte _08082388
+_08082344:
+ adds r0, r5, 0
+ bl TrainerBattleLoadArg8
+ ldr r1, [r4]
+ strb r0, [r1]
+ adds r5, 0x1
+ b _08082384
+_08082352:
+ adds r0, r5, 0
+ bl TrainerBattleLoadArg16
+ ldr r1, [r4]
+ strh r0, [r1]
+ adds r5, 0x2
+ b _08082384
+_08082360:
+ adds r0, r5, 0
+ bl TrainerBattleLoadArg32
+ ldr r1, [r4]
+ str r0, [r1]
+ adds r5, 0x4
+ b _08082384
+_0808236E:
+ ldr r1, [r4]
+ movs r0, 0
+ strb r0, [r1]
+ b _08082384
+_08082376:
+ ldr r1, [r4]
+ movs r0, 0
+ strh r0, [r1]
+ b _08082384
+_0808237E:
+ ldr r1, [r4]
+ movs r0, 0
+ str r0, [r1]
+_08082384:
+ adds r4, 0x8
+ b _08082312
+_08082388:
+ ldr r0, [r4]
+ str r5, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end TrainerBattleLoadArgs
+
+ thumb_func_start battle_80801F0
+battle_80801F0: @ 8082394
+ push {lr}
+ ldr r0, _080823B8
+ ldrh r1, [r0]
+ cmp r1, 0
+ beq _080823B4
+ ldr r0, _080823BC
+ strh r1, [r0]
+ lsls r0, r1, 24
+ lsrs r0, 24
+ ldr r2, _080823C0
+ ldrb r1, [r2, 0x5]
+ ldrb r2, [r2, 0x4]
+ bl GetFieldObjectIdByLocalIdAndMap
+ ldr r1, _080823C4
+ strb r0, [r1]
+_080823B4:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080823B8: .4byte gUnknown_0202FF60
+_080823BC: .4byte gUnknown_0202E8DE
+_080823C0: .4byte gSaveBlock1
+_080823C4: .4byte gSelectedMapObject
+ thumb_func_end battle_80801F0
+
+ thumb_func_start sub_80823C8
+sub_80823C8: @ 80823C8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_80822BC
+ ldr r4, _080823F0
+ adds r0, r5, 0
+ bl TrainerBattleLoadArg8
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4]
+ ldrh r0, [r4]
+ subs r0, 0x1
+ cmp r0, 0x7
+ bhi _080824A4
+ lsls r0, 2
+ ldr r1, _080823F4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080823F0: .4byte gUnknown_0202FF5C
+_080823F4: .4byte _080823F8
+ .align 2, 0
+_080823F8:
+ .4byte _08082434
+ .4byte _08082434
+ .4byte _08082418
+ .4byte _0808242C
+ .4byte _0808247C
+ .4byte _0808243C
+ .4byte _08082454
+ .4byte _0808243C
+_08082418:
+ ldr r0, _08082424
+ adds r1, r5, 0
+ bl TrainerBattleLoadArgs
+ ldr r0, _08082428
+ b _080824B2
+ .align 2, 0
+_08082424: .4byte gUnknown_0839ADE0
+_08082428: .4byte gUnknown_0819F878
+_0808242C:
+ ldr r0, _08082430
+ b _0808243E
+ .align 2, 0
+_08082430: .4byte gUnknown_0839AD98
+_08082434:
+ ldr r0, _08082438
+ b _080824A6
+ .align 2, 0
+_08082438: .4byte gUnknown_0839AD50
+_0808243C:
+ ldr r0, _0808244C
+_0808243E:
+ adds r1, r5, 0
+ bl TrainerBattleLoadArgs
+ bl battle_80801F0
+ ldr r0, _08082450
+ b _080824B2
+ .align 2, 0
+_0808244C: .4byte gUnknown_0839AE28
+_08082450: .4byte gUnknown_0819F840
+_08082454:
+ ldr r0, _08082470
+ adds r1, r5, 0
+ bl TrainerBattleLoadArgs
+ bl battle_80801F0
+ ldr r4, _08082474
+ ldrh r0, [r4]
+ bl sub_8082C4C
+ strh r0, [r4]
+ ldr r0, _08082478
+ b _080824B2
+ .align 2, 0
+_08082470: .4byte gUnknown_0839AD98
+_08082474: .4byte word_202FF5E
+_08082478: .4byte gUnknown_0819F8AE
+_0808247C:
+ ldr r0, _08082498
+ adds r1, r5, 0
+ bl TrainerBattleLoadArgs
+ bl battle_80801F0
+ ldr r4, _0808249C
+ ldrh r0, [r4]
+ bl sub_8082C4C
+ strh r0, [r4]
+ ldr r0, _080824A0
+ b _080824B2
+ .align 2, 0
+_08082498: .4byte gUnknown_0839AD08
+_0808249C: .4byte word_202FF5E
+_080824A0: .4byte gUnknown_0819F887
+_080824A4:
+ ldr r0, _080824B8
+_080824A6:
+ adds r1, r5, 0
+ bl TrainerBattleLoadArgs
+ bl battle_80801F0
+ ldr r0, _080824BC
+_080824B2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080824B8: .4byte gUnknown_0839AD08
+_080824BC: .4byte gUnknown_0819F818
+ thumb_func_end sub_80823C8
+
+ thumb_func_start SingleTrainerWantsBattle
+SingleTrainerWantsBattle: @ 80824C0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080824F4
+ strb r0, [r2]
+ ldr r4, _080824F8
+ ldr r3, _080824FC
+ lsls r2, r0, 3
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r3
+ ldrb r0, [r2, 0x8]
+ strh r0, [r4]
+ adds r1, 0x1
+ adds r0, r1, 0
+ bl sub_80823C8
+ ldr r0, _08082500
+ bl ScriptContext1_SetupScript
+ bl ScriptContext2_Enable
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080824F4: .4byte gSelectedMapObject
+_080824F8: .4byte gUnknown_0202E8DE
+_080824FC: .4byte gMapObjects
+_08082500: .4byte gUnknown_0819F80B
+ thumb_func_end SingleTrainerWantsBattle
+
+ thumb_func_start GetTrainerFlagFromScriptPointer
+GetTrainerFlagFromScriptPointer: @ 8082504
+ push {lr}
+ adds r0, 0x2
+ bl TrainerBattleLoadArg16
+ lsls r0, 16
+ movs r1, 0xA0
+ lsls r1, 19
+ adds r0, r1
+ lsrs r0, 16
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end GetTrainerFlagFromScriptPointer
+
+ thumb_func_start sub_8082524
+sub_8082524: @ 8082524
+ push {r4,lr}
+ ldr r0, _08082550
+ ldrb r0, [r0]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08082554
+ adds r4, r0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl npc_set_running_behaviour_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082550: .4byte gSelectedMapObject
+_08082554: .4byte gMapObjects
+ thumb_func_end sub_8082524
+
+ thumb_func_start sub_8082558
+sub_8082558: @ 8082558
+ ldr r0, _08082560
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_08082560: .4byte gUnknown_0202FF5C
+ thumb_func_end sub_8082558
+
+ thumb_func_start sub_8082564
+sub_8082564: @ 8082564
+ push {lr}
+ bl trainerflag_opponent
+ lsls r0, 16
+ lsrs r0, 16
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082564
+
+ thumb_func_start sub_808257C
+sub_808257C: @ 808257C
+ push {lr}
+ bl trainerflag_opponent
+ lsls r0, 16
+ lsrs r0, 16
+ bl FlagSet
+ pop {r0}
+ bx r0
+ thumb_func_end sub_808257C
+
+ thumb_func_start unref_sub_8082590
+unref_sub_8082590: @ 8082590
+ push {lr}
+ bl trainerflag_opponent
+ lsls r0, 16
+ lsrs r0, 16
+ bl FlagSet
+ pop {r0}
+ bx r0
+ thumb_func_end unref_sub_8082590
+
+ thumb_func_start trainer_flag_check
+trainer_flag_check: @ 80825A4
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xA0
+ lsls r1, 19
+ adds r0, r1
+ lsrs r0, 16
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end trainer_flag_check
+
+ thumb_func_start trainer_flag_set
+trainer_flag_set: @ 80825BC
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xA0
+ lsls r1, 19
+ adds r0, r1
+ lsrs r0, 16
+ bl FlagSet
+ pop {r0}
+ bx r0
+ thumb_func_end trainer_flag_set
+
+ thumb_func_start trainer_flag_clear
+trainer_flag_clear: @ 80825D0
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xA0
+ lsls r1, 19
+ adds r0, r1
+ lsrs r0, 16
+ bl FlagReset
+ pop {r0}
+ bx r0
+ thumb_func_end trainer_flag_clear
+
+ thumb_func_start sub_80825E4
+sub_80825E4: @ 80825E4
+ push {lr}
+ ldr r1, _08082600
+ movs r0, 0x8
+ strh r0, [r1]
+ ldr r1, _08082604
+ ldr r0, _08082608
+ str r0, [r1, 0x8]
+ bl task_add_01_battle_start_with_music_and_stats
+ bl ScriptContext1_Stop
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082600: .4byte gUnknown_020239F8
+_08082604: .4byte gMain
+_08082608: .4byte sub_808260C
+ thumb_func_end sub_80825E4
+
+ thumb_func_start sub_808260C
+sub_808260C: @ 808260C
+ push {lr}
+ ldr r0, _08082624
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 3
+ cmp r1, r0
+ bne _0808262C
+ ldr r0, _08082628
+ bl SetMainCallback2
+ b _08082652
+ .align 2, 0
+_08082624: .4byte word_202FF5E
+_08082628: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0808262C:
+ ldr r0, _08082640
+ ldrb r0, [r0]
+ bl battle_exit_is_player_defeat
+ cmp r0, 0x1
+ bne _08082648
+ ldr r0, _08082644
+ bl SetMainCallback2
+ b _08082652
+ .align 2, 0
+_08082640: .4byte gUnknown_02024D26
+_08082644: .4byte c2_whiteout
+_08082648:
+ ldr r0, _08082658
+ bl SetMainCallback2
+ bl sub_808257C
+_08082652:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082658: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end sub_808260C
+
+ thumb_func_start do_choose_name_or_words_screen
+do_choose_name_or_words_screen: @ 808265C
+ push {lr}
+ ldr r0, _08082674
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 3
+ cmp r1, r0
+ bne _0808267C
+ ldr r0, _08082678
+ bl SetMainCallback2
+ b _080826A6
+ .align 2, 0
+_08082674: .4byte word_202FF5E
+_08082678: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0808267C:
+ ldr r0, _08082690
+ ldrb r0, [r0]
+ bl battle_exit_is_player_defeat
+ cmp r0, 0x1
+ bne _08082698
+ ldr r0, _08082694
+ bl SetMainCallback2
+ b _080826A6
+ .align 2, 0
+_08082690: .4byte gUnknown_02024D26
+_08082694: .4byte c2_whiteout
+_08082698:
+ ldr r0, _080826AC
+ bl SetMainCallback2
+ bl sub_808257C
+ bl sub_8082CB8
+_080826A6:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080826AC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end do_choose_name_or_words_screen
+
+ thumb_func_start sub_80826B0
+sub_80826B0: @ 80826B0
+ push {lr}
+ ldr r1, _080826CC
+ movs r0, 0x8
+ strh r0, [r1]
+ ldr r1, _080826D0
+ ldr r0, _080826D4
+ str r0, [r1, 0x8]
+ bl task_add_01_battle_start_with_music_and_stats
+ bl ScriptContext1_Stop
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080826CC: .4byte gUnknown_020239F8
+_080826D0: .4byte gMain
+_080826D4: .4byte do_choose_name_or_words_screen
+ thumb_func_end sub_80826B0
+
+ thumb_func_start sub_80826D8
+sub_80826D8: @ 80826D8
+ push {lr}
+ bl sub_808281C
+ bl ShowFieldMessage
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80826D8
+
+ thumb_func_start sub_80826E8
+sub_80826E8: @ 80826E8
+ push {lr}
+ ldr r0, _080826F8
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _080826F4
+ ldr r0, _080826FC
+_080826F4:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080826F8: .4byte gUnknown_0202FF74
+_080826FC: .4byte gUnknown_081C6C02
+ thumb_func_end sub_80826E8
+
+ thumb_func_start sub_8082700
+sub_8082700: @ 8082700
+ push {lr}
+ ldr r0, _08082710
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0808270C
+ ldr r0, _08082714
+_0808270C:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082710: .4byte gUnknown_0202FF78
+_08082714: .4byte gUnknown_081C6C02
+ thumb_func_end sub_8082700
+
+ thumb_func_start sub_8082718
+sub_8082718: @ 8082718
+ push {lr}
+ bl sub_8082880
+ bl ShowFieldMessage
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8082718
+
+ thumb_func_start sub_8082728
+sub_8082728: @ 8082728
+ push {lr}
+ ldr r0, _08082750
+ ldrh r0, [r0]
+ cmp r0, 0x1
+ beq _08082802
+ cmp r0, 0x8
+ beq _08082802
+ ldr r0, _08082754
+ ldrh r0, [r0]
+ bl sub_803FC58
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xD
+ bhi _080827FC
+ lsls r0, 2
+ ldr r1, _08082758
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08082750: .4byte gUnknown_0202FF5C
+_08082754: .4byte word_202FF5E
+_08082758: .4byte _0808275C
+ .align 2, 0
+_0808275C:
+ .4byte _08082794
+ .4byte _0808279A
+ .4byte _080827A4
+ .4byte _080827FC
+ .4byte _080827AC
+ .4byte _080827B2
+ .4byte _080827BC
+ .4byte _080827C4
+ .4byte _080827CC
+ .4byte _080827D4
+ .4byte _080827DC
+ .4byte _080827E2
+ .4byte _080827EC
+ .4byte _080827F4
+_08082794:
+ movs r0, 0xBE
+ lsls r0, 1
+ b _080827FE
+_0808279A:
+ ldr r0, _080827A0
+ b _080827FE
+ .align 2, 0
+_080827A0: .4byte 0x00000197
+_080827A4:
+ ldr r0, _080827A8
+ b _080827FE
+ .align 2, 0
+_080827A8: .4byte 0x0000017b
+_080827AC:
+ movs r0, 0xD0
+ lsls r0, 1
+ b _080827FE
+_080827B2:
+ ldr r0, _080827B8
+ b _080827FE
+ .align 2, 0
+_080827B8: .4byte 0x000001a1
+_080827BC:
+ ldr r0, _080827C0
+ b _080827FE
+ .align 2, 0
+_080827C0: .4byte 0x000001a3
+_080827C4:
+ ldr r0, _080827C8
+ b _080827FE
+ .align 2, 0
+_080827C8: .4byte 0x000001b9
+_080827CC:
+ ldr r0, _080827D0
+ b _080827FE
+ .align 2, 0
+_080827D0: .4byte 0x00000181
+_080827D4:
+ ldr r0, _080827D8
+ b _080827FE
+ .align 2, 0
+_080827D8: .4byte 0x000001c1
+_080827DC:
+ movs r0, 0xE1
+ lsls r0, 1
+ b _080827FE
+_080827E2:
+ ldr r0, _080827E8
+ b _080827FE
+ .align 2, 0
+_080827E8: .4byte 0x000001c3
+_080827EC:
+ ldr r0, _080827F0
+ b _080827FE
+ .align 2, 0
+_080827F0: .4byte 0x000001c5
+_080827F4:
+ ldr r0, _080827F8
+ b _080827FE
+ .align 2, 0
+_080827F8: .4byte 0x0000018d
+_080827FC:
+ ldr r0, _08082808
+_080827FE:
+ bl PlayNewMapMusic
+_08082802:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082808: .4byte 0x000001a7
+ thumb_func_end sub_8082728
+
+ thumb_func_start ReturnEmptyStringIfNull
+ReturnEmptyStringIfNull: @ 808280C
+ push {lr}
+ cmp r0, 0
+ bne _08082814
+ ldr r0, _08082818
+_08082814:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082818: .4byte gOtherText_CancelWithTerminator
+ thumb_func_end ReturnEmptyStringIfNull
+
+ thumb_func_start sub_808281C
+sub_808281C: @ 808281C
+ push {lr}
+ ldr r0, _0808282C
+ ldr r0, [r0]
+ bl ReturnEmptyStringIfNull
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808282C: .4byte gUnknown_0202FF64
+ thumb_func_end sub_808281C
+
+ thumb_func_start sub_8082830
+sub_8082830: @ 8082830
+ push {r4,lr}
+ ldr r0, _08082844
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 3
+ cmp r1, r0
+ bne _08082848
+ bl sub_80BCCE8
+ b _0808284C
+ .align 2, 0
+_08082844: .4byte word_202FF5E
+_08082848:
+ ldr r0, _08082864
+ ldr r0, [r0]
+_0808284C:
+ ldr r4, _08082868
+ bl ReturnEmptyStringIfNull
+ adds r1, r0, 0
+ adds r0, r4, 0
+ bl StringExpandPlaceholders
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082864: .4byte gUnknown_0202FF68
+_08082868: .4byte gStringVar4
+ thumb_func_end sub_8082830
+
+ thumb_func_start unref_sub_808286C
+unref_sub_808286C: @ 808286C
+ push {lr}
+ ldr r0, _0808287C
+ ldr r0, [r0]
+ bl ReturnEmptyStringIfNull
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808287C: .4byte gUnknown_0202FF6C
+ thumb_func_end unref_sub_808286C
+
+ thumb_func_start sub_8082880
+sub_8082880: @ 8082880
+ push {lr}
+ ldr r0, _08082890
+ ldr r0, [r0]
+ bl ReturnEmptyStringIfNull
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082890: .4byte gUnknown_0202FF70
+ thumb_func_end sub_8082880
+
+ thumb_func_start sub_8082894
+sub_8082894: @ 8082894
+ push {lr}
+ lsls r1, 16
+ lsrs r1, 16
+ movs r3, 0
+ adds r2, r0, 0
+_0808289E:
+ ldrh r0, [r2]
+ cmp r0, r1
+ bne _080828A8
+ adds r0, r3, 0
+ b _080828B4
+_080828A8:
+ adds r2, 0x10
+ adds r3, 0x1
+ cmp r3, 0x37
+ ble _0808289E
+ movs r0, 0x1
+ negs r0, r0
+_080828B4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082894
+
+ thumb_func_start sub_80828B8
+sub_80828B8: @ 80828B8
+ push {r4,r5,lr}
+ lsls r1, 16
+ lsrs r5, r1, 16
+ movs r4, 0
+ adds r2, r0, 0
+_080828C2:
+ movs r1, 0
+ ldrh r0, [r2]
+ cmp r0, 0
+ beq _080828E8
+ movs r3, 0
+_080828CC:
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ cmp r0, r5
+ bne _080828D8
+ adds r0, r4, 0
+ b _080828F4
+_080828D8:
+ adds r3, 0x2
+ adds r1, 0x1
+ cmp r1, 0x4
+ bgt _080828E8
+ adds r0, r2, r3
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _080828CC
+_080828E8:
+ adds r2, 0x10
+ adds r4, 0x1
+ cmp r4, 0x37
+ ble _080828C2
+ movs r0, 0x1
+ negs r0, r0
+_080828F4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80828B8
+
+ thumb_func_start sub_80828FC
+sub_80828FC: @ 80828FC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r7, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ str r1, [sp]
+ lsls r2, 16
+ lsrs r2, 16
+ mov r10, r2
+ movs r4, 0
+ movs r5, 0
+ ldr r0, _08082968
+ mov r9, r0
+_0808291E:
+ lsls r0, r5, 4
+ adds r2, r0, r7
+ ldrh r1, [r2, 0xA]
+ adds r6, r0, 0
+ adds r0, r5, 0x1
+ mov r8, r0
+ ldr r0, [sp]
+ cmp r1, r0
+ bne _08082990
+ ldrh r0, [r2, 0xC]
+ cmp r0, r10
+ bne _08082990
+ mov r1, r9
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0808298E
+ ldrh r0, [r2]
+ bl trainer_flag_check
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08082990
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x64
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1E
+ bhi _08082990
+ movs r4, 0x1
+ b _0808296E
+ .align 2, 0
+_08082968: .4byte gSaveBlock1 + 0x97A
+_0808296C:
+ adds r4, 0x1
+_0808296E:
+ cmp r4, 0x4
+ bgt _08082988
+ adds r0, r6, r7
+ lsls r1, r4, 1
+ adds r1, r0, r1
+ ldrh r0, [r1]
+ cmp r0, 0
+ beq _08082988
+ bl trainer_flag_check
+ lsls r0, 24
+ cmp r0, 0
+ bne _0808296C
+_08082988:
+ mov r1, r9
+ adds r0, r5, r1
+ strb r4, [r0]
+_0808298E:
+ movs r4, 0x1
+_08082990:
+ mov r5, r8
+ cmp r5, 0x37
+ ble _0808291E
+ adds r0, r4, 0
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80828FC
+
+ thumb_func_start sub_80829A8
+sub_80829A8: @ 80829A8
+ push {r4,r5,lr}
+ lsls r1, 16
+ lsrs r4, r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ movs r1, 0
+ ldr r5, _080829D4
+ adds r3, r0, 0
+ adds r3, 0xA
+_080829BA:
+ ldrh r0, [r3]
+ cmp r0, r4
+ bne _080829D8
+ ldrh r0, [r3, 0x2]
+ cmp r0, r2
+ bne _080829D8
+ adds r0, r1, r5
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080829D8
+ movs r0, 0x1
+ b _080829E2
+ .align 2, 0
+_080829D4: .4byte gSaveBlock1 + 0x97A
+_080829D8:
+ adds r3, 0x10
+ adds r1, 0x1
+ cmp r1, 0x37
+ ble _080829BA
+ movs r0, 0
+_080829E2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80829A8
+
+ thumb_func_start sub_80829E8
+sub_80829E8: @ 80829E8
+ push {r4,lr}
+ lsls r1, 16
+ lsrs r4, r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ movs r1, 0
+ adds r3, r0, 0
+ adds r3, 0xA
+_080829F8:
+ ldrh r0, [r3]
+ cmp r0, r4
+ bne _08082A08
+ ldrh r0, [r3, 0x2]
+ cmp r0, r2
+ bne _08082A08
+ movs r0, 0x1
+ b _08082A12
+_08082A08:
+ adds r3, 0x10
+ adds r1, 0x1
+ cmp r1, 0x37
+ ble _080829F8
+ movs r0, 0
+_08082A12:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80829E8
+
+ thumb_func_start sub_8082A18
+sub_8082A18: @ 8082A18
+ push {lr}
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8082894
+ adds r1, r0, 0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _08082A4C
+ cmp r1, 0x63
+ bgt _08082A4C
+ ldr r0, _08082A44
+ ldr r2, _08082A48
+ adds r0, r2
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08082A4C
+ movs r0, 0x1
+ b _08082A4E
+ .align 2, 0
+_08082A44: .4byte gSaveBlock1
+_08082A48: .4byte 0x0000097a
+_08082A4C:
+ movs r0, 0
+_08082A4E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082A18
+
+ thumb_func_start sub_8082A54
+sub_8082A54: @ 8082A54
+ push {lr}
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_80828B8
+ adds r1, r0, 0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _08082A88
+ cmp r1, 0x63
+ bgt _08082A88
+ ldr r0, _08082A80
+ ldr r2, _08082A84
+ adds r0, r2
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08082A88
+ movs r0, 0x1
+ b _08082A8A
+ .align 2, 0
+_08082A80: .4byte gSaveBlock1
+_08082A84: .4byte 0x0000097a
+_08082A88:
+ movs r0, 0
+_08082A8A:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082A54
+
+ thumb_func_start sub_8082A90
+sub_8082A90: @ 8082A90
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8082894
+ adds r1, r0, 0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _08082AB8
+ movs r0, 0
+ b _08082ADE
+_08082AAA:
+ subs r0, r6, 0x1
+ lsls r0, 1
+ adds r0, r7, r0
+ ldrh r0, [r0]
+ b _08082ADE
+_08082AB4:
+ ldrh r0, [r5]
+ b _08082ADE
+_08082AB8:
+ lsls r0, r1, 4
+ adds r7, r4, r0
+ movs r6, 0x1
+ adds r5, r7, 0x2
+ adds r4, r5, 0
+_08082AC2:
+ ldrh r0, [r4]
+ cmp r0, 0
+ beq _08082AAA
+ bl trainer_flag_check
+ lsls r0, 24
+ cmp r0, 0
+ beq _08082AB4
+ adds r4, 0x2
+ adds r5, 0x2
+ adds r6, 0x1
+ cmp r6, 0x4
+ ble _08082AC2
+ ldrh r0, [r7, 0x8]
+_08082ADE:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082A90
+
+ thumb_func_start sub_8082AE4
+sub_8082AE4: @ 8082AE4
+ push {lr}
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_80828B8
+ adds r1, r0, 0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _08082B04
+ ldr r0, _08082B08
+ ldr r2, _08082B0C
+ adds r0, r2
+ adds r0, r1, r0
+ movs r1, 0
+ strb r1, [r0]
+_08082B04:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082B08: .4byte gSaveBlock1
+_08082B0C: .4byte 0x0000097a
+ thumb_func_end sub_8082AE4
+
+ thumb_func_start sub_8082B10
+sub_8082B10: @ 8082B10
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8082894
+ adds r1, r0, 0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _08082B3A
+ lsls r0, r1, 4
+ adds r0, r4
+ ldrh r0, [r0, 0x2]
+ bl trainer_flag_check
+ lsls r0, 24
+ cmp r0, 0
+ beq _08082B3A
+ movs r0, 0x1
+ b _08082B3C
+_08082B3A:
+ movs r0, 0
+_08082B3C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082B10
+
+ thumb_func_start sub_8082B44
+sub_8082B44: @ 8082B44
+ push {r4-r6,lr}
+ movs r6, 0
+ movs r5, 0
+ ldr r4, _08082B64
+_08082B4C:
+ ldrh r0, [r4]
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08082B68
+ adds r6, 0x1
+ cmp r6, 0x4
+ ble _08082B68
+ movs r0, 0x1
+ b _08082B72
+ .align 2, 0
+_08082B64: .4byte gUnknown_0839B1F0
+_08082B68:
+ adds r4, 0x2
+ adds r5, 0x1
+ cmp r5, 0x7
+ bls _08082B4C
+ movs r0, 0
+_08082B72:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082B44
+
+ thumb_func_start sub_8082B78
+sub_8082B78: @ 8082B78
+ push {lr}
+ bl sub_8082B44
+ cmp r0, 0
+ beq _08082BA0
+ ldr r0, _08082B94
+ ldr r2, _08082B98
+ adds r1, r0, r2
+ ldrh r0, [r1]
+ cmp r0, 0xFE
+ bls _08082B9C
+ movs r0, 0xFF
+ b _08082B9E
+ .align 2, 0
+_08082B94: .4byte gSaveBlock1
+_08082B98: .4byte 0x00000978
+_08082B9C:
+ adds r0, 0x1
+_08082B9E:
+ strh r0, [r1]
+_08082BA0:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8082B78
+
+ thumb_func_start sub_8082BA4
+sub_8082BA4: @ 8082BA4
+ push {lr}
+ bl sub_8082B44
+ cmp r0, 0
+ beq _08082BC8
+ ldr r0, _08082BC0
+ ldr r1, _08082BC4
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, 0xFE
+ bls _08082BC8
+ movs r0, 0x1
+ b _08082BCA
+ .align 2, 0
+_08082BC0: .4byte gSaveBlock1
+_08082BC4: .4byte 0x00000978
+_08082BC8:
+ movs r0, 0
+_08082BCA:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082BA4
+
+ thumb_func_start sub_8082BD0
+sub_8082BD0: @ 8082BD0
+ push {r4,r5,lr}
+ lsls r0, 16
+ lsrs r5, r0, 16
+ lsls r1, 16
+ lsrs r4, r1, 16
+ bl sub_8082BA4
+ cmp r0, 0
+ beq _08082BFA
+ ldr r0, _08082C00
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl sub_80828FC
+ cmp r0, 0x1
+ bne _08082BFA
+ ldr r0, _08082C04
+ ldr r1, _08082C08
+ adds r0, r1
+ movs r1, 0
+ strh r1, [r0]
+_08082BFA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082C00: .4byte gTrainerEyeTrainers
+_08082C04: .4byte gSaveBlock1
+_08082C08: .4byte 0x00000978
+ thumb_func_end sub_8082BD0
+
+ thumb_func_start sub_8082C0C
+sub_8082C0C: @ 8082C0C
+ push {lr}
+ adds r3, r0, 0
+ adds r2, r1, 0
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r0, _08082C28
+ adds r1, r3, 0
+ bl sub_80829A8
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082C28: .4byte gTrainerEyeTrainers
+ thumb_func_end sub_8082C0C
+
+ thumb_func_start unref_sub_8082C2C
+unref_sub_8082C2C: @ 8082C2C
+ push {lr}
+ adds r3, r0, 0
+ adds r2, r1, 0
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r0, _08082C48
+ adds r1, r3, 0
+ bl sub_80829E8
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082C48: .4byte gTrainerEyeTrainers
+ thumb_func_end unref_sub_8082C2C
+
+ thumb_func_start sub_8082C4C
+sub_8082C4C: @ 8082C4C
+ push {lr}
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r0, _08082C64
+ bl sub_8082A90
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082C64: .4byte gTrainerEyeTrainers
+ thumb_func_end sub_8082C4C
+
+ thumb_func_start sub_8082C68
+sub_8082C68: @ 8082C68
+ push {r4,r5,lr}
+ ldr r5, _08082C8C
+ ldr r4, _08082C90
+ ldrh r1, [r4]
+ adds r0, r5, 0
+ bl sub_8082A18
+ lsls r0, 24
+ cmp r0, 0
+ bne _08082C94
+ ldrh r1, [r4]
+ adds r0, r5, 0
+ bl sub_8082B10
+ lsls r0, 24
+ lsrs r0, 24
+ b _08082C96
+ .align 2, 0
+_08082C8C: .4byte gTrainerEyeTrainers
+_08082C90: .4byte word_202FF5E
+_08082C94:
+ movs r0, 0x1
+_08082C96:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082C68
+
+ thumb_func_start sub_8082C9C
+sub_8082C9C: @ 8082C9C
+ push {lr}
+ ldr r0, _08082CB0
+ ldr r1, _08082CB4
+ ldrh r1, [r1]
+ bl sub_8082A54
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082CB0: .4byte gTrainerEyeTrainers
+_08082CB4: .4byte word_202FF5E
+ thumb_func_end sub_8082C9C
+
+ thumb_func_start sub_8082CB8
+sub_8082CB8: @ 8082CB8
+ push {lr}
+ ldr r0, _08082CCC
+ ldr r1, _08082CD0
+ ldrh r1, [r1]
+ bl sub_8082AE4
+ bl sub_808257C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082CCC: .4byte gTrainerEyeTrainers
+_08082CD0: .4byte word_202FF5E
+ thumb_func_end sub_8082CB8
+
+ thumb_func_start sub_8082CD4
+sub_8082CD4: @ 8082CD4
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r4, _08082D10
+ adds r0, r4, 0
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _08082D08
+ adds r0, r4, 0
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08082D14
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r6, [r1, 0xA]
+ strh r5, [r1, 0xC]
+_08082D08:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082D10: .4byte sub_8082F20
+_08082D14: .4byte gTasks
+ thumb_func_end sub_8082CD4
+
+ thumb_func_start sub_8082D18
+sub_8082D18: @ 8082D18
+ push {lr}
+ adds r1, r0, 0
+ ldr r0, _08082D44
+ movs r2, 0
+ movs r3, 0x1
+ bl ConvertIntToDecimalStringN
+ movs r0, 0x12
+ movs r1, 0xA
+ movs r2, 0x1C
+ movs r3, 0xD
+ bl MenuDrawTextWindow
+ ldr r0, _08082D48
+ movs r1, 0x13
+ movs r2, 0xB
+ movs r3, 0x48
+ bl sub_8072BD8
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082D44: .4byte gStringVar1
+_08082D48: .4byte gOtherText_PLink
+ thumb_func_end sub_8082D18
+
+ thumb_func_start sub_8082D4C
+sub_8082D4C: @ 8082D4C
+ push {lr}
+ movs r0, 0x12
+ movs r1, 0xA
+ movs r2, 0x1C
+ movs r3, 0xD
+ bl MenuZeroFillWindowRect
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8082D4C
+
+ thumb_func_start sub_8082D60
+sub_8082D60: @ 8082D60
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _08082D88
+ adds r1, r0
+ adds r5, r1, 0x6
+ movs r2, 0x6
+ ldrsh r0, [r1, r2]
+ cmp r4, r0
+ beq _08082D94
+ cmp r4, 0x1
+ bhi _08082D8C
+ bl sub_8082D4C
+ b _08082D92
+ .align 2, 0
+_08082D88: .4byte gUnknown_03004B28
+_08082D8C:
+ adds r0, r4, 0
+ bl sub_8082D18
+_08082D92:
+ strh r4, [r5]
+_08082D94:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8082D60
+
+ thumb_func_start sub_8082D9C
+sub_8082D9C: @ 8082D9C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ bl GetLinkPlayerDataExchangeStatusTimed
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ beq _08082DEC
+ cmp r0, 0x2
+ bgt _08082DBC
+ cmp r0, 0x1
+ beq _08082DC2
+ b _08082DEC
+_08082DBC:
+ cmp r0, 0x3
+ beq _08082DE8
+ b _08082DEC
+_08082DC2:
+ bl GetLinkPlayerCount_2
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r4, r1
+ bgt _08082DD6
+ cmp r1, r5
+ bgt _08082DD6
+ movs r0, 0x1
+ b _08082DEE
+_08082DD6:
+ ldr r0, _08082DE4
+ movs r2, 0
+ movs r3, 0x1
+ bl ConvertIntToDecimalStringN
+ movs r0, 0x4
+ b _08082DEE
+ .align 2, 0
+_08082DE4: .4byte gStringVar1
+_08082DE8:
+ movs r0, 0x3
+ b _08082DEE
+_08082DEC:
+ movs r0, 0
+_08082DEE:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082D9C
+
+ thumb_func_start sub_8082DF4
+sub_8082DF4: @ 8082DF4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl HasLinkErrorOccurred
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08082E0A
+ movs r0, 0
+ b _08082E1A
+_08082E0A:
+ ldr r0, _08082E20
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _08082E24
+ str r0, [r1]
+ movs r0, 0x1
+_08082E1A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082E20: .4byte gTasks
+_08082E24: .4byte sub_8083418
+ thumb_func_end sub_8082DF4
+
+ thumb_func_start sub_8082E28
+sub_8082E28: @ 8082E28
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _08082E58
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08082E64
+ bl IsLinkConnectionEstablished
+ lsls r0, 24
+ cmp r0, 0
+ bne _08082E64
+ ldr r0, _08082E5C
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _08082E60
+ str r0, [r1]
+ movs r0, 0x1
+ b _08082E66
+ .align 2, 0
+_08082E58: .4byte gMain
+_08082E5C: .4byte gTasks
+_08082E60: .4byte sub_80833EC
+_08082E64:
+ movs r0, 0
+_08082E66:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8082E28
+
+ thumb_func_start sub_8082E6C
+sub_8082E6C: @ 8082E6C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl IsLinkConnectionEstablished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08082E82
+ movs r0, 0x1
+ bl SetSuppressLinkErrorMessage
+_08082E82:
+ ldr r0, _08082E94
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _08082E98
+ movs r0, 0
+ b _08082EA8
+ .align 2, 0
+_08082E94: .4byte gMain
+_08082E98:
+ ldr r0, _08082EB0
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _08082EB4
+ str r0, [r1]
+ movs r0, 0x1
+_08082EA8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082EB0: .4byte gTasks
+_08082EB4: .4byte sub_80833EC
+ thumb_func_end sub_8082E6C
+
+ thumb_func_start sub_8082EB8
+sub_8082EB8: @ 8082EB8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl GetSioMultiSI
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08082ECE
+ movs r0, 0
+ b _08082EDE
+_08082ECE:
+ ldr r0, _08082EE4
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _08082EE8
+ str r0, [r1]
+ movs r0, 0x1
+_08082EDE:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08082EE4: .4byte gTasks
+_08082EE8: .4byte sub_8083418
+ thumb_func_end sub_8082EB8
+
+ thumb_func_start unref_sub_8082EEC
+unref_sub_8082EEC: @ 8082EEC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _08082F1C
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _08082F16
+ movs r0, 0x2
+ bl sub_8007E9C
+ adds r0, r4, 0
+ bl DestroyTask
+_08082F16:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082F1C: .4byte gTasks
+ thumb_func_end unref_sub_8082EEC
+
+ thumb_func_start sub_8082F20
+sub_8082F20: @ 8082F20
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _08082F48
+ adds r4, r1, r0
+ movs r3, 0
+ ldrsh r2, [r4, r3]
+ cmp r2, 0
+ bne _08082F4C
+ bl OpenLinkTimed
+ bl sub_80082EC
+ bl ResetLinkPlayers
+ b _08082F58
+ .align 2, 0
+_08082F48: .4byte gUnknown_03004B28
+_08082F4C:
+ cmp r2, 0x9
+ ble _08082F58
+ subs r0, 0x8
+ adds r0, r1, r0
+ ldr r1, _08082F64
+ str r1, [r0]
+_08082F58:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082F64: .4byte sub_8082F68
+ thumb_func_end sub_8082F20
+
+ thumb_func_start sub_8082F68
+sub_8082F68: @ 8082F68
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl GetLinkPlayerCount_2
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r4, 0
+ bl sub_8082E28
+ cmp r0, 0x1
+ beq _08082FDC
+ adds r0, r4, 0
+ bl sub_8082E6C
+ cmp r0, 0x1
+ beq _08082FDC
+ cmp r5, 0x1
+ bls _08082FDC
+ movs r0, 0x1
+ bl SetSuppressLinkErrorMessage
+ ldr r1, _08082FC0
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ bl IsLinkMaster
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08082FCC
+ movs r0, 0x15
+ bl PlaySE
+ ldr r0, _08082FC4
+ bl ShowFieldAutoScrollMessage
+ ldr r0, _08082FC8
+ b _08082FDA
+ .align 2, 0
+_08082FC0: .4byte gTasks
+_08082FC4: .4byte gUnknown_081A4932
+_08082FC8: .4byte sub_8082FEC
+_08082FCC:
+ movs r0, 0x16
+ bl PlaySE
+ ldr r0, _08082FE4
+ bl ShowFieldAutoScrollMessage
+ ldr r0, _08082FE8
+_08082FDA:
+ str r0, [r4]
+_08082FDC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08082FE4: .4byte gUnknown_081A49B6
+_08082FE8: .4byte sub_80831F8
+ thumb_func_end sub_8082F68
+
+ thumb_func_start sub_8082FEC
+sub_8082FEC: @ 8082FEC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8082E28
+ cmp r0, 0x1
+ beq _0808302C
+ adds r0, r4, 0
+ bl sub_8082EB8
+ cmp r0, 0x1
+ beq _0808302C
+ adds r0, r4, 0
+ bl sub_8082DF4
+ cmp r0, 0x1
+ beq _0808302C
+ bl GetFieldMessageBoxMode
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ bne _0808302C
+ ldr r0, _08083034
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ strh r2, [r1, 0xE]
+ ldr r0, _08083038
+ str r0, [r1]
+_0808302C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083034: .4byte gTasks
+_08083038: .4byte sub_808303C
+ thumb_func_end sub_8082FEC
+
+ thumb_func_start sub_808303C
+sub_808303C: @ 808303C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ mov r8, r0
+ ldr r0, _080830D0
+ mov r9, r0
+ mov r7, r8
+ add r7, r9
+ bl GetLinkPlayerCount_2
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r4, 0
+ bl sub_8082E28
+ cmp r0, 0x1
+ beq _080830C2
+ adds r0, r4, 0
+ bl sub_8082EB8
+ cmp r0, 0x1
+ beq _080830C2
+ adds r0, r4, 0
+ bl sub_8082DF4
+ cmp r0, 0x1
+ beq _080830C2
+ adds r6, r5, 0
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_8082D60
+ ldr r0, _080830D4
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080830C2
+ movs r1, 0x2
+ ldrsh r0, [r7, r1]
+ cmp r5, r0
+ blt _080830C2
+ adds r0, r6, 0
+ bl sub_80081C8
+ bl sub_8082D4C
+ ldr r0, _080830D8
+ adds r1, r5, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl ConvertIntToDecimalStringN
+ ldr r0, _080830DC
+ bl ShowFieldAutoScrollMessage
+ mov r0, r9
+ subs r0, 0x8
+ add r0, r8
+ ldr r1, _080830E0
+ str r1, [r0]
+_080830C2:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080830D0: .4byte gUnknown_03004B28
+_080830D4: .4byte gMain
+_080830D8: .4byte gStringVar1
+_080830DC: .4byte gUnknown_081A4975
+_080830E0: .4byte sub_80830E4
+ thumb_func_end sub_808303C
+
+ thumb_func_start sub_80830E4
+sub_80830E4: @ 80830E4
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r6, r5, 0
+ adds r0, r5, 0
+ bl sub_8082E28
+ cmp r0, 0x1
+ beq _08083178
+ adds r0, r5, 0
+ bl sub_8082EB8
+ cmp r0, 0x1
+ beq _08083178
+ adds r0, r5, 0
+ bl sub_8082DF4
+ cmp r0, 0x1
+ beq _08083178
+ bl GetFieldMessageBoxMode
+ lsls r0, 24
+ cmp r0, 0
+ bne _08083178
+ bl sub_800820C
+ adds r4, r0, 0
+ bl GetLinkPlayerCount_2
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _08083132
+ ldr r0, _08083148
+ ldrh r1, [r0, 0x2C]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08083158
+_08083132:
+ ldr r0, _0808314C
+ bl ShowFieldAutoScrollMessage
+ ldr r1, _08083150
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _08083154
+ str r1, [r0]
+ b _08083178
+ .align 2, 0
+_08083148: .4byte gMain
+_0808314C: .4byte gUnknown_081A4932
+_08083150: .4byte gTasks
+_08083154: .4byte sub_8082FEC
+_08083158:
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08083178
+ movs r0, 0x5
+ bl PlaySE
+ bl sub_8007F4C
+ ldr r0, _08083180
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _08083184
+ str r0, [r1]
+_08083178:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083180: .4byte gTasks
+_08083184: .4byte sub_8083188
+ thumb_func_end sub_80830E4
+
+ thumb_func_start sub_8083188
+sub_8083188: @ 8083188
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080831CC
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrb r7, [r5, 0xA]
+ ldrb r6, [r5, 0xC]
+ adds r0, r4, 0
+ bl sub_8082DF4
+ cmp r0, 0x1
+ beq _080831EA
+ adds r0, r4, 0
+ bl sub_8083444
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _080831EA
+ bl GetLinkPlayerCount_2
+ adds r4, r0, 0
+ bl sub_800820C
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _080831D4
+ ldr r0, _080831D0
+ b _080831E8
+ .align 2, 0
+_080831CC: .4byte gTasks
+_080831D0: .4byte sub_8083418
+_080831D4:
+ ldr r4, _080831F0
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl sub_8082D9C
+ strh r0, [r4]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080831EA
+ ldr r0, _080831F4
+_080831E8:
+ str r0, [r5]
+_080831EA:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080831F0: .4byte gScriptResult
+_080831F4: .4byte sub_8083288
+ thumb_func_end sub_8083188
+
+ thumb_func_start sub_80831F8
+sub_80831F8: @ 80831F8
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08083244
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrb r7, [r5, 0xA]
+ ldrb r6, [r5, 0xC]
+ adds r0, r4, 0
+ bl sub_8082E28
+ cmp r0, 0x1
+ beq _08083270
+ adds r0, r4, 0
+ bl sub_8082DF4
+ cmp r0, 0x1
+ beq _08083270
+ ldr r4, _08083248
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl sub_8082D9C
+ strh r0, [r4]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ beq _08083270
+ cmp r0, 0x3
+ bne _08083250
+ bl sub_800832C
+ bl HideFieldMessageBox
+ ldr r0, _0808324C
+ b _0808326E
+ .align 2, 0
+_08083244: .4byte gTasks
+_08083248: .4byte gScriptResult
+_0808324C: .4byte sub_80833C4
+_08083250:
+ bl GetLinkPlayerCount_2
+ ldr r4, _08083278
+ strb r0, [r4]
+ bl GetMultiplayerId
+ ldr r1, _0808327C
+ strb r0, [r1]
+ ldrb r0, [r4]
+ bl sub_80081C8
+ ldr r0, _08083280
+ bl sub_8093390
+ ldr r0, _08083284
+_0808326E:
+ str r0, [r5]
+_08083270:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083278: .4byte gUnknown_03004864
+_0808327C: .4byte gUnknown_03004860
+_08083280: .4byte gBlockSendBuffer
+_08083284: .4byte sub_8083314
+ thumb_func_end sub_80831F8
+
+ thumb_func_start sub_8083288
+sub_8083288: @ 8083288
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r5, r4, 0
+ adds r0, r4, 0
+ bl sub_8082DF4
+ cmp r0, 0x1
+ beq _080832F8
+ ldr r0, _080832BC
+ ldrh r0, [r0]
+ cmp r0, 0x3
+ bne _080832C8
+ bl sub_800832C
+ bl HideFieldMessageBox
+ ldr r0, _080832C0
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080832C4
+ str r0, [r1]
+ b _080832F8
+ .align 2, 0
+_080832BC: .4byte gScriptResult
+_080832C0: .4byte gTasks
+_080832C4: .4byte sub_80833C4
+_080832C8:
+ bl GetLinkPlayerCount_2
+ ldr r4, _08083300
+ strb r0, [r4]
+ bl GetMultiplayerId
+ ldr r1, _08083304
+ strb r0, [r1]
+ ldrb r0, [r4]
+ bl sub_80081C8
+ ldr r0, _08083308
+ bl sub_8093390
+ ldr r1, _0808330C
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _08083310
+ str r1, [r0]
+ movs r0, 0x2
+ bl sub_8007E9C
+_080832F8:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083300: .4byte gUnknown_03004864
+_08083304: .4byte gUnknown_03004860
+_08083308: .4byte gBlockSendBuffer
+_0808330C: .4byte gTasks
+_08083310: .4byte sub_8083314
+ thumb_func_end sub_8083288
+
+ thumb_func_start sub_8083314
+sub_8083314: @ 8083314
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r5, 0
+ bl sub_8082DF4
+ cmp r0, 0x1
+ beq _080833B6
+ bl GetBlockRecievedStatus
+ adds r4, r0, 0
+ bl sub_8008198
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080833B6
+ movs r4, 0
+ ldr r6, _0808333C
+ b _0808335A
+ .align 2, 0
+_0808333C: .4byte gUnknown_0202FFC0
+_08083340:
+ lsls r1, r4, 8
+ ldr r0, _08083394
+ adds r1, r0
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 3
+ adds r0, r6
+ movs r2, 0x38
+ bl memcpy
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_0808335A:
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bcc _08083340
+ movs r0, 0
+ bl SetSuppressLinkErrorMessage
+ bl ResetBlockReceivedFlags
+ bl HideFieldMessageBox
+ ldr r0, _08083398
+ ldrh r0, [r0]
+ cmp r0, 0x1
+ bne _080833A4
+ ldr r0, _0808339C
+ ldrh r1, [r0]
+ ldr r0, _080833A0
+ bl sub_8082D4C
+ bl EnableBothScriptContexts
+ adds r0, r5, 0
+ bl DestroyTask
+ b _080833B6
+ .align 2, 0
+_08083394: .4byte gBlockRecvBuffer
+_08083398: .4byte gScriptResult
+_0808339C: .4byte gLinkType
+_080833A0: .4byte 0x00004411
+_080833A4:
+ bl sub_800832C
+ ldr r0, _080833BC
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080833C0
+ str r0, [r1]
+_080833B6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080833BC: .4byte gTasks
+_080833C0: .4byte sub_80833C4
+ thumb_func_end sub_8083314
+
+ thumb_func_start sub_80833C4
+sub_80833C4: @ 80833C4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080833E8
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080833E0
+ bl sub_8082D4C
+ bl EnableBothScriptContexts
+ adds r0, r4, 0
+ bl DestroyTask
+_080833E0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080833E8: .4byte gReceivedRemoteLinkPlayers
+ thumb_func_end sub_80833C4
+
+ thumb_func_start sub_80833EC
+sub_80833EC: @ 80833EC
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, _08083414
+ movs r0, 0x5
+ strh r0, [r1]
+ bl sub_8082D4C
+ bl HideFieldMessageBox
+ bl EnableBothScriptContexts
+ adds r0, r4, 0
+ bl DestroyTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083414: .4byte gScriptResult
+ thumb_func_end sub_80833EC
+
+ thumb_func_start sub_8083418
+sub_8083418: @ 8083418
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, _08083440
+ movs r0, 0x6
+ strh r0, [r1]
+ bl sub_8082D4C
+ bl HideFieldMessageBox
+ bl EnableBothScriptContexts
+ adds r0, r4, 0
+ bl DestroyTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083440: .4byte gScriptResult
+ thumb_func_end sub_8083418
+
+ thumb_func_start sub_8083444
+sub_8083444: @ 8083444
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08083468
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r2, r1, r2
+ ldrh r0, [r2, 0x10]
+ adds r0, 0x1
+ strh r0, [r2, 0x10]
+ lsls r0, 16
+ movs r1, 0x96
+ lsls r1, 18
+ cmp r0, r1
+ bgt _0808346C
+ movs r0, 0
+ b _08083472
+ .align 2, 0
+_08083468: .4byte gTasks
+_0808346C:
+ ldr r0, _08083478
+ str r0, [r2]
+ movs r0, 0x1
+_08083472:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083478: .4byte sub_8083418
+ thumb_func_end sub_8083444
+
+ thumb_func_start sub_808347C
+sub_808347C: @ 808347C
+ push {r4,lr}
+ movs r3, 0x2
+ movs r2, 0x2
+ ldr r0, _08083494
+ ldrh r0, [r0]
+ cmp r0, 0x2
+ beq _080834B0
+ cmp r0, 0x2
+ bgt _08083498
+ cmp r0, 0x1
+ beq _0808349E
+ b _080834CC
+ .align 2, 0
+_08083494: .4byte gUnknown_0202E8CC
+_08083498:
+ cmp r0, 0x5
+ beq _080834C0
+ b _080834CC
+_0808349E:
+ movs r3, 0x2
+ ldr r1, _080834A8
+ ldr r4, _080834AC
+ b _080834C8
+ .align 2, 0
+_080834A8: .4byte gLinkType
+_080834AC: .4byte 0x00002233
+_080834B0:
+ movs r3, 0x2
+ ldr r1, _080834B8
+ ldr r4, _080834BC
+ b _080834C8
+ .align 2, 0
+_080834B8: .4byte gLinkType
+_080834BC: .4byte 0x00002244
+_080834C0:
+ movs r3, 0x4
+ movs r2, 0x4
+ ldr r1, _080834DC
+ ldr r4, _080834E0
+_080834C8:
+ adds r0, r4, 0
+ strh r0, [r1]
+_080834CC:
+ adds r0, r3, 0
+ adds r1, r2, 0
+ bl sub_8082CD4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080834DC: .4byte gLinkType
+_080834E0: .4byte 0x00002255
+ thumb_func_end sub_808347C
+
+ thumb_func_start sub_80834E4
+sub_80834E4: @ 80834E4
+ push {lr}
+ ldr r1, _08083500
+ ldr r2, _08083504
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _08083508
+ movs r0, 0
+ strh r0, [r1]
+ movs r0, 0x2
+ movs r1, 0x2
+ bl sub_8082CD4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083500: .4byte gLinkType
+_08083504: .4byte 0x00001133
+_08083508: .4byte gUnknown_020239F8
+ thumb_func_end sub_80834E4
+
+ thumb_func_start sub_808350C
+sub_808350C: @ 808350C
+ push {lr}
+ ldr r0, _0808352C
+ movs r2, 0
+ strh r2, [r0]
+ ldr r1, _08083530
+ ldr r3, _08083534
+ adds r0, r3, 0
+ strh r0, [r1]
+ ldr r0, _08083538
+ strh r2, [r0]
+ movs r0, 0x2
+ movs r1, 0x4
+ bl sub_8082CD4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808352C: .4byte gScriptResult
+_08083530: .4byte gLinkType
+_08083534: .4byte 0x00003311
+_08083538: .4byte gUnknown_020239F8
+ thumb_func_end sub_808350C
+
+ thumb_func_start sub_808353C
+sub_808353C: @ 808353C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _0808355C
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _08083560
+ cmp r0, 0x1
+ beq _080835BC
+ b _080835CE
+ .align 2, 0
+_0808355C: .4byte gTasks
+_08083560:
+ ldr r0, _08083594
+ ldrh r0, [r0]
+ cmp r0, 0x1
+ bne _08083586
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ cmp r1, r0
+ bge _08083586
+ ldr r2, _08083598
+_08083578:
+ ldrh r4, [r2, 0x1A]
+ cmp r4, 0x1
+ beq _0808359C
+ adds r2, 0x1C
+ adds r1, 0x1
+ cmp r1, r0
+ blt _08083578
+_08083586:
+ bl EnableBothScriptContexts
+ adds r0, r5, 0
+ bl DestroyTask
+ b _080835CE
+ .align 2, 0
+_08083594: .4byte gScriptResult
+_08083598: .4byte gLinkPlayers
+_0808359C:
+ ldr r1, _080835B4
+ movs r0, 0x7
+ strh r0, [r1]
+ bl sub_8008480
+ ldr r1, _080835B8
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ strh r4, [r0, 0x8]
+ b _080835CE
+ .align 2, 0
+_080835B4: .4byte gScriptResult
+_080835B8: .4byte gTasks
+_080835BC:
+ ldr r0, _080835D4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080835CE
+ bl EnableBothScriptContexts
+ adds r0, r5, 0
+ bl DestroyTask
+_080835CE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080835D4: .4byte gReceivedRemoteLinkPlayers
+ thumb_func_end sub_808353C
+
+ thumb_func_start sub_80835D8
+sub_80835D8: @ 80835D8
+ push {r4,lr}
+ ldr r4, _0808360C
+ adds r0, r4, 0
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ bne _08083604
+ adds r0, r4, 0
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _08083610
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0
+ strh r1, [r0, 0x8]
+_08083604:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808360C: .4byte sub_808353C
+_08083610: .4byte gTasks
+ thumb_func_end sub_80835D8
+
+ thumb_func_start sub_8083614
+sub_8083614: @ 8083614
+ push {lr}
+ ldr r1, _08083630
+ ldr r2, _08083634
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _08083638
+ movs r0, 0
+ strh r0, [r1]
+ movs r0, 0x2
+ movs r1, 0x4
+ bl sub_8082CD4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083630: .4byte gLinkType
+_08083634: .4byte 0x00004411
+_08083638: .4byte gUnknown_020239F8
+ thumb_func_end sub_8083614
+
+ thumb_func_start sub_808363C
+sub_808363C: @ 808363C
+ push {lr}
+ ldr r1, _08083658
+ ldr r2, _0808365C
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _08083660
+ movs r0, 0
+ strh r0, [r1]
+ movs r0, 0x4
+ movs r1, 0x4
+ bl sub_8082CD4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083658: .4byte gLinkType
+_0808365C: .4byte 0x00006601
+_08083660: .4byte gUnknown_020239F8
+ thumb_func_end sub_808363C
+
+ thumb_func_start sub_8083664
+sub_8083664: @ 8083664
+ push {lr}
+ ldr r0, _08083678
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ beq _0808367C
+ movs r0, 0xFF
+ b _08083700
+ .align 2, 0
+_08083678: .4byte sub_8083710
+_0808367C:
+ ldr r0, _08083690
+ ldrh r0, [r0]
+ subs r0, 0x1
+ cmp r0, 0x4
+ bhi _080836F4
+ lsls r0, 2
+ ldr r1, _08083694
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08083690: .4byte gUnknown_0202E8CC
+_08083694: .4byte _08083698
+ .align 2, 0
+_08083698:
+ .4byte _080836AC
+ .4byte _080836BC
+ .4byte _080836DC
+ .4byte _080836EC
+ .4byte _080836CC
+_080836AC:
+ ldr r1, _080836B4
+ ldr r2, _080836B8
+ b _080836F0
+ .align 2, 0
+_080836B4: .4byte gLinkType
+_080836B8: .4byte 0x00002233
+_080836BC:
+ ldr r1, _080836C4
+ ldr r2, _080836C8
+ b _080836F0
+ .align 2, 0
+_080836C4: .4byte gLinkType
+_080836C8: .4byte 0x00002244
+_080836CC:
+ ldr r1, _080836D4
+ ldr r2, _080836D8
+ b _080836F0
+ .align 2, 0
+_080836D4: .4byte gLinkType
+_080836D8: .4byte 0x00002255
+_080836DC:
+ ldr r1, _080836E4
+ ldr r2, _080836E8
+ b _080836F0
+ .align 2, 0
+_080836E4: .4byte gLinkType
+_080836E8: .4byte 0x00001111
+_080836EC:
+ ldr r1, _08083704
+ ldr r2, _08083708
+_080836F0:
+ adds r0, r2, 0
+ strh r0, [r1]
+_080836F4:
+ ldr r0, _0808370C
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+_08083700:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083704: .4byte gLinkType
+_08083708: .4byte 0x00003322
+_0808370C: .4byte sub_8083710
+ thumb_func_end sub_8083664
+
+ thumb_func_start sub_8083710
+sub_8083710: @ 8083710
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0808373C
+ adds r4, r1, r0
+ movs r3, 0
+ ldrsh r2, [r4, r3]
+ cmp r2, 0
+ bne _08083744
+ bl OpenLink
+ bl ResetLinkPlayers
+ ldr r0, _08083740
+ movs r1, 0x50
+ bl CreateTask
+ b _08083750
+ .align 2, 0
+_0808373C: .4byte gUnknown_03004B28
+_08083740: .4byte sub_8083C50
+_08083744:
+ cmp r2, 0x9
+ ble _08083750
+ subs r0, 0x8
+ adds r0, r1, r0
+ ldr r1, _0808375C
+ str r1, [r0]
+_08083750:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808375C: .4byte sub_8083760
+ thumb_func_end sub_8083710
+
+ thumb_func_start sub_8083760
+sub_8083760: @ 8083760
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r5, r4, 0
+ bl GetLinkPlayerCount_2
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _080837A6
+ bl IsLinkMaster
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08083798
+ ldr r0, _08083790
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _08083794
+ b _080837A4
+ .align 2, 0
+_08083790: .4byte gTasks
+_08083794: .4byte sub_80837B4
+_08083798:
+ ldr r0, _080837AC
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080837B0
+_080837A4:
+ str r0, [r1]
+_080837A6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080837AC: .4byte gTasks
+_080837B0: .4byte sub_80837EC
+ thumb_func_end sub_8083760
+
+ thumb_func_start sub_80837B4
+sub_80837B4: @ 80837B4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ bl sub_800820C
+ adds r4, r0, 0
+ bl GetLinkPlayerCount_2
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080837DE
+ bl sub_8007F4C
+ ldr r0, _080837E4
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080837E8
+ str r0, [r1]
+_080837DE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080837E4: .4byte gTasks
+_080837E8: .4byte sub_80837EC
+ thumb_func_end sub_80837B4
+
+ thumb_func_start sub_80837EC
+sub_80837EC: @ 80837EC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _0808381C
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _08083814
+ bl IsLinkPlayerDataExchangeComplete
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08083814
+ bl sub_800826C
+ bl sub_8007B14
+ adds r0, r4, 0
+ bl DestroyTask
+_08083814:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808381C: .4byte gReceivedRemoteLinkPlayers
+ thumb_func_end sub_80837EC
+
+ thumb_func_start sub_8083820
+sub_8083820: @ 8083820
+ push {lr}
+ bl InitSaveDialog
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8083820
+
+ thumb_func_start sub_808382C
+sub_808382C: @ 808382C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08083850
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bls _08083846
+ b _08083940
+_08083846:
+ lsls r0, 2
+ ldr r1, _08083854
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08083850: .4byte gTasks
+_08083854: .4byte _08083858
+ .align 2, 0
+_08083858:
+ .4byte _08083870
+ .4byte _08083890
+ .4byte _080838A0
+ .4byte _080838B0
+ .4byte _080838B6
+ .4byte _080838CC
+_08083870:
+ movs r0, 0x1
+ movs r1, 0
+ bl fade_screen
+ ldr r1, _08083888
+ ldr r2, _0808388C
+ adds r0, r2, 0
+ strh r0, [r1]
+ bl ClearLinkCallback_2
+ b _080838BE
+ .align 2, 0
+_08083888: .4byte gLinkType
+_0808388C: .4byte 0x00002211
+_08083890:
+ ldr r0, _0808389C
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ b _080838BA
+ .align 2, 0
+_0808389C: .4byte gPaletteFade
+_080838A0:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _08083940
+ b _080838BE
+_080838B0:
+ bl sub_800832C
+ b _080838BE
+_080838B6:
+ ldr r0, _080838C8
+ ldrb r0, [r0]
+_080838BA:
+ cmp r0, 0
+ bne _08083940
+_080838BE:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08083940
+ .align 2, 0
+_080838C8: .4byte gReceivedRemoteLinkPlayers
+_080838CC:
+ ldr r0, _080838E4
+ ldr r0, [r0, 0x4]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080838E8
+ movs r0, 0xE6
+ lsls r0, 1
+ bl current_map_music_set__default_for_battle
+ b _080838EE
+ .align 2, 0
+_080838E4: .4byte gLinkPlayers
+_080838E8:
+ ldr r0, _08083900
+ bl current_map_music_set__default_for_battle
+_080838EE:
+ ldr r0, _08083904
+ ldrh r0, [r0]
+ cmp r0, 0x2
+ beq _08083918
+ cmp r0, 0x2
+ bgt _08083908
+ cmp r0, 0x1
+ beq _0808390E
+ b _0808392E
+ .align 2, 0
+_08083900: .4byte 0x000001cb
+_08083904: .4byte gUnknown_0202E8CC
+_08083908:
+ cmp r0, 0x5
+ beq _08083924
+ b _0808392E
+_0808390E:
+ ldr r1, _08083914
+ movs r0, 0xA
+ b _0808392C
+ .align 2, 0
+_08083914: .4byte gUnknown_020239F8
+_08083918:
+ ldr r1, _08083920
+ movs r0, 0xB
+ b _0808392C
+ .align 2, 0
+_08083920: .4byte gUnknown_020239F8
+_08083924:
+ bl sub_80C5604
+ ldr r1, _08083948
+ movs r0, 0x4B
+_0808392C:
+ strh r0, [r1]
+_0808392E:
+ ldr r0, _0808394C
+ bl SetMainCallback2
+ ldr r1, _08083950
+ ldr r0, _08083954
+ str r0, [r1, 0x8]
+ adds r0, r5, 0
+ bl DestroyTask
+_08083940:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083948: .4byte gUnknown_020239F8
+_0808394C: .4byte sub_800E7C4
+_08083950: .4byte gMain
+_08083954: .4byte sub_8083958
+ thumb_func_end sub_808382C
+
+ thumb_func_start sub_8083958
+sub_8083958: @ 8083958
+ push {lr}
+ bl call_map_music_set_to_zero
+ bl copy_player_party_from_sav1
+ bl copy_bags_and_unk_data_to_save_blocks
+ bl sub_810FEFC
+ ldr r0, _08083990
+ ldrh r0, [r0]
+ cmp r0, 0x5
+ beq _0808397E
+ ldr r0, _08083994
+ ldrb r1, [r0]
+ movs r0, 0x1
+ eors r0, r1
+ bl sub_8110290
+_0808397E:
+ ldr r0, _08083998
+ ldr r1, _0808399C
+ str r1, [r0, 0x8]
+ ldr r0, _080839A0
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083990: .4byte gUnknown_0202E8CC
+_08083994: .4byte gUnknown_03004860
+_08083998: .4byte gMain
+_0808399C: .4byte sub_805465C
+_080839A0: .4byte sub_8071B28
+ thumb_func_end sub_8083958
+
+ thumb_func_start sub_80839A4
+sub_80839A4: @ 80839A4
+ push {lr}
+ ldr r0, _080839CC
+ ldrh r1, [r0]
+ subs r0, r1, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bls _080839B8
+ cmp r1, 0x5
+ bne _080839C0
+_080839B8:
+ bl copy_player_party_from_sav1
+ bl copy_bags_and_unk_data_to_save_blocks
+_080839C0:
+ movs r0, 0x7F
+ bl copy_saved_warp2_bank_and_enter_x_to_warp1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080839CC: .4byte gUnknown_0202E8CC
+ thumb_func_end sub_80839A4
+
+ thumb_func_start sub_80839D0
+sub_80839D0: @ 80839D0
+ push {lr}
+ bl sub_805559C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80839D0
+
+ thumb_func_start sub_80839DC
+sub_80839DC: @ 80839DC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _08083A00
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _08083A20
+ cmp r0, 0x1
+ bgt _08083A04
+ cmp r0, 0
+ beq _08083A0E
+ b _08083A7E
+ .align 2, 0
+_08083A00: .4byte gTasks
+_08083A04:
+ cmp r0, 0x2
+ beq _08083A40
+ cmp r0, 0x3
+ beq _08083A68
+ b _08083A7E
+_08083A0E:
+ ldr r0, _08083A1C
+ bl ShowFieldMessage
+ movs r0, 0x1
+ strh r0, [r5, 0x8]
+ b _08083A7E
+ .align 2, 0
+_08083A1C: .4byte gUnknown_081A490C
+_08083A20:
+ bl IsFieldMessageBoxHidden
+ lsls r0, 24
+ cmp r0, 0
+ beq _08083A7E
+ bl sub_8055574
+ ldr r0, _08083A3C
+ ldrb r0, [r0]
+ bl sub_8007270
+ movs r0, 0x2
+ strh r0, [r5, 0x8]
+ b _08083A7E
+ .align 2, 0
+_08083A3C: .4byte gUnknown_0202E8CE
+_08083A40:
+ bl sub_80554F8
+ cmp r0, 0x1
+ beq _08083A52
+ cmp r0, 0x1
+ ble _08083A7E
+ cmp r0, 0x2
+ beq _08083A62
+ b _08083A7E
+_08083A52:
+ bl HideFieldMessageBox
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ adds r0, r4, 0
+ bl SwitchTaskToFollowupFunc
+ b _08083A7E
+_08083A62:
+ movs r0, 0x3
+ strh r0, [r5, 0x8]
+ b _08083A7E
+_08083A68:
+ bl sub_8055588
+ bl HideFieldMessageBox
+ bl MenuZeroFillScreen
+ adds r0, r4, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+_08083A7E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80839DC
+
+ thumb_func_start sub_8083A84
+sub_8083A84: @ 8083A84
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _08083AA8
+ adds r0, r4, 0
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl SetTaskFuncWithFollowupFunc
+ bl ScriptContext1_Stop
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083AA8: .4byte sub_80839DC
+ thumb_func_end sub_8083A84
+
+ thumb_func_start sub_8083AAC
+sub_8083AAC: @ 8083AAC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08083AD0
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08083AF0
+ cmp r0, 0x1
+ bgt _08083AD4
+ cmp r0, 0
+ beq _08083ADE
+ b _08083B34
+ .align 2, 0
+_08083AD0: .4byte gTasks
+_08083AD4:
+ cmp r0, 0x2
+ beq _08083B04
+ cmp r0, 0x3
+ beq _08083B20
+ b _08083B34
+_08083ADE:
+ bl ScriptContext2_Enable
+ movs r0, 0x1
+ movs r1, 0
+ bl fade_screen
+ bl ClearLinkCallback_2
+ b _08083B14
+_08083AF0:
+ ldr r0, _08083B00
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _08083B34
+ b _08083B14
+ .align 2, 0
+_08083B00: .4byte gPaletteFade
+_08083B04:
+ ldr r1, _08083B1C
+ movs r0, 0
+ strb r0, [r1]
+ strb r0, [r1, 0x1]
+ bl m4aMPlayAllStop
+ bl sub_800832C
+_08083B14:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08083B34
+ .align 2, 0
+_08083B1C: .4byte gUnknown_020297D8
+_08083B20:
+ ldr r0, _08083B3C
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08083B34
+ ldr r0, _08083B40
+ bl SetMainCallback2
+ adds r0, r5, 0
+ bl DestroyTask
+_08083B34:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083B3C: .4byte gReceivedRemoteLinkPlayers
+_08083B40: .4byte sub_8047CD8
+ thumb_func_end sub_8083AAC
+
+ thumb_func_start sub_8083B44
+sub_8083B44: @ 8083B44
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl sub_8083B6C
+ adds r0, r4, 0
+ bl DestroyTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8083B44
+
+ thumb_func_start sub_8083B5C
+sub_8083B5C: @ 8083B5C
+ push {lr}
+ ldr r0, _08083B68
+ bl sub_8083A84
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083B68: .4byte sub_8083B44
+ thumb_func_end sub_8083B5C
+
+ thumb_func_start sub_8083B6C
+sub_8083B6C: @ 8083B6C
+ push {lr}
+ ldr r0, _08083B7C
+ movs r1, 0x50
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083B7C: .4byte sub_8083AAC
+ thumb_func_end sub_8083B6C
+
+ thumb_func_start sub_8083B80
+sub_8083B80: @ 8083B80
+ push {lr}
+ bl sub_8083B6C
+ bl ScriptContext1_Stop
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8083B80
+
+ thumb_func_start sub_8083B90
+sub_8083B90: @ 8083B90
+ push {lr}
+ ldr r0, _08083BA4
+ ldr r2, _08083BA8
+ adds r1, r2, 0
+ strh r1, [r0]
+ ldr r0, _08083BAC
+ bl sub_8083A84
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083BA4: .4byte gLinkType
+_08083BA8: .4byte 0x00002211
+_08083BAC: .4byte sub_808382C
+ thumb_func_end sub_8083B90
+
+ thumb_func_start unref_sub_8083BB0
+unref_sub_8083BB0: @ 8083BB0
+ push {r4,lr}
+ ldr r4, _08083BD4
+ adds r0, r4, 0
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08083BD8
+ adds r1, r4, 0
+ bl SetTaskFuncWithFollowupFunc
+ bl ScriptContext1_Stop
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083BD4: .4byte sub_80839DC
+_08083BD8: .4byte sub_80B9484
+ thumb_func_end unref_sub_8083BB0
+
+ thumb_func_start sub_8083BDC
+sub_8083BDC: @ 8083BDC
+ push {lr}
+ ldr r0, _08083BEC
+ ldrb r0, [r0]
+ ldr r1, _08083BF0
+ bl sub_8093130
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083BEC: .4byte gUnknown_0202E8D0
+_08083BF0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end sub_8083BDC
+
+ thumb_func_start sub_8083BF4
+sub_8083BF4: @ 8083BF4
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _08083C34
+ strh r4, [r0]
+ ldr r0, _08083C38
+ lsls r1, r4, 3
+ subs r1, r4
+ lsls r1, 2
+ ldr r2, _08083C3C
+ adds r1, r2
+ bl StringCopy
+ adds r0, r4, 0
+ bl sub_80934C4
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _08083C48
+ ldr r0, _08083C40
+ ldr r2, _08083C44
+ subs r1, 0x1
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl StringCopy
+ movs r0, 0x1
+ b _08083C4A
+ .align 2, 0
+_08083C34: .4byte gUnknown_0202E8D0
+_08083C38: .4byte gStringVar1
+_08083C3C: .4byte gLinkPlayers + 0x8
+_08083C40: .4byte gStringVar2
+_08083C44: .4byte gTrainerCardColorNames
+_08083C48:
+ movs r0, 0
+_08083C4A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8083BF4
+
+ thumb_func_start sub_8083C50
+sub_8083C50: @ 8083C50
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r5, r4, 0
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _08083C98
+ adds r0, r1
+ ldrh r1, [r0, 0x8]
+ adds r1, 0x1
+ strh r1, [r0, 0x8]
+ lsls r1, 16
+ movs r0, 0x96
+ lsls r0, 17
+ cmp r1, r0
+ ble _08083C82
+ bl CloseLink
+ ldr r0, _08083C9C
+ bl SetMainCallback2
+ adds r0, r4, 0
+ bl DestroyTask
+_08083C82:
+ ldr r0, _08083CA0
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08083C90
+ adds r0, r5, 0
+ bl DestroyTask
+_08083C90:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083C98: .4byte gTasks
+_08083C9C: .4byte CB2_LinkError
+_08083CA0: .4byte gReceivedRemoteLinkPlayers
+ thumb_func_end sub_8083C50
+
+ thumb_func_start sub_8083CA4
+sub_8083CA4: @ 8083CA4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _08083CC4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08083CBC
+ bl EnableBothScriptContexts
+ adds r0, r4, 0
+ bl DestroyTask
+_08083CBC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083CC4: .4byte gReceivedRemoteLinkPlayers
+ thumb_func_end sub_8083CA4
+
+ thumb_func_start unref_sub_8083CC8
+unref_sub_8083CC8: @ 8083CC8
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl sub_800832C
+ ldr r1, _08083CE8
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _08083CEC
+ str r1, [r0]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083CE8: .4byte gTasks
+_08083CEC: .4byte sub_8083CA4
+ thumb_func_end unref_sub_8083CC8
+
+ thumb_func_start unref_sub_8083CF0
+unref_sub_8083CF0: @ 8083CF0
+ push {r4-r7,lr}
+ ldr r0, _08083D38
+ ldr r4, [r0]
+ lsls r4, 26
+ lsrs r4, 30
+ ldr r0, _08083D3C
+ movs r1, 0xFF
+ strb r1, [r0]
+ ldr r1, _08083D40
+ bl StringAppend
+ movs r5, 0
+ ldr r0, _08083D44
+ movs r6, 0x1
+ eors r4, r6
+ lsls r4, 1
+ adds r7, r4, r0
+ movs r4, 0
+_08083D14:
+ ldrh r0, [r7]
+ asrs r0, r5
+ ands r0, r6
+ cmp r0, 0
+ beq _08083D28
+ ldr r1, _08083D48
+ adds r1, r4, r1
+ ldr r0, _08083D3C
+ bl StringAppend
+_08083D28:
+ adds r4, 0x3
+ adds r5, 0x1
+ cmp r5, 0x9
+ ble _08083D14
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08083D38: .4byte 0x04000128
+_08083D3C: .4byte gUnknown_03004DA0
+_08083D40: .4byte gUnknown_0839B24A
+_08083D44: .4byte word_3002910
+_08083D48: .4byte gUnknown_0839B22C
+ thumb_func_end unref_sub_8083CF0
+
+ thumb_func_start sub_8083D4C
+sub_8083D4C: @ 8083D4C
+ push {lr}
+ ldr r0, _08083D60
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08083D64
+ movs r0, 0
+ b _08083D6A
+ .align 2, 0
+_08083D60: .4byte gMain
+_08083D64:
+ bl sub_8071C20
+ movs r0, 0x1
+_08083D6A:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8083D4C
+
+ thumb_func_start sub_8083D70
+sub_8083D70: @ 8083D70
+ push {r4-r6,lr}
+ sub sp, 0x34
+ ldr r0, _08083DE4
+ movs r1, 0xB
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r4, 0
+ bl sub_8041870
+ adds r5, r0, 0
+ lsls r5, 16
+ lsrs r5, 16
+ movs r6, 0xB
+ adds r1, r4, 0
+ muls r1, r6
+ ldr r4, _08083DE8
+ adds r1, r4
+ mov r0, sp
+ bl StringCopy
+ ldr r1, _08083DEC
+ mov r0, sp
+ bl StringAppend
+ adds r1, r5, 0
+ muls r1, r6
+ adds r1, r4
+ mov r0, sp
+ bl StringAppend
+ ldr r1, _08083DF0
+ mov r0, sp
+ bl StringAppend
+ bl MenuZeroFillScreen
+ movs r0, 0
+ movs r1, 0xE
+ movs r2, 0x1E
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ mov r0, sp
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrint
+ ldr r1, _08083DF4
+ ldr r0, _08083DF8
+ str r0, [r1]
+ movs r0, 0
+ add sp, 0x34
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083DE4: .4byte gPlayerParty
+_08083DE8: .4byte gSpeciesNames
+_08083DEC: .4byte gUnknown_0839B24D
+_08083DF0: .4byte gUnknown_0839B255
+_08083DF4: .4byte gCallback_03004AE8
+_08083DF8: .4byte sub_8083D4C
+ thumb_func_end sub_8083D70
+
+ thumb_func_start sub_8083DFC
+sub_8083DFC: @ 8083DFC
+ push {lr}
+ ldr r0, _08083E24
+ bl daycare_count_pokemon
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _08083E1A
+ bl daycare_relationship_score_from_savegame
+ lsls r0, 24
+ cmp r0, 0
+ beq _08083E1A
+ bl sub_8041940
+_08083E1A:
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083E24: .4byte gSaveBlock1 + 0x2F9C
+ thumb_func_end sub_8083DFC
+
+ thumb_func_start sub_8083E28
+sub_8083E28: @ 8083E28
+ push {lr}
+ ldr r0, _08083E50
+ bl daycare_count_pokemon
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _08083E46
+ bl daycare_relationship_score_from_savegame
+ lsls r0, 24
+ cmp r0, 0
+ beq _08083E46
+ bl sub_8041950
+_08083E46:
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083E50: .4byte gSaveBlock1 + 0x2F9C
+ thumb_func_end sub_8083E28
+
+ thumb_func_start sub_8083E54
+sub_8083E54: @ 8083E54
+ push {lr}
+ movs r0, 0xFA
+ lsls r0, 2
+ bl sub_8041790
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8083E54
+
+ thumb_func_start sub_8083E68
+sub_8083E68: @ 8083E68
+ push {lr}
+ ldr r0, _08083E7C
+ bl sub_8041790
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083E7C: .4byte 0x00002710
+ thumb_func_end sub_8083E68
+
+ thumb_func_start sub_8083E80
+sub_8083E80: @ 8083E80
+ push {lr}
+ bl sub_8132670
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8083E80
+
+ thumb_func_start sub_8083E90
+sub_8083E90: @ 8083E90
+ push {r4-r6,lr}
+ sub sp, 0x4
+ movs r5, 0
+ movs r6, 0
+_08083E98:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _08083EE0
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x2D
+ bl GetMonData
+ cmp r0, 0
+ beq _08083EBC
+ mov r0, sp
+ strb r6, [r0]
+ adds r0, r4, 0
+ movs r1, 0x20
+ mov r2, sp
+ bl SetMonData
+_08083EBC:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x5
+ bls _08083E98
+ ldr r0, _08083EE4
+ ldr r1, _08083EE8
+ adds r0, r1
+ movs r1, 0xFD
+ strb r1, [r0]
+ bl sub_8071C20
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083EE0: .4byte gPlayerParty
+_08083EE4: .4byte gSaveBlock1
+_08083EE8: .4byte 0x000030b6
+ thumb_func_end sub_8083E90
+
+ thumb_func_start sub_8083EEC
+sub_8083EEC: @ 8083EEC
+ push {lr}
+ ldr r0, _08083F04
+ ldr r2, _08083F08
+ movs r1, 0x2
+ bl SetMonData
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083F04: .4byte gPlayerParty
+_08083F08: .4byte gUnknown_0839B257
+ thumb_func_end sub_8083EEC
+
+ thumb_func_start sub_8083F0C
+sub_8083F0C: @ 8083F0C
+ push {r4,lr}
+ movs r4, 0
+_08083F10:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_810CA6C
+ adds r4, 0x1
+ cmp r4, 0x27
+ ble _08083F10
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8083F0C
+
+ thumb_func_start sub_8083F2C
+sub_8083F2C: @ 8083F2C
+ push {lr}
+ bl ProcessMenuInput
+ lsls r0, 24
+ asrs r1, r0, 24
+ movs r0, 0x2
+ negs r0, r0
+ cmp r1, r0
+ beq _08083F52
+ adds r0, 0x1
+ cmp r1, r0
+ beq _08083F60
+ ldr r2, _08083F58
+ ldr r0, _08083F5C
+ lsls r1, 3
+ adds r0, 0x4
+ adds r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+_08083F52:
+ movs r0, 0
+ b _08083F66
+ .align 2, 0
+_08083F58: .4byte gCallback_03004AE8
+_08083F5C: .4byte gUnknown_0839B2C0
+_08083F60:
+ bl sub_8071C20
+ movs r0, 0x1
+_08083F66:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8083F2C
+
+ thumb_func_start unref_sub_8083F6C
+unref_sub_8083F6C: @ 8083F6C
+ push {lr}
+ sub sp, 0x8
+ bl MenuZeroFillScreen
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0xA
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ ldr r3, _08083FB0
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0x9
+ bl PrintMenuItems
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x9
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0x1
+ movs r2, 0x1
+ movs r3, 0x9
+ bl InitMenu
+ ldr r1, _08083FB4
+ ldr r0, _08083FB8
+ str r0, [r1]
+ movs r0, 0
+ add sp, 0x8
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083FB0: .4byte gUnknown_0839B2C0
+_08083FB4: .4byte gCallback_03004AE8
+_08083FB8: .4byte sub_8083F2C
+ thumb_func_end unref_sub_8083F6C
+
+ thumb_func_start sub_8083FBC
+sub_8083FBC: @ 8083FBC
+ push {r4,r5,lr}
+ movs r4, 0
+ ldr r5, _08083FEC
+_08083FC2:
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ adds r1, r0, r5
+ ldrb r0, [r1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _08083FF0
+ ldrb r0, [r1, 0x7]
+ cmp r0, 0x1
+ beq _08083FDC
+ cmp r0, 0x3
+ bne _08083FF0
+_08083FDC:
+ adds r0, r4, 0
+ bl sub_8084004
+ lsls r0, 24
+ cmp r0, 0
+ beq _08083FF0
+ movs r0, 0x1
+ b _08083FFC
+ .align 2, 0
+_08083FEC: .4byte gMapObjects
+_08083FF0:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _08083FC2
+ movs r0, 0
+_08083FFC:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8083FBC
+
+ thumb_func_start sub_8084004
+sub_8084004: @ 8084004
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r7, r4, 0
+ adds r0, r4, 0
+ bl GetFieldObjectScriptPointerByFieldObjectId
+ adds r6, r0, 0
+ bl GetTrainerFlagFromScriptPointer
+ cmp r0, 0
+ bne _08084034
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ ldr r1, _08084038
+ adds r5, r0, r1
+ adds r0, r5, 0
+ bl CheckIfTrainerCanApproachPlayer
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _0808403C
+_08084034:
+ movs r0, 0
+ b _08084052
+ .align 2, 0
+_08084038: .4byte gMapObjects
+_0808403C:
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl SingleTrainerWantsBattle
+ subs r1, r4, 0x1
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl sub_80842C8
+ movs r0, 0x1
+_08084052:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8084004
+
+ thumb_func_start CheckIfTrainerCanApproachPlayer
+CheckIfTrainerCanApproachPlayer: @ 8084058
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r7, r0, 0
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ ldrb r0, [r7, 0x7]
+ mov r8, r4
+ cmp r0, 0x1
+ bne _080840B8
+ ldr r1, _080840B0
+ ldrb r0, [r7, 0x18]
+ lsls r0, 28
+ lsrs r0, 26
+ subs r0, 0x4
+ adds r0, r1
+ ldrb r1, [r7, 0x1D]
+ mov r2, sp
+ movs r3, 0
+ ldrsh r2, [r2, r3]
+ movs r5, 0
+ ldrsh r3, [r4, r5]
+ ldr r4, [r0]
+ adds r0, r7, 0
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r2, [r7, 0x18]
+ lsls r2, 28
+ lsrs r2, 28
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl CheckPathBetweenTrainerAndPlayer
+ lsls r0, 24
+ lsrs r0, 24
+ b _080840F8
+ .align 2, 0
+_080840B0: .4byte gUnknown_0839B488
+_080840B4:
+ adds r0, r6, 0
+ b _080840F8
+_080840B8:
+ movs r5, 0
+_080840BA:
+ ldr r0, _08084104
+ lsls r4, r5, 2
+ adds r4, r0
+ ldrb r1, [r7, 0x1D]
+ mov r0, sp
+ movs r6, 0
+ ldrsh r2, [r0, r6]
+ mov r0, r8
+ movs r6, 0
+ ldrsh r3, [r0, r6]
+ ldr r4, [r4]
+ adds r0, r7, 0
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r4, 0
+ bl CheckPathBetweenTrainerAndPlayer
+ lsls r0, 24
+ cmp r0, 0
+ bne _080840B4
+ adds r5, r4, 0
+ cmp r5, 0x3
+ bls _080840BA
+ movs r0, 0
+_080840F8:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08084104: .4byte gUnknown_0839B488
+ thumb_func_end CheckIfTrainerCanApproachPlayer
+
+ thumb_func_start IsTrainerInRangeSouth
+IsTrainerInRangeSouth: @ 8084108
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r3, 16
+ lsrs r5, r3, 16
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r0, r2
+ bne _08084142
+ lsls r0, r5, 16
+ asrs r2, r0, 16
+ ldrh r3, [r4, 0x12]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r2, r0
+ ble _08084142
+ adds r1, r0, 0
+ lsls r0, r6, 16
+ asrs r0, 16
+ adds r1, r0
+ cmp r2, r1
+ bgt _08084142
+ subs r0, r5, r3
+ lsls r0, 24
+ lsrs r0, 24
+ b _08084144
+_08084142:
+ movs r0, 0
+_08084144:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTrainerInRangeSouth
+
+ thumb_func_start IsTrainerInRangeNorth
+IsTrainerInRangeNorth: @ 808414C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r3, 16
+ lsrs r5, r3, 16
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r0, r2
+ bne _08084186
+ lsls r0, r5, 16
+ asrs r2, r0, 16
+ ldrh r3, [r4, 0x12]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r2, r0
+ bge _08084186
+ adds r1, r0, 0
+ lsls r0, r6, 16
+ asrs r0, 16
+ subs r1, r0
+ cmp r2, r1
+ blt _08084186
+ subs r0, r3, r5
+ lsls r0, 24
+ lsrs r0, 24
+ b _08084188
+_08084186:
+ movs r0, 0
+_08084188:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTrainerInRangeNorth
+
+ thumb_func_start IsTrainerInRangeWest
+IsTrainerInRangeWest: @ 8084190
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r5, r2, 16
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ lsls r3, 16
+ asrs r3, 16
+ cmp r0, r3
+ bne _080841CA
+ lsls r0, r5, 16
+ asrs r3, r0, 16
+ ldrh r2, [r4, 0x10]
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r3, r0
+ bge _080841CA
+ adds r1, r0, 0
+ lsls r0, r6, 16
+ asrs r0, 16
+ subs r1, r0
+ cmp r3, r1
+ blt _080841CA
+ subs r0, r2, r5
+ lsls r0, 24
+ lsrs r0, 24
+ b _080841CC
+_080841CA:
+ movs r0, 0
+_080841CC:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTrainerInRangeWest
+
+ thumb_func_start IsTrainerInRangeEast
+IsTrainerInRangeEast: @ 80841D4
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r5, r2, 16
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ lsls r3, 16
+ asrs r3, 16
+ cmp r0, r3
+ bne _0808420E
+ lsls r0, r5, 16
+ asrs r3, r0, 16
+ ldrh r2, [r4, 0x10]
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r3, r0
+ ble _0808420E
+ adds r1, r0, 0
+ lsls r0, r6, 16
+ asrs r0, 16
+ adds r1, r0
+ cmp r3, r1
+ bgt _0808420E
+ subs r0, r5, r2
+ lsls r0, 24
+ lsrs r0, 24
+ b _08084210
+_0808420E:
+ movs r0, 0
+_08084210:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTrainerInRangeEast
+
+ thumb_func_start CheckPathBetweenTrainerAndPlayer
+CheckPathBetweenTrainerAndPlayer: @ 8084218
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r2, 24
+ lsrs r7, r2, 24
+ cmp r1, 0
+ beq _080842B2
+ ldrh r1, [r6, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r6, 0x12]
+ mov r1, sp
+ adds r1, 0x2
+ strh r0, [r1]
+ movs r4, 0
+ mov r8, r1
+ mov r5, r9
+ subs r5, 0x1
+ cmp r4, r5
+ bgt _08084284
+_0808424C:
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r3, r8
+ movs r0, 0
+ ldrsh r2, [r3, r0]
+ adds r0, r6, 0
+ adds r3, r7, 0
+ bl sub_8060024
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _08084270
+ movs r0, 0x1
+ ands r1, r0
+ cmp r1, 0
+ bne _080842B2
+_08084270:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r7, 0
+ mov r1, sp
+ mov r2, r8
+ bl MoveCoords
+ cmp r4, r5
+ ble _0808424C
+_08084284:
+ ldrb r4, [r6, 0x19]
+ lsls r5, r4, 28
+ lsrs r5, 28
+ lsrs r4, 4
+ movs r0, 0
+ strb r0, [r6, 0x19]
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r3, r8
+ movs r0, 0
+ ldrsh r2, [r3, r0]
+ adds r0, r6, 0
+ adds r3, r7, 0
+ bl npc_block_way
+ lsls r0, 24
+ lsrs r1, r0, 24
+ lsls r4, 4
+ orrs r5, r4
+ strb r5, [r6, 0x19]
+ cmp r1, 0x4
+ beq _080842B6
+_080842B2:
+ movs r0, 0
+ b _080842B8
+_080842B6:
+ mov r0, r9
+_080842B8:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckPathBetweenTrainerAndPlayer
+
+ thumb_func_start sub_80842C8
+sub_80842C8: @ 80842C8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r4, r1, 24
+ lsrs r4, 24
+ ldr r0, _080842F4
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080842F8
+ adds r1, r0
+ lsrs r0, r5, 16
+ strh r0, [r1, 0xA]
+ strh r5, [r1, 0xC]
+ strh r4, [r1, 0xE]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080842F4: .4byte sub_808433C
+_080842F8: .4byte gTasks
+ thumb_func_end sub_80842C8
+
+ thumb_func_start sub_80842FC
+sub_80842FC: @ 80842FC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r5, _08084334
+ adds r0, r5, 0
+ bl FindTaskIdByFunc
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl SetTaskFuncWithFollowupFunc
+ ldr r1, _08084338
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x1
+ strh r1, [r0, 0x8]
+ adds r0, r4, 0
+ bl _call_via_r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08084334: .4byte sub_808433C
+_08084338: .4byte gTasks
+ thumb_func_end sub_80842FC
+
+ thumb_func_start sub_808433C
+sub_808433C: @ 808433C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _08084368
+ adds r4, r0, r1
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ lsls r5, r0, 16
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ orrs r5, r0
+ ldrb r0, [r5]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0808436C
+ adds r0, r6, 0
+ bl SwitchTaskToFollowupFunc
+ b _08084388
+ .align 2, 0
+_08084368: .4byte gTasks
+_0808436C:
+ ldr r7, _08084390
+_0808436E:
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r0, 2
+ adds r0, r7
+ ldr r3, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl _call_via_r3
+ lsls r0, 24
+ cmp r0, 0
+ bne _0808436E
+_08084388:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08084390: .4byte gUnknown_0839B498
+ thumb_func_end sub_808433C
+
+ thumb_func_start sub_8084394
+sub_8084394: @ 8084394
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_8084394
+
+ thumb_func_start sub_8084398
+sub_8084398: @ 8084398
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ ldr r1, _080843D8
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ adds r0, r4, 0
+ bl FieldObjectGetLocalIdAndMap
+ movs r0, 0
+ bl FieldEffectStart
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080843D8: .4byte gUnknown_0202FF84
+ thumb_func_end sub_8084398
+
+ thumb_func_start sub_80843DC
+sub_80843DC: @ 80843DC
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ adds r5, r2, 0
+ movs r0, 0
+ bl FieldEffectActiveListContains
+ lsls r0, 24
+ cmp r0, 0
+ beq _080843F2
+ movs r0, 0
+ b _08084414
+_080843F2:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ ldrb r0, [r5, 0x6]
+ subs r0, 0x39
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08084408
+ movs r0, 0x6
+ strh r0, [r4, 0x8]
+_08084408:
+ ldrb r0, [r5, 0x6]
+ cmp r0, 0x3F
+ bne _08084412
+ movs r0, 0x8
+ strh r0, [r4, 0x8]
+_08084412:
+ movs r0, 0x1
+_08084414:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80843DC
+
+ thumb_func_start sub_808441C
+sub_808441C: @ 808441C
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _0808443A
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0808446E
+_0808443A:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _08084460
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetGoSpeed0AnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0xE]
+ subs r0, 0x1
+ strh r0, [r5, 0xE]
+ b _0808446E
+_08084460:
+ adds r0, r4, 0
+ movs r1, 0x3E
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_0808446E:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_808441C
+
+ thumb_func_start sub_8084478
+sub_8084478: @ 8084478
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ adds r5, r2, 0
+ adds r0, r5, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084496
+ adds r0, r5, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084524
+_08084496:
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl npc_set_running_behaviour_etc
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl sub_805C774
+ adds r0, r5, 0
+ bl sub_805C754
+ ldr r0, _0808452C
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08084530
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _080844EE
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084524
+_080844EE:
+ bl sub_80597E8
+ ldr r0, _0808452C
+ ldrb r0, [r0, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08084530
+ adds r4, r0
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetFaceDirectionAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+_08084524:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808452C: .4byte gPlayerAvatar
+_08084530: .4byte gMapObjects
+ thumb_func_end sub_8084478
+
+ thumb_func_start sub_8084534
+sub_8084534: @ 8084534
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _08084570
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08084574
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084560
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084566
+_08084560:
+ adds r0, r5, 0
+ bl SwitchTaskToFollowupFunc
+_08084566:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08084570: .4byte gPlayerAvatar
+_08084574: .4byte gMapObjects
+ thumb_func_end sub_8084534
+
+ thumb_func_start sub_8084578
+sub_8084578: @ 8084578
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084596
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080845A4
+_08084596:
+ adds r0, r4, 0
+ movs r1, 0x59
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_080845A4:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8084578
+
+ thumb_func_start sub_80845AC
+sub_80845AC: @ 80845AC
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r2, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080845C0
+ movs r0, 0x3
+ strh r0, [r4, 0x8]
+_080845C0:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80845AC
+
+ thumb_func_start sub_80845C8
+sub_80845C8: @ 80845C8
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _080845E6
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080845F4
+_080845E6:
+ adds r0, r4, 0
+ movs r1, 0x3E
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_080845F4:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80845C8
+
+ thumb_func_start sub_80845FC
+sub_80845FC: @ 80845FC
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084642
+ ldr r2, _0808464C
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ str r0, [r2]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ str r0, [r2, 0x4]
+ ldr r3, _08084650
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x43
+ ldrb r0, [r0]
+ subs r0, 0x1
+ str r0, [r2, 0x8]
+ movs r0, 0x2
+ str r0, [r2, 0xC]
+ movs r0, 0x31
+ bl FieldEffectStart
+ strh r0, [r5, 0x10]
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_08084642:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808464C: .4byte gUnknown_0202FF84
+_08084650: .4byte gSprites
+ thumb_func_end sub_80845FC
+
+ thumb_func_start sub_8084654
+sub_8084654: @ 8084654
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ ldr r2, _080846C4
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x2B
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ bne _080846BC
+ ldrb r1, [r4, 0x3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x3]
+ ldrb r0, [r4]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4]
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r2, [r0, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x8
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_806084C
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_080846BC:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080846C4: .4byte gSprites
+ thumb_func_end sub_8084654
+
+ thumb_func_start sub_80846C8
+sub_80846C8: @ 80846C8
+ push {r4,lr}
+ adds r4, r1, 0
+ movs r0, 0x31
+ bl FieldEffectActiveListContains
+ lsls r0, 24
+ cmp r0, 0
+ bne _080846DC
+ movs r0, 0x3
+ strh r0, [r4, 0x8]
+_080846DC:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80846C8
+
+ thumb_func_start sub_80846E4
+sub_80846E4: @ 80846E4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08084778
+ adds r4, r0, r1
+ adds r0, r4, 0
+ adds r0, 0xA
+ mov r1, sp
+ bl LoadWordFromTwoHalfwords
+ movs r1, 0x16
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _08084716
+ ldr r0, [sp]
+ bl FieldObjectClearAnim
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+_08084716:
+ ldr r1, _0808477C
+ movs r2, 0x8
+ ldrsh r0, [r4, r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [sp]
+ ldr r3, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl _call_via_r3
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x3
+ bne _08084780
+ movs r0, 0x31
+ bl FieldEffectActiveListContains
+ lsls r0, 24
+ cmp r0, 0
+ bne _08084780
+ ldr r4, [sp]
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl npc_set_running_behaviour_etc
+ ldr r4, [sp]
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805C774
+ adds r0, r5, 0
+ bl DestroyTask
+ b _0808478A
+ .align 2, 0
+_08084778: .4byte gTasks
+_0808477C: .4byte gUnknown_0839B4C8
+_08084780:
+ ldr r2, [sp]
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+_0808478A:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80846E4
+
+ thumb_func_start sub_8084794
+sub_8084794: @ 8084794
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080847C0
+ movs r1, 0
+ bl CreateTask
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _080847C4
+ adds r0, r1
+ adds r0, 0x2
+ adds r1, r4, 0
+ bl StoreWordInTwoHalfwords
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080847C0: .4byte sub_80846E4
+_080847C4: .4byte gUnknown_03004B28
+ thumb_func_end sub_8084794
+
+ thumb_func_start sub_80847C8
+sub_80847C8: @ 80847C8
+ push {lr}
+ ldr r0, _080847D4
+ bl sub_80842FC
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080847D4: .4byte sub_80847D8
+ thumb_func_end sub_80847C8
+
+ thumb_func_start sub_80847D8
+sub_80847D8: @ 80847D8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+ bl EnableBothScriptContexts
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80847D8
+
+ thumb_func_start oei_exclamation_mark
+oei_exclamation_mark: @ 80847EC
+ push {lr}
+ ldr r0, _0808481C
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x53
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _08084814
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08084820
+ adds r0, r1
+ movs r1, 0
+ movs r2, 0
+ bl sub_8084894
+_08084814:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808481C: .4byte gSpriteTemplate_839B510
+_08084820: .4byte gSprites
+ thumb_func_end oei_exclamation_mark
+
+ thumb_func_start sub_8084824
+sub_8084824: @ 8084824
+ push {lr}
+ ldr r0, _08084854
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _0808484C
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08084858
+ adds r0, r1
+ movs r1, 0x21
+ movs r2, 0x1
+ bl sub_8084894
+_0808484C:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08084854: .4byte gSpriteTemplate_839B510
+_08084858: .4byte gSprites
+ thumb_func_end sub_8084824
+
+ thumb_func_start sub_808485C
+sub_808485C: @ 808485C
+ push {lr}
+ ldr r0, _0808488C
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _08084884
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08084890
+ adds r0, r1
+ movs r1, 0x2E
+ movs r2, 0
+ bl sub_8084894
+_08084884:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808488C: .4byte gSpriteTemplate_839B528
+_08084890: .4byte gSprites
+ thumb_func_end sub_808485C
+
+ thumb_func_start sub_8084894
+sub_8084894: @ 8084894
+ push {r4,lr}
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r4, [r0, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ ands r3, r4
+ movs r4, 0x4
+ orrs r3, r4
+ strb r3, [r0, 0x5]
+ movs r3, 0x3E
+ adds r3, r0
+ mov r12, r3
+ ldrb r3, [r3]
+ movs r4, 0x2
+ orrs r3, r4
+ mov r4, r12
+ strb r3, [r4]
+ ldr r4, _080848D8
+ ldr r3, [r4]
+ strh r3, [r0, 0x2E]
+ ldr r3, [r4, 0x4]
+ strh r3, [r0, 0x30]
+ ldr r3, [r4, 0x8]
+ strh r3, [r0, 0x32]
+ ldr r3, _080848DC
+ strh r3, [r0, 0x34]
+ strh r1, [r0, 0x3C]
+ adds r1, r2, 0
+ bl StartSpriteAnim
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080848D8: .4byte gUnknown_0202FF84
+_080848DC: .4byte 0x0000fffb
+ thumb_func_end sub_8084894
+
+ thumb_func_start objc_exclamation_mark_probably
+objc_exclamation_mark_probably: @ 80848E0
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _08084912
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08084920
+_08084912:
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldEffectStop
+ b _0808496E
+_08084920:
+ ldr r2, _08084964
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08084968
+ adds r1, r0
+ ldrh r3, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r2, r3, r0
+ strh r2, [r4, 0x36]
+ ldrh r0, [r1, 0x20]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x22]
+ subs r0, 0x10
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x24]
+ strh r0, [r4, 0x24]
+ ldrh r0, [r1, 0x26]
+ adds r0, r2
+ strh r0, [r4, 0x26]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0
+ beq _0808496C
+ adds r0, r3, 0x1
+ strh r0, [r4, 0x34]
+ b _0808496E
+ .align 2, 0
+_08084964: .4byte gMapObjects
+_08084968: .4byte gSprites
+_0808496C:
+ strh r2, [r4, 0x34]
+_0808496E:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end objc_exclamation_mark_probably
+
+ .align 2, 0 @ Don't pad with nop.