summaryrefslogtreecommitdiff
path: root/asm/event_object_movement.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/event_object_movement.s')
-rw-r--r--asm/event_object_movement.s22062
1 files changed, 22062 insertions, 0 deletions
diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s
new file mode 100644
index 000000000..f380b4b53
--- /dev/null
+++ b/asm/event_object_movement.s
@@ -0,0 +1,22062 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start npc_clear_ids_and_state
+npc_clear_ids_and_state: @ 805DE2C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ movs r2, 0x24
+ bl memset
+ movs r0, 0xFF
+ strb r0, [r4, 0x8]
+ movs r0, 0x1
+ negs r0, r0
+ strb r0, [r4, 0x9]
+ strb r0, [r4, 0xA]
+ strb r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_clear_ids_and_state
+
+ thumb_func_start npcs_clear_ids_and_state
+npcs_clear_ids_and_state: @ 805DE4C
+ push {r4,r5,lr}
+ movs r4, 0
+ ldr r5, _0805DE70 @ =gObjectEvents
+_0805DE52:
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r5
+ bl npc_clear_ids_and_state
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _0805DE52
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805DE70: .4byte gObjectEvents
+ thumb_func_end npcs_clear_ids_and_state
+
+ thumb_func_start sub_805DE74
+sub_805DE74: @ 805DE74
+ push {lr}
+ bl strange_npc_table_clear
+ bl npcs_clear_ids_and_state
+ bl ClearPlayerAvatarInfo
+ bl sub_805DE8C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805DE74
+
+ thumb_func_start sub_805DE8C
+sub_805DE8C: @ 805DE8C
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ ldr r0, _0805DF28 @ =gUnknown_83A0010
+ ldr r0, [r0, 0x54]
+ mov r9, r0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x1F
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805DF2C @ =gSprites
+ mov r10, r1
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ add r4, r10
+ ldrb r1, [r4, 0x1]
+ movs r5, 0x4
+ negs r5, r5
+ adds r0, r5, 0
+ ands r0, r1
+ movs r1, 0x1
+ mov r8, r1
+ mov r1, r8
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r0, r4, 0
+ bl InitSpriteAffineAnim
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAffineAnim
+ adds r4, 0x3E
+ ldrb r0, [r4]
+ movs r6, 0x4
+ orrs r0, r6
+ strb r0, [r4]
+ mov r0, r9
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x1F
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ add r4, r10
+ ldrb r0, [r4, 0x1]
+ ands r5, r0
+ mov r0, r8
+ orrs r5, r0
+ strb r5, [r4, 0x1]
+ adds r0, r4, 0
+ bl InitSpriteAffineAnim
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ adds r4, 0x3E
+ ldrb r0, [r4]
+ orrs r0, r6
+ strb r0, [r4]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805DF28: .4byte gUnknown_83A0010
+_0805DF2C: .4byte gSprites
+ thumb_func_end sub_805DE8C
+
+ thumb_func_start sub_805DF30
+sub_805DF30: @ 805DF30
+ push {lr}
+ movs r1, 0
+ ldr r2, _0805DF3C @ =gObjectEvents
+ ldrb r0, [r2]
+ b _0805DF54
+ .align 2, 0
+_0805DF3C: .4byte gObjectEvents
+_0805DF40:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xF
+ bhi _0805DF5A
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0]
+_0805DF54:
+ lsls r0, 31
+ cmp r0, 0
+ bne _0805DF40
+_0805DF5A:
+ adds r0, r1, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DF30
+
+ thumb_func_start GetObjectEventIdByLocalIdAndMap
+GetObjectEventIdByLocalIdAndMap: @ 805DF60
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ cmp r0, 0xFE
+ bls _0805DF78
+ bl GetObjectEventIdByLocalId
+ b _0805DF7C
+_0805DF78:
+ bl GetObjectEventIdByLocalIdAndMapInternal
+_0805DF7C:
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end GetObjectEventIdByLocalIdAndMap
+
+ thumb_func_start TryGetObjectEventIdByLocalIdAndMap
+TryGetObjectEventIdByLocalIdAndMap: @ 805DF84
+ push {r4,lr}
+ adds r4, r3, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ bl GetObjectEventIdByLocalIdAndMap
+ strb r0, [r4]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x10
+ beq _0805DFA6
+ movs r0, 0
+ b _0805DFA8
+_0805DFA6:
+ movs r0, 0x1
+_0805DFA8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end TryGetObjectEventIdByLocalIdAndMap
+
+ thumb_func_start GetObjectEventIdByXY
+GetObjectEventIdByXY: @ 805DFB0
+ push {r4-r6,lr}
+ movs r3, 0
+ ldr r5, _0805DFF0 @ =gObjectEvents
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 16
+ asrs r1, 16
+_0805DFBE:
+ lsls r0, r3, 3
+ adds r0, r3
+ lsls r0, 2
+ adds r2, r0, r5
+ ldrb r0, [r2]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805DFDE
+ movs r6, 0x10
+ ldrsh r0, [r2, r6]
+ cmp r0, r4
+ bne _0805DFDE
+ movs r6, 0x12
+ ldrsh r0, [r2, r6]
+ cmp r0, r1
+ beq _0805DFE8
+_0805DFDE:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xF
+ bls _0805DFBE
+_0805DFE8:
+ adds r0, r3, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DFF0: .4byte gObjectEvents
+ thumb_func_end GetObjectEventIdByXY
+
+ thumb_func_start GetObjectEventIdByLocalIdAndMapInternal
+GetObjectEventIdByLocalIdAndMapInternal: @ 805DFF4
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ movs r1, 0
+ ldr r6, _0805E02C @ =gObjectEvents
+_0805E006:
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r3, r0, r6
+ ldrb r0, [r3]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805E030
+ ldrb r0, [r3, 0x8]
+ cmp r0, r5
+ bne _0805E030
+ ldrb r0, [r3, 0x9]
+ cmp r0, r4
+ bne _0805E030
+ ldrb r0, [r3, 0xA]
+ cmp r0, r2
+ bne _0805E030
+ adds r0, r1, 0
+ b _0805E03C
+ .align 2, 0
+_0805E02C: .4byte gObjectEvents
+_0805E030:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xF
+ bls _0805E006
+ movs r0, 0x10
+_0805E03C:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end GetObjectEventIdByLocalIdAndMapInternal
+
+ thumb_func_start GetObjectEventIdByLocalId
+GetObjectEventIdByLocalId: @ 805E044
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ movs r2, 0
+ ldr r4, _0805E068 @ =gObjectEvents
+_0805E04E:
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r4
+ ldrb r0, [r1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805E06C
+ ldrb r0, [r1, 0x8]
+ cmp r0, r3
+ bne _0805E06C
+ adds r0, r2, 0
+ b _0805E078
+ .align 2, 0
+_0805E068: .4byte gObjectEvents
+_0805E06C:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xF
+ bls _0805E04E
+ movs r0, 0x10
+_0805E078:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetObjectEventIdByLocalId
+
+ thumb_func_start sub_805E080
+sub_805E080: @ 805E080
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ adds r5, r0, 0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ movs r0, 0
+ mov r10, r0
+ mov r8, r0
+ mov r9, r0
+ movs r1, 0
+ str r1, [sp, 0x4]
+ str r0, [sp, 0x8]
+ ldrb r0, [r5, 0x2]
+ cmp r0, 0xFF
+ bne _0805E0DA
+ movs r1, 0x1
+ mov r10, r1
+ ldrb r4, [r5, 0x8]
+ ldrb r7, [r5, 0xC]
+ ldrb r6, [r5, 0xE]
+ ldrh r0, [r5, 0x4]
+ mov r8, r0
+ ldrh r5, [r5, 0x6]
+ mov r9, r5
+ mov r1, r8
+ str r1, [sp, 0x4]
+ mov r0, r9
+ str r0, [sp, 0x8]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl Overworld_GetMapHeaderByGroupAndId
+ ldr r1, [r0, 0x4]
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 3
+ subs r0, 0x18
+ ldr r1, [r1, 0x4]
+ adds r5, r1, r0
+_0805E0DA:
+ ldrb r0, [r5]
+ adds r1, r7, 0
+ adds r2, r6, 0
+ mov r3, sp
+ bl GetAvailableObjectEventSlot
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805E106
+ ldr r1, [sp, 0x4]
+ lsls r2, r1, 16
+ asrs r2, 16
+ ldr r0, [sp, 0x8]
+ lsls r3, r0, 16
+ asrs r3, 16
+ adds r0, r5, 0
+ mov r1, r10
+ bl sub_805E238
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805E10A
+_0805E106:
+ movs r0, 0x10
+ b _0805E220
+_0805E10A:
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805E13C @ =gObjectEvents
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl npc_clear_ids_and_state
+ mov r1, r10
+ cmp r1, 0
+ beq _0805E140
+ mov r1, r8
+ lsls r0, r1, 16
+ movs r1, 0xE0
+ lsls r1, 11
+ adds r0, r1
+ lsrs r3, r0, 16
+ mov r1, r9
+ lsls r0, r1, 16
+ movs r1, 0xE0
+ lsls r1, 11
+ adds r0, r1
+ b _0805E14E
+ .align 2, 0
+_0805E13C: .4byte gObjectEvents
+_0805E140:
+ ldrh r0, [r5, 0x4]
+ adds r0, 0x7
+ lsls r0, 16
+ lsrs r3, r0, 16
+ ldrh r0, [r5, 0x6]
+ adds r0, 0x7
+ lsls r0, 16
+_0805E14E:
+ lsrs r2, r0, 16
+ ldrb r0, [r4]
+ movs r1, 0x1
+ orrs r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4]
+ ldrb r0, [r5, 0x1]
+ strb r0, [r4, 0x5]
+ ldrb r0, [r5, 0x9]
+ strb r0, [r4, 0x6]
+ ldrb r0, [r5]
+ strb r0, [r4, 0x8]
+ strb r7, [r4, 0x9]
+ strb r6, [r4, 0xA]
+ strh r3, [r4, 0xC]
+ strh r2, [r4, 0xE]
+ strh r3, [r4, 0x10]
+ strh r2, [r4, 0x12]
+ strh r3, [r4, 0x14]
+ strh r2, [r4, 0x16]
+ ldrb r0, [r5, 0x8]
+ movs r6, 0xF
+ adds r1, r6, 0
+ ands r1, r0
+ ldrb r2, [r4, 0xB]
+ movs r0, 0x10
+ negs r0, r0
+ mov r8, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0xB]
+ ldrb r1, [r5, 0x8]
+ lsls r1, 4
+ ands r0, r6
+ orrs r0, r1
+ strb r0, [r4, 0xB]
+ ldrb r1, [r5, 0xA]
+ lsls r1, 28
+ movs r0, 0xF
+ mov r9, r0
+ lsrs r1, 28
+ ldrb r2, [r4, 0x19]
+ mov r0, r8
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x19]
+ ldrb r1, [r5, 0xA]
+ lsrs r1, 4
+ lsls r1, 4
+ ands r0, r6
+ orrs r0, r1
+ strb r0, [r4, 0x19]
+ ldrh r0, [r5, 0xC]
+ strb r0, [r4, 0x7]
+ ldrh r0, [r5, 0xE]
+ strb r0, [r4, 0x1D]
+ ldr r1, _0805E230 @ =gUnknown_839FD5D
+ ldrb r0, [r5, 0x9]
+ adds r0, r1
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ adds r0, 0x20
+ strb r1, [r0]
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ adds r0, r4, 0
+ bl ObjectEventHandleDynamicGraphicsId
+ ldr r1, _0805E234 @ =gUnknown_839FD0C
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0805E21C
+ ldrb r2, [r4, 0x19]
+ adds r0, r6, 0
+ ands r0, r2
+ cmp r0, 0
+ bne _0805E204
+ lsls r0, r2, 28
+ lsrs r0, 28
+ adds r0, 0x1
+ mov r1, r9
+ ands r0, r1
+ mov r1, r8
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x19]
+_0805E204:
+ ldrb r2, [r4, 0x19]
+ movs r0, 0xF0
+ ands r0, r2
+ cmp r0, 0
+ bne _0805E21C
+ lsrs r1, r2, 4
+ adds r1, 0x1
+ lsls r1, 4
+ adds r0, r6, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x19]
+_0805E21C:
+ mov r0, sp
+ ldrb r0, [r0]
+_0805E220:
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E230: .4byte gUnknown_839FD5D
+_0805E234: .4byte gUnknown_839FD0C
+ thumb_func_end sub_805E080
+
+ thumb_func_start sub_805E238
+sub_805E238: @ 805E238
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsls r2, 16
+ lsrs r4, r2, 16
+ lsls r3, 16
+ lsrs r5, r3, 16
+ cmp r1, 0
+ beq _0805E25C
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r5, 16
+ asrs r2, 16
+ bl sub_805E27C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E274
+_0805E25C:
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r5, 16
+ asrs r2, 16
+ adds r0, r6, 0
+ bl sub_805E2E8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E274
+ movs r0, 0x1
+ b _0805E276
+_0805E274:
+ movs r0, 0
+_0805E276:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E238
+
+ thumb_func_start sub_805E27C
+sub_805E27C: @ 805E27C
+ push {r4,r5,lr}
+ lsls r1, 16
+ lsrs r3, r1, 16
+ lsls r2, 16
+ lsrs r4, r2, 16
+ adds r5, r4, 0
+ ldrb r0, [r0, 0x1]
+ subs r0, 0x5F
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0805E2DE
+ ldr r0, _0805E2B8 @ =gSaveBlock1Ptr
+ ldr r2, [r0]
+ movs r0, 0
+ ldrsh r1, [r2, r0]
+ lsls r0, r3, 16
+ asrs r3, r0, 16
+ cmp r1, r3
+ bge _0805E2BC
+ adds r0, r1, 0
+ adds r0, 0x8
+ cmp r0, r3
+ blt _0805E2DE
+ movs r0, 0x2
+ ldrsh r3, [r2, r0]
+ subs r1, r3, 0x6
+ lsls r0, r4, 16
+ b _0805E2CE
+ .align 2, 0
+_0805E2B8: .4byte gSaveBlock1Ptr
+_0805E2BC:
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ subs r0, 0x8
+ cmp r0, r3
+ bgt _0805E2DE
+ movs r0, 0x2
+ ldrsh r3, [r2, r0]
+ subs r1, r3, 0x6
+ lsls r0, r5, 16
+_0805E2CE:
+ asrs r2, r0, 16
+ cmp r1, r2
+ bgt _0805E2DE
+ adds r0, r3, 0x6
+ cmp r0, r2
+ blt _0805E2DE
+ movs r0, 0
+ b _0805E2E0
+_0805E2DE:
+ movs r0, 0x1
+_0805E2E0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E27C
+
+ thumb_func_start sub_805E2E8
+sub_805E2E8: @ 805E2E8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl GetCurrentMapType
+ lsls r0, 24
+ lsrs r0, 24
+ bl is_light_level_1_2_3_5_or_6
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E37C
+ ldr r1, _0805E374 @ =VMap
+ ldr r0, [r1]
+ adds r3, r0, 0
+ subs r3, 0x10
+ ldr r0, [r1, 0x4]
+ adds r5, r0, 0
+ subs r5, 0xF
+ ldrb r0, [r4, 0x1]
+ subs r0, 0x5F
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0805E37C
+ ldr r0, _0805E378 @ =gSaveBlock1Ptr
+ ldr r1, [r0]
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ adds r2, r0, 0
+ cmp r1, 0
+ bne _0805E32E
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x8
+ ble _0805E36A
+_0805E32E:
+ ldr r0, [r2]
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, r3
+ bne _0805E344
+ movs r0, 0x4
+ ldrsh r1, [r4, r0]
+ adds r0, r3, 0
+ subs r0, 0x8
+ cmp r1, r0
+ bge _0805E36A
+_0805E344:
+ ldr r0, [r2]
+ movs r1, 0x2
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _0805E356
+ movs r1, 0x6
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x6
+ ble _0805E36A
+_0805E356:
+ ldr r0, [r2]
+ movs r2, 0x2
+ ldrsh r0, [r0, r2]
+ cmp r0, r5
+ bne _0805E37C
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ subs r0, r5, 0x6
+ cmp r1, r0
+ blt _0805E37C
+_0805E36A:
+ adds r0, r4, 0
+ bl sub_805E384
+ movs r0, 0
+ b _0805E37E
+ .align 2, 0
+_0805E374: .4byte VMap
+_0805E378: .4byte gSaveBlock1Ptr
+_0805E37C:
+ movs r0, 0x1
+_0805E37E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E2E8
+
+ thumb_func_start sub_805E384
+sub_805E384: @ 805E384
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x14]
+ subs r0, 0x11
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xE
+ bhi _0805E39A
+ ldrh r0, [r1, 0x14]
+ bl FlagSet
+_0805E39A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805E384
+
+ thumb_func_start sub_805E3A0
+sub_805E3A0: @ 805E3A0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r0, _0805E3B8 @ =gMapHeader
+ ldr r0, [r0, 0x4]
+ cmp r0, 0
+ bne _0805E3CE
+ b _0805E404
+ .align 2, 0
+_0805E3B8: .4byte gMapHeader
+_0805E3BC:
+ ldr r0, [r7]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ adds r0, r4, 0
+ bl sub_805E080
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805E406
+_0805E3CE:
+ ldrb r6, [r0]
+ movs r5, 0
+ cmp r5, r6
+ bcs _0805E404
+ ldr r7, _0805E410 @ =gSaveBlock1Ptr
+_0805E3D8:
+ lsls r0, r5, 1
+ adds r0, r5
+ lsls r0, 3
+ movs r1, 0x8E
+ lsls r1, 4
+ adds r0, r1
+ ldr r1, [r7]
+ adds r4, r1, r0
+ ldrb r0, [r4]
+ cmp r0, r8
+ bne _0805E3FA
+ ldrh r0, [r4, 0x14]
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E3BC
+_0805E3FA:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r6
+ bcc _0805E3D8
+_0805E404:
+ movs r0, 0x10
+_0805E406:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E410: .4byte gSaveBlock1Ptr
+ thumb_func_end sub_805E3A0
+
+ thumb_func_start GetAvailableObjectEventSlot
+GetAvailableObjectEventSlot: @ 805E414
+ push {r4-r7,lr}
+ mov r12, r3
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsls r1, 24
+ lsrs r5, r1, 24
+ lsls r2, 24
+ lsrs r4, r2, 24
+ movs r2, 0
+ ldr r1, _0805E470 @ =gObjectEvents
+ ldrb r0, [r1]
+ lsls r0, 31
+ adds r7, r1, 0
+ cmp r0, 0
+ beq _0805E468
+ adds r3, r1, 0
+_0805E434:
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r3
+ ldrb r0, [r1, 0x8]
+ cmp r0, r6
+ bne _0805E44E
+ ldrb r0, [r1, 0x9]
+ cmp r0, r5
+ bne _0805E44E
+ ldrb r0, [r1, 0xA]
+ cmp r0, r4
+ beq _0805E46C
+_0805E44E:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xF
+ bhi _0805E46C
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r7
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0805E434
+_0805E468:
+ cmp r2, 0xF
+ bls _0805E474
+_0805E46C:
+ movs r0, 0x1
+ b _0805E4A8
+ .align 2, 0
+_0805E470: .4byte gObjectEvents
+_0805E474:
+ mov r0, r12
+ strb r2, [r0]
+ ldr r1, _0805E4B0 @ =gObjectEvents
+_0805E47A:
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r3, r0, r1
+ ldrb r0, [r3]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805E49C
+ ldrb r0, [r3, 0x8]
+ cmp r0, r6
+ bne _0805E49C
+ ldrb r0, [r3, 0x9]
+ cmp r0, r5
+ bne _0805E49C
+ ldrb r0, [r3, 0xA]
+ cmp r0, r4
+ beq _0805E46C
+_0805E49C:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xF
+ bls _0805E47A
+ movs r0, 0
+_0805E4A8:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E4B0: .4byte gObjectEvents
+ thumb_func_end GetAvailableObjectEventSlot
+
+ thumb_func_start RemoveObjectEvent
+RemoveObjectEvent: @ 805E4B4
+ push {lr}
+ ldrb r2, [r0]
+ movs r1, 0x2
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ bl RemoveObjectEventInternal
+ pop {r0}
+ bx r0
+ thumb_func_end RemoveObjectEvent
+
+ thumb_func_start RemoveObjectEventByLocalIdAndMap
+RemoveObjectEventByLocalIdAndMap: @ 805E4C8
+ push {lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805E506
+ mov r0, sp
+ ldrb r0, [r0]
+ bl GetObjectEventFlagIdByObjectEventId
+ lsls r0, 16
+ lsrs r0, 16
+ bl FlagSet
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805E50C @ =gObjectEvents
+ adds r0, r1
+ bl RemoveObjectEvent
+_0805E506:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E50C: .4byte gObjectEvents
+ thumb_func_end RemoveObjectEventByLocalIdAndMap
+
+ thumb_func_start RemoveObjectEventInternal
+RemoveObjectEventInternal: @ 805E510
+ push {r4,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldrb r0, [r4, 0x5]
+ bl GetObjectEventGraphicsInfo
+ ldrh r2, [r0, 0x6]
+ ldr r1, _0805E554 @ =0xffff0000
+ ldr r0, [sp, 0x4]
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp, 0x4]
+ ldr r2, _0805E558 @ =gSprites
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r2, 0
+ adds r1, 0xC
+ adds r0, r1
+ mov r1, sp
+ str r1, [r0]
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ bl DestroySprite
+ add sp, 0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E554: .4byte 0xffff0000
+_0805E558: .4byte gSprites
+ thumb_func_end RemoveObjectEventInternal
+
+ thumb_func_start unref_sub_808D958
+unref_sub_808D958: @ 805E55C
+ push {r4,lr}
+ movs r4, 0
+_0805E560:
+ ldr r0, _0805E588 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ cmp r4, r0
+ beq _0805E576
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ ldr r1, _0805E58C @ =gObjectEvents
+ adds r0, r1
+ bl RemoveObjectEvent
+_0805E576:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _0805E560
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E588: .4byte gPlayerAvatar
+_0805E58C: .4byte gObjectEvents
+ thumb_func_end unref_sub_808D958
+
+ thumb_func_start sub_805E590
+sub_805E590: @ 805E590
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r7, r1, 0
+ adds r1, r2, 0
+ adds r2, r3, 0
+ ldr r3, [sp, 0x20]
+ ldr r4, [sp, 0x24]
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 16
+ lsrs r3, 16
+ mov r9, r3
+ lsls r4, 16
+ lsrs r4, 16
+ mov r10, r4
+ bl sub_805E080
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r0, 0x10
+ bne _0805E5CA
+ movs r0, 0x10
+ b _0805E718
+_0805E5CA:
+ mov r0, r8
+ lsls r4, r0, 3
+ adds r0, r4, r0
+ lsls r0, 2
+ ldr r1, _0805E5F4 @ =gObjectEvents
+ adds r5, r0, r1
+ ldrb r0, [r5, 0x5]
+ bl GetObjectEventGraphicsInfo
+ adds r6, r0, 0
+ ldrb r1, [r6, 0xC]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _0805E5F8
+ ldrh r0, [r6, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__no_record
+ b _0805E606
+ .align 2, 0
+_0805E5F4: .4byte gObjectEvents
+_0805E5F8:
+ cmp r0, 0xA
+ bne _0805E606
+ ldrh r0, [r6, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805E606:
+ ldrb r0, [r5, 0x6]
+ cmp r0, 0x4C
+ bne _0805E614
+ ldrb r0, [r5, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+_0805E614:
+ ldr r1, _0805E648 @ =0x0000ffff
+ adds r0, r1, 0
+ strh r0, [r7, 0x2]
+ adds r0, r7, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x40
+ bne _0805E650
+ ldr r0, _0805E64C @ =gObjectEvents
+ mov r2, r8
+ adds r1, r4, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r2, [r1]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ movs r0, 0x10
+ b _0805E718
+ .align 2, 0
+_0805E648: .4byte 0x0000ffff
+_0805E64C: .4byte gObjectEvents
+_0805E650:
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, _0805E728 @ =gSprites
+ adds r4, r0, r1
+ mov r1, r9
+ lsls r0, r1, 16
+ asrs r0, 16
+ ldrh r2, [r5, 0x10]
+ adds r0, r2
+ lsls r0, 16
+ asrs r0, 16
+ mov r2, r10
+ lsls r1, r2, 16
+ asrs r1, 16
+ ldrh r2, [r5, 0x12]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ bl sub_8063AD4
+ ldrh r0, [r6, 0x8]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r1, r4, 0
+ adds r1, 0x28
+ strb r0, [r1]
+ ldrh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r2, r4, 0
+ adds r2, 0x29
+ strb r0, [r2]
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x8
+ strh r0, [r4, 0x20]
+ ldrh r1, [r4, 0x22]
+ adds r1, 0x10
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrb r1, [r6, 0xC]
+ lsls r1, 28
+ lsrs r1, 24
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+ mov r0, r8
+ strh r0, [r4, 0x2E]
+ strb r7, [r5, 0x4]
+ ldrb r1, [r6, 0xC]
+ lsls r1, 25
+ lsrs r1, 31
+ lsls r1, 4
+ ldrb r2, [r5, 0x1]
+ movs r0, 0x11
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+ lsls r0, 27
+ cmp r0, 0
+ blt _0805E702
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_0805E702:
+ ldrb r0, [r5, 0xB]
+ lsrs r0, 4
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl SetObjectSubpriorityByZCoord
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80679F8
+ mov r0, r8
+_0805E718:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E728: .4byte gSprites
+ thumb_func_end sub_805E590
+
+ thumb_func_start SpawnObjectEvent
+SpawnObjectEvent: @ 805E72C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x2C
+ mov r9, r0
+ adds r6, r1, 0
+ mov r8, r2
+ adds r4, r3, 0
+ ldr r5, [sp, 0x48]
+ lsls r6, 24
+ lsrs r6, 24
+ mov r0, r8
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ movs r0, 0
+ str r0, [sp, 0x20]
+ mov r1, r9
+ ldrb r0, [r1, 0x1]
+ bl GetObjectEventGraphicsInfo
+ adds r7, r0, 0
+ add r2, sp, 0x20
+ mov r0, r9
+ add r1, sp, 0x8
+ bl MakeObjectTemplateFromObjectEventTemplate
+ ldrh r3, [r7, 0x6]
+ ldr r2, _0805E7A4 @ =0xffff0000
+ add r1, sp, 0x24
+ ldr r0, [r1, 0x4]
+ ands r0, r2
+ orrs r0, r3
+ str r0, [r1, 0x4]
+ str r1, [sp, 0x14]
+ lsls r4, 16
+ asrs r4, 16
+ str r4, [sp]
+ lsls r5, 16
+ asrs r5, 16
+ str r5, [sp, 0x4]
+ mov r0, r9
+ add r1, sp, 0x8
+ adds r2, r6, 0
+ mov r3, r8
+ bl sub_805E590
+ lsls r0, 24
+ lsrs r2, r0, 24
+ adds r5, r2, 0
+ cmp r2, 0x10
+ bne _0805E7A8
+ movs r0, 0x10
+ b _0805E7DE
+ .align 2, 0
+_0805E7A4: .4byte 0xffff0000
+_0805E7A8:
+ ldr r4, _0805E7EC @ =gSprites
+ ldr r1, _0805E7F0 @ =gObjectEvents
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r3, r0, r1
+ ldrb r1, [r3, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r4, 0
+ adds r1, 0xC
+ adds r0, r1
+ ldr r1, [r7, 0x1C]
+ str r1, [r0]
+ ldr r2, [sp, 0x20]
+ cmp r2, 0
+ beq _0805E7DC
+ ldrb r1, [r3, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ adds r1, r2, 0
+ bl SetSubspriteTables
+_0805E7DC:
+ adds r0, r5, 0
+_0805E7DE:
+ add sp, 0x2C
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E7EC: .4byte gSprites
+_0805E7F0: .4byte gObjectEvents
+ thumb_func_end SpawnObjectEvent
+
+ thumb_func_start SpawnSpecialObjectEvent
+SpawnSpecialObjectEvent: @ 805E7F4
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ mov r4, sp
+ adds r4, 0x6
+ add r0, sp, 0x4
+ adds r1, r4, 0
+ bl GetObjectEventMovingCameraOffset
+ ldr r0, _0805E82C @ =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ add r0, sp, 0x4
+ movs r6, 0
+ ldrsh r3, [r0, r6]
+ movs r6, 0
+ ldrsh r0, [r4, r6]
+ str r0, [sp]
+ adds r0, r5, 0
+ bl SpawnObjectEvent
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E82C: .4byte gSaveBlock1Ptr
+ thumb_func_end SpawnSpecialObjectEvent
+
+ thumb_func_start SpawnSpecialObjectEventParameterized
+SpawnSpecialObjectEventParameterized: @ 805E830
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x18
+ ldr r4, [sp, 0x2C]
+ ldr r5, [sp, 0x30]
+ mov r8, r5
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r3, 16
+ ldr r5, _0805E894 @ =0xfff90000
+ adds r3, r5
+ lsrs r3, 16
+ lsls r4, 16
+ adds r4, r5
+ lsrs r4, 16
+ mov r5, sp
+ movs r6, 0
+ strb r2, [r5]
+ mov r2, sp
+ strb r0, [r2, 0x1]
+ mov r0, sp
+ strb r6, [r0, 0x2]
+ movs r5, 0
+ strh r3, [r0, 0x4]
+ strh r4, [r0, 0x6]
+ mov r2, r8
+ strb r2, [r0, 0x8]
+ strb r1, [r0, 0x9]
+ mov r2, sp
+ ldrb r1, [r2, 0xA]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2, 0xA]
+ mov r0, sp
+ strb r5, [r0, 0xA]
+ strh r6, [r0, 0xC]
+ strh r6, [r0, 0xE]
+ bl SpawnSpecialObjectEvent
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x18
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E894: .4byte 0xfff90000
+ thumb_func_end SpawnSpecialObjectEventParameterized
+
+ thumb_func_start show_sprite
+show_sprite: @ 805E898
+ push {r4-r7,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl GetObjectEventTemplateByLocalIdAndMap
+ adds r5, r0, 0
+ cmp r5, 0
+ beq _0805E8DE
+ mov r4, sp
+ adds r4, 0x6
+ add r0, sp, 0x4
+ adds r1, r4, 0
+ bl GetObjectEventMovingCameraOffset
+ add r0, sp, 0x4
+ movs r1, 0
+ ldrsh r3, [r0, r1]
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ str r0, [sp]
+ adds r0, r5, 0
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl SpawnObjectEvent
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805E8E0
+_0805E8DE:
+ movs r0, 0x10
+_0805E8E0:
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end show_sprite
+
+ thumb_func_start sub_805E8E8
+sub_805E8E8: @ 805E8E8
+ push {r4-r7,lr}
+ adds r6, r1, 0
+ adds r4, r2, 0
+ adds r7, r3, 0
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetObjectEventGraphicsInfo
+ adds r5, r0, 0
+ ldrh r0, [r5]
+ strh r0, [r4]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0x2]
+ ldr r0, [r5, 0x10]
+ str r0, [r4, 0x4]
+ ldr r0, [r5, 0x18]
+ str r0, [r4, 0x8]
+ ldr r0, [r5, 0x1C]
+ str r0, [r4, 0xC]
+ ldr r0, [r5, 0x20]
+ str r0, [r4, 0x10]
+ bl ScriptContext1_IsScriptSetUp
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0805E934
+ bl sub_8112CAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0805E934
+ ldr r0, _0805E930 @ =sub_811246C
+ str r0, [r4, 0x14]
+ b _0805E936
+ .align 2, 0
+_0805E930: .4byte sub_811246C
+_0805E934:
+ str r6, [r4, 0x14]
+_0805E936:
+ ldr r0, [r5, 0x14]
+ str r0, [r7]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805E8E8
+
+ thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex
+MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex: @ 805E940
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ ldr r4, _0805E95C @ =gUnknown_839FBC8
+ lsrs r1, 14
+ adds r1, r4
+ ldr r1, [r1]
+ bl sub_805E8E8
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E95C: .4byte gUnknown_839FBC8
+ thumb_func_end MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex
+
+ thumb_func_start MakeObjectTemplateFromObjectEventTemplate
+MakeObjectTemplateFromObjectEventTemplate: @ 805E960
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r3, r2, 0
+ ldrb r0, [r4, 0x1]
+ ldrb r1, [r4, 0x9]
+ adds r2, r5, 0
+ bl MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end MakeObjectTemplateFromObjectEventTemplate
+
+ thumb_func_start AddPseudoEventObject
+AddPseudoEventObject: @ 805E978
+ push {r4-r6,lr}
+ sub sp, 0x1C
+ ldr r4, [sp, 0x2C]
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r2, 16
+ lsrs r6, r2, 16
+ lsls r3, 16
+ lsrs r5, r3, 16
+ lsls r4, 24
+ lsrs r4, 24
+ add r3, sp, 0x18
+ mov r2, sp
+ bl sub_805E8E8
+ mov r0, sp
+ ldrh r1, [r0, 0x2]
+ ldr r0, _0805E9F0 @ =0x0000ffff
+ cmp r1, r0
+ beq _0805E9A8
+ mov r0, sp
+ ldrh r0, [r0, 0x2]
+ bl sub_805F4B0
+_0805E9A8:
+ lsls r1, r6, 16
+ asrs r1, 16
+ lsls r2, r5, 16
+ asrs r2, 16
+ mov r0, sp
+ adds r3, r4, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x40
+ beq _0805E9E4
+ ldr r1, [sp, 0x18]
+ cmp r1, 0
+ beq _0805E9E4
+ lsls r4, r5, 4
+ adds r4, r5
+ lsls r4, 2
+ ldr r0, _0805E9F4 @ =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ bl SetSubspriteTables
+ adds r4, 0x42
+ ldrb r1, [r4]
+ movs r0, 0x3F
+ ands r0, r1
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r4]
+_0805E9E4:
+ adds r0, r5, 0
+ add sp, 0x1C
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E9F0: .4byte 0x0000ffff
+_0805E9F4: .4byte gSprites
+ thumb_func_end AddPseudoEventObject
+
+ thumb_func_start sprite_new
+sprite_new: @ 805E9F8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x24
+ adds r5, r0, 0
+ ldr r0, [sp, 0x44]
+ ldr r4, [sp, 0x48]
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ add r1, sp, 0x18
+ mov r8, r1
+ strh r2, [r1]
+ mov r6, sp
+ adds r6, 0x1A
+ strh r3, [r6]
+ lsls r0, 24
+ lsrs r7, r0, 24
+ mov r9, r7
+ lsls r4, 24
+ lsrs r4, 24
+ str r4, [sp, 0x20]
+ adds r0, r5, 0
+ bl GetObjectEventGraphicsInfo
+ adds r4, r0, 0
+ ldr r1, _0805EB38 @ =sub_8068FA8
+ add r3, sp, 0x1C
+ adds r0, r5, 0
+ mov r2, sp
+ bl sub_805E8E8
+ mov r1, sp
+ ldr r2, _0805EB3C @ =0x0000ffff
+ adds r0, r2, 0
+ strh r0, [r1, 0x2]
+ mov r1, r8
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ adds r0, 0x7
+ strh r0, [r1]
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ adds r0, 0x7
+ strh r0, [r6]
+ mov r0, r8
+ adds r1, r6, 0
+ movs r2, 0x8
+ movs r3, 0x10
+ bl sub_8063BC4
+ mov r2, r8
+ movs r0, 0
+ ldrsh r1, [r2, r0]
+ movs r0, 0
+ ldrsh r2, [r6, r0]
+ mov r0, sp
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _0805EB24
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ ldr r1, _0805EB40 @ =gSprites
+ adds r5, r0, r1
+ ldrh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r1, r5, 0
+ adds r1, 0x28
+ strb r0, [r1]
+ ldrh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r1, 0x1
+ strb r0, [r1]
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ ldrb r1, [r4, 0xC]
+ lsls r1, 28
+ lsrs r1, 24
+ ldrb r3, [r5, 0x5]
+ movs r2, 0xF
+ adds r0, r2, 0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ adds r3, r5, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ mov r0, r10
+ strh r0, [r5, 0x2E]
+ strh r7, [r5, 0x30]
+ ldrb r1, [r4, 0xC]
+ ands r2, r1
+ cmp r2, 0xA
+ bne _0805EAE4
+ ldrh r0, [r4, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805EAE4:
+ ldr r1, [sp, 0x1C]
+ cmp r1, 0
+ beq _0805EB00
+ adds r0, r5, 0
+ bl SetSubspriteTables
+ adds r2, r5, 0
+ adds r2, 0x42
+ ldrb r0, [r2]
+ movs r1, 0x3F
+ ands r1, r0
+ movs r0, 0x80
+ orrs r1, r0
+ strb r1, [r2]
+_0805EB00:
+ adds r0, r5, 0
+ mov r1, r9
+ bl InitObjectPriorityByZCoord
+ mov r0, r9
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl SetObjectSubpriorityByZCoord
+ ldr r0, [sp, 0x20]
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_0805EB24:
+ adds r0, r6, 0
+ add sp, 0x24
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EB38: .4byte sub_8068FA8
+_0805EB3C: .4byte 0x0000ffff
+_0805EB40: .4byte gSprites
+ thumb_func_end sprite_new
+
+ thumb_func_start sub_805EB44
+sub_805EB44: @ 805EB44
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x1C
+ adds r6, r0, 0
+ adds r4, r2, 0
+ adds r5, r3, 0
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ adds r0, r6, 0
+ bl GetObjectEventGraphicsInfo
+ adds r7, r0, 0
+ ldr r1, _0805EC24 @ =SpriteCallbackDummy
+ add r3, sp, 0x18
+ adds r0, r6, 0
+ mov r2, sp
+ bl sub_805E8E8
+ mov r1, sp
+ ldr r2, _0805EC28 @ =0x0000ffff
+ adds r0, r2, 0
+ strh r0, [r1, 0x2]
+ lsls r4, 16
+ asrs r4, 16
+ lsls r5, 16
+ asrs r5, 16
+ mov r0, sp
+ adds r1, r4, 0
+ adds r2, r5, 0
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x40
+ beq _0805EC14
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r1, _0805EC2C @ =gSprites
+ adds r4, r0, r1
+ ldrh r0, [r7, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r1, r4, 0
+ adds r1, 0x29
+ strb r0, [r1]
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrb r1, [r7, 0xC]
+ lsls r1, 28
+ lsrs r1, 24
+ ldrb r3, [r4, 0x5]
+ movs r2, 0xF
+ adds r0, r2, 0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ mov r0, r8
+ strh r0, [r4, 0x2E]
+ ldrb r1, [r7, 0xC]
+ ands r2, r1
+ cmp r2, 0xA
+ bne _0805EBE6
+ ldrh r0, [r7, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805EBE6:
+ ldr r1, [sp, 0x18]
+ cmp r1, 0
+ beq _0805EC02
+ adds r0, r4, 0
+ bl SetSubspriteTables
+ adds r2, r4, 0
+ adds r2, 0x42
+ ldrb r0, [r2]
+ movs r1, 0x3F
+ ands r1, r0
+ movs r0, 0x80
+ orrs r1, r0
+ strb r1, [r2]
+_0805EC02:
+ movs r0, 0x1
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_0805EC14:
+ adds r0, r5, 0
+ add sp, 0x1C
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EC24: .4byte SpriteCallbackDummy
+_0805EC28: .4byte 0x0000ffff
+_0805EC2C: .4byte gSprites
+ thumb_func_end sub_805EB44
+
+ thumb_func_start sub_805EC30
+sub_805EC30: @ 805EC30
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x4]
+ lsls r1, 16
+ lsrs r1, 16
+ str r1, [sp, 0x8]
+ ldr r0, _0805ED08 @ =gMapHeader
+ ldr r3, [r0, 0x4]
+ cmp r3, 0
+ beq _0805ECF8
+ ldr r7, _0805ED0C @ =gSaveBlock1Ptr
+ ldr r2, [r7]
+ ldrh r1, [r2]
+ subs r0, r1, 0x2
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r1, 0x11
+ lsls r1, 16
+ lsrs r1, 16
+ str r1, [sp, 0xC]
+ ldrh r1, [r2, 0x2]
+ adds r0, r1, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r0, 16
+ mov r10, r0
+ ldrb r3, [r3]
+ str r3, [sp, 0x10]
+ movs r5, 0
+ cmp r5, r3
+ bcs _0805ECF8
+ lsls r0, r1, 16
+ asrs r0, 16
+ mov r9, r0
+ lsls r0, r4, 16
+ asrs r0, 16
+ mov r8, r0
+_0805EC86:
+ lsls r0, r5, 1
+ adds r0, r5
+ lsls r0, 3
+ movs r1, 0x8E
+ lsls r1, 4
+ adds r0, r1
+ ldr r1, [r7]
+ adds r4, r1, r0
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x7
+ lsls r0, 16
+ lsrs r2, r0, 16
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x7
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r9, r1
+ bgt _0805ECEC
+ mov r3, r10
+ lsls r0, r3, 16
+ asrs r0, 16
+ cmp r0, r1
+ blt _0805ECEC
+ lsls r0, r2, 16
+ asrs r1, r0, 16
+ cmp r8, r1
+ bgt _0805ECEC
+ ldr r6, [sp, 0xC]
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r0, r1
+ blt _0805ECEC
+ ldrh r0, [r4, 0x14]
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805ECEC
+ ldr r0, [r7]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ ldr r0, [sp, 0x4]
+ lsls r3, r0, 16
+ ldr r6, [sp, 0x8]
+ lsls r0, r6, 16
+ asrs r0, 16
+ str r0, [sp]
+ adds r0, r4, 0
+ asrs r3, 16
+ bl SpawnObjectEvent
+_0805ECEC:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, [sp, 0x10]
+ cmp r5, r0
+ bcc _0805EC86
+_0805ECF8:
+ 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
+_0805ED08: .4byte gMapHeader
+_0805ED0C: .4byte gSaveBlock1Ptr
+ thumb_func_end sub_805EC30
+
+ thumb_func_start RemoveObjectEventsOutsideView
+RemoveObjectEventsOutsideView: @ 805ED10
+ push {r4-r6,lr}
+ movs r3, 0
+ ldr r6, _0805ED64 @ =gUnknown_2031DEC
+_0805ED16:
+ movs r2, 0
+ movs r4, 0
+ adds r5, r3, 0x1
+_0805ED1C:
+ lsls r0, r2, 2
+ adds r1, r0, r6
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0805ED2E
+ ldrb r1, [r1, 0x2]
+ cmp r3, r1
+ bne _0805ED2E
+ movs r4, 0x1
+_0805ED2E:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x3
+ bls _0805ED1C
+ cmp r4, 0
+ bne _0805ED56
+ lsls r0, r3, 3
+ adds r0, r3
+ lsls r0, 2
+ ldr r1, _0805ED68 @ =gObjectEvents
+ adds r2, r0, r1
+ ldr r0, [r2]
+ ldr r1, _0805ED6C @ =0x00010001
+ ands r0, r1
+ cmp r0, 0x1
+ bne _0805ED56
+ adds r0, r2, 0
+ bl RemoveObjectEventIfOutsideView
+_0805ED56:
+ lsls r0, r5, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xF
+ bls _0805ED16
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805ED64: .4byte gUnknown_2031DEC
+_0805ED68: .4byte gObjectEvents
+_0805ED6C: .4byte 0x00010001
+ thumb_func_end RemoveObjectEventsOutsideView
+
+ thumb_func_start RemoveObjectEventIfOutsideView
+RemoveObjectEventIfOutsideView: @ 805ED70
+ push {r4-r7,lr}
+ adds r3, r0, 0
+ ldr r0, _0805EDEC @ =gSaveBlock1Ptr
+ ldr r2, [r0]
+ ldrh r0, [r2]
+ subs r1, r0, 0x2
+ lsls r1, 16
+ adds r0, 0x11
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r4, [r2, 0x2]
+ adds r0, r4, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r6, r0, 16
+ movs r0, 0x10
+ ldrsh r2, [r3, r0]
+ lsrs r7, r1, 16
+ asrs r1, 16
+ cmp r2, r1
+ blt _0805EDB6
+ lsls r0, r5, 16
+ asrs r0, 16
+ cmp r2, r0
+ bgt _0805EDB6
+ movs r0, 0x12
+ ldrsh r1, [r3, r0]
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r1, r0
+ blt _0805EDB6
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r1, r0
+ ble _0805EDE4
+_0805EDB6:
+ movs r0, 0xC
+ ldrsh r1, [r3, r0]
+ lsls r0, r7, 16
+ asrs r0, 16
+ cmp r1, r0
+ blt _0805EDDE
+ lsls r0, r5, 16
+ asrs r0, 16
+ cmp r1, r0
+ bgt _0805EDDE
+ movs r0, 0xE
+ ldrsh r1, [r3, r0]
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r1, r0
+ blt _0805EDDE
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r1, r0
+ ble _0805EDE4
+_0805EDDE:
+ adds r0, r3, 0
+ bl RemoveObjectEvent
+_0805EDE4:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EDEC: .4byte gSaveBlock1Ptr
+ thumb_func_end RemoveObjectEventIfOutsideView
+
+ thumb_func_start sub_805EDF0
+sub_805EDF0: @ 805EDF0
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ bl ClearPlayerAvatarInfo
+ movs r6, 0
+ ldr r7, _0805EE38 @ =gObjectEvents
+ lsls r4, 16
+ lsls r5, 16
+_0805EE0A:
+ lsls r0, r6, 3
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r7
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805EE24
+ adds r0, r6, 0
+ asrs r1, r4, 16
+ asrs r2, r5, 16
+ bl sub_805EE3C
+_0805EE24:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0xF
+ bls _0805EE0A
+ bl sub_805DE8C
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EE38: .4byte gObjectEvents
+ thumb_func_end sub_805EDF0
+
+ thumb_func_start sub_805EE3C
+sub_805EE3C: @ 805EE3C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x24
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r9, r1
+ lsls r2, 16
+ lsrs r2, 16
+ mov r10, r2
+ movs r7, 0
+ ldr r2, _0805EFE0 @ =gUnknown_2031DEC
+_0805EE5E:
+ lsls r0, r7, 2
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0805EE70
+ ldrb r1, [r1, 0x2]
+ cmp r8, r1
+ bne _0805EE70
+ b _0805EFCE
+_0805EE70:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x3
+ bls _0805EE5E
+ mov r1, r8
+ lsls r0, r1, 3
+ add r0, r8
+ lsls r0, 2
+ ldr r1, _0805EFE4 @ =gObjectEvents
+ adds r6, r0, r1
+ movs r0, 0
+ str r0, [sp, 0x20]
+ ldrb r0, [r6, 0x5]
+ bl GetObjectEventGraphicsInfo
+ adds r5, r0, 0
+ ldrh r2, [r5, 0x6]
+ ldr r1, _0805EFE8 @ =0xffff0000
+ add r4, sp, 0x18
+ ldr r0, [r4, 0x4]
+ ands r0, r1
+ orrs r0, r2
+ str r0, [r4, 0x4]
+ ldrb r0, [r6, 0x5]
+ ldrb r1, [r6, 0x6]
+ add r3, sp, 0x20
+ mov r2, sp
+ bl MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex
+ str r4, [sp, 0xC]
+ mov r0, sp
+ ldr r2, _0805EFEC @ =0x0000ffff
+ adds r4, r2, 0
+ strh r4, [r0, 0x2]
+ ldrb r1, [r5, 0xC]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _0805EECA
+ ldrh r0, [r5, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__no_record
+_0805EECA:
+ ldrb r0, [r5, 0xC]
+ lsls r1, r0, 28
+ lsrs r0, r1, 28
+ cmp r0, 0x9
+ bls _0805EEDC
+ ldrh r0, [r5, 0x2]
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805EEDC:
+ mov r0, sp
+ strh r4, [r0, 0x2]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x40
+ beq _0805EFCE
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, _0805EFF0 @ =gSprites
+ adds r4, r0, r1
+ mov r1, r9
+ lsls r0, r1, 16
+ asrs r0, 16
+ ldrh r2, [r6, 0x10]
+ adds r0, r2
+ lsls r0, 16
+ asrs r0, 16
+ mov r2, r10
+ lsls r1, r2, 16
+ asrs r1, 16
+ ldrh r2, [r6, 0x12]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ bl sub_8063AD4
+ ldrh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r1, r4, 0
+ adds r1, 0x28
+ strb r0, [r1]
+ ldrh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r2, r4, 0
+ adds r2, 0x29
+ strb r0, [r2]
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x8
+ strh r0, [r4, 0x20]
+ ldrh r1, [r4, 0x22]
+ adds r1, 0x10
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, [r5, 0x1C]
+ str r0, [r4, 0xC]
+ ldrb r0, [r6, 0x6]
+ cmp r0, 0xB
+ bne _0805EF6A
+ mov r0, r8
+ adds r1, r7, 0
+ bl SetPlayerAvatarObjectEventIdAndObjectId
+ bl sub_80DB0C4
+ strb r0, [r6, 0x1B]
+_0805EF6A:
+ ldr r1, [sp, 0x20]
+ cmp r1, 0
+ beq _0805EF76
+ adds r0, r4, 0
+ bl SetSubspriteTables
+_0805EF76:
+ ldrb r1, [r5, 0xC]
+ lsls r1, 28
+ lsrs r1, 24
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+ mov r0, r8
+ strh r0, [r4, 0x2E]
+ strb r7, [r6, 0x4]
+ ldrb r0, [r6, 0x1]
+ lsls r0, 27
+ cmp r0, 0
+ blt _0805EFBC
+ ldrb r0, [r6, 0x6]
+ cmp r0, 0xB
+ beq _0805EFBC
+ ldrb r0, [r6, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_0805EFBC:
+ adds r0, r6, 0
+ bl sub_805EFF4
+ ldrb r0, [r6, 0xB]
+ lsrs r0, 4
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl SetObjectSubpriorityByZCoord
+_0805EFCE:
+ add sp, 0x24
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EFE0: .4byte gUnknown_2031DEC
+_0805EFE4: .4byte gObjectEvents
+_0805EFE8: .4byte 0xffff0000
+_0805EFEC: .4byte 0x0000ffff
+_0805EFF0: .4byte gSprites
+ thumb_func_end sub_805EE3C
+
+ thumb_func_start sub_805EFF4
+sub_805EFF4: @ 805EFF4
+ push {lr}
+ ldrb r2, [r0]
+ movs r3, 0x3
+ negs r3, r3
+ adds r1, r3, 0
+ ands r1, r2
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ ldrb r2, [r0, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r2
+ ands r1, r3
+ movs r2, 0x5
+ negs r2, r2
+ ands r1, r2
+ subs r2, 0x4
+ ands r1, r2
+ subs r2, 0x8
+ ands r1, r2
+ subs r2, 0x10
+ ands r1, r2
+ strb r1, [r0, 0x2]
+ bl ObjectEventClearAnim
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805EFF4
+
+ thumb_func_start SetPlayerAvatarObjectEventIdAndObjectId
+SetPlayerAvatarObjectEventIdAndObjectId: @ 805F02C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r5, _0805F058 @ =gPlayerAvatar
+ strb r0, [r5, 0x5]
+ strb r1, [r5, 0x4]
+ ldr r1, _0805F05C @ =gObjectEvents
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ adds r4, r1
+ ldrb r0, [r4, 0x5]
+ bl sub_805C824
+ strb r0, [r5, 0x7]
+ ldrb r0, [r4, 0x5]
+ movs r1, 0x20
+ bl SetPlayerAvatarExtraStateTransition
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F058: .4byte gPlayerAvatar
+_0805F05C: .4byte gObjectEvents
+ thumb_func_end SetPlayerAvatarObjectEventIdAndObjectId
+
+ thumb_func_start EventObjectSetGraphicsId
+EventObjectSetGraphicsId: @ 805F060
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp]
+ adds r0, r1, 0
+ bl GetObjectEventGraphicsInfo
+ adds r5, r0, 0
+ ldrb r1, [r6, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805F1CC @ =gSprites
+ adds r4, r0, r1
+ ldrb r1, [r5, 0xC]
+ movs r0, 0xF
+ mov r8, r0
+ ands r0, r1
+ cmp r0, 0
+ bne _0805F09E
+ ldrh r0, [r5, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl pal_patch_for_npc
+_0805F09E:
+ ldrb r1, [r5, 0xC]
+ mov r0, r8
+ ands r0, r1
+ cmp r0, 0xA
+ bne _0805F0B2
+ ldrh r0, [r5, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805F0B2:
+ ldr r0, [r4, 0xC]
+ ldrh r0, [r0, 0x4]
+ lsrs r0, 5
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ adds r7, r4, 0
+ adds r7, 0x3F
+ ldrb r1, [r7]
+ movs r2, 0x40
+ mov r9, r2
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _0805F0D6
+ adds r0, r4, 0
+ bl sub_80075C0
+_0805F0D6:
+ ldr r0, [r5, 0x10]
+ ldrb r2, [r0, 0x1]
+ lsrs r2, 6
+ lsls r2, 6
+ ldrb r3, [r4, 0x1]
+ movs r1, 0x3F
+ adds r0, r1, 0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r4, 0x1]
+ ldr r0, [r5, 0x10]
+ ldrb r0, [r0, 0x3]
+ lsrs r0, 6
+ lsls r0, 6
+ ldrb r2, [r4, 0x3]
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+ ldr r3, [r5, 0x1C]
+ str r3, [r4, 0xC]
+ ldr r0, [r5, 0x18]
+ str r0, [r4, 0x8]
+ ldr r0, [r5, 0x14]
+ str r0, [r4, 0x18]
+ ldrb r1, [r5, 0xC]
+ lsls r1, 28
+ lsrs r1, 24
+ ldrb r2, [r4, 0x5]
+ mov r0, r8
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ ldrb r1, [r7]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _0805F152
+ ldrh r0, [r3, 0x4]
+ lsrs r0, 5
+ lsls r0, 24
+ lsrs r0, 24
+ bl AllocSpriteTiles
+ lsls r0, 16
+ asrs r2, r0, 16
+ movs r0, 0x1
+ negs r0, r0
+ cmp r2, r0
+ bne _0805F142
+ mov r0, r10
+ bl AllocSpriteTiles
+ lsls r0, 16
+ asrs r2, r0, 16
+_0805F142:
+ ldr r1, _0805F1D0 @ =0x000003ff
+ adds r0, r1, 0
+ ands r2, r0
+ ldrh r1, [r4, 0x4]
+ ldr r0, _0805F1D4 @ =0xfffffc00
+ ands r0, r1
+ orrs r0, r2
+ strh r0, [r4, 0x4]
+_0805F152:
+ ldrb r1, [r5, 0xC]
+ lsls r1, 25
+ lsrs r1, 31
+ lsls r1, 4
+ ldrb r2, [r6, 0x1]
+ movs r0, 0x11
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r6, 0x1]
+ mov r2, sp
+ ldrb r2, [r2]
+ strb r2, [r6, 0x5]
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ movs r2, 0x12
+ ldrsh r1, [r6, r2]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ bl sub_8063B1C
+ ldrh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r1, r4, 0
+ adds r1, 0x28
+ strb r0, [r1]
+ ldrh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r2, r4, 0
+ adds r2, 0x29
+ strb r0, [r2]
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x8
+ strh r0, [r4, 0x20]
+ ldrh r1, [r4, 0x22]
+ adds r1, 0x10
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrb r0, [r6, 0x1]
+ lsrs r0, 7
+ cmp r0, 0
+ beq _0805F1BA
+ bl CameraObjectReset1
+_0805F1BA:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F1CC: .4byte gSprites
+_0805F1D0: .4byte 0x000003ff
+_0805F1D4: .4byte 0xfffffc00
+ thumb_func_end EventObjectSetGraphicsId
+
+ thumb_func_start ObjectEventSetGraphicsIdByLocalIdAndMap
+ObjectEventSetGraphicsIdByLocalIdAndMap: @ 805F1D8
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r4, r3, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805F20C
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805F214 @ =gObjectEvents
+ adds r0, r1
+ adds r1, r4, 0
+ bl EventObjectSetGraphicsId
+_0805F20C:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F214: .4byte gObjectEvents
+ thumb_func_end ObjectEventSetGraphicsIdByLocalIdAndMap
+
+ thumb_func_start ObjectEventTurn
+ObjectEventTurn: @ 805F218
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ bl ObjectEventSetDirection
+ ldrb r0, [r6, 0x1]
+ lsls r0, 27
+ cmp r0, 0
+ blt _0805F25E
+ ldrb r0, [r6, 0x4]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r5, _0805F264 @ =gSprites
+ adds r4, r5
+ ldrb r0, [r6, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldrb r1, [r6, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ movs r1, 0
+ bl SeekSpriteAnim
+_0805F25E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F264: .4byte gSprites
+ thumb_func_end ObjectEventTurn
+
+ thumb_func_start ObjectEventTurnByLocalIdAndMap
+ObjectEventTurnByLocalIdAndMap: @ 805F268
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r4, r3, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805F29C
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805F2A4 @ =gObjectEvents
+ adds r0, r1
+ adds r1, r4, 0
+ bl ObjectEventTurn
+_0805F29C:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F2A4: .4byte gObjectEvents
+ thumb_func_end ObjectEventTurnByLocalIdAndMap
+
+ thumb_func_start PlayerObjectTurn
+PlayerObjectTurn: @ 805F2A8
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0x5]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0805F2C4 @ =gObjectEvents
+ adds r0, r2
+ bl ObjectEventTurn
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F2C4: .4byte gObjectEvents
+ thumb_func_end PlayerObjectTurn
+
+ thumb_func_start GetObjectEventGraphicsInfo
+GetObjectEventGraphicsInfo: @ 805F2C8
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xEF
+ bls _0805F2E0
+ adds r0, r1, 0
+ adds r0, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ bl VarGetObjectEventGraphicsId
+ adds r1, r0, 0
+_0805F2E0:
+ cmp r1, 0x97
+ bls _0805F2E6
+ movs r1, 0x10
+_0805F2E6:
+ ldr r0, _0805F2F4 @ =gObjectEventGraphicsInfoPointers
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, [r1]
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F2F4: .4byte gObjectEventGraphicsInfoPointers
+ thumb_func_end GetObjectEventGraphicsInfo
+
+ thumb_func_start ObjectEventHandleDynamicGraphicsId
+ObjectEventHandleDynamicGraphicsId: @ 805F2F8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrb r0, [r4, 0x5]
+ cmp r0, 0xEF
+ bls _0805F30E
+ adds r0, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ bl VarGetObjectEventGraphicsId
+ strb r0, [r4, 0x5]
+_0805F30E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end ObjectEventHandleDynamicGraphicsId
+
+ thumb_func_start npc_by_local_id_and_map_set_field_1_bit_x20
+npc_by_local_id_and_map_set_field_1_bit_x20: @ 805F314
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r4, r3, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805F356
+ ldr r2, _0805F360 @ =gObjectEvents
+ mov r0, sp
+ ldrb r0, [r0]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x1
+ adds r2, r4, 0
+ ands r2, r0
+ lsls r2, 5
+ ldrb r3, [r1, 0x1]
+ movs r0, 0x21
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0x1]
+_0805F356:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F360: .4byte gObjectEvents
+ thumb_func_end npc_by_local_id_and_map_set_field_1_bit_x20
+
+ thumb_func_start ObjectEventGetLocalIdAndMap
+ObjectEventGetLocalIdAndMap: @ 805F364
+ push {r4,lr}
+ ldrb r4, [r0, 0x8]
+ strb r4, [r1]
+ ldrb r1, [r0, 0x9]
+ strb r1, [r2]
+ ldrb r0, [r0, 0xA]
+ strb r0, [r3]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end ObjectEventGetLocalIdAndMap
+
+ thumb_func_start sub_805F378
+sub_805F378: @ 805F378
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ bl GetObjectEventIdByXY
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x10
+ beq _0805F3A0
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805F3A4 @ =gObjectEvents
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_0805F3A0:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F3A4: .4byte gObjectEvents
+ thumb_func_end sub_805F378
+
+ thumb_func_start sub_805F3A8
+sub_805F3A8: @ 805F3A8
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r4, r3, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805F3EE
+ mov r0, sp
+ ldrb r0, [r0]
+ lsls r2, r0, 3
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _0805F3F8 @ =gObjectEvents
+ adds r2, r0
+ ldrb r1, [r2, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805F3FC @ =gSprites
+ adds r0, r1
+ ldrb r1, [r2, 0x3]
+ movs r3, 0x4
+ orrs r1, r3
+ strb r1, [r2, 0x3]
+ adds r0, 0x43
+ strb r4, [r0]
+_0805F3EE:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F3F8: .4byte gObjectEvents
+_0805F3FC: .4byte gSprites
+ thumb_func_end sub_805F3A8
+
+ thumb_func_start sub_805F400
+sub_805F400: @ 805F400
+ push {lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805F43C
+ mov r0, sp
+ ldrb r0, [r0]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _0805F444 @ =gObjectEvents
+ adds r1, r0
+ ldrb r2, [r1, 0x3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x3]
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+_0805F43C:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F444: .4byte gObjectEvents
+ thumb_func_end sub_805F400
+
+ thumb_func_start sub_805F448
+sub_805F448: @ 805F448
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r4, [sp, 0x10]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 16
+ lsrs r5, r3, 16
+ lsls r4, 16
+ lsrs r4, 16
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805F48C
+ ldr r2, _0805F494 @ =gObjectEvents
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805F498 @ =gSprites
+ adds r0, r1
+ strh r5, [r0, 0x24]
+ strh r4, [r0, 0x26]
+_0805F48C:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F494: .4byte gObjectEvents
+_0805F498: .4byte gSprites
+ thumb_func_end sub_805F448
+
+ thumb_func_start gpu_pal_allocator_reset__manage_upper_four
+gpu_pal_allocator_reset__manage_upper_four: @ 805F49C
+ push {lr}
+ bl FreeAllSpritePalettes
+ ldr r1, _0805F4AC @ =gReservedSpritePaletteCount
+ movs r0, 0xC
+ strb r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F4AC: .4byte gReservedSpritePaletteCount
+ thumb_func_end gpu_pal_allocator_reset__manage_upper_four
+
+ thumb_func_start sub_805F4B0
+sub_805F4B0: @ 805F4B0
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ bl FindObjectEventPaletteIndexByTag
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r0, _0805F4D4 @ =0x000011ff
+ cmp r1, r0
+ beq _0805F4CE
+ lsls r0, r1, 3
+ ldr r1, _0805F4D8 @ =gUnknown_83A5158
+ adds r0, r1
+ bl sub_805F510
+_0805F4CE:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F4D4: .4byte 0x000011ff
+_0805F4D8: .4byte gUnknown_83A5158
+ thumb_func_end sub_805F4B0
+
+ thumb_func_start sub_805F4DC
+sub_805F4DC: @ 805F4DC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r4, 0
+ ldrh r0, [r5]
+ ldr r1, _0805F50C @ =0x000011ff
+ cmp r0, r1
+ beq _0805F506
+ adds r6, r1, 0
+_0805F4EC:
+ lsls r0, r4, 1
+ adds r0, r5
+ ldrh r0, [r0]
+ bl sub_805F4B0
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 1
+ adds r0, r5
+ ldrh r0, [r0]
+ cmp r0, r6
+ bne _0805F4EC
+_0805F506:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F50C: .4byte 0x000011ff
+ thumb_func_end sub_805F4DC
+
+ thumb_func_start sub_805F510
+sub_805F510: @ 805F510
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x4]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _0805F52E
+ adds r0, r4, 0
+ bl LoadSpritePalette
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805F530
+_0805F52E:
+ movs r0, 0xFF
+_0805F530:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805F510
+
+ thumb_func_start pal_patch_for_npc
+pal_patch_for_npc: @ 805F538
+ push {r4,lr}
+ adds r4, r1, 0
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 24
+ lsrs r4, 24
+ bl FindObjectEventPaletteIndexByTag
+ lsls r0, 24
+ ldr r1, _0805F570 @ =gUnknown_83A5158
+ lsrs r0, 21
+ adds r0, r1
+ ldr r0, [r0]
+ lsls r1, r4, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r1, r2
+ lsrs r1, 16
+ movs r2, 0x20
+ bl LoadPalette
+ adds r0, r4, 0
+ bl sub_8083598
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F570: .4byte gUnknown_83A5158
+ thumb_func_end pal_patch_for_npc
+
+ thumb_func_start pal_patch_for_npc_range
+pal_patch_for_npc_range: @ 805F574
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r1, 24
+ lsrs r4, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ cmp r4, r6
+ bcs _0805F598
+_0805F584:
+ ldrh r0, [r5]
+ adds r1, r4, 0
+ bl pal_patch_for_npc
+ adds r5, 0x2
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r6
+ bcc _0805F584
+_0805F598:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end pal_patch_for_npc_range
+
+ thumb_func_start FindObjectEventPaletteIndexByTag
+FindObjectEventPaletteIndexByTag: @ 805F5A0
+ push {r4-r6,lr}
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r2, 0
+ ldr r0, _0805F5C8 @ =gUnknown_83A5158
+ ldrh r1, [r0, 0x4]
+ ldr r3, _0805F5CC @ =0x000011ff
+ adds r4, r0, 0
+ cmp r1, r3
+ beq _0805F5E0
+ adds r6, r4, 0
+ adds r1, r3, 0
+_0805F5B8:
+ lsls r0, r2, 3
+ adds r0, r6
+ ldrh r0, [r0, 0x4]
+ cmp r0, r5
+ bne _0805F5D0
+ adds r0, r2, 0
+ b _0805F5E2
+ .align 2, 0
+_0805F5C8: .4byte gUnknown_83A5158
+_0805F5CC: .4byte 0x000011ff
+_0805F5D0:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 3
+ adds r0, r4
+ ldrh r0, [r0, 0x4]
+ cmp r0, r1
+ bne _0805F5B8
+_0805F5E0:
+ movs r0, 0xFF
+_0805F5E2:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end FindObjectEventPaletteIndexByTag
+
+ thumb_func_start npc_load_two_palettes__no_record
+npc_load_two_palettes__no_record: @ 805F5E8
+ push {r4-r6,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r1, 24
+ lsrs r5, r1, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl pal_patch_for_npc
+ movs r3, 0
+ ldr r1, _0805F630 @ =gUnknown_83A5208
+ ldrh r0, [r1]
+ ldr r2, _0805F634 @ =0x000011ff
+ cmp r0, r2
+ beq _0805F650
+ ldr r0, _0805F638 @ =gUnknown_835B934
+ adds r5, r0
+ adds r6, r2, 0
+_0805F60C:
+ lsls r2, r3, 3
+ adds r0, r2, r1
+ ldrh r0, [r0]
+ cmp r0, r4
+ bne _0805F640
+ adds r1, 0x4
+ adds r1, r2, r1
+ ldr r0, _0805F63C @ =gUnknown_2037098
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ ldrb r1, [r5]
+ bl pal_patch_for_npc
+ b _0805F650
+ .align 2, 0
+_0805F630: .4byte gUnknown_83A5208
+_0805F634: .4byte 0x000011ff
+_0805F638: .4byte gUnknown_835B934
+_0805F63C: .4byte gUnknown_2037098
+_0805F640:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 3
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r6
+ bne _0805F60C
+_0805F650:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_load_two_palettes__no_record
+
+ thumb_func_start npc_load_two_palettes__and_record
+npc_load_two_palettes__and_record: @ 805F658
+ push {r4-r6,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, _0805F6A4 @ =gUnknown_203709A
+ strh r4, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl pal_patch_for_npc
+ movs r3, 0
+ ldr r1, _0805F6A8 @ =gUnknown_83A5278
+ ldrh r0, [r1]
+ ldr r2, _0805F6AC @ =0x000011ff
+ cmp r0, r2
+ beq _0805F6C8
+ ldr r0, _0805F6B0 @ =gUnknown_835B934
+ adds r5, r0
+ adds r6, r2, 0
+_0805F680:
+ lsls r2, r3, 3
+ adds r0, r2, r1
+ ldrh r0, [r0]
+ cmp r0, r4
+ bne _0805F6B8
+ adds r1, 0x4
+ adds r1, r2, r1
+ ldr r0, _0805F6B4 @ =gUnknown_2037098
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ ldrb r1, [r5]
+ bl pal_patch_for_npc
+ b _0805F6C8
+ .align 2, 0
+_0805F6A4: .4byte gUnknown_203709A
+_0805F6A8: .4byte gUnknown_83A5278
+_0805F6AC: .4byte 0x000011ff
+_0805F6B0: .4byte gUnknown_835B934
+_0805F6B4: .4byte gUnknown_2037098
+_0805F6B8:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 3
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r6
+ bne _0805F680
+_0805F6C8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_load_two_palettes__and_record
+
+ thumb_func_start sub_805F6D0
+sub_805F6D0: @ 805F6D0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805F6DC @ =gUnknown_835B934
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805F6DC: .4byte gUnknown_835B934
+ thumb_func_end sub_805F6D0
+
+ thumb_func_start unref_sub_808EAC4
+unref_sub_808EAC4: @ 805F6E0
+ push {r4,lr}
+ ldrh r3, [r0, 0x10]
+ strh r3, [r0, 0x14]
+ ldrh r4, [r0, 0x12]
+ strh r4, [r0, 0x16]
+ lsls r1, 16
+ asrs r1, 16
+ adds r1, r3
+ strh r1, [r0, 0x10]
+ lsls r2, 16
+ asrs r2, 16
+ adds r2, r4
+ strh r2, [r0, 0x12]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end unref_sub_808EAC4
+
+ thumb_func_start npc_coords_shift
+npc_coords_shift: @ 805F700
+ ldrh r3, [r0, 0x10]
+ strh r3, [r0, 0x14]
+ ldrh r3, [r0, 0x12]
+ strh r3, [r0, 0x16]
+ strh r1, [r0, 0x10]
+ strh r2, [r0, 0x12]
+ bx lr
+ thumb_func_end npc_coords_shift
+
+ thumb_func_start npc_coords_set
+npc_coords_set: @ 805F710
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ strh r1, [r0, 0x14]
+ strh r2, [r0, 0x16]
+ strh r1, [r0, 0x10]
+ strh r2, [r0, 0x12]
+ bx lr
+ thumb_func_end npc_coords_set
+
+ thumb_func_start sub_805F724
+sub_805F724: @ 805F724
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ ldrb r1, [r6, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805F7C0 @ =gSprites
+ adds r7, r0, r1
+ ldrb r0, [r6, 0x5]
+ bl GetObjectEventGraphicsInfo
+ mov r8, r0
+ lsls r4, 16
+ asrs r4, 16
+ lsls r5, 16
+ asrs r5, 16
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl npc_coords_set
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ movs r2, 0x12
+ ldrsh r1, [r6, r2]
+ adds r2, r7, 0
+ adds r2, 0x20
+ adds r3, r7, 0
+ adds r3, 0x22
+ bl sub_8063B1C
+ mov r1, r8
+ ldrh r0, [r1, 0x8]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r1, r7, 0
+ adds r1, 0x28
+ strb r0, [r1]
+ mov r2, r8
+ ldrh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ negs r0, r0
+ adds r2, r7, 0
+ adds r2, 0x29
+ strb r0, [r2]
+ ldrh r0, [r7, 0x20]
+ adds r0, 0x8
+ strh r0, [r7, 0x20]
+ ldrh r1, [r7, 0x22]
+ adds r1, 0x10
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ adds r0, r1
+ strh r0, [r7, 0x22]
+ adds r0, r6, 0
+ bl sub_805EFF4
+ ldrb r0, [r6, 0x1]
+ lsrs r0, 7
+ cmp r0, 0
+ beq _0805F7B6
+ bl CameraObjectReset1
+_0805F7B6:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F7C0: .4byte gSprites
+ thumb_func_end sub_805F724
+
+ thumb_func_start sub_805F7C4
+sub_805F7C4: @ 805F7C4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r4, [sp, 0x10]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 16
+ lsrs r5, r3, 16
+ lsls r4, 16
+ lsrs r4, 16
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805F80C
+ lsls r1, r5, 16
+ lsls r2, r4, 16
+ mov r0, sp
+ ldrb r3, [r0]
+ lsls r0, r3, 3
+ adds r0, r3
+ lsls r0, 2
+ ldr r3, _0805F814 @ =gObjectEvents
+ adds r0, r3
+ movs r3, 0xE0
+ lsls r3, 11
+ adds r1, r3
+ asrs r1, 16
+ adds r2, r3
+ asrs r2, 16
+ bl sub_805F724
+_0805F80C:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F814: .4byte gObjectEvents
+ thumb_func_end sub_805F7C4
+
+ thumb_func_start npc_coords_shift_still
+npc_coords_shift_still: @ 805F818
+ push {lr}
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ movs r3, 0x12
+ ldrsh r2, [r0, r3]
+ bl npc_coords_shift
+ pop {r0}
+ bx r0
+ thumb_func_end npc_coords_shift_still
+
+ thumb_func_start UpdateObjectEventCoordsForCameraUpdate
+UpdateObjectEventCoordsForCameraUpdate: @ 805F82C
+ push {r4,r5,lr}
+ ldr r2, _0805F88C @ =gCamera
+ ldrb r1, [r2]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0805F884
+ movs r3, 0
+ ldr r5, _0805F890 @ =gObjectEvents
+ movs r0, 0x4
+ ldrsh r4, [r2, r0]
+ movs r0, 0x8
+ ldrsh r1, [r2, r0]
+_0805F846:
+ lsls r0, r3, 3
+ adds r0, r3
+ lsls r0, 2
+ adds r2, r0, r5
+ ldrb r0, [r2]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805F87A
+ ldrh r0, [r2, 0xC]
+ subs r0, r4
+ strh r0, [r2, 0xC]
+ ldrh r0, [r2, 0xE]
+ subs r0, r1
+ strh r0, [r2, 0xE]
+ ldrh r0, [r2, 0x10]
+ subs r0, r4
+ strh r0, [r2, 0x10]
+ ldrh r0, [r2, 0x12]
+ subs r0, r1
+ strh r0, [r2, 0x12]
+ ldrh r0, [r2, 0x14]
+ subs r0, r4
+ strh r0, [r2, 0x14]
+ ldrh r0, [r2, 0x16]
+ subs r0, r1
+ strh r0, [r2, 0x16]
+_0805F87A:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xF
+ bls _0805F846
+_0805F884:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F88C: .4byte gCamera
+_0805F890: .4byte gObjectEvents
+ thumb_func_end UpdateObjectEventCoordsForCameraUpdate
+
+ thumb_func_start GetObjectEventIdByXYZ
+GetObjectEventIdByXYZ: @ 805F894
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 16
+ lsrs r7, r0, 16
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 24
+ lsrs r5, r2, 24
+ movs r4, 0
+ ldr r0, _0805F8E0 @ =gObjectEvents
+ mov r8, r0
+_0805F8AC:
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ mov r2, r8
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805F8E4
+ movs r2, 0x10
+ ldrsh r0, [r1, r2]
+ cmp r0, r7
+ bne _0805F8E4
+ movs r2, 0x12
+ ldrsh r0, [r1, r2]
+ cmp r0, r6
+ bne _0805F8E4
+ adds r0, r1, 0
+ adds r1, r5, 0
+ bl ObjectEventDoesZCoordMatch
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805F8E4
+ adds r0, r4, 0
+ b _0805F8F0
+ .align 2, 0
+_0805F8E0: .4byte gObjectEvents
+_0805F8E4:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _0805F8AC
+ movs r0, 0x10
+_0805F8F0:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetObjectEventIdByXYZ
+
+ thumb_func_start ObjectEventDoesZCoordMatch
+ObjectEventDoesZCoordMatch: @ 805F8FC
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0xB]
+ movs r0, 0xF
+ ands r0, r2
+ cmp r0, 0
+ beq _0805F91C
+ cmp r1, 0
+ beq _0805F91C
+ lsls r0, r2, 28
+ lsrs r0, 28
+ cmp r0, r1
+ beq _0805F91C
+ movs r0, 0
+ b _0805F91E
+_0805F91C:
+ movs r0, 0x1
+_0805F91E:
+ pop {r1}
+ bx r1
+ thumb_func_end ObjectEventDoesZCoordMatch
+
+ thumb_func_start UpdateObjectEventsForCameraUpdate
+UpdateObjectEventsForCameraUpdate: @ 805F924
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ bl UpdateObjectEventCoordsForCameraUpdate
+ lsls r4, 16
+ asrs r4, 16
+ lsls r5, 16
+ asrs r5, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_805EC30
+ bl RemoveObjectEventsOutsideView
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end UpdateObjectEventsForCameraUpdate
+
+ thumb_func_start AddCameraObject
+AddCameraObject: @ 805F950
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _0805F98C @ =gUnknown_835B944
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x4
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0805F990 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r2, 0x3E
+ adds r2, r1
+ mov r12, r2
+ ldrb r2, [r2]
+ movs r3, 0x4
+ orrs r2, r3
+ mov r3, r12
+ strb r2, [r3]
+ strh r4, [r1, 0x2E]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F98C: .4byte gUnknown_835B944
+_0805F990: .4byte gSprites
+ thumb_func_end AddCameraObject
+
+ thumb_func_start ObjectCB_CameraObject
+ObjectCB_CameraObject: @ 805F994
+ push {r4,r5,lr}
+ sub sp, 0xC
+ mov r2, sp
+ ldr r1, _0805F9B8 @ =gUnknown_835B95C
+ ldm r1!, {r3-r5}
+ stm r2!, {r3-r5}
+ movs r2, 0x30
+ ldrsh r1, [r0, r2]
+ lsls r1, 2
+ add r1, sp
+ ldr r1, [r1]
+ bl _call_via_r1
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F9B8: .4byte gUnknown_835B95C
+ thumb_func_end ObjectCB_CameraObject
+
+ thumb_func_start CameraObject_0
+CameraObject_0: @ 805F9BC
+ push {lr}
+ ldr r3, _0805F9F4 @ =gSprites
+ movs r1, 0x2E
+ ldrsh r2, [r0, r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r3
+ ldrh r1, [r1, 0x20]
+ strh r1, [r0, 0x20]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r3
+ ldrh r1, [r1, 0x22]
+ strh r1, [r0, 0x22]
+ adds r3, r0, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r3]
+ movs r1, 0x1
+ strh r1, [r0, 0x30]
+ bl CameraObject_1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F9F4: .4byte gSprites
+ thumb_func_end CameraObject_0
+
+ thumb_func_start CameraObject_1
+CameraObject_1: @ 805F9F8
+ push {r4,r5,lr}
+ ldr r3, _0805FA2C @ =gSprites
+ movs r1, 0x2E
+ ldrsh r2, [r0, r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r3
+ ldrh r3, [r1, 0x22]
+ ldrh r2, [r0, 0x20]
+ ldrh r4, [r1, 0x20]
+ movs r5, 0x20
+ ldrsh r1, [r1, r5]
+ subs r1, r2
+ strh r1, [r0, 0x32]
+ ldrh r2, [r0, 0x22]
+ lsls r1, r3, 16
+ asrs r1, 16
+ subs r1, r2
+ strh r1, [r0, 0x34]
+ strh r4, [r0, 0x20]
+ strh r3, [r0, 0x22]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FA2C: .4byte gSprites
+ thumb_func_end CameraObject_1
+
+ thumb_func_start CameraObject_2
+CameraObject_2: @ 805FA30
+ push {r4,lr}
+ ldr r4, _0805FA5C @ =gSprites
+ movs r1, 0x2E
+ ldrsh r2, [r0, r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ ldrh r1, [r1, 0x20]
+ movs r3, 0
+ strh r1, [r0, 0x20]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ ldrh r1, [r1, 0x22]
+ strh r1, [r0, 0x22]
+ strh r3, [r0, 0x32]
+ strh r3, [r0, 0x34]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FA5C: .4byte gSprites
+ thumb_func_end CameraObject_2
+
+ thumb_func_start FindCameraObject
+FindCameraObject: @ 805FA60
+ push {r4,r5,lr}
+ movs r3, 0
+ ldr r4, _0805FA8C @ =gSprites
+ adds r5, r4, 0
+ adds r5, 0x1C
+_0805FA6A:
+ lsls r0, r3, 4
+ adds r0, r3
+ lsls r1, r0, 2
+ adds r2, r1, r4
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805FA94
+ adds r0, r1, r5
+ ldr r1, [r0]
+ ldr r0, _0805FA90 @ =ObjectCB_CameraObject
+ cmp r1, r0
+ bne _0805FA94
+ adds r0, r2, 0
+ b _0805FAA0
+ .align 2, 0
+_0805FA8C: .4byte gSprites
+_0805FA90: .4byte ObjectCB_CameraObject
+_0805FA94:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x3F
+ bls _0805FA6A
+ movs r0, 0
+_0805FAA0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end FindCameraObject
+
+ thumb_func_start CameraObjectReset1
+CameraObjectReset1: @ 805FAA8
+ push {lr}
+ bl FindCameraObject
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _0805FAC0
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ ldr r1, [r2, 0x1C]
+ adds r0, r2, 0
+ bl _call_via_r1
+_0805FAC0:
+ pop {r0}
+ bx r0
+ thumb_func_end CameraObjectReset1
+
+ thumb_func_start CameraObjectSetFollowedObjectId
+CameraObjectSetFollowedObjectId: @ 805FAC4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl FindCameraObject
+ cmp r0, 0
+ beq _0805FAD8
+ strh r4, [r0, 0x2E]
+ bl CameraObjectReset1
+_0805FAD8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end CameraObjectSetFollowedObjectId
+
+ thumb_func_start CameraObjectGetFollowedObjectId
+CameraObjectGetFollowedObjectId: @ 805FAE0
+ push {lr}
+ bl FindCameraObject
+ cmp r0, 0
+ beq _0805FAF2
+ ldrh r0, [r0, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805FAF4
+_0805FAF2:
+ movs r0, 0x40
+_0805FAF4:
+ pop {r1}
+ bx r1
+ thumb_func_end CameraObjectGetFollowedObjectId
+
+ thumb_func_start CameraObjectReset2
+CameraObjectReset2: @ 805FAF8
+ push {lr}
+ bl FindCameraObject
+ movs r1, 0x2
+ strh r1, [r0, 0x30]
+ pop {r0}
+ bx r0
+ thumb_func_end CameraObjectReset2
+
+ thumb_func_start CopySprite
+CopySprite: @ 805FB08
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ mov r12, r0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ lsls r2, 16
+ lsrs r6, r2, 16
+ lsls r3, 24
+ lsrs r7, r3, 24
+ movs r5, 0
+ ldr r1, _0805FB50 @ =gSprites
+_0805FB22:
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r4, r0, r1
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0805FB54
+ adds r0, r4, 0
+ mov r1, r12
+ movs r2, 0x44
+ bl memcpy
+ mov r0, r8
+ strh r0, [r4, 0x20]
+ strh r6, [r4, 0x22]
+ adds r0, r4, 0
+ adds r0, 0x43
+ strb r7, [r0]
+ b _0805FB5E
+ .align 2, 0
+_0805FB50: .4byte gSprites
+_0805FB54:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3F
+ bls _0805FB22
+_0805FB5E:
+ adds r0, r5, 0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CopySprite
+
+ thumb_func_start obj_unfreeze
+obj_unfreeze: @ 805FB6C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ mov r12, r0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ lsls r2, 16
+ lsrs r6, r2, 16
+ lsls r3, 24
+ lsrs r7, r3, 24
+ movs r5, 0x3F
+ ldr r3, _0805FBC0 @ =gSprites
+ movs r2, 0x1
+ negs r2, r2
+_0805FB8A:
+ lsls r0, r5, 16
+ asrs r1, r0, 16
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r4, r0, r3
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0805FBC4
+ adds r0, r4, 0
+ mov r1, r12
+ movs r2, 0x44
+ bl memcpy
+ mov r0, r8
+ strh r0, [r4, 0x20]
+ strh r6, [r4, 0x22]
+ adds r0, r4, 0
+ adds r0, 0x43
+ strb r7, [r0]
+ lsls r0, r5, 24
+ lsrs r0, 24
+ b _0805FBD2
+ .align 2, 0
+_0805FBC0: .4byte gSprites
+_0805FBC4:
+ subs r0, r1, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ asrs r0, 16
+ cmp r0, r2
+ bgt _0805FB8A
+ movs r0, 0x40
+_0805FBD2:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end obj_unfreeze
+
+ thumb_func_start ObjectEventSetDirection
+ObjectEventSetDirection: @ 805FBDC
+ push {r4,lr}
+ adds r3, r0, 0
+ lsls r1, 24
+ lsrs r2, r1, 24
+ adds r4, r2, 0
+ ldrb r0, [r3, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ adds r1, r3, 0
+ adds r1, 0x20
+ strb r0, [r1]
+ ldrb r0, [r3, 0x1]
+ lsls r0, 30
+ cmp r0, 0
+ blt _0805FC0C
+ movs r0, 0xF
+ adds r1, r2, 0
+ ands r1, r0
+ ldrb r2, [r3, 0x18]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x18]
+_0805FC0C:
+ lsls r2, r4, 4
+ ldrb r1, [r3, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r3, 0x18]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end ObjectEventSetDirection
+
+ thumb_func_start GetObjectEventScriptPointerByLocalIdAndMap
+GetObjectEventScriptPointerByLocalIdAndMap: @ 805FC20
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ bl GetObjectEventTemplateByLocalIdAndMap
+ ldr r0, [r0, 0x10]
+ pop {r1}
+ bx r1
+ thumb_func_end GetObjectEventScriptPointerByLocalIdAndMap
+
+ thumb_func_start GetObjectEventScriptPointerByObjectEventId
+GetObjectEventScriptPointerByObjectEventId: @ 805FC38
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FC58 @ =gObjectEvents
+ lsls r2, r0, 3
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r1
+ ldrb r0, [r2, 0x8]
+ ldrb r1, [r2, 0x9]
+ ldrb r2, [r2, 0xA]
+ bl GetObjectEventScriptPointerByLocalIdAndMap
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805FC58: .4byte gObjectEvents
+ thumb_func_end GetObjectEventScriptPointerByObjectEventId
+
+ thumb_func_start GetObjectEventFlagIdByLocalIdAndMap
+GetObjectEventFlagIdByLocalIdAndMap: @ 805FC5C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ bl GetObjectEventTemplateByLocalIdAndMap
+ ldrh r0, [r0, 0x14]
+ pop {r1}
+ bx r1
+ thumb_func_end GetObjectEventFlagIdByLocalIdAndMap
+
+ thumb_func_start GetObjectEventFlagIdByObjectEventId
+GetObjectEventFlagIdByObjectEventId: @ 805FC74
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FC98 @ =gObjectEvents
+ lsls r2, r0, 3
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r1
+ ldrb r0, [r2, 0x8]
+ ldrb r1, [r2, 0x9]
+ ldrb r2, [r2, 0xA]
+ bl GetObjectEventFlagIdByLocalIdAndMap
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805FC98: .4byte gObjectEvents
+ thumb_func_end GetObjectEventFlagIdByObjectEventId
+
+ thumb_func_start sub_805FC9C
+sub_805FC9C: @ 805FC9C
+ push {lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805FCD0
+ ldr r2, _0805FCCC @ =gObjectEvents
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x7]
+ b _0805FCD2
+ .align 2, 0
+_0805FCCC: .4byte gObjectEvents
+_0805FCD0:
+ movs r0, 0xFF
+_0805FCD2:
+ add sp, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FC9C
+
+ thumb_func_start sub_805FCD8
+sub_805FCD8: @ 805FCD8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ bl GetObjectEventTemplateByLocalIdAndMap
+ ldrh r0, [r0, 0xC]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FCD8
+
+ thumb_func_start sub_805FCF0
+sub_805FCF0: @ 805FCF0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0805FD04 @ =gObjectEvents
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r0, [r1, 0x7]
+ bx lr
+ .align 2, 0
+_0805FD04: .4byte gObjectEvents
+ thumb_func_end sub_805FCF0
+
+ thumb_func_start sub_805FD08
+sub_805FD08: @ 805FD08
+ push {lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805FD3C
+ ldr r2, _0805FD38 @ =gObjectEvents
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1D]
+ b _0805FD3E
+ .align 2, 0
+_0805FD38: .4byte gObjectEvents
+_0805FD3C:
+ movs r0, 0xFF
+_0805FD3E:
+ add sp, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FD08
+
+ thumb_func_start ObjectEventGetBerryTreeId
+ObjectEventGetBerryTreeId: @ 805FD44
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0805FD58 @ =gObjectEvents
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r0, [r1, 0x1D]
+ bx lr
+ .align 2, 0
+_0805FD58: .4byte gObjectEvents
+ thumb_func_end ObjectEventGetBerryTreeId
+
+ thumb_func_start GetObjectEventTemplateByLocalIdAndMap
+GetObjectEventTemplateByLocalIdAndMap: @ 805FD5C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r3, r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r0, _0805FD8C @ =gSaveBlock1Ptr
+ ldr r1, [r0]
+ movs r0, 0x5
+ ldrsb r0, [r1, r0]
+ cmp r0, r3
+ bne _0805FD94
+ movs r0, 0x4
+ ldrsb r0, [r1, r0]
+ cmp r0, r2
+ bne _0805FD94
+ movs r0, 0x8E
+ lsls r0, 4
+ adds r1, r0
+ ldr r0, _0805FD90 @ =gMapHeader
+ ldr r0, [r0, 0x4]
+ b _0805FDA0
+ .align 2, 0
+_0805FD8C: .4byte gSaveBlock1Ptr
+_0805FD90: .4byte gMapHeader
+_0805FD94:
+ adds r0, r2, 0
+ adds r1, r3, 0
+ bl Overworld_GetMapHeaderByGroupAndId
+ ldr r0, [r0, 0x4]
+ ldr r1, [r0, 0x4]
+_0805FDA0:
+ ldrb r2, [r0]
+ adds r0, r4, 0
+ bl FindObjectEventTemplateInArrayByLocalId
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetObjectEventTemplateByLocalIdAndMap
+
+ thumb_func_start FindObjectEventTemplateInArrayByLocalId
+FindObjectEventTemplateInArrayByLocalId: @ 805FDB0
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r2, 24
+ lsrs r2, 24
+ movs r1, 0
+ cmp r1, r2
+ bcs _0805FDDE
+_0805FDC2:
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ adds r3, r0, r5
+ ldrb r0, [r3]
+ cmp r0, r4
+ bne _0805FDD4
+ adds r0, r3, 0
+ b _0805FDE0
+_0805FDD4:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, r2
+ bcc _0805FDC2
+_0805FDDE:
+ movs r0, 0
+_0805FDE0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end FindObjectEventTemplateInArrayByLocalId
+
+ thumb_func_start sub_805FDE8
+sub_805FDE8: @ 805FDE8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ ldrb r0, [r4, 0x9]
+ ldr r1, _0805FE0C @ =gSaveBlock1Ptr
+ ldr r2, [r1]
+ movs r1, 0x5
+ ldrsb r1, [r2, r1]
+ cmp r0, r1
+ bne _0805FE50
+ ldrb r1, [r4, 0xA]
+ movs r0, 0x4
+ ldrsb r0, [r2, r0]
+ cmp r1, r0
+ beq _0805FE18
+ b _0805FE50
+ .align 2, 0
+_0805FE0C: .4byte gSaveBlock1Ptr
+_0805FE10:
+ mov r1, r8
+ adds r0, r5, r1
+ adds r0, r3, r0
+ b _0805FE52
+_0805FE18:
+ movs r6, 0
+ adds r3, r2, 0
+ movs r0, 0x8E
+ lsls r0, 4
+ mov r8, r0
+ ldrb r0, [r4, 0x8]
+ mov r12, r0
+ mov r0, r8
+ adds r2, r3, r0
+ movs r5, 0
+ adds r7, r1, 0
+_0805FE2E:
+ ldrb r1, [r2]
+ cmp r12, r1
+ bne _0805FE46
+ ldrb r1, [r4, 0x9]
+ movs r0, 0x5
+ ldrsb r0, [r3, r0]
+ cmp r1, r0
+ bne _0805FE46
+ movs r0, 0x4
+ ldrsb r0, [r3, r0]
+ cmp r7, r0
+ beq _0805FE10
+_0805FE46:
+ adds r2, 0x18
+ adds r5, 0x18
+ adds r6, 0x1
+ cmp r6, 0x3F
+ ble _0805FE2E
+_0805FE50:
+ movs r0, 0
+_0805FE52:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FDE8
+
+ thumb_func_start sub_805FE5C
+sub_805FE5C: @ 805FE5C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_805FDE8
+ adds r1, r0, 0
+ cmp r1, 0
+ beq _0805FE76
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x7
+ strh r0, [r1, 0x4]
+ ldrh r0, [r4, 0x12]
+ subs r0, 0x7
+ strh r0, [r1, 0x6]
+_0805FE76:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805FE5C
+
+ thumb_func_start sub_805FE7C
+sub_805FE7C: @ 805FE7C
+ push {r4,lr}
+ lsls r1, 24
+ lsrs r4, r1, 24
+ bl sub_805FDE8
+ cmp r0, 0
+ beq _0805FE8C
+ strb r4, [r0, 0x9]
+_0805FE8C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805FE7C
+
+ thumb_func_start sub_805FE94
+sub_805FE94: @ 805FE94
+ push {lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805FEC2
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805FEC8 @ =gObjectEvents
+ adds r0, r1
+ bl sub_805FE5C
+_0805FEC2:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FEC8: .4byte gObjectEvents
+ thumb_func_end sub_805FE94
+
+ thumb_func_start npc_paltag_set_load
+npc_paltag_set_load: @ 805FECC
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl gpu_pal_allocator_reset__manage_upper_four
+ ldr r1, _0805FF04 @ =gUnknown_203709A
+ ldr r2, _0805FF08 @ =0x000011ff
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r2, _0805FF0C @ =gUnknown_2037098
+ strb r4, [r2]
+ cmp r4, 0x1
+ bne _0805FF18
+ ldr r1, _0805FF10 @ =gUnknown_83A5330
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0
+ movs r2, 0x6
+ bl pal_patch_for_npc_range
+ ldr r1, _0805FF14 @ =gReservedSpritePaletteCount
+ movs r0, 0x8
+ strb r0, [r1]
+ b _0805FF2A
+ .align 2, 0
+_0805FF04: .4byte gUnknown_203709A
+_0805FF08: .4byte 0x000011ff
+_0805FF0C: .4byte gUnknown_2037098
+_0805FF10: .4byte gUnknown_83A5330
+_0805FF14: .4byte gReservedSpritePaletteCount
+_0805FF18:
+ ldr r0, _0805FF30 @ =gUnknown_83A5330
+ ldrb r1, [r2]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, [r1]
+ movs r1, 0
+ movs r2, 0xA
+ bl pal_patch_for_npc_range
+_0805FF2A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FF30: .4byte gUnknown_83A5330
+ thumb_func_end npc_paltag_set_load
+
+ thumb_func_start npc_paltag_by_palslot
+npc_paltag_by_palslot: @ 805FF34
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x9
+ bhi _0805FF70
+ ldr r1, _0805FF50 @ =gUnknown_83A5330
+ ldr r0, _0805FF54 @ =gUnknown_2037098
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r0, r2, 1
+ b _0805FF64
+ .align 2, 0
+_0805FF50: .4byte gUnknown_83A5330
+_0805FF54: .4byte gUnknown_2037098
+_0805FF58:
+ adds r1, r4, 0x4
+ adds r1, r2, r1
+ ldr r0, _0805FF6C @ =gUnknown_2037098
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 1
+_0805FF64:
+ adds r0, r1
+ ldrh r0, [r0]
+ b _0805FFA2
+ .align 2, 0
+_0805FF6C: .4byte gUnknown_2037098
+_0805FF70:
+ movs r3, 0
+ ldr r0, _0805FFA8 @ =gUnknown_83A5278
+ ldrh r1, [r0]
+ ldr r2, _0805FFAC @ =0x000011ff
+ adds r4, r0, 0
+ cmp r1, r2
+ beq _0805FFA0
+ adds r6, r4, 0
+ ldr r0, _0805FFB0 @ =gUnknown_203709A
+ ldrh r1, [r0]
+ adds r5, r2, 0
+_0805FF86:
+ lsls r2, r3, 3
+ adds r0, r2, r6
+ ldrh r0, [r0]
+ cmp r0, r1
+ beq _0805FF58
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 3
+ adds r0, r4
+ ldrh r0, [r0]
+ cmp r0, r5
+ bne _0805FF86
+_0805FFA0:
+ ldr r0, _0805FFAC @ =0x000011ff
+_0805FFA2:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805FFA8: .4byte gUnknown_83A5278
+_0805FFAC: .4byte 0x000011ff
+_0805FFB0: .4byte gUnknown_203709A
+ thumb_func_end npc_paltag_by_palslot
+
+ thumb_func_start sub_805FFB4
+sub_805FFB4: @ 805FFB4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0805FFD0 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _0805FFD4 @ =sub_805FFD8
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FFD0: .4byte gObjectEvents
+_0805FFD4: .4byte sub_805FFD8
+ thumb_func_end sub_805FFB4
+
+ thumb_func_start sub_805FFD8
+sub_805FFD8: @ 805FFD8
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_805FFD8
+
+ thumb_func_start sub_805FFDC
+sub_805FFDC: @ 805FFDC
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0805FFF8 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _0805FFFC @ =sub_8060000
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FFF8: .4byte gObjectEvents
+_0805FFFC: .4byte sub_8060000
+ thumb_func_end sub_805FFDC
+
+ thumb_func_start sub_8060000
+sub_8060000: @ 8060000
+ push {r4,lr}
+ ldr r3, _0806001C @ =gUnknown_83A6018
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806001C: .4byte gUnknown_83A6018
+ thumb_func_end sub_8060000
+
+ thumb_func_start sub_8060020
+sub_8060020: @ 8060020
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0806003C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08060040 @ =sub_8060044
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806003C: .4byte gObjectEvents
+_08060040: .4byte sub_8060044
+ thumb_func_end sub_8060020
+
+ thumb_func_start sub_8060044
+sub_8060044: @ 8060044
+ push {r4,lr}
+ ldr r3, _08060060 @ =gUnknown_83A6034
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060060: .4byte gUnknown_83A6034
+ thumb_func_end sub_8060044
+
+ thumb_func_start sub_8060064
+sub_8060064: @ 8060064
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060064
+
+ thumb_func_start sub_8060078
+sub_8060078: @ 8060078
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060078
+
+ thumb_func_start sub_80600A4
+sub_80600A4: @ 80600A4
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _080600D8
+ ldr r5, _080600D4 @ =gUnknown_83A6000
+ bl Random
+ movs r4, 0x3
+ adds r1, r4, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r5
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r6, 0
+ bl SetObjectEventStepTimer
+ strh r4, [r6, 0x30]
+ movs r0, 0x1
+ b _080600DA
+ .align 2, 0
+_080600D4: .4byte gUnknown_83A6000
+_080600D8:
+ movs r0, 0
+_080600DA:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80600A4
+
+ thumb_func_start sub_80600E0
+sub_80600E0: @ 80600E0
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _080600F4
+ movs r0, 0
+ b _080600FA
+_080600F4:
+ movs r0, 0x4
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_080600FA:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80600E0
+
+ thumb_func_start sub_8060100
+sub_8060100: @ 8060100
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldr r1, _08060148 @ =gUnknown_83A6050
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r4, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x5
+ strh r0, [r6, 0x30]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl npc_block_way__next_tile
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806013E
+ movs r0, 0x1
+ strh r0, [r6, 0x30]
+_0806013E:
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060148: .4byte gUnknown_83A6050
+ thumb_func_end sub_8060100
+
+ thumb_func_start sub_806014C
+sub_806014C: @ 806014C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_8063F84
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x6
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806014C
+
+ thumb_func_start sub_806017C
+sub_806017C: @ 806017C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_8063F2C
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x6
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806017C
+
+ thumb_func_start sub_80601AC
+sub_80601AC: @ 80601AC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _080601CA
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_080601CA:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80601AC
+
+ thumb_func_start ObjectEventIsTrainerAndCloseToPlayer
+ObjectEventIsTrainerAndCloseToPlayer: @ 80601D4
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ movs r0, 0x80
+ bl TestPlayerAvatarFlags
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060240
+ ldrb r0, [r5, 0x7]
+ cmp r0, 0x1
+ beq _080601F0
+ cmp r0, 0x3
+ bne _08060240
+_080601F0:
+ mov r7, sp
+ adds r7, 0x2
+ mov r0, sp
+ adds r1, r7, 0
+ bl PlayerGetDestCoords
+ ldrh r2, [r5, 0x10]
+ ldrh r4, [r5, 0x12]
+ ldrb r1, [r5, 0x1D]
+ subs r3, r2, r1
+ subs r0, r4, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r2, r1, r2
+ lsls r2, 16
+ lsrs r2, 16
+ adds r1, r4
+ lsls r1, 16
+ lsrs r6, r1, 16
+ mov r0, sp
+ lsls r3, 16
+ asrs r3, 16
+ movs r1, 0
+ ldrsh r4, [r0, r1]
+ cmp r3, r4
+ bgt _08060240
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, r4
+ blt _08060240
+ lsls r0, r5, 16
+ asrs r0, 16
+ movs r2, 0
+ ldrsh r1, [r7, r2]
+ cmp r0, r1
+ bgt _08060240
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r0, r1
+ bge _08060244
+_08060240:
+ movs r0, 0
+ b _08060246
+_08060244:
+ movs r0, 0x1
+_08060246:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end ObjectEventIsTrainerAndCloseToPlayer
+
+ thumb_func_start GetRegularRunningPastFacingDirection
+GetRegularRunningPastFacingDirection: @ 8060250
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r1, 16
+ lsrs r0, r1, 16
+ lsls r2, 16
+ lsls r3, 16
+ cmp r2, r3
+ ble _0806026E
+ movs r2, 0x4
+ lsls r0, r4, 16
+ cmp r0, 0
+ bge _08060278
+ movs r2, 0x3
+ b _08060278
+_0806026E:
+ movs r2, 0x1
+ lsls r0, 16
+ cmp r0, 0
+ bge _08060278
+ movs r2, 0x2
+_08060278:
+ adds r0, r2, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetRegularRunningPastFacingDirection
+
+ thumb_func_start GetNorthSouthRunningPastFacingDirection
+GetNorthSouthRunningPastFacingDirection: @ 8060280
+ push {lr}
+ movs r0, 0x1
+ lsls r1, 16
+ cmp r1, 0
+ bge _0806028C
+ movs r0, 0x2
+_0806028C:
+ pop {r1}
+ bx r1
+ thumb_func_end GetNorthSouthRunningPastFacingDirection
+
+ thumb_func_start GetEastWestRunningPastFacingDirection
+GetEastWestRunningPastFacingDirection: @ 8060290
+ push {lr}
+ movs r1, 0x4
+ lsls r0, 16
+ cmp r0, 0
+ bge _0806029C
+ movs r1, 0x3
+_0806029C:
+ adds r0, r1, 0
+ pop {r1}
+ bx r1
+ thumb_func_end GetEastWestRunningPastFacingDirection
+
+ thumb_func_start GetNorthEastRunningPastFacingDirection
+GetNorthEastRunningPastFacingDirection: @ 80602A4
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 16
+ asrs r5, r1, 16
+ lsls r2, 16
+ asrs r6, r2, 16
+ lsls r3, 16
+ asrs r7, r3, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetRegularRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080602E0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetEastWestRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bne _080602FA
+ b _080602F8
+_080602E0:
+ cmp r0, 0x4
+ bne _080602FA
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetNorthSouthRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080602FA
+_080602F8:
+ movs r0, 0x2
+_080602FA:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetNorthEastRunningPastFacingDirection
+
+ thumb_func_start GetNorthWestRunningPastFacingDirection
+GetNorthWestRunningPastFacingDirection: @ 8060300
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 16
+ asrs r5, r1, 16
+ lsls r2, 16
+ asrs r6, r2, 16
+ lsls r3, 16
+ asrs r7, r3, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetRegularRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0806033C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetEastWestRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _08060356
+ b _08060354
+_0806033C:
+ cmp r0, 0x3
+ bne _08060356
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetNorthSouthRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08060356
+_08060354:
+ movs r0, 0x2
+_08060356:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetNorthWestRunningPastFacingDirection
+
+ thumb_func_start GetSouthEastRunningPastFacingDirection
+GetSouthEastRunningPastFacingDirection: @ 806035C
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 16
+ asrs r5, r1, 16
+ lsls r2, 16
+ asrs r6, r2, 16
+ lsls r3, 16
+ asrs r7, r3, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetRegularRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _08060398
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetEastWestRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bne _080603B2
+ b _080603B0
+_08060398:
+ cmp r0, 0x4
+ bne _080603B2
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetNorthSouthRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _080603B2
+_080603B0:
+ movs r0, 0x1
+_080603B2:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetSouthEastRunningPastFacingDirection
+
+ thumb_func_start GetSouthWestRunningPastFacingDirection
+GetSouthWestRunningPastFacingDirection: @ 80603B8
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 16
+ asrs r5, r1, 16
+ lsls r2, 16
+ asrs r6, r2, 16
+ lsls r3, 16
+ asrs r7, r3, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetRegularRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _080603F4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetEastWestRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _0806040E
+ b _0806040C
+_080603F4:
+ cmp r0, 0x3
+ bne _0806040E
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl GetNorthSouthRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0806040E
+_0806040C:
+ movs r0, 0x1
+_0806040E:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetSouthWestRunningPastFacingDirection
+
+ thumb_func_start GetNonEastRunningPastFacingDirection
+GetNonEastRunningPastFacingDirection: @ 8060414
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r7, r0, 16
+ lsls r1, 16
+ asrs r6, r1, 16
+ lsls r2, 16
+ asrs r5, r2, 16
+ lsls r3, 16
+ asrs r4, r3, 16
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl GetRegularRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bne _0806044A
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl GetNorthSouthRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+_0806044A:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetNonEastRunningPastFacingDirection
+
+ thumb_func_start GetNonWestRunningPastFacingDirection
+GetNonWestRunningPastFacingDirection: @ 8060450
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r7, r0, 16
+ lsls r1, 16
+ asrs r6, r1, 16
+ lsls r2, 16
+ asrs r5, r2, 16
+ lsls r3, 16
+ asrs r4, r3, 16
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl GetRegularRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _08060486
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl GetNorthSouthRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+_08060486:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetNonWestRunningPastFacingDirection
+
+ thumb_func_start GetNonSouthRunningPastFacingDirection
+GetNonSouthRunningPastFacingDirection: @ 806048C
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r7, r0, 16
+ lsls r1, 16
+ asrs r6, r1, 16
+ lsls r2, 16
+ asrs r5, r2, 16
+ lsls r3, 16
+ asrs r4, r3, 16
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl GetRegularRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080604C2
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl GetEastWestRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+_080604C2:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetNonSouthRunningPastFacingDirection
+
+ thumb_func_start GetNonNorthRunningPastFacingDirection
+GetNonNorthRunningPastFacingDirection: @ 80604C8
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r7, r0, 16
+ lsls r1, 16
+ asrs r6, r1, 16
+ lsls r2, 16
+ asrs r5, r2, 16
+ lsls r3, 16
+ asrs r4, r3, 16
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl GetRegularRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _080604FE
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl GetEastWestRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+_080604FE:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetNonNorthRunningPastFacingDirection
+
+ thumb_func_start GetRunningPastFacingDirection
+GetRunningPastFacingDirection: @ 8060504
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806051C
+ movs r0, 0
+ b _08060580
+_0806051C:
+ mov r5, sp
+ adds r5, 0x2
+ mov r0, sp
+ adds r1, r5, 0
+ bl PlayerGetDestCoords
+ mov r2, sp
+ mov r0, sp
+ ldrh r0, [r0]
+ ldrh r1, [r4, 0x10]
+ subs r0, r1
+ strh r0, [r2]
+ ldrh r0, [r5]
+ ldrh r1, [r4, 0x12]
+ subs r0, r1
+ strh r0, [r5]
+ mov r0, sp
+ ldrh r3, [r5]
+ ldrh r2, [r0]
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bge _08060550
+ negs r0, r0
+ lsls r0, 16
+ lsrs r2, r0, 16
+_08060550:
+ lsls r0, r3, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _0806055E
+ negs r0, r0
+ lsls r0, 16
+ lsrs r3, r0, 16
+_0806055E:
+ ldr r0, _08060588 @ =gUnknown_83A6054
+ lsls r4, r6, 2
+ adds r4, r0
+ mov r0, sp
+ movs r6, 0
+ ldrsh r0, [r0, r6]
+ movs r6, 0
+ ldrsh r1, [r5, r6]
+ lsls r2, 16
+ asrs r2, 16
+ lsls r3, 16
+ asrs r3, 16
+ ldr r4, [r4]
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r0, 24
+_08060580:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060588: .4byte gUnknown_83A6054
+ thumb_func_end GetRunningPastFacingDirection
+
+ thumb_func_start sub_806058C
+sub_806058C: @ 806058C
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080605A8 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080605AC @ =sub_80605B0
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080605A8: .4byte gObjectEvents
+_080605AC: .4byte sub_80605B0
+ thumb_func_end sub_806058C
+
+ thumb_func_start sub_80605B0
+sub_80605B0: @ 80605B0
+ push {r4,lr}
+ ldr r3, _080605CC @ =gUnknown_83A6080
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080605CC: .4byte gUnknown_83A6080
+ thumb_func_end sub_80605B0
+
+ thumb_func_start sub_80605D0
+sub_80605D0: @ 80605D0
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80605D0
+
+ thumb_func_start sub_80605E4
+sub_80605E4: @ 80605E4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80605E4
+
+ thumb_func_start sub_8060610
+sub_8060610: @ 8060610
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060646
+ ldr r4, _08060650 @ =gUnknown_83A6000
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_08060646:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060650: .4byte gUnknown_83A6000
+ thumb_func_end sub_8060610
+
+ thumb_func_start sub_8060654
+sub_8060654: @ 8060654
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060672
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806067A
+_08060672:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0806067C
+_0806067A:
+ movs r0, 0
+_0806067C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060654
+
+ thumb_func_start sub_8060684
+sub_8060684: @ 8060684
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080606C8 @ =gUnknown_83A6050
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080606B4
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_080606B4:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080606C8: .4byte gUnknown_83A6050
+ thumb_func_end sub_8060684
+
+ thumb_func_start sub_80606CC
+sub_80606CC: @ 80606CC
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080606E8 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080606EC @ =sub_80606F0
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080606E8: .4byte gObjectEvents
+_080606EC: .4byte sub_80606F0
+ thumb_func_end sub_80606CC
+
+ thumb_func_start sub_80606F0
+sub_80606F0: @ 80606F0
+ push {r4,lr}
+ ldr r3, _0806070C @ =gUnknown_83A6094
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806070C: .4byte gUnknown_83A6094
+ thumb_func_end sub_80606F0
+
+ thumb_func_start sub_8060710
+sub_8060710: @ 8060710
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060710
+
+ thumb_func_start sub_8060724
+sub_8060724: @ 8060724
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060724
+
+ thumb_func_start sub_8060750
+sub_8060750: @ 8060750
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060784
+ ldr r5, _08060780 @ =gUnknown_83A6000
+ bl Random
+ movs r4, 0x3
+ adds r1, r4, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r5
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r6, 0
+ bl SetObjectEventStepTimer
+ strh r4, [r6, 0x30]
+ movs r0, 0x1
+ b _08060786
+ .align 2, 0
+_08060780: .4byte gUnknown_83A6000
+_08060784:
+ movs r0, 0
+_08060786:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060750
+
+ thumb_func_start sub_806078C
+sub_806078C: @ 806078C
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _080607A0
+ movs r0, 0
+ b _080607A6
+_080607A0:
+ movs r0, 0x4
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_080607A6:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806078C
+
+ thumb_func_start sub_80607AC
+sub_80607AC: @ 80607AC
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldr r1, _080607F4 @ =gUnknown_83A60B0
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ bl Random
+ movs r7, 0x1
+ adds r1, r7, 0
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r4, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x5
+ strh r0, [r6, 0x30]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl npc_block_way__next_tile
+ lsls r0, 24
+ cmp r0, 0
+ beq _080607EA
+ strh r7, [r6, 0x30]
+_080607EA:
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080607F4: .4byte gUnknown_83A60B0
+ thumb_func_end sub_80607AC
+
+ thumb_func_start sub_80607F8
+sub_80607F8: @ 80607F8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_8063F84
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x6
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80607F8
+
+ thumb_func_start sub_8060828
+sub_8060828: @ 8060828
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060846
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_08060846:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060828
+
+ thumb_func_start sub_8060850
+sub_8060850: @ 8060850
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0806086C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08060870 @ =sub_8060874
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806086C: .4byte gObjectEvents
+_08060870: .4byte sub_8060874
+ thumb_func_end sub_8060850
+
+ thumb_func_start sub_8060874
+sub_8060874: @ 8060874
+ push {r4,lr}
+ ldr r3, _08060890 @ =gUnknown_83A60B4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060890: .4byte gUnknown_83A60B4
+ thumb_func_end sub_8060874
+
+ thumb_func_start sub_8060894
+sub_8060894: @ 8060894
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060894
+
+ thumb_func_start sub_80608A8
+sub_80608A8: @ 80608A8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80608A8
+
+ thumb_func_start sub_80608D4
+sub_80608D4: @ 80608D4
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060908
+ ldr r5, _08060904 @ =gUnknown_83A6000
+ bl Random
+ movs r4, 0x3
+ adds r1, r4, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r5
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r6, 0
+ bl SetObjectEventStepTimer
+ strh r4, [r6, 0x30]
+ movs r0, 0x1
+ b _0806090A
+ .align 2, 0
+_08060904: .4byte gUnknown_83A6000
+_08060908:
+ movs r0, 0
+_0806090A:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80608D4
+
+ thumb_func_start sub_8060910
+sub_8060910: @ 8060910
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060924
+ movs r0, 0
+ b _0806092A
+_08060924:
+ movs r0, 0x4
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_0806092A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060910
+
+ thumb_func_start sub_8060930
+sub_8060930: @ 8060930
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldr r1, _08060978 @ =gUnknown_83A60D0
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ bl Random
+ movs r7, 0x1
+ adds r1, r7, 0
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r4, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x5
+ strh r0, [r6, 0x30]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl npc_block_way__next_tile
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806096E
+ strh r7, [r6, 0x30]
+_0806096E:
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060978: .4byte gUnknown_83A60D0
+ thumb_func_end sub_8060930
+
+ thumb_func_start sub_806097C
+sub_806097C: @ 806097C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_8063F84
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x6
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806097C
+
+ thumb_func_start sub_80609AC
+sub_80609AC: @ 80609AC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _080609CA
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_080609CA:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80609AC
+
+ thumb_func_start sub_80609D4
+sub_80609D4: @ 80609D4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080609F0 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080609F4 @ =sub_80609F8
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080609F0: .4byte gObjectEvents
+_080609F4: .4byte sub_80609F8
+ thumb_func_end sub_80609D4
+
+ thumb_func_start sub_80609F8
+sub_80609F8: @ 80609F8
+ push {r4,lr}
+ ldr r3, _08060A14 @ =gUnknown_83A60D4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060A14: .4byte gUnknown_83A60D4
+ thumb_func_end sub_80609F8
+
+ thumb_func_start sub_8060A18
+sub_8060A18: @ 8060A18
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060A18
+
+ thumb_func_start sub_8060A44
+sub_8060A44: @ 8060A44
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060A56
+ movs r0, 0
+ b _08060A5C
+_08060A56:
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_08060A5C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060A44
+
+ thumb_func_start sub_8060A64
+sub_8060A64: @ 8060A64
+ ldrb r2, [r0]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_8060A64
+
+ thumb_func_start sub_8060A74
+sub_8060A74: @ 8060A74
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08060A90 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08060A94 @ =sub_8060A98
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08060A90: .4byte gObjectEvents
+_08060A94: .4byte sub_8060A98
+ thumb_func_end sub_8060A74
+
+ thumb_func_start sub_8060A98
+sub_8060A98: @ 8060A98
+ push {r4,lr}
+ ldr r3, _08060AB4 @ =gUnknown_83A60E0
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060AB4: .4byte gUnknown_83A60E0
+ thumb_func_end sub_8060A98
+
+ thumb_func_start sub_8060AB8
+sub_8060AB8: @ 8060AB8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060AB8
+
+ thumb_func_start sub_8060ACC
+sub_8060ACC: @ 8060ACC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060ACC
+
+ thumb_func_start sub_8060AF8
+sub_8060AF8: @ 8060AF8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060B2E
+ ldr r4, _08060B38 @ =gUnknown_83A6000
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_08060B2E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060B38: .4byte gUnknown_83A6000
+ thumb_func_end sub_8060AF8
+
+ thumb_func_start sub_8060B3C
+sub_8060B3C: @ 8060B3C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060B5A
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060B62
+_08060B5A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _08060B64
+_08060B62:
+ movs r0, 0
+_08060B64:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060B3C
+
+ thumb_func_start sub_8060B6C
+sub_8060B6C: @ 8060B6C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08060BB0 @ =gUnknown_83A60B0
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _08060B9C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_08060B9C:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060BB0: .4byte gUnknown_83A60B0
+ thumb_func_end sub_8060B6C
+
+ thumb_func_start sub_8060BB4
+sub_8060BB4: @ 8060BB4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08060BD0 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08060BD4 @ =sub_8060BD8
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08060BD0: .4byte gObjectEvents
+_08060BD4: .4byte sub_8060BD8
+ thumb_func_end sub_8060BB4
+
+ thumb_func_start sub_8060BD8
+sub_8060BD8: @ 8060BD8
+ push {r4,lr}
+ ldr r3, _08060BF4 @ =gUnknown_83A60F4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060BF4: .4byte gUnknown_83A60F4
+ thumb_func_end sub_8060BD8
+
+ thumb_func_start sub_8060BF8
+sub_8060BF8: @ 8060BF8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060BF8
+
+ thumb_func_start sub_8060C0C
+sub_8060C0C: @ 8060C0C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060C0C
+
+ thumb_func_start sub_8060C38
+sub_8060C38: @ 8060C38
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060C6E
+ ldr r4, _08060C78 @ =gUnknown_83A6000
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_08060C6E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060C78: .4byte gUnknown_83A6000
+ thumb_func_end sub_8060C38
+
+ thumb_func_start sub_8060C7C
+sub_8060C7C: @ 8060C7C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060C9A
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060CA2
+_08060C9A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _08060CA4
+_08060CA2:
+ movs r0, 0
+_08060CA4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060C7C
+
+ thumb_func_start sub_8060CAC
+sub_8060CAC: @ 8060CAC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08060CF0 @ =gUnknown_83A60D0
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _08060CDC
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_08060CDC:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060CF0: .4byte gUnknown_83A60D0
+ thumb_func_end sub_8060CAC
+
+ thumb_func_start sub_8060CF4
+sub_8060CF4: @ 8060CF4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08060D10 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08060D14 @ =sub_8060D18
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08060D10: .4byte gObjectEvents
+_08060D14: .4byte sub_8060D18
+ thumb_func_end sub_8060CF4
+
+ thumb_func_start sub_8060D18
+sub_8060D18: @ 8060D18
+ push {r4,lr}
+ ldr r3, _08060D34 @ =gUnknown_83A6108
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060D34: .4byte gUnknown_83A6108
+ thumb_func_end sub_8060D18
+
+ thumb_func_start sub_8060D38
+sub_8060D38: @ 8060D38
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060D38
+
+ thumb_func_start sub_8060D4C
+sub_8060D4C: @ 8060D4C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060D4C
+
+ thumb_func_start sub_8060D78
+sub_8060D78: @ 8060D78
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060DAE
+ ldr r4, _08060DB8 @ =gUnknown_83A6010
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_08060DAE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060DB8: .4byte gUnknown_83A6010
+ thumb_func_end sub_8060D78
+
+ thumb_func_start sub_8060DBC
+sub_8060DBC: @ 8060DBC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060DDA
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060DE2
+_08060DDA:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _08060DE4
+_08060DE2:
+ movs r0, 0
+_08060DE4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060DBC
+
+ thumb_func_start sub_8060DEC
+sub_8060DEC: @ 8060DEC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08060E30 @ =gUnknown_83A611C
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _08060E1C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_08060E1C:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060E30: .4byte gUnknown_83A611C
+ thumb_func_end sub_8060DEC
+
+ thumb_func_start sub_8060E34
+sub_8060E34: @ 8060E34
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08060E50 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08060E54 @ =sub_8060E58
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08060E50: .4byte gObjectEvents
+_08060E54: .4byte sub_8060E58
+ thumb_func_end sub_8060E34
+
+ thumb_func_start sub_8060E58
+sub_8060E58: @ 8060E58
+ push {r4,lr}
+ ldr r3, _08060E74 @ =gUnknown_83A6120
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060E74: .4byte gUnknown_83A6120
+ thumb_func_end sub_8060E58
+
+ thumb_func_start sub_8060E78
+sub_8060E78: @ 8060E78
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060E78
+
+ thumb_func_start sub_8060E8C
+sub_8060E8C: @ 8060E8C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060E8C
+
+ thumb_func_start sub_8060EB8
+sub_8060EB8: @ 8060EB8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060EEE
+ ldr r4, _08060EF8 @ =gUnknown_83A6010
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_08060EEE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060EF8: .4byte gUnknown_83A6010
+ thumb_func_end sub_8060EB8
+
+ thumb_func_start sub_8060EFC
+sub_8060EFC: @ 8060EFC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060F1A
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08060F22
+_08060F1A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _08060F24
+_08060F22:
+ movs r0, 0
+_08060F24:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060EFC
+
+ thumb_func_start sub_8060F2C
+sub_8060F2C: @ 8060F2C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08060F70 @ =gUnknown_83A6134
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _08060F5C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_08060F5C:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060F70: .4byte gUnknown_83A6134
+ thumb_func_end sub_8060F2C
+
+ thumb_func_start sub_8060F74
+sub_8060F74: @ 8060F74
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08060F90 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08060F94 @ =sub_8060F98
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08060F90: .4byte gObjectEvents
+_08060F94: .4byte sub_8060F98
+ thumb_func_end sub_8060F74
+
+ thumb_func_start sub_8060F98
+sub_8060F98: @ 8060F98
+ push {r4,lr}
+ ldr r3, _08060FB4 @ =gUnknown_83A6138
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060FB4: .4byte gUnknown_83A6138
+ thumb_func_end sub_8060F98
+
+ thumb_func_start sub_8060FB8
+sub_8060FB8: @ 8060FB8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060FB8
+
+ thumb_func_start sub_8060FCC
+sub_8060FCC: @ 8060FCC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060FCC
+
+ thumb_func_start sub_8060FF8
+sub_8060FF8: @ 8060FF8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806102E
+ ldr r4, _08061038 @ =gUnknown_83A6010
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0806102E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061038: .4byte gUnknown_83A6010
+ thumb_func_end sub_8060FF8
+
+ thumb_func_start sub_806103C
+sub_806103C: @ 806103C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806105A
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08061062
+_0806105A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _08061064
+_08061062:
+ movs r0, 0
+_08061064:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806103C
+
+ thumb_func_start sub_806106C
+sub_806106C: @ 806106C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080610B0 @ =gUnknown_83A614C
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0806109C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0806109C:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080610B0: .4byte gUnknown_83A614C
+ thumb_func_end sub_806106C
+
+ thumb_func_start sub_80610B4
+sub_80610B4: @ 80610B4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080610D0 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080610D4 @ =sub_80610D8
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080610D0: .4byte gObjectEvents
+_080610D4: .4byte sub_80610D8
+ thumb_func_end sub_80610B4
+
+ thumb_func_start sub_80610D8
+sub_80610D8: @ 80610D8
+ push {r4,lr}
+ ldr r3, _080610F4 @ =gUnknown_83A6150
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080610F4: .4byte gUnknown_83A6150
+ thumb_func_end sub_80610D8
+
+ thumb_func_start sub_80610F8
+sub_80610F8: @ 80610F8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80610F8
+
+ thumb_func_start sub_806110C
+sub_806110C: @ 806110C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806110C
+
+ thumb_func_start sub_8061138
+sub_8061138: @ 8061138
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806116E
+ ldr r4, _08061178 @ =gUnknown_83A6010
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0806116E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061178: .4byte gUnknown_83A6010
+ thumb_func_end sub_8061138
+
+ thumb_func_start sub_806117C
+sub_806117C: @ 806117C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806119A
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _080611A2
+_0806119A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _080611A4
+_080611A2:
+ movs r0, 0
+_080611A4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806117C
+
+ thumb_func_start sub_80611AC
+sub_80611AC: @ 80611AC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080611F0 @ =gUnknown_83A6164
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080611DC
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_080611DC:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080611F0: .4byte gUnknown_83A6164
+ thumb_func_end sub_80611AC
+
+ thumb_func_start sub_80611F4
+sub_80611F4: @ 80611F4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061210 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061214 @ =sub_8061218
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061210: .4byte gObjectEvents
+_08061214: .4byte sub_8061218
+ thumb_func_end sub_80611F4
+
+ thumb_func_start sub_8061218
+sub_8061218: @ 8061218
+ push {r4,lr}
+ ldr r3, _08061234 @ =gUnknown_83A6168
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061234: .4byte gUnknown_83A6168
+ thumb_func_end sub_8061218
+
+ thumb_func_start sub_8061238
+sub_8061238: @ 8061238
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061238
+
+ thumb_func_start sub_806124C
+sub_806124C: @ 806124C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806124C
+
+ thumb_func_start sub_8061278
+sub_8061278: @ 8061278
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _080612AE
+ ldr r4, _080612B8 @ =gUnknown_83A6010
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_080612AE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080612B8: .4byte gUnknown_83A6010
+ thumb_func_end sub_8061278
+
+ thumb_func_start sub_80612BC
+sub_80612BC: @ 80612BC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _080612DA
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _080612E2
+_080612DA:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _080612E4
+_080612E2:
+ movs r0, 0
+_080612E4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80612BC
+
+ thumb_func_start sub_80612EC
+sub_80612EC: @ 80612EC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061330 @ =gUnknown_83A617C
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x7
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0806131C
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0806131C:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061330: .4byte gUnknown_83A617C
+ thumb_func_end sub_80612EC
+
+ thumb_func_start sub_8061334
+sub_8061334: @ 8061334
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061350 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061354 @ =sub_8061358
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061350: .4byte gObjectEvents
+_08061354: .4byte sub_8061358
+ thumb_func_end sub_8061334
+
+ thumb_func_start sub_8061358
+sub_8061358: @ 8061358
+ push {r4,lr}
+ ldr r3, _08061374 @ =gUnknown_83A6180
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061374: .4byte gUnknown_83A6180
+ thumb_func_end sub_8061358
+
+ thumb_func_start sub_8061378
+sub_8061378: @ 8061378
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061378
+
+ thumb_func_start sub_806138C
+sub_806138C: @ 806138C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806138C
+
+ thumb_func_start sub_80613B8
+sub_80613B8: @ 80613B8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _080613EE
+ ldr r4, _080613F8 @ =gUnknown_83A6010
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_080613EE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080613F8: .4byte gUnknown_83A6010
+ thumb_func_end sub_80613B8
+
+ thumb_func_start sub_80613FC
+sub_80613FC: @ 80613FC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806141A
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08061422
+_0806141A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _08061424
+_08061422:
+ movs r0, 0
+_08061424:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80613FC
+
+ thumb_func_start sub_806142C
+sub_806142C: @ 806142C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061470 @ =gUnknown_83A6194
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0806145C
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0806145C:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061470: .4byte gUnknown_83A6194
+ thumb_func_end sub_806142C
+
+ thumb_func_start sub_8061474
+sub_8061474: @ 8061474
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061490 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061494 @ =sub_8061498
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061490: .4byte gObjectEvents
+_08061494: .4byte sub_8061498
+ thumb_func_end sub_8061474
+
+ thumb_func_start sub_8061498
+sub_8061498: @ 8061498
+ push {r4,lr}
+ ldr r3, _080614B4 @ =gUnknown_83A6198
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080614B4: .4byte gUnknown_83A6198
+ thumb_func_end sub_8061498
+
+ thumb_func_start sub_80614B8
+sub_80614B8: @ 80614B8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80614B8
+
+ thumb_func_start sub_80614CC
+sub_80614CC: @ 80614CC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80614CC
+
+ thumb_func_start sub_80614F8
+sub_80614F8: @ 80614F8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806152E
+ ldr r4, _08061538 @ =gUnknown_83A6010
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0806152E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061538: .4byte gUnknown_83A6010
+ thumb_func_end sub_80614F8
+
+ thumb_func_start sub_806153C
+sub_806153C: @ 806153C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806155A
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08061562
+_0806155A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _08061564
+_08061562:
+ movs r0, 0
+_08061564:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806153C
+
+ thumb_func_start sub_806156C
+sub_806156C: @ 806156C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080615B0 @ =gUnknown_83A61AC
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x9
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0806159C
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0806159C:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080615B0: .4byte gUnknown_83A61AC
+ thumb_func_end sub_806156C
+
+ thumb_func_start sub_80615B4
+sub_80615B4: @ 80615B4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080615D0 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080615D4 @ =sub_80615D8
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080615D0: .4byte gObjectEvents
+_080615D4: .4byte sub_80615D8
+ thumb_func_end sub_80615B4
+
+ thumb_func_start sub_80615D8
+sub_80615D8: @ 80615D8
+ push {r4,lr}
+ ldr r3, _080615F4 @ =gUnknown_83A61B0
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080615F4: .4byte gUnknown_83A61B0
+ thumb_func_end sub_80615D8
+
+ thumb_func_start sub_80615F8
+sub_80615F8: @ 80615F8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80615F8
+
+ thumb_func_start sub_806160C
+sub_806160C: @ 806160C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806160C
+
+ thumb_func_start sub_8061638
+sub_8061638: @ 8061638
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806166E
+ ldr r4, _08061678 @ =gUnknown_83A6010
+ bl Random
+ movs r5, 0x3
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 1
+ adds r1, r4
+ movs r0, 0
+ ldrsh r1, [r1, r0]
+ adds r0, r7, 0
+ bl SetObjectEventStepTimer
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0806166E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061678: .4byte gUnknown_83A6010
+ thumb_func_end sub_8061638
+
+ thumb_func_start sub_806167C
+sub_806167C: @ 806167C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806169A
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _080616A2
+_0806169A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _080616A4
+_080616A2:
+ movs r0, 0
+_080616A4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806167C
+
+ thumb_func_start sub_80616AC
+sub_80616AC: @ 80616AC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080616F0 @ =gUnknown_83A61C4
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0xA
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080616DC
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_080616DC:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080616F0: .4byte gUnknown_83A61C4
+ thumb_func_end sub_80616AC
+
+ thumb_func_start sub_80616F4
+sub_80616F4: @ 80616F4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061710 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061714 @ =sub_8061718
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061710: .4byte gObjectEvents
+_08061714: .4byte sub_8061718
+ thumb_func_end sub_80616F4
+
+ thumb_func_start sub_8061718
+sub_8061718: @ 8061718
+ push {r4,lr}
+ ldr r3, _08061734 @ =gUnknown_83A61C8
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061734: .4byte gUnknown_83A61C8
+ thumb_func_end sub_8061718
+
+ thumb_func_start sub_8061738
+sub_8061738: @ 8061738
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061738
+
+ thumb_func_start sub_8061764
+sub_8061764: @ 8061764
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806177E
+ adds r0, r4, 0
+ movs r1, 0x30
+ bl SetObjectEventStepTimer
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+_0806177E:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061764
+
+ thumb_func_start sub_8061788
+sub_8061788: @ 8061788
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _080617A6
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _080617AA
+_080617A6:
+ movs r0, 0x3
+ strh r0, [r5, 0x30]
+_080617AA:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061788
+
+ thumb_func_start sub_80617B4
+sub_80617B4: @ 80617B4
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080617F4 @ =gUnknown_83A61D8
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080617E0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ add r0, sp
+ ldrb r1, [r0]
+_080617E0:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080617F4: .4byte gUnknown_83A61D8
+ thumb_func_end sub_80617B4
+
+ thumb_func_start sub_80617F8
+sub_80617F8: @ 80617F8
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061814 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061818 @ =sub_806181C
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061814: .4byte gObjectEvents
+_08061818: .4byte sub_806181C
+ thumb_func_end sub_80617F8
+
+ thumb_func_start sub_806181C
+sub_806181C: @ 806181C
+ push {r4,lr}
+ ldr r3, _08061838 @ =gUnknown_83A61E0
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061838: .4byte gUnknown_83A61E0
+ thumb_func_end sub_806181C
+
+ thumb_func_start sub_806183C
+sub_806183C: @ 806183C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806183C
+
+ thumb_func_start sub_8061868
+sub_8061868: @ 8061868
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08061882
+ adds r0, r4, 0
+ movs r1, 0x30
+ bl SetObjectEventStepTimer
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+_08061882:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061868
+
+ thumb_func_start sub_806188C
+sub_806188C: @ 806188C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ bne _080618AA
+ adds r0, r4, 0
+ bl ObjectEventIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _080618AE
+_080618AA:
+ movs r0, 0x3
+ strh r0, [r5, 0x30]
+_080618AE:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806188C
+
+ thumb_func_start sub_80618B8
+sub_80618B8: @ 80618B8
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080618F8 @ =gUnknown_83A61F0
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetRunningPastFacingDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080618E4
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ add r0, sp
+ ldrb r1, [r0]
+_080618E4:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080618F8: .4byte gUnknown_83A61F0
+ thumb_func_end sub_80618B8
+
+ thumb_func_start sub_80618FC
+sub_80618FC: @ 80618FC
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061918 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _0806191C @ =sub_8061920
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061918: .4byte gObjectEvents
+_0806191C: .4byte sub_8061920
+ thumb_func_end sub_80618FC
+
+ thumb_func_start sub_8061920
+sub_8061920: @ 8061920
+ push {r4,lr}
+ ldr r3, _0806193C @ =gUnknown_83A61F8
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806193C: .4byte gUnknown_83A61F8
+ thumb_func_end sub_8061920
+
+ thumb_func_start sub_8061940
+sub_8061940: @ 8061940
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061940
+
+ thumb_func_start sub_8061954
+sub_8061954: @ 8061954
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r0, _08061988 @ =gUnknown_839FD5D
+ ldrb r1, [r4, 0x6]
+ adds r1, r0
+ ldrb r1, [r1]
+ adds r0, r4, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08061976
+ adds r0, r1, 0
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+_08061976:
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061988: .4byte gUnknown_839FD5D
+ thumb_func_end sub_8061954
+
+ thumb_func_start sub_806198C
+sub_806198C: @ 806198C
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r7, r1, 0
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0
+ beq _080619BC
+ ldr r1, [r4, 0xC]
+ ldr r0, [r4, 0x10]
+ cmp r1, r0
+ bne _080619BC
+ movs r0, 0
+ strb r0, [r2]
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetOppositeDirection
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+_080619BC:
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl npc_block_way__next_tile
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_8063F84
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r5, 0x1
+ bne _08061A12
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetOppositeDirection
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_8063F84
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl npc_block_way__next_tile
+ lsls r0, 24
+ lsrs r5, r0, 24
+_08061A12:
+ cmp r5, 0
+ beq _08061A24
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetStepInPlaceDelay16AnimId
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08061A24:
+ adds r0, r4, 0
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl sub_80645C8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x3
+ strh r0, [r7, 0x30]
+ movs r0, 0x1
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806198C
+
+ thumb_func_start sub_8061A44
+sub_8061A44: @ 8061A44
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08061A62
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_08061A62:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061A44
+
+ thumb_func_start sub_8061A6C
+sub_8061A6C: @ 8061A6C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_reset
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061A6C
+
+ thumb_func_start MoveObjectEventInNextDirectionInSequence
+MoveObjectEventInNextDirectionInSequence: @ 8061A80
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ mov r8, r1
+ adds r7, r2, 0
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x3
+ bne _08061AA2
+ ldr r1, [r4, 0xC]
+ ldr r0, [r4, 0x10]
+ cmp r1, r0
+ bne _08061AA2
+ movs r0, 0
+ strb r0, [r2]
+_08061AA2:
+ adds r5, r4, 0
+ adds r5, 0x21
+ ldrb r0, [r5]
+ adds r0, r7, r0
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_8063F84
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl npc_block_way__next_tile
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08061AFC
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ ldrb r0, [r5]
+ adds r0, r7, r0
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_8063F84
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl npc_block_way__next_tile
+ lsls r0, 24
+ lsrs r0, 24
+_08061AFC:
+ cmp r0, 0
+ beq _08061B0E
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetStepInPlaceDelay16AnimId
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08061B0E:
+ adds r0, r4, 0
+ mov r1, r8
+ adds r2, r6, 0
+ bl sub_80645C8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ mov r1, r8
+ strh r0, [r1, 0x30]
+ movs r0, 0x1
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end MoveObjectEventInNextDirectionInSequence
+
+ thumb_func_start sub_8061B34
+sub_8061B34: @ 8061B34
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08061B52
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_08061B52:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061B34
+
+ thumb_func_start sub_8061B5C
+sub_8061B5C: @ 8061B5C
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061B78 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061B7C @ =sub_8061B80
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061B78: .4byte gObjectEvents
+_08061B7C: .4byte sub_8061B80
+ thumb_func_end sub_8061B5C
+
+ thumb_func_start sub_8061B80
+sub_8061B80: @ 8061B80
+ push {r4,lr}
+ ldr r3, _08061B9C @ =gUnknown_83A6208
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061B9C: .4byte gUnknown_83A6208
+ thumb_func_end sub_8061B80
+
+ thumb_func_start sub_8061BA0
+sub_8061BA0: @ 8061BA0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061BE4 @ =gUnknown_83A6214
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08061BCC
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08061BCC
+ movs r0, 0x3
+ strb r0, [r2]
+_08061BCC:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061BE4: .4byte gUnknown_83A6214
+ thumb_func_end sub_8061BA0
+
+ thumb_func_start sub_8061BE8
+sub_8061BE8: @ 8061BE8
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061C04 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061C08 @ =sub_8061C0C
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061C04: .4byte gObjectEvents
+_08061C08: .4byte sub_8061C0C
+ thumb_func_end sub_8061BE8
+
+ thumb_func_start sub_8061C0C
+sub_8061C0C: @ 8061C0C
+ push {r4,lr}
+ ldr r3, _08061C28 @ =gUnknown_83A6218
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061C28: .4byte gUnknown_83A6218
+ thumb_func_end sub_8061C0C
+
+ thumb_func_start sub_8061C2C
+sub_8061C2C: @ 8061C2C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061C70 @ =gUnknown_83A6224
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _08061C58
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08061C58
+ movs r0, 0x2
+ strb r0, [r2]
+_08061C58:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061C70: .4byte gUnknown_83A6224
+ thumb_func_end sub_8061C2C
+
+ thumb_func_start sub_8061C74
+sub_8061C74: @ 8061C74
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061C90 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061C94 @ =sub_8061C98
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061C90: .4byte gObjectEvents
+_08061C94: .4byte sub_8061C98
+ thumb_func_end sub_8061C74
+
+ thumb_func_start sub_8061C98
+sub_8061C98: @ 8061C98
+ push {r4,lr}
+ ldr r3, _08061CB4 @ =gUnknown_83A6228
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061CB4: .4byte gUnknown_83A6228
+ thumb_func_end sub_8061C98
+
+ thumb_func_start sub_8061CB8
+sub_8061CB8: @ 8061CB8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061CFC @ =gUnknown_83A6234
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _08061CE4
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08061CE4
+ movs r0, 0x2
+ strb r0, [r2]
+_08061CE4:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061CFC: .4byte gUnknown_83A6234
+ thumb_func_end sub_8061CB8
+
+ thumb_func_start sub_8061D00
+sub_8061D00: @ 8061D00
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061D1C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061D20 @ =sub_8061D24
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061D1C: .4byte gObjectEvents
+_08061D20: .4byte sub_8061D24
+ thumb_func_end sub_8061D00
+
+ thumb_func_start sub_8061D24
+sub_8061D24: @ 8061D24
+ push {r4,lr}
+ ldr r3, _08061D40 @ =gUnknown_83A6238
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061D40: .4byte gUnknown_83A6238
+ thumb_func_end sub_8061D24
+
+ thumb_func_start sub_8061D44
+sub_8061D44: @ 8061D44
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061D88 @ =gUnknown_83A6244
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08061D70
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08061D70
+ movs r0, 0x3
+ strb r0, [r2]
+_08061D70:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061D88: .4byte gUnknown_83A6244
+ thumb_func_end sub_8061D44
+
+ thumb_func_start sub_8061D8C
+sub_8061D8C: @ 8061D8C
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061DA8 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061DAC @ =sub_8061DB0
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061DA8: .4byte gObjectEvents
+_08061DAC: .4byte sub_8061DB0
+ thumb_func_end sub_8061D8C
+
+ thumb_func_start sub_8061DB0
+sub_8061DB0: @ 8061DB0
+ push {r4,lr}
+ ldr r3, _08061DCC @ =gUnknown_83A6248
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061DCC: .4byte gUnknown_83A6248
+ thumb_func_end sub_8061DB0
+
+ thumb_func_start sub_8061DD0
+sub_8061DD0: @ 8061DD0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061E14 @ =gUnknown_83A6254
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08061DFC
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08061DFC
+ movs r0, 0x3
+ strb r0, [r2]
+_08061DFC:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061E14: .4byte gUnknown_83A6254
+ thumb_func_end sub_8061DD0
+
+ thumb_func_start sub_8061E18
+sub_8061E18: @ 8061E18
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061E34 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061E38 @ =sub_8061E3C
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061E34: .4byte gObjectEvents
+_08061E38: .4byte sub_8061E3C
+ thumb_func_end sub_8061E18
+
+ thumb_func_start sub_8061E3C
+sub_8061E3C: @ 8061E3C
+ push {r4,lr}
+ ldr r3, _08061E58 @ =gUnknown_83A6258
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061E58: .4byte gUnknown_83A6258
+ thumb_func_end sub_8061E3C
+
+ thumb_func_start sub_8061E5C
+sub_8061E5C: @ 8061E5C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061EA0 @ =gUnknown_83A6264
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _08061E88
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08061E88
+ movs r0, 0x2
+ strb r0, [r2]
+_08061E88:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061EA0: .4byte gUnknown_83A6264
+ thumb_func_end sub_8061E5C
+
+ thumb_func_start sub_8061EA4
+sub_8061EA4: @ 8061EA4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061EC0 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061EC4 @ =sub_8061EC8
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061EC0: .4byte gObjectEvents
+_08061EC4: .4byte sub_8061EC8
+ thumb_func_end sub_8061EA4
+
+ thumb_func_start sub_8061EC8
+sub_8061EC8: @ 8061EC8
+ push {r4,lr}
+ ldr r3, _08061EE4 @ =gUnknown_83A6268
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061EE4: .4byte gUnknown_83A6268
+ thumb_func_end sub_8061EC8
+
+ thumb_func_start sub_8061EE8
+sub_8061EE8: @ 8061EE8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061F2C @ =gUnknown_83A6050
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _08061F14
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08061F14
+ movs r0, 0x2
+ strb r0, [r2]
+_08061F14:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061F2C: .4byte gUnknown_83A6050
+ thumb_func_end sub_8061EE8
+
+ thumb_func_start sub_8061F30
+sub_8061F30: @ 8061F30
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061F4C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061F50 @ =sub_8061F54
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061F4C: .4byte gObjectEvents
+_08061F50: .4byte sub_8061F54
+ thumb_func_end sub_8061F30
+
+ thumb_func_start sub_8061F54
+sub_8061F54: @ 8061F54
+ push {r4,lr}
+ ldr r3, _08061F70 @ =gUnknown_83A6274
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061F70: .4byte gUnknown_83A6274
+ thumb_func_end sub_8061F54
+
+ thumb_func_start sub_8061F74
+sub_8061F74: @ 8061F74
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08061FB8 @ =gUnknown_83A6280
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08061FA0
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08061FA0
+ movs r0, 0x3
+ strb r0, [r2]
+_08061FA0:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061FB8: .4byte gUnknown_83A6280
+ thumb_func_end sub_8061F74
+
+ thumb_func_start sub_8061FBC
+sub_8061FBC: @ 8061FBC
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08061FD8 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08061FDC @ =sub_8061FE0
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08061FD8: .4byte gObjectEvents
+_08061FDC: .4byte sub_8061FE0
+ thumb_func_end sub_8061FBC
+
+ thumb_func_start sub_8061FE0
+sub_8061FE0: @ 8061FE0
+ push {r4,lr}
+ ldr r3, _08061FFC @ =gUnknown_83A6284
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061FFC: .4byte gUnknown_83A6284
+ thumb_func_end sub_8061FE0
+
+ thumb_func_start sub_8062000
+sub_8062000: @ 8062000
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08062044 @ =gUnknown_83A6290
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0806202C
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0806202C
+ movs r0, 0x3
+ strb r0, [r2]
+_0806202C:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062044: .4byte gUnknown_83A6290
+ thumb_func_end sub_8062000
+
+ thumb_func_start sub_8062048
+sub_8062048: @ 8062048
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062064 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08062068 @ =sub_806206C
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062064: .4byte gObjectEvents
+_08062068: .4byte sub_806206C
+ thumb_func_end sub_8062048
+
+ thumb_func_start sub_806206C
+sub_806206C: @ 806206C
+ push {r4,lr}
+ ldr r3, _08062088 @ =gUnknown_83A6294
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062088: .4byte gUnknown_83A6294
+ thumb_func_end sub_806206C
+
+ thumb_func_start sub_806208C
+sub_806208C: @ 806208C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080620D0 @ =gUnknown_83A62A0
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _080620B8
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _080620B8
+ movs r0, 0x2
+ strb r0, [r2]
+_080620B8:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080620D0: .4byte gUnknown_83A62A0
+ thumb_func_end sub_806208C
+
+ thumb_func_start sub_80620D4
+sub_80620D4: @ 80620D4
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080620F0 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080620F4 @ =sub_80620F8
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080620F0: .4byte gObjectEvents
+_080620F4: .4byte sub_80620F8
+ thumb_func_end sub_80620D4
+
+ thumb_func_start sub_80620F8
+sub_80620F8: @ 80620F8
+ push {r4,lr}
+ ldr r3, _08062114 @ =gUnknown_83A62A4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062114: .4byte gUnknown_83A62A4
+ thumb_func_end sub_80620F8
+
+ thumb_func_start sub_8062118
+sub_8062118: @ 8062118
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0806215C @ =gUnknown_83A62B0
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _08062144
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08062144
+ movs r0, 0x2
+ strb r0, [r2]
+_08062144:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806215C: .4byte gUnknown_83A62B0
+ thumb_func_end sub_8062118
+
+ thumb_func_start sub_8062160
+sub_8062160: @ 8062160
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0806217C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08062180 @ =sub_8062184
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806217C: .4byte gObjectEvents
+_08062180: .4byte sub_8062184
+ thumb_func_end sub_8062160
+
+ thumb_func_start sub_8062184
+sub_8062184: @ 8062184
+ push {r4,lr}
+ ldr r3, _080621A0 @ =gUnknown_83A62B4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080621A0: .4byte gUnknown_83A62B4
+ thumb_func_end sub_8062184
+
+ thumb_func_start sub_80621A4
+sub_80621A4: @ 80621A4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080621E8 @ =gUnknown_83A62C0
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _080621D0
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _080621D0
+ movs r0, 0x3
+ strb r0, [r2]
+_080621D0:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080621E8: .4byte gUnknown_83A62C0
+ thumb_func_end sub_80621A4
+
+ thumb_func_start sub_80621EC
+sub_80621EC: @ 80621EC
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062208 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _0806220C @ =sub_8062210
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062208: .4byte gObjectEvents
+_0806220C: .4byte sub_8062210
+ thumb_func_end sub_80621EC
+
+ thumb_func_start sub_8062210
+sub_8062210: @ 8062210
+ push {r4,lr}
+ ldr r3, _0806222C @ =gUnknown_83A62C4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806222C: .4byte gUnknown_83A62C4
+ thumb_func_end sub_8062210
+
+ thumb_func_start sub_8062230
+sub_8062230: @ 8062230
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08062274 @ =gUnknown_83A62D0
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0806225C
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0806225C
+ movs r0, 0x3
+ strb r0, [r2]
+_0806225C:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062274: .4byte gUnknown_83A62D0
+ thumb_func_end sub_8062230
+
+ thumb_func_start sub_8062278
+sub_8062278: @ 8062278
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062294 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08062298 @ =sub_806229C
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062294: .4byte gObjectEvents
+_08062298: .4byte sub_806229C
+ thumb_func_end sub_8062278
+
+ thumb_func_start sub_806229C
+sub_806229C: @ 806229C
+ push {r4,lr}
+ ldr r3, _080622B8 @ =gUnknown_83A62D4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080622B8: .4byte gUnknown_83A62D4
+ thumb_func_end sub_806229C
+
+ thumb_func_start sub_80622BC
+sub_80622BC: @ 80622BC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08062300 @ =gUnknown_83A62E0
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _080622E8
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _080622E8
+ movs r0, 0x2
+ strb r0, [r2]
+_080622E8:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062300: .4byte gUnknown_83A62E0
+ thumb_func_end sub_80622BC
+
+ thumb_func_start sub_8062304
+sub_8062304: @ 8062304
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062320 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08062324 @ =sub_8062328
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062320: .4byte gObjectEvents
+_08062324: .4byte sub_8062328
+ thumb_func_end sub_8062304
+
+ thumb_func_start sub_8062328
+sub_8062328: @ 8062328
+ push {r4,lr}
+ ldr r3, _08062344 @ =gUnknown_83A62E4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062344: .4byte gUnknown_83A62E4
+ thumb_func_end sub_8062328
+
+ thumb_func_start sub_8062348
+sub_8062348: @ 8062348
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0806238C @ =gUnknown_83A62F0
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _08062374
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08062374
+ movs r0, 0x2
+ strb r0, [r2]
+_08062374:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806238C: .4byte gUnknown_83A62F0
+ thumb_func_end sub_8062348
+
+ thumb_func_start sub_8062390
+sub_8062390: @ 8062390
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080623AC @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080623B0 @ =sub_80623B4
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080623AC: .4byte gObjectEvents
+_080623B0: .4byte sub_80623B4
+ thumb_func_end sub_8062390
+
+ thumb_func_start sub_80623B4
+sub_80623B4: @ 80623B4
+ push {r4,lr}
+ ldr r3, _080623D0 @ =gUnknown_83A62F4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080623D0: .4byte gUnknown_83A62F4
+ thumb_func_end sub_80623B4
+
+ thumb_func_start sub_80623D4
+sub_80623D4: @ 80623D4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08062418 @ =gUnknown_83A6300
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08062400
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08062400
+ movs r0, 0x3
+ strb r0, [r2]
+_08062400:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062418: .4byte gUnknown_83A6300
+ thumb_func_end sub_80623D4
+
+ thumb_func_start sub_806241C
+sub_806241C: @ 806241C
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062438 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _0806243C @ =sub_8062440
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062438: .4byte gObjectEvents
+_0806243C: .4byte sub_8062440
+ thumb_func_end sub_806241C
+
+ thumb_func_start sub_8062440
+sub_8062440: @ 8062440
+ push {r4,lr}
+ ldr r3, _0806245C @ =gUnknown_83A6304
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806245C: .4byte gUnknown_83A6304
+ thumb_func_end sub_8062440
+
+ thumb_func_start sub_8062460
+sub_8062460: @ 8062460
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080624A4 @ =gUnknown_83A6310
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0806248C
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0806248C
+ movs r0, 0x3
+ strb r0, [r2]
+_0806248C:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080624A4: .4byte gUnknown_83A6310
+ thumb_func_end sub_8062460
+
+ thumb_func_start sub_80624A8
+sub_80624A8: @ 80624A8
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080624C4 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080624C8 @ =sub_80624CC
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080624C4: .4byte gObjectEvents
+_080624C8: .4byte sub_80624CC
+ thumb_func_end sub_80624A8
+
+ thumb_func_start sub_80624CC
+sub_80624CC: @ 80624CC
+ push {r4,lr}
+ ldr r3, _080624E8 @ =gUnknown_83A6314
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080624E8: .4byte gUnknown_83A6314
+ thumb_func_end sub_80624CC
+
+ thumb_func_start sub_80624EC
+sub_80624EC: @ 80624EC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08062530 @ =gUnknown_83A6320
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08062518
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08062518
+ movs r0, 0x3
+ strb r0, [r2]
+_08062518:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062530: .4byte gUnknown_83A6320
+ thumb_func_end sub_80624EC
+
+ thumb_func_start sub_8062534
+sub_8062534: @ 8062534
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062550 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08062554 @ =sub_8062558
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062550: .4byte gObjectEvents
+_08062554: .4byte sub_8062558
+ thumb_func_end sub_8062534
+
+ thumb_func_start sub_8062558
+sub_8062558: @ 8062558
+ push {r4,lr}
+ ldr r3, _08062574 @ =gUnknown_83A6324
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062574: .4byte gUnknown_83A6324
+ thumb_func_end sub_8062558
+
+ thumb_func_start sub_8062578
+sub_8062578: @ 8062578
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080625BC @ =gUnknown_83A6330
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _080625A4
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _080625A4
+ movs r0, 0x3
+ strb r0, [r2]
+_080625A4:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080625BC: .4byte gUnknown_83A6330
+ thumb_func_end sub_8062578
+
+ thumb_func_start sub_80625C0
+sub_80625C0: @ 80625C0
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080625DC @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080625E0 @ =sub_80625E4
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080625DC: .4byte gObjectEvents
+_080625E0: .4byte sub_80625E4
+ thumb_func_end sub_80625C0
+
+ thumb_func_start sub_80625E4
+sub_80625E4: @ 80625E4
+ push {r4,lr}
+ ldr r3, _08062600 @ =gUnknown_83A6334
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062600: .4byte gUnknown_83A6334
+ thumb_func_end sub_80625E4
+
+ thumb_func_start sub_8062604
+sub_8062604: @ 8062604
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08062648 @ =gUnknown_83A6340
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08062630
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08062630
+ movs r0, 0x3
+ strb r0, [r2]
+_08062630:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062648: .4byte gUnknown_83A6340
+ thumb_func_end sub_8062604
+
+ thumb_func_start sub_806264C
+sub_806264C: @ 806264C
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062668 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _0806266C @ =sub_8062670
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062668: .4byte gObjectEvents
+_0806266C: .4byte sub_8062670
+ thumb_func_end sub_806264C
+
+ thumb_func_start sub_8062670
+sub_8062670: @ 8062670
+ push {r4,lr}
+ ldr r3, _0806268C @ =gUnknown_83A6344
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806268C: .4byte gUnknown_83A6344
+ thumb_func_end sub_8062670
+
+ thumb_func_start sub_8062690
+sub_8062690: @ 8062690
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080626D4 @ =gUnknown_83A6350
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _080626BC
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _080626BC
+ movs r0, 0x3
+ strb r0, [r2]
+_080626BC:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080626D4: .4byte gUnknown_83A6350
+ thumb_func_end sub_8062690
+
+ thumb_func_start sub_80626D8
+sub_80626D8: @ 80626D8
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080626F4 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080626F8 @ =sub_80626FC
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080626F4: .4byte gObjectEvents
+_080626F8: .4byte sub_80626FC
+ thumb_func_end sub_80626D8
+
+ thumb_func_start sub_80626FC
+sub_80626FC: @ 80626FC
+ push {r4,lr}
+ ldr r3, _08062718 @ =gUnknown_83A6354
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062718: .4byte gUnknown_83A6354
+ thumb_func_end sub_80626FC
+
+ thumb_func_start sub_806271C
+sub_806271C: @ 806271C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08062760 @ =gUnknown_83A6360
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08062748
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08062748
+ movs r0, 0x3
+ strb r0, [r2]
+_08062748:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062760: .4byte gUnknown_83A6360
+ thumb_func_end sub_806271C
+
+ thumb_func_start sub_8062764
+sub_8062764: @ 8062764
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062780 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08062784 @ =sub_8062788
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062780: .4byte gObjectEvents
+_08062784: .4byte sub_8062788
+ thumb_func_end sub_8062764
+
+ thumb_func_start sub_8062788
+sub_8062788: @ 8062788
+ push {r4,lr}
+ ldr r3, _080627A4 @ =gUnknown_83A6364
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080627A4: .4byte gUnknown_83A6364
+ thumb_func_end sub_8062788
+
+ thumb_func_start sub_80627A8
+sub_80627A8: @ 80627A8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080627EC @ =gUnknown_83A6370
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _080627D4
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _080627D4
+ movs r0, 0x3
+ strb r0, [r2]
+_080627D4:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080627EC: .4byte gUnknown_83A6370
+ thumb_func_end sub_80627A8
+
+ thumb_func_start sub_80627F0
+sub_80627F0: @ 80627F0
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0806280C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08062810 @ =sub_8062814
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806280C: .4byte gObjectEvents
+_08062810: .4byte sub_8062814
+ thumb_func_end sub_80627F0
+
+ thumb_func_start sub_8062814
+sub_8062814: @ 8062814
+ push {r4,lr}
+ ldr r3, _08062830 @ =gUnknown_83A6374
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062830: .4byte gUnknown_83A6374
+ thumb_func_end sub_8062814
+
+ thumb_func_start sub_8062834
+sub_8062834: @ 8062834
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08062878 @ =gUnknown_83A6380
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _08062860
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _08062860
+ movs r0, 0x3
+ strb r0, [r2]
+_08062860:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveObjectEventInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062878: .4byte gUnknown_83A6380
+ thumb_func_end sub_8062834
+
+ thumb_func_start sub_806287C
+sub_806287C: @ 806287C
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062898 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _0806289C @ =sub_80628A0
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062898: .4byte gObjectEvents
+_0806289C: .4byte sub_80628A0
+ thumb_func_end sub_806287C
+
+ thumb_func_start sub_80628A0
+sub_80628A0: @ 80628A0
+ push {r4,lr}
+ ldr r3, _080628BC @ =gUnknown_83A6384
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080628BC: .4byte gUnknown_83A6384
+ thumb_func_end sub_80628A0
+
+ thumb_func_start mss_npc_reset_oampriv3_1_unk2_unk3
+mss_npc_reset_oampriv3_1_unk2_unk3: @ 80628C0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ adds r4, 0x21
+ ldrb r0, [r4]
+ cmp r0, 0
+ bne _080628D8
+ bl GetPlayerFacingDirection
+ strb r0, [r4]
+_080628D8:
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end mss_npc_reset_oampriv3_1_unk2_unk3
+
+ thumb_func_start sub_80628E4
+sub_80628E4: @ 80628E4
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ ldr r2, _08062908 @ =gObjectEvents
+ ldr r3, _0806290C @ =gPlayerAvatar
+ ldrb r1, [r3, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1C]
+ cmp r0, 0xFF
+ beq _08062904
+ ldrb r0, [r3, 0x3]
+ cmp r0, 0x2
+ bne _08062910
+_08062904:
+ movs r0, 0
+ b _08062938
+ .align 2, 0
+_08062908: .4byte gObjectEvents
+_0806290C: .4byte gPlayerAvatar
+_08062910:
+ ldr r5, _08062940 @ =gUnknown_83A6390
+ bl player_get_x22
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 22
+ adds r4, r5
+ bl player_get_direction_upper_nybble
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r4, [r4]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r3, 0
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r0, 24
+_08062938:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062940: .4byte gUnknown_83A6390
+ thumb_func_end sub_80628E4
+
+ thumb_func_start sub_8062944
+sub_8062944: @ 8062944
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08062962
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_08062962:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062944
+
+ thumb_func_start sub_806296C
+sub_806296C: @ 806296C
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_806296C
+
+ thumb_func_start sub_8062970
+sub_8062970: @ 8062970
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, _080629B4 @ =gUnknown_839FD5D
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ bl state_to_direction
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080629B4: .4byte gUnknown_839FD5D
+ thumb_func_end sub_8062970
+
+ thumb_func_start sub_80629B8
+sub_80629B8: @ 80629B8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r7, r1, 0
+ mov r8, r3
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r1, _08062A6C @ =gUnknown_839FD5D
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ adds r2, r6, 0
+ bl state_to_direction
+ adds r6, r0, 0
+ mov r5, sp
+ adds r5, 0x2
+ adds r0, r4, 0
+ adds r1, r6, 0
+ mov r2, sp
+ adds r3, r5, 0
+ bl ObjectEventMoveDestCoords
+ adds r0, r6, 0
+ bl sub_8063F84
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r5, r0]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl npc_block_way
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062A3E
+ mov r1, r8
+ cmp r1, 0
+ beq _08062A52
+ mov r0, sp
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062A52
+_08062A3E:
+ adds r0, r6, 0
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+_08062A52:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ strh r0, [r7, 0x30]
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062A6C: .4byte gUnknown_839FD5D
+ thumb_func_end sub_80629B8
+
+ thumb_func_start sub_8062A70
+sub_8062A70: @ 8062A70
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r7, r1, 0
+ mov r8, r3
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r1, _08062B24 @ =gUnknown_839FD5D
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ adds r2, r6, 0
+ bl state_to_direction
+ adds r6, r0, 0
+ mov r5, sp
+ adds r5, 0x2
+ adds r0, r4, 0
+ adds r1, r6, 0
+ mov r2, sp
+ adds r3, r5, 0
+ bl ObjectEventMoveDestCoords
+ adds r0, r6, 0
+ bl sub_8063FB0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r5, r0]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl npc_block_way
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062AF6
+ mov r1, r8
+ cmp r1, 0
+ beq _08062B0A
+ mov r0, sp
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062B0A
+_08062AF6:
+ adds r0, r6, 0
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+_08062B0A:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ strh r0, [r7, 0x30]
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062B24: .4byte gUnknown_839FD5D
+ thumb_func_end sub_8062A70
+
+ thumb_func_start sub_8062B28
+sub_8062B28: @ 8062B28
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r7, r1, 0
+ mov r8, r3
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r1, _08062BDC @ =gUnknown_839FD5D
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ adds r2, r6, 0
+ bl state_to_direction
+ adds r6, r0, 0
+ mov r5, sp
+ adds r5, 0x2
+ adds r0, r4, 0
+ adds r1, r6, 0
+ mov r2, sp
+ adds r3, r5, 0
+ bl ObjectEventMoveDestCoords
+ adds r0, r6, 0
+ bl sub_8064034
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r5, r0]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl npc_block_way
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062BAE
+ mov r1, r8
+ cmp r1, 0
+ beq _08062BC2
+ mov r0, sp
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062BC2
+_08062BAE:
+ adds r0, r6, 0
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+_08062BC2:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ strh r0, [r7, 0x30]
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062BDC: .4byte gUnknown_839FD5D
+ thumb_func_end sub_8062B28
+
+ thumb_func_start sub_8062BE0
+sub_8062BE0: @ 8062BE0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r7, r1, 0
+ mov r8, r3
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r1, _08062C94 @ =gUnknown_839FD5D
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ adds r2, r6, 0
+ bl state_to_direction
+ adds r6, r0, 0
+ mov r5, sp
+ adds r5, 0x2
+ adds r0, r4, 0
+ adds r1, r6, 0
+ mov r2, sp
+ adds r3, r5, 0
+ bl ObjectEventMoveDestCoords
+ adds r0, r6, 0
+ bl sub_8064060
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r5, r0]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl npc_block_way
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062C66
+ mov r1, r8
+ cmp r1, 0
+ beq _08062C7A
+ mov r0, sp
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062C7A
+_08062C66:
+ adds r0, r6, 0
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+_08062C7A:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ strh r0, [r7, 0x30]
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062C94: .4byte gUnknown_839FD5D
+ thumb_func_end sub_8062BE0
+
+ thumb_func_start cph_IM_DIFFERENT
+cph_IM_DIFFERENT: @ 8062C98
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, _08062CDC @ =gUnknown_839FD5D
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ bl state_to_direction
+ bl sub_806413C
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062CDC: .4byte gUnknown_839FD5D
+ thumb_func_end cph_IM_DIFFERENT
+
+ thumb_func_start sub_8062CE0
+sub_8062CE0: @ 8062CE0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r7, r1, 0
+ mov r8, r3
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r1, _08062D94 @ =gUnknown_839FD5D
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ adds r2, r6, 0
+ bl state_to_direction
+ adds r6, r0, 0
+ mov r5, sp
+ adds r5, 0x2
+ adds r0, r4, 0
+ adds r1, r6, 0
+ mov r2, sp
+ adds r3, r5, 0
+ bl ObjectEventMoveDestCoords
+ adds r0, r6, 0
+ bl sub_8064194
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r5, r0]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl npc_block_way
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062D66
+ mov r1, r8
+ cmp r1, 0
+ beq _08062D7A
+ mov r0, sp
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062D7A
+_08062D66:
+ adds r0, r6, 0
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+_08062D7A:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ strh r0, [r7, 0x30]
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062D94: .4byte gUnknown_839FD5D
+ thumb_func_end sub_8062CE0
+
+ thumb_func_start oac_hopping
+oac_hopping: @ 8062D98
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r7, r1, 0
+ mov r8, r3
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r1, _08062E5C @ =gUnknown_839FD5D
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ adds r2, r6, 0
+ bl state_to_direction
+ adds r6, r0, 0
+ ldrh r1, [r4, 0x10]
+ add r0, sp, 0x4
+ strh r1, [r0]
+ ldrh r0, [r4, 0x12]
+ mov r5, sp
+ adds r5, 0x6
+ strh r0, [r5]
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r6, 0
+ add r1, sp, 0x4
+ adds r2, r5, 0
+ movs r3, 0x2
+ bl sub_8063A6C
+ adds r0, r6, 0
+ bl GetJumpLedgeAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+ add r0, sp, 0x4
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r5, r0]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl npc_block_way
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062E2C
+ mov r1, r8
+ cmp r1, 0
+ beq _08062E40
+ add r0, sp, 0x4
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062E40
+_08062E2C:
+ adds r0, r6, 0
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80645C8
+_08062E40:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x2
+ strh r0, [r7, 0x30]
+ movs r0, 0x1
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062E5C: .4byte gUnknown_839FD5D
+ thumb_func_end oac_hopping
+
+ thumb_func_start sub_8062E60
+sub_8062E60: @ 8062E60
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08062E7C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08062E80 @ =sub_8062E84
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062E7C: .4byte gObjectEvents
+_08062E80: .4byte sub_8062E84
+ thumb_func_end sub_8062E60
+
+ thumb_func_start sub_8062E84
+sub_8062E84: @ 8062E84
+ push {r4,lr}
+ ldr r3, _08062EA0 @ =gUnknown_83A63BC
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062EA0: .4byte gUnknown_83A63BC
+ thumb_func_end sub_8062E84
+
+ thumb_func_start mss_08062EA4
+mss_08062EA4: @ 8062EA4
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ ldr r2, _08062EC8 @ =gObjectEvents
+ ldr r3, _08062ECC @ =gPlayerAvatar
+ ldrb r1, [r3, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1C]
+ cmp r0, 0xFF
+ beq _08062EC4
+ ldrb r0, [r3, 0x3]
+ cmp r0, 0x2
+ bne _08062ED0
+_08062EC4:
+ movs r0, 0
+ b _08062EF8
+ .align 2, 0
+_08062EC8: .4byte gObjectEvents
+_08062ECC: .4byte gPlayerAvatar
+_08062ED0:
+ ldr r5, _08062F00 @ =gUnknown_83A6390
+ bl player_get_x22
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 22
+ adds r4, r5
+ bl player_get_direction_upper_nybble
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r3, _08062F04 @ =MetatileBehavior_IsTallGrass
+ ldr r4, [r4]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r0, 24
+_08062EF8:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062F00: .4byte gUnknown_83A6390
+_08062F04: .4byte MetatileBehavior_IsTallGrass
+ thumb_func_end mss_08062EA4
+
+ thumb_func_start ObjectEventCB_TreeDisguise
+ObjectEventCB_TreeDisguise: @ 8062F08
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08062F6C @ =gObjectEvents
+ adds r4, r1, r0
+ adds r6, r4, 0
+ adds r6, 0x21
+ ldrb r0, [r6]
+ cmp r0, 0
+ beq _08062F30
+ cmp r0, 0x1
+ bne _08062F50
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _08062F50
+_08062F30:
+ ldr r1, _08062F70 @ =gFieldEffectArguments
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ adds r0, r4, 0
+ bl ObjectEventGetLocalIdAndMap
+ movs r0, 0x1C
+ bl FieldEffectStart
+ strb r0, [r4, 0x1A]
+ movs r0, 0x1
+ strb r0, [r6]
+ ldrh r0, [r5, 0x3C]
+ adds r0, 0x1
+ strh r0, [r5, 0x3C]
+_08062F50:
+ movs r0, 0x2E
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08062F6C @ =gObjectEvents
+ adds r0, r1
+ ldr r2, _08062F74 @ =sub_8062F78
+ adds r1, r5, 0
+ bl ObjectEventStep
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062F6C: .4byte gObjectEvents
+_08062F70: .4byte gFieldEffectArguments
+_08062F74: .4byte sub_8062F78
+ thumb_func_end ObjectEventCB_TreeDisguise
+
+ thumb_func_start sub_8062F78
+sub_8062F78: @ 8062F78
+ push {lr}
+ bl npc_reset
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062F78
+
+ thumb_func_start ObjectEventCB_MountainDisguise
+ObjectEventCB_MountainDisguise: @ 8062F84
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08062FE8 @ =gObjectEvents
+ adds r4, r1, r0
+ adds r6, r4, 0
+ adds r6, 0x21
+ ldrb r0, [r6]
+ cmp r0, 0
+ beq _08062FAC
+ cmp r0, 0x1
+ bne _08062FCC
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _08062FCC
+_08062FAC:
+ ldr r1, _08062FEC @ =gFieldEffectArguments
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ adds r0, r4, 0
+ bl ObjectEventGetLocalIdAndMap
+ movs r0, 0x1D
+ bl FieldEffectStart
+ strb r0, [r4, 0x1A]
+ movs r0, 0x1
+ strb r0, [r6]
+ ldrh r0, [r5, 0x3C]
+ adds r0, 0x1
+ strh r0, [r5, 0x3C]
+_08062FCC:
+ movs r0, 0x2E
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08062FE8 @ =gObjectEvents
+ adds r0, r1
+ ldr r2, _08062FF0 @ =sub_8062F78
+ adds r1, r5, 0
+ bl ObjectEventStep
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08062FE8: .4byte gObjectEvents
+_08062FEC: .4byte gFieldEffectArguments
+_08062FF0: .4byte sub_8062F78
+ thumb_func_end ObjectEventCB_MountainDisguise
+
+ thumb_func_start ObjectEventCB_Hidden1
+ObjectEventCB_Hidden1: @ 8062FF4
+ push {r4,lr}
+ adds r3, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r3, r1]
+ ldr r4, _08063050 @ =gObjectEvents
+ cmp r0, 0
+ bne _08063034
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r1, [r0, 0x3]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0, 0x3]
+ adds r2, r3, 0
+ adds r2, 0x42
+ ldrb r1, [r2]
+ movs r0, 0x3F
+ ands r0, r1
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldrb r0, [r3, 0x5]
+ movs r1, 0xC
+ orrs r0, r1
+ strb r0, [r3, 0x5]
+ ldrh r0, [r3, 0x3C]
+ adds r0, 0x1
+ strh r0, [r3, 0x3C]
+_08063034:
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldr r2, _08063054 @ =sub_8063058
+ adds r1, r3, 0
+ bl ObjectEventStep
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063050: .4byte gObjectEvents
+_08063054: .4byte sub_8063058
+ thumb_func_end ObjectEventCB_Hidden1
+
+ thumb_func_start sub_8063058
+sub_8063058: @ 8063058
+ push {r4,lr}
+ ldr r3, _08063074 @ =gUnknown_83A63C8
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063074: .4byte gUnknown_83A63C8
+ thumb_func_end sub_8063058
+
+ thumb_func_start sub_8063078
+sub_8063078: @ 8063078
+ push {lr}
+ bl npc_reset
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063078
+
+ thumb_func_start sub_8063084
+sub_8063084: @ 8063084
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063096
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_08063096:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063084
+
+ thumb_func_start sub_80630A0
+sub_80630A0: @ 80630A0
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080630BC @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080630C0 @ =sub_80630C4
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080630BC: .4byte gObjectEvents
+_080630C0: .4byte sub_80630C4
+ thumb_func_end sub_80630A0
+
+ thumb_func_start sub_80630C4
+sub_80630C4: @ 80630C4
+ push {r4,lr}
+ ldr r3, _080630E0 @ =gUnknown_83A63CC
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080630E0: .4byte gUnknown_83A63CC
+ thumb_func_end sub_80630C4
+
+ thumb_func_start sub_80630E4
+sub_80630E4: @ 80630E4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetStepInPlaceDelay16AnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80630E4
+
+ thumb_func_start sub_8063110
+sub_8063110: @ 8063110
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0806312C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08063130 @ =sub_8063134
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806312C: .4byte gObjectEvents
+_08063130: .4byte sub_8063134
+ thumb_func_end sub_8063110
+
+ thumb_func_start sub_8063134
+sub_8063134: @ 8063134
+ push {r4,lr}
+ ldr r3, _08063150 @ =gUnknown_83A63D4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063150: .4byte gUnknown_83A63D4
+ thumb_func_end sub_8063134
+
+ thumb_func_start sub_8063154
+sub_8063154: @ 8063154
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8064270
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063154
+
+ thumb_func_start sub_8063180
+sub_8063180: @ 8063180
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0806319C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080631A0 @ =sub_80631A4
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806319C: .4byte gObjectEvents
+_080631A0: .4byte sub_80631A4
+ thumb_func_end sub_8063180
+
+ thumb_func_start sub_80631A4
+sub_80631A4: @ 80631A4
+ push {r4,lr}
+ ldr r3, _080631C0 @ =gUnknown_83A63DC
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080631C0: .4byte gUnknown_83A63DC
+ thumb_func_end sub_80631A4
+
+ thumb_func_start sub_80631C4
+sub_80631C4: @ 80631C4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetStepInPlaceDelay4AnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80631C4
+
+ thumb_func_start sub_80631F0
+sub_80631F0: @ 80631F0
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0806320C @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08063210 @ =sub_8063214
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806320C: .4byte gObjectEvents
+_08063210: .4byte sub_8063214
+ thumb_func_end sub_80631F0
+
+ thumb_func_start sub_8063214
+sub_8063214: @ 8063214
+ push {r4,lr}
+ ldr r3, _08063230 @ =gUnknown_83A63E4
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063230: .4byte gUnknown_83A63E4
+ thumb_func_end sub_8063214
+
+ thumb_func_start sub_8063234
+sub_8063234: @ 8063234
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063EB8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80645C8
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063234
+
+ thumb_func_start sub_8063268
+sub_8063268: @ 8063268
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806327A
+ movs r0, 0
+ b _08063280
+_0806327A:
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_08063280:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063268
+
+ thumb_func_start sub_8063288
+sub_8063288: @ 8063288
+ ldrb r2, [r0]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_8063288
+
+ thumb_func_start sub_8063298
+sub_8063298: @ 8063298
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080632B4 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080632B8 @ =sub_8063304
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080632B4: .4byte gObjectEvents
+_080632B8: .4byte sub_8063304
+ thumb_func_end sub_8063298
+
+ thumb_func_start sub_80632BC
+sub_80632BC: @ 80632BC
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080632D8 @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _080632DC @ =sub_8063324
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080632D8: .4byte gObjectEvents
+_080632DC: .4byte sub_8063324
+ thumb_func_end sub_80632BC
+
+ thumb_func_start sub_80632E0
+sub_80632E0: @ 80632E0
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _080632FC @ =gObjectEvents
+ adds r0, r2
+ ldr r2, _08063300 @ =sub_8063344
+ bl ObjectEventStep
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080632FC: .4byte gObjectEvents
+_08063300: .4byte sub_8063344
+ thumb_func_end sub_80632E0
+
+ thumb_func_start sub_8063304
+sub_8063304: @ 8063304
+ push {r4,lr}
+ ldr r3, _08063320 @ =gUnknown_83A63F0
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063320: .4byte gUnknown_83A63F0
+ thumb_func_end sub_8063304
+
+ thumb_func_start sub_8063324
+sub_8063324: @ 8063324
+ push {r4,lr}
+ ldr r3, _08063340 @ =gUnknown_83A63FC
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063340: .4byte gUnknown_83A63FC
+ thumb_func_end sub_8063324
+
+ thumb_func_start sub_8063344
+sub_8063344: @ 8063344
+ push {r4,lr}
+ ldr r3, _08063360 @ =gUnknown_83A6404
+ movs r4, 0x30
+ ldrsh r2, [r1, r4]
+ lsls r2, 2
+ adds r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063360: .4byte gUnknown_83A6404
+ thumb_func_end sub_8063344
+
+ thumb_func_start sub_8063364
+sub_8063364: @ 8063364
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ bl npc_reset
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x98
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063364
+
+ thumb_func_start sub_8063384
+sub_8063384: @ 8063384
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063396
+ movs r0, 0
+ b _0806339C
+_08063396:
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_0806339C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063384
+
+ thumb_func_start sub_80633A4
+sub_80633A4: @ 80633A4
+ ldrb r2, [r0]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_80633A4
+
+ thumb_func_start sub_80633B4
+sub_80633B4: @ 80633B4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ bl npc_reset
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x99
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80633B4
+
+ thumb_func_start sub_80633D4
+sub_80633D4: @ 80633D4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ bl npc_reset
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x9A
+ bl sub_80645C8
+ movs r0, 0x1
+ strh r0, [r4, 0x30]
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80633D4
+
+ thumb_func_start sub_80633F4
+sub_80633F4: @ 80633F4
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064588
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063406
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_08063406:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80633F4
+
+ thumb_func_start npc_reset
+npc_reset: @ 8063410
+ ldrb r3, [r0]
+ movs r2, 0x3
+ negs r2, r2
+ ands r2, r3
+ movs r3, 0x41
+ negs r3, r3
+ ands r2, r3
+ movs r3, 0x7F
+ ands r2, r3
+ strb r2, [r0]
+ movs r2, 0xFF
+ strb r2, [r0, 0x1C]
+ movs r0, 0
+ strh r0, [r1, 0x30]
+ bx lr
+ thumb_func_end npc_reset
+
+ thumb_func_start ObjectEventDirectionToImageAnimId
+ObjectEventDirectionToImageAnimId: @ 8063430
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806343C @ =gUnknown_83A640C
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806343C: .4byte gUnknown_83A640C
+ thumb_func_end ObjectEventDirectionToImageAnimId
+
+ thumb_func_start get_go_image_anim_num
+get_go_image_anim_num: @ 8063440
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806344C @ =gUnknown_83A6415
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806344C: .4byte gUnknown_83A6415
+ thumb_func_end get_go_image_anim_num
+
+ thumb_func_start get_go_fast_image_anim_num
+get_go_fast_image_anim_num: @ 8063450
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806345C @ =gUnknown_83A641E
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806345C: .4byte gUnknown_83A641E
+ thumb_func_end get_go_fast_image_anim_num
+
+ thumb_func_start get_go_faster_image_anim_num
+get_go_faster_image_anim_num: @ 8063460
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806346C @ =gUnknown_83A6427
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806346C: .4byte gUnknown_83A6427
+ thumb_func_end get_go_faster_image_anim_num
+
+ thumb_func_start sub_8063470
+sub_8063470: @ 8063470
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806347C @ =gUnknown_83A6430
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806347C: .4byte gUnknown_83A6430
+ thumb_func_end sub_8063470
+
+ thumb_func_start sub_8063480
+sub_8063480: @ 8063480
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806348C @ =gUnknown_83A6439
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806348C: .4byte gUnknown_83A6439
+ thumb_func_end sub_8063480
+
+ thumb_func_start sub_8063490
+sub_8063490: @ 8063490
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806349C @ =gUnknown_83A6442
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806349C: .4byte gUnknown_83A6442
+ thumb_func_end sub_8063490
+
+ thumb_func_start sub_80634A0
+sub_80634A0: @ 80634A0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080634AC @ =gUnknown_83A644B
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080634AC: .4byte gUnknown_83A644B
+ thumb_func_end sub_80634A0
+
+ thumb_func_start sub_80634B0
+sub_80634B0: @ 80634B0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080634BC @ =gUnknown_83A6454
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080634BC: .4byte gUnknown_83A6454
+ thumb_func_end sub_80634B0
+
+ thumb_func_start sub_80634C0
+sub_80634C0: @ 80634C0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080634CC @ =gUnknown_83A645D
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080634CC: .4byte gUnknown_83A645D
+ thumb_func_end sub_80634C0
+
+ thumb_func_start sub_80634D0
+sub_80634D0: @ 80634D0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080634DC @ =gUnknown_83A6466
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080634DC: .4byte gUnknown_83A6466
+ thumb_func_end sub_80634D0
+
+ thumb_func_start sub_80634E0
+sub_80634E0: @ 80634E0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080634EC @ =gUnknown_83A646F
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080634EC: .4byte gUnknown_83A646F
+ thumb_func_end sub_80634E0
+
+ thumb_func_start sub_80634F0
+sub_80634F0: @ 80634F0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080634FC @ =gUnknown_83A6478
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080634FC: .4byte gUnknown_83A6478
+ thumb_func_end sub_80634F0
+
+ thumb_func_start sub_8063500
+sub_8063500: @ 8063500
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806350C @ =gUnknown_83A6481
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806350C: .4byte gUnknown_83A6481
+ thumb_func_end sub_8063500
+
+ thumb_func_start sub_8063510
+sub_8063510: @ 8063510
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806351C @ =gUnknown_83A648A
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806351C: .4byte gUnknown_83A648A
+ thumb_func_end sub_8063510
+
+ thumb_func_start get_run_image_anim_num
+get_run_image_anim_num: @ 8063520
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0806352C @ =gUnknown_83A6493
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0806352C: .4byte gUnknown_83A6493
+ thumb_func_end get_run_image_anim_num
+
+ thumb_func_start sub_8063530
+sub_8063530: @ 8063530
+ push {lr}
+ adds r2, r0, 0
+ ldr r1, _08063538 @ =gUnknown_83A3698
+ b _08063548
+ .align 2, 0
+_08063538: .4byte gUnknown_83A3698
+_0806353C:
+ ldr r0, [r1]
+ cmp r0, r2
+ bne _08063546
+ adds r0, r1, 0
+ b _08063550
+_08063546:
+ adds r1, 0x8
+_08063548:
+ ldr r0, [r1]
+ cmp r0, 0
+ bne _0806353C
+ movs r0, 0
+_08063550:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063530
+
+ thumb_func_start npc_apply_anim_looping
+npc_apply_anim_looping: @ 8063554
+ push {r4,lr}
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r0, [r0, 0x1]
+ lsls r0, 27
+ cmp r0, 0
+ blt _08063596
+ adds r0, r4, 0
+ adds r0, 0x2A
+ strb r2, [r0]
+ ldr r0, [r4, 0x8]
+ bl sub_8063530
+ adds r1, r4, 0
+ adds r1, 0x2B
+ cmp r0, 0
+ beq _0806358E
+ ldrb r2, [r1]
+ ldrb r3, [r0, 0x4]
+ cmp r2, r3
+ bne _08063584
+ ldrb r0, [r0, 0x7]
+ b _0806358C
+_08063584:
+ ldrb r3, [r0, 0x5]
+ cmp r2, r3
+ bne _0806358E
+ ldrb r0, [r0, 0x6]
+_0806358C:
+ strb r0, [r1]
+_0806358E:
+ ldrb r1, [r1]
+ adds r0, r4, 0
+ bl SeekSpriteAnim
+_08063596:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_apply_anim_looping
+
+ thumb_func_start obj_npc_animation_step
+obj_npc_animation_step: @ 806359C
+ push {r4,lr}
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r0, [r0, 0x1]
+ lsls r0, 27
+ cmp r0, 0
+ blt _080635D4
+ adds r0, r4, 0
+ adds r0, 0x2A
+ strb r2, [r0]
+ ldr r0, [r4, 0x8]
+ bl sub_8063530
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _080635D4
+ ldrb r1, [r2, 0x5]
+ adds r0, r4, 0
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ ldrb r3, [r2, 0x4]
+ cmp r0, r3
+ bhi _080635CE
+ ldrb r1, [r2, 0x4]
+_080635CE:
+ adds r0, r4, 0
+ bl SeekSpriteAnim
+_080635D4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end obj_npc_animation_step
+
+ thumb_func_start sub_80635DC
+sub_80635DC: @ 80635DC
+ push {lr}
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r0, 16
+ asrs r0, 16
+ lsls r2, 16
+ asrs r2, 16
+ cmp r0, r2
+ ble _080635F6
+ movs r0, 0x3
+ b _0806360C
+_080635F6:
+ cmp r0, r2
+ bge _080635FE
+ movs r0, 0x4
+ b _0806360C
+_080635FE:
+ lsls r1, 16
+ lsls r0, r3, 16
+ cmp r1, r0
+ bgt _0806360A
+ movs r0, 0x1
+ b _0806360C
+_0806360A:
+ movs r0, 0x2
+_0806360C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80635DC
+
+ thumb_func_start SetTrainerMovementType
+SetTrainerMovementType: @ 8063610
+ push {r4,lr}
+ mov r12, r0
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0
+ strb r1, [r0, 0x6]
+ adds r0, 0x21
+ strb r3, [r0]
+ adds r0, 0x1
+ strb r3, [r0]
+ ldr r4, _08063654 @ =gSprites
+ mov r0, r12
+ ldrb r2, [r0, 0x4]
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r2, r4, 0
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r2, _08063658 @ =gUnknown_839FBC8
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ str r1, [r0]
+ mov r0, r12
+ ldrb r1, [r0, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ strh r3, [r0, 0x30]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063654: .4byte gSprites
+_08063658: .4byte gUnknown_839FBC8
+ thumb_func_end SetTrainerMovementType
+
+ thumb_func_start GetTrainerFacingDirectionMovementType
+GetTrainerFacingDirectionMovementType: @ 806365C
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _08063668 @ =gUnknown_83A649C
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_08063668: .4byte gUnknown_83A649C
+ thumb_func_end GetTrainerFacingDirectionMovementType
+
+ thumb_func_start npc_block_way__next_tile
+npc_block_way__next_tile: @ 806366C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ lsls r5, r1, 24
+ lsrs r5, 24
+ ldrh r1, [r6, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r6, 0x12]
+ mov r4, sp
+ adds r4, 0x2
+ strh r0, [r4]
+ adds r0, r5, 0
+ mov r1, sp
+ adds r2, r4, 0
+ bl MoveCoords
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r4, r0]
+ adds r0, r6, 0
+ adds r3, r5, 0
+ bl npc_block_way
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end npc_block_way__next_tile
+
+ thumb_func_start npc_block_way
+npc_block_way: @ 80636AC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r6, r0, 0
+ lsls r1, 16
+ lsls r2, 16
+ lsls r3, 24
+ lsrs r7, r3, 24
+ mov r8, r7
+ lsrs r0, r1, 16
+ mov r9, r0
+ asrs r5, r1, 16
+ lsrs r0, r2, 16
+ mov r10, r0
+ asrs r4, r2, 16
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl IsCoordOutsideObjectEventMovementRect
+ lsls r0, 24
+ cmp r0, 0
+ beq _080636E2
+ movs r0, 0x1
+ b _08063762
+_080636E2:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl MapGridIsImpassableAt
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063724
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl GetMapBorderIdAt
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ beq _08063724
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ adds r3, r7, 0
+ bl IsMetatileDirectionallyImpassable
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063724
+ ldrb r0, [r6, 0x1]
+ lsrs r0, 7
+ cmp r0, 0
+ beq _08063728
+ mov r0, r8
+ bl CanCameraMoveInDirection
+ cmp r0, 0
+ bne _08063728
+_08063724:
+ movs r0, 0x2
+ b _08063762
+_08063728:
+ ldrb r0, [r6, 0xB]
+ lsls r0, 28
+ lsrs r0, 28
+ mov r2, r9
+ lsls r1, r2, 16
+ asrs r5, r1, 16
+ mov r2, r10
+ lsls r1, r2, 16
+ asrs r4, r1, 16
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl IsZCoordMismatchAt
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806374C
+ movs r0, 0x3
+ b _08063762
+_0806374C:
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl CheckForCollisionBetweenObjectEvents
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063760
+ movs r0, 0
+ b _08063762
+_08063760:
+ movs r0, 0x4
+_08063762:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end npc_block_way
+
+ thumb_func_start sub_8063770
+sub_8063770: @ 8063770
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r7, r0, 0
+ lsls r1, 16
+ lsls r2, 16
+ lsls r3, 24
+ lsrs r3, 24
+ mov r8, r3
+ lsrs r0, r1, 16
+ mov r9, r0
+ asrs r6, r1, 16
+ lsrs r0, r2, 16
+ mov r10, r0
+ asrs r5, r2, 16
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ bl IsCoordOutsideObjectEventMovementRect
+ lsls r0, 24
+ lsrs r0, 24
+ negs r1, r0
+ orrs r1, r0
+ lsrs r4, r1, 31
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl MapGridIsImpassableAt
+ lsls r0, 24
+ cmp r0, 0
+ bne _080637E8
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl GetMapBorderIdAt
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ beq _080637E8
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ mov r3, r8
+ bl IsMetatileDirectionallyImpassable
+ lsls r0, 24
+ cmp r0, 0
+ bne _080637E8
+ ldrb r0, [r7, 0x1]
+ lsrs r0, 7
+ cmp r0, 0
+ beq _080637EC
+ mov r0, r8
+ bl CanCameraMoveInDirection
+ cmp r0, 0
+ bne _080637EC
+_080637E8:
+ movs r0, 0x2
+ orrs r4, r0
+_080637EC:
+ ldrb r0, [r7, 0xB]
+ lsls r0, 28
+ lsrs r0, 28
+ mov r2, r9
+ lsls r1, r2, 16
+ asrs r6, r1, 16
+ mov r2, r10
+ lsls r1, r2, 16
+ asrs r5, r1, 16
+ adds r1, r6, 0
+ adds r2, r5, 0
+ bl IsZCoordMismatchAt
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063814
+ movs r0, 0x4
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08063814:
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ bl CheckForCollisionBetweenObjectEvents
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806382C
+ movs r0, 0x8
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_0806382C:
+ adds r0, r4, 0
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063770
+
+ thumb_func_start IsCoordOutsideObjectEventMovementRect
+IsCoordOutsideObjectEventMovementRect: @ 806383C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r3, r1, 16
+ lsls r2, 16
+ lsrs r5, r2, 16
+ ldrb r1, [r4, 0x19]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ beq _08063874
+ lsls r1, 28
+ lsrs r2, r1, 28
+ ldrh r0, [r4, 0xC]
+ subs r2, r0, r2
+ lsrs r1, 28
+ adds r0, r1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ lsls r2, 16
+ lsls r0, r3, 16
+ asrs r3, r0, 16
+ cmp r2, r0
+ bgt _080638A0
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, r3
+ blt _080638A0
+_08063874:
+ ldrb r1, [r4, 0x19]
+ movs r0, 0xF0
+ ands r0, r1
+ cmp r0, 0
+ beq _080638A4
+ lsls r1, 24
+ lsrs r2, r1, 28
+ ldrh r0, [r4, 0xE]
+ subs r2, r0, r2
+ lsrs r1, 28
+ adds r0, r1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ lsls r2, 16
+ lsls r0, r5, 16
+ asrs r3, r0, 16
+ cmp r2, r0
+ bgt _080638A0
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, r3
+ bge _080638A4
+_080638A0:
+ movs r0, 0x1
+ b _080638A6
+_080638A4:
+ movs r0, 0
+_080638A6:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end IsCoordOutsideObjectEventMovementRect
+
+ thumb_func_start IsMetatileDirectionallyImpassable
+IsMetatileDirectionallyImpassable: @ 80638AC
+ push {r4-r7,lr}
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r7, r2, 16
+ lsls r3, 24
+ ldr r1, _080638F4 @ =gUnknown_83A64A8
+ lsrs r3, 22
+ subs r5, r3, 0x4
+ adds r1, r5, r1
+ ldrb r0, [r0, 0x1E]
+ ldr r1, [r1]
+ bl _call_via_r1
+ lsls r0, 24
+ cmp r0, 0
+ bne _080638EE
+ ldr r4, _080638F8 @ =gUnknown_83A64B8
+ adds r4, r5, r4
+ lsls r0, r6, 16
+ asrs r0, 16
+ lsls r1, r7, 16
+ asrs r1, 16
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, [r4]
+ bl _call_via_r1
+ lsls r0, 24
+ cmp r0, 0
+ beq _080638FC
+_080638EE:
+ movs r0, 0x1
+ b _080638FE
+ .align 2, 0
+_080638F4: .4byte gUnknown_83A64A8
+_080638F8: .4byte gUnknown_83A64B8
+_080638FC:
+ movs r0, 0
+_080638FE:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end IsMetatileDirectionallyImpassable
+
+ thumb_func_start CheckForCollisionBetweenObjectEvents
+CheckForCollisionBetweenObjectEvents: @ 8063904
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ lsls r1, 16
+ lsrs r7, r1, 16
+ movs r4, 0
+ lsls r2, 16
+ asrs r5, r2, 16
+_08063912:
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ ldr r1, _08063968 @ =gObjectEvents
+ adds r2, r0, r1
+ ldrb r0, [r2]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0806396C
+ cmp r2, r6
+ beq _0806396C
+ movs r0, 0x10
+ ldrsh r1, [r2, r0]
+ lsls r0, r7, 16
+ asrs r3, r0, 16
+ cmp r1, r3
+ bne _0806393C
+ movs r1, 0x12
+ ldrsh r0, [r2, r1]
+ cmp r0, r5
+ beq _0806394C
+_0806393C:
+ movs r1, 0x14
+ ldrsh r0, [r2, r1]
+ cmp r0, r3
+ bne _0806396C
+ movs r1, 0x16
+ ldrsh r0, [r2, r1]
+ cmp r0, r5
+ bne _0806396C
+_0806394C:
+ ldrb r0, [r6, 0xB]
+ lsls r0, 28
+ lsrs r0, 28
+ ldrb r1, [r2, 0xB]
+ lsls r1, 28
+ lsrs r1, 28
+ bl AreZCoordsCompatible
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806396C
+ movs r0, 0x1
+ b _08063978
+ .align 2, 0
+_08063968: .4byte gObjectEvents
+_0806396C:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _08063912
+ movs r0, 0
+_08063978:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckForCollisionBetweenObjectEvents
+
+ thumb_func_start IsBerryTreeSparkling
+IsBerryTreeSparkling: @ 8063980
+ push {lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _080639CC
+ ldr r3, _080639C4 @ =gSprites
+ ldr r2, _080639C8 @ =gObjectEvents
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x3C]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080639CC
+ movs r0, 0x1
+ b _080639CE
+ .align 2, 0
+_080639C4: .4byte gSprites
+_080639C8: .4byte gObjectEvents
+_080639CC:
+ movs r0, 0
+_080639CE:
+ add sp, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end IsBerryTreeSparkling
+
+ thumb_func_start sub_80639D4
+sub_80639D4: @ 80639D4
+ push {lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063A12
+ ldr r3, _08063A18 @ =gSprites
+ ldr r2, _08063A1C @ =gObjectEvents
+ 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
+ adds r1, r3
+ ldrh r2, [r1, 0x3C]
+ movs r0, 0x4
+ orrs r0, r2
+ strh r0, [r1, 0x3C]
+_08063A12:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063A18: .4byte gSprites
+_08063A1C: .4byte gObjectEvents
+ thumb_func_end sub_80639D4
+
+ thumb_func_start MoveCoords
+MoveCoords: @ 8063A20
+ push {r4,lr}
+ lsls r0, 24
+ ldr r3, _08063A40 @ =gUnknown_83A64C8
+ lsrs r0, 22
+ adds r0, r3
+ ldrh r3, [r0]
+ ldrh r4, [r1]
+ adds r3, r4
+ strh r3, [r1]
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r2]
+ adds r0, r1
+ strh r0, [r2]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063A40: .4byte gUnknown_83A64C8
+ thumb_func_end MoveCoords
+
+ thumb_func_start sub_8063A44
+sub_8063A44: @ 8063A44
+ push {r4,lr}
+ lsls r0, 24
+ ldr r3, _08063A68 @ =gUnknown_83A64C8
+ lsrs r0, 22
+ adds r0, r3
+ ldrh r3, [r0]
+ lsls r3, 4
+ ldrh r4, [r1]
+ adds r3, r4
+ strh r3, [r1]
+ ldrh r0, [r0, 0x2]
+ lsls r0, 4
+ ldrh r1, [r2]
+ adds r0, r1
+ strh r0, [r2]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063A68: .4byte gUnknown_83A64C8
+ thumb_func_end sub_8063A44
+
+ thumb_func_start sub_8063A6C
+sub_8063A6C: @ 8063A6C
+ push {r4-r7,lr}
+ adds r4, r1, 0
+ ldr r1, [sp, 0x14]
+ lsls r0, 24
+ lsls r3, 16
+ lsrs r3, 16
+ adds r7, r3, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ mov r12, r6
+ ldr r1, _08063AD0 @ =gUnknown_83A64C8
+ lsrs r0, 22
+ adds r5, r0, r1
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ cmp r1, 0
+ ble _08063A98
+ lsls r0, r3, 16
+ asrs r0, 16
+ ldrh r3, [r4]
+ adds r0, r3
+ strh r0, [r4]
+_08063A98:
+ cmp r1, 0
+ bge _08063AA6
+ ldrh r1, [r4]
+ lsls r0, r7, 16
+ asrs r0, 16
+ subs r1, r0
+ strh r1, [r4]
+_08063AA6:
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ cmp r1, 0
+ ble _08063AB8
+ lsls r0, r6, 16
+ asrs r0, 16
+ ldrh r3, [r2]
+ adds r0, r3
+ strh r0, [r2]
+_08063AB8:
+ cmp r1, 0
+ bge _08063AC8
+ ldrh r1, [r2]
+ mov r3, r12
+ lsls r0, r3, 16
+ asrs r0, 16
+ subs r1, r0
+ strh r1, [r2]
+_08063AC8:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063AD0: .4byte gUnknown_83A64C8
+ thumb_func_end sub_8063A6C
+
+ thumb_func_start sub_8063AD4
+sub_8063AD4: @ 8063AD4
+ push {r4,r5,lr}
+ ldr r5, _08063B10 @ =gSaveBlock1Ptr
+ ldr r4, [r5]
+ ldrh r4, [r4]
+ lsls r0, 16
+ asrs r0, 16
+ subs r0, r4
+ lsls r0, 4
+ strh r0, [r2]
+ ldr r0, [r5]
+ ldrh r0, [r0, 0x2]
+ lsls r1, 16
+ asrs r1, 16
+ subs r1, r0
+ lsls r1, 4
+ strh r1, [r3]
+ ldr r1, _08063B14 @ =gUnknown_300506C
+ ldrh r0, [r2]
+ ldrh r1, [r1]
+ subs r0, r1
+ strh r0, [r2]
+ ldr r1, _08063B18 @ =gUnknown_3005068
+ ldrh r0, [r3]
+ ldrh r1, [r1]
+ subs r0, r1
+ strh r0, [r3]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063B10: .4byte gSaveBlock1Ptr
+_08063B14: .4byte gUnknown_300506C
+_08063B18: .4byte gUnknown_3005068
+ thumb_func_end sub_8063AD4
+
+ thumb_func_start sub_8063B1C
+sub_8063B1C: @ 8063B1C
+ push {r4-r7,lr}
+ adds r7, r2, 0
+ mov r12, r3
+ lsls r0, 16
+ lsrs r5, r0, 16
+ lsls r1, 16
+ lsrs r6, r1, 16
+ ldr r0, _08063BB0 @ =gUnknown_300506C
+ ldrh r0, [r0]
+ negs r0, r0
+ ldr r1, _08063BB4 @ =gUnknown_3005050
+ ldr r2, [r1, 0x10]
+ subs r0, r2
+ lsls r0, 16
+ lsrs r3, r0, 16
+ ldr r0, _08063BB8 @ =gUnknown_3005068
+ ldrh r0, [r0]
+ negs r0, r0
+ ldr r1, [r1, 0x14]
+ subs r0, r1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r2, 0
+ ble _08063B56
+ lsls r0, r3, 16
+ movs r3, 0x80
+ lsls r3, 13
+ adds r0, r3
+ lsrs r3, r0, 16
+_08063B56:
+ cmp r2, 0
+ bge _08063B62
+ lsls r0, r3, 16
+ ldr r2, _08063BBC @ =0xfff00000
+ adds r0, r2
+ lsrs r3, r0, 16
+_08063B62:
+ cmp r1, 0
+ ble _08063B70
+ lsls r0, r4, 16
+ movs r2, 0x80
+ lsls r2, 13
+ adds r0, r2
+ lsrs r4, r0, 16
+_08063B70:
+ cmp r1, 0
+ bge _08063B7C
+ lsls r0, r4, 16
+ ldr r1, _08063BBC @ =0xfff00000
+ adds r0, r1
+ lsrs r4, r0, 16
+_08063B7C:
+ ldr r2, _08063BC0 @ =gSaveBlock1Ptr
+ ldr r0, [r2]
+ ldrh r1, [r0]
+ lsls r0, r5, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 4
+ lsls r1, r3, 16
+ asrs r1, 16
+ adds r1, r0
+ strh r1, [r7]
+ ldr r0, [r2]
+ ldrh r1, [r0, 0x2]
+ lsls r0, r6, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 4
+ lsls r1, r4, 16
+ asrs r1, 16
+ adds r1, r0
+ mov r2, r12
+ strh r1, [r2]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063BB0: .4byte gUnknown_300506C
+_08063BB4: .4byte gUnknown_3005050
+_08063BB8: .4byte gUnknown_3005068
+_08063BBC: .4byte 0xfff00000
+_08063BC0: .4byte gSaveBlock1Ptr
+ thumb_func_end sub_8063B1C
+
+ thumb_func_start sub_8063BC4
+sub_8063BC4: @ 8063BC4
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ adds r6, r0, 0
+ mov r8, r1
+ adds r4, r2, 0
+ adds r5, r3, 0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ mov r2, r8
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ adds r2, r6, 0
+ mov r3, r8
+ bl sub_8063B1C
+ lsls r4, 16
+ asrs r4, 16
+ ldrh r0, [r6]
+ adds r4, r0
+ strh r4, [r6]
+ lsls r5, 16
+ asrs r5, 16
+ mov r1, r8
+ ldrh r1, [r1]
+ adds r5, r1
+ mov r2, r8
+ strh r5, [r2]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8063BC4
+
+ thumb_func_start GetObjectEventMovingCameraOffset
+GetObjectEventMovingCameraOffset: @ 8063C10
+ push {lr}
+ adds r2, r0, 0
+ movs r0, 0
+ strh r0, [r2]
+ strh r0, [r1]
+ ldr r3, _08063C4C @ =gUnknown_3005050
+ ldr r0, [r3, 0x10]
+ cmp r0, 0
+ ble _08063C26
+ movs r0, 0x1
+ strh r0, [r2]
+_08063C26:
+ ldr r0, [r3, 0x10]
+ cmp r0, 0
+ bge _08063C32
+ ldrh r0, [r2]
+ subs r0, 0x1
+ strh r0, [r2]
+_08063C32:
+ ldr r2, [r3, 0x14]
+ cmp r2, 0
+ ble _08063C3E
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+_08063C3E:
+ cmp r2, 0
+ bge _08063C48
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+_08063C48:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063C4C: .4byte gUnknown_3005050
+ thumb_func_end GetObjectEventMovingCameraOffset
+
+ thumb_func_start ObjectEventMoveDestCoords
+ObjectEventMoveDestCoords: @ 8063C50
+ push {r4,lr}
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r4, [r0, 0x10]
+ strh r4, [r2]
+ ldrh r0, [r0, 0x12]
+ strh r0, [r3]
+ adds r0, r1, 0
+ adds r1, r2, 0
+ adds r2, r3, 0
+ bl MoveCoords
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end ObjectEventMoveDestCoords
+
+ thumb_func_start ObjectEventIsMovementOverridden
+ObjectEventIsMovementOverridden: @ 8063C70
+ push {lr}
+ ldrb r1, [r0]
+ movs r0, 0x42
+ ands r0, r1
+ cmp r0, 0
+ bne _08063C80
+ movs r0, 0
+ b _08063C82
+_08063C80:
+ movs r0, 0x1
+_08063C82:
+ pop {r1}
+ bx r1
+ thumb_func_end ObjectEventIsMovementOverridden
+
+ thumb_func_start ObjectEventIsSpecialAnimActive
+ObjectEventIsSpecialAnimActive: @ 8063C88
+ push {lr}
+ adds r1, r0, 0
+ ldrb r0, [r1]
+ lsls r0, 25
+ cmp r0, 0
+ bge _08063C9E
+ ldrb r0, [r1, 0x1C]
+ cmp r0, 0xFF
+ beq _08063C9E
+ movs r0, 0x1
+ b _08063CA0
+_08063C9E:
+ movs r0, 0
+_08063CA0:
+ pop {r1}
+ bx r1
+ thumb_func_end ObjectEventIsSpecialAnimActive
+
+ thumb_func_start ObjectEventSetHeldMovement
+ObjectEventSetHeldMovement: @ 8063CA4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ bl sub_8112CAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08063CC8
+ adds r0, r4, 0
+ bl ObjectEventIsMovementOverridden
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063CCE
+ movs r0, 0x1
+ b _08063CF4
+_08063CC8:
+ adds r0, r4, 0
+ bl ObjectEventClearAnimIfSpecialAnimActive
+_08063CCE:
+ adds r0, r4, 0
+ bl npc_sync_anim_pause_bits
+ movs r3, 0
+ strb r5, [r4, 0x1C]
+ ldrb r0, [r4]
+ movs r1, 0x40
+ orrs r0, r1
+ movs r1, 0x7F
+ ands r0, r1
+ strb r0, [r4]
+ ldr r2, _08063CFC @ =gSprites
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r3, [r0, 0x32]
+ movs r0, 0
+_08063CF4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063CFC: .4byte gSprites
+ thumb_func_end ObjectEventSetHeldMovement
+
+ thumb_func_start ObjectEventForceSetSpecialAnim
+ObjectEventForceSetSpecialAnim: @ 8063D00
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r4, r1, 24
+ lsrs r4, 24
+ bl ObjectEventClearAnimIfSpecialAnimActive
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl ObjectEventSetHeldMovement
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end ObjectEventForceSetSpecialAnim
+
+ thumb_func_start ObjectEventClearAnimIfSpecialAnimActive
+ObjectEventClearAnimIfSpecialAnimActive: @ 8063D1C
+ push {lr}
+ adds r1, r0, 0
+ ldrb r0, [r1]
+ lsls r0, 25
+ cmp r0, 0
+ bge _08063D2E
+ adds r0, r1, 0
+ bl ObjectEventClearAnim
+_08063D2E:
+ pop {r0}
+ bx r0
+ thumb_func_end ObjectEventClearAnimIfSpecialAnimActive
+
+ thumb_func_start ObjectEventClearAnim
+ObjectEventClearAnim: @ 8063D34
+ movs r1, 0xFF
+ strb r1, [r0, 0x1C]
+ ldrb r2, [r0]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x7F
+ ands r1, r2
+ strb r1, [r0]
+ ldr r3, _08063D64 @ =gSprites
+ ldrb r2, [r0, 0x4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r3
+ movs r2, 0
+ strh r2, [r1, 0x30]
+ ldrb r1, [r0, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ strh r2, [r0, 0x32]
+ bx lr
+ .align 2, 0
+_08063D64: .4byte gSprites
+ thumb_func_end ObjectEventClearAnim
+
+ thumb_func_start ObjectEventCheckHeldMovementStatus
+ObjectEventCheckHeldMovementStatus: @ 8063D68
+ push {lr}
+ ldrb r1, [r0]
+ lsls r0, r1, 25
+ cmp r0, 0
+ blt _08063D76
+ movs r0, 0x10
+ b _08063D78
+_08063D76:
+ lsrs r0, r1, 7
+_08063D78:
+ pop {r1}
+ bx r1
+ thumb_func_end ObjectEventCheckHeldMovementStatus
+
+ thumb_func_start ObjectEventClearHeldMovementIfFinished
+ObjectEventClearHeldMovementIfFinished: @ 8063D7C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl ObjectEventCheckHeldMovementStatus
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _08063D96
+ cmp r4, 0x10
+ beq _08063D96
+ adds r0, r5, 0
+ bl ObjectEventClearAnimIfSpecialAnimActive
+_08063D96:
+ adds r0, r4, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end ObjectEventClearHeldMovementIfFinished
+
+ thumb_func_start ObjectEventGetSpecialAnim
+ObjectEventGetSpecialAnim: @ 8063DA0
+ push {lr}
+ adds r1, r0, 0
+ ldrb r0, [r1]
+ lsls r0, 25
+ cmp r0, 0
+ blt _08063DB0
+ movs r0, 0xFF
+ b _08063DB2
+_08063DB0:
+ ldrb r0, [r1, 0x1C]
+_08063DB2:
+ pop {r1}
+ bx r1
+ thumb_func_end ObjectEventGetSpecialAnim
+
+ thumb_func_start ObjectEventStep
+ObjectEventStep: @ 8063DB8
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ bl DoGroundEffects_OnSpawn
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80679C8
+ adds r0, r4, 0
+ bl ObjectEventIsSpecialAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063DE2
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl ObjectEventExecSpecialAnim
+ b _08063DF8
+_08063DE2:
+ ldrb r0, [r4, 0x1]
+ lsls r0, 31
+ cmp r0, 0
+ bne _08063DF8
+_08063DEA:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl _call_via_r6
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063DEA
+_08063DF8:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DoGroundEffects_OnBeginStep
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DoGroundEffects_OnFinishStep
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_obj_transfer_image_anim_pause_flag
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80679F8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl ObjectEventUpdateSubpriority
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end ObjectEventStep
+
+ thumb_func_start sub_8063E28
+sub_8063E28: @ 8063E28
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl DoGroundEffects_OnSpawn
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80679C8
+ adds r0, r4, 0
+ bl ObjectEventIsSpecialAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063E5C
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _08063E5C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064544
+_08063E5C:
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsIce_2
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08063E78
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsUnknownMovement48
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08063E80
+_08063E78:
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x4
+ orrs r0, r1
+ b _08063E88
+_08063E80:
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+_08063E88:
+ strb r0, [r4, 0x1]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DoGroundEffects_OnBeginStep
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DoGroundEffects_OnFinishStep
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_obj_transfer_image_anim_pause_flag
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80679F8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl ObjectEventUpdateSubpriority
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8063E28
+
+ thumb_func_start sub_8063EB8
+sub_8063EB8: @ 8063EB8
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08063EE0 @ =gUnknown_83A64EC
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08063ED0
+ movs r4, 0
+_08063ED0:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063EE0: .4byte gUnknown_83A64EC
+ thumb_func_end sub_8063EB8
+
+ thumb_func_start sub_8063EE4
+sub_8063EE4: @ 8063EE4
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08063F0C @ =gUnknown_83A64F1
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08063EFC
+ movs r4, 0
+_08063EFC:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063F0C: .4byte gUnknown_83A64F1
+ thumb_func_end sub_8063EE4
+
+ thumb_func_start sub_8063F10
+sub_8063F10: @ 8063F10
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x4
+ bls _08063F1C
+ movs r1, 0
+_08063F1C:
+ ldr r0, _08063F28 @ =gUnknown_83A64F6
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063F28: .4byte gUnknown_83A64F6
+ thumb_func_end sub_8063F10
+
+ thumb_func_start sub_8063F2C
+sub_8063F2C: @ 8063F2C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08063F54 @ =gUnknown_83A64FB
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08063F44
+ movs r4, 0
+_08063F44:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063F54: .4byte gUnknown_83A64FB
+ thumb_func_end sub_8063F2C
+
+ thumb_func_start sub_8063F58
+sub_8063F58: @ 8063F58
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08063F80 @ =gUnknown_83A6500
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08063F70
+ movs r4, 0
+_08063F70:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063F80: .4byte gUnknown_83A6500
+ thumb_func_end sub_8063F58
+
+ thumb_func_start sub_8063F84
+sub_8063F84: @ 8063F84
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08063FAC @ =gUnknown_83A6505
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08063F9C
+ movs r4, 0
+_08063F9C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063FAC: .4byte gUnknown_83A6505
+ thumb_func_end sub_8063F84
+
+ thumb_func_start sub_8063FB0
+sub_8063FB0: @ 8063FB0
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08063FD8 @ =gUnknown_83A650A
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08063FC8
+ movs r4, 0
+_08063FC8:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08063FD8: .4byte gUnknown_83A650A
+ thumb_func_end sub_8063FB0
+
+ thumb_func_start sub_8063FDC
+sub_8063FDC: @ 8063FDC
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064004 @ =gUnknown_83A650F
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08063FF4
+ movs r4, 0
+_08063FF4:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064004: .4byte gUnknown_83A650F
+ thumb_func_end sub_8063FDC
+
+ thumb_func_start sub_8064008
+sub_8064008: @ 8064008
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064030 @ =gUnknown_83A6514
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064020
+ movs r4, 0
+_08064020:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064030: .4byte gUnknown_83A6514
+ thumb_func_end sub_8064008
+
+ thumb_func_start sub_8064034
+sub_8064034: @ 8064034
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0806405C @ =gUnknown_83A6519
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _0806404C
+ movs r4, 0
+_0806404C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806405C: .4byte gUnknown_83A6519
+ thumb_func_end sub_8064034
+
+ thumb_func_start sub_8064060
+sub_8064060: @ 8064060
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064088 @ =gUnknown_83A651E
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064078
+ movs r4, 0
+_08064078:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064088: .4byte gUnknown_83A651E
+ thumb_func_end sub_8064060
+
+ thumb_func_start sub_806408C
+sub_806408C: @ 806408C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080640B4 @ =gUnknown_83A6523
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080640A4
+ movs r4, 0
+_080640A4:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080640B4: .4byte gUnknown_83A6523
+ thumb_func_end sub_806408C
+
+ thumb_func_start sub_80640B8
+sub_80640B8: @ 80640B8
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080640E0 @ =gUnknown_83A6528
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080640D0
+ movs r4, 0
+_080640D0:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080640E0: .4byte gUnknown_83A6528
+ thumb_func_end sub_80640B8
+
+ thumb_func_start sub_80640E4
+sub_80640E4: @ 80640E4
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0806410C @ =gUnknown_83A652D
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080640FC
+ movs r4, 0
+_080640FC:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806410C: .4byte gUnknown_83A652D
+ thumb_func_end sub_80640E4
+
+ thumb_func_start GetJumpLedgeAnimId
+GetJumpLedgeAnimId: @ 8064110
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064138 @ =gUnknown_83A6532
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064128
+ movs r4, 0
+_08064128:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064138: .4byte gUnknown_83A6532
+ thumb_func_end GetJumpLedgeAnimId
+
+ thumb_func_start sub_806413C
+sub_806413C: @ 806413C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064164 @ =gUnknown_83A6537
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064154
+ movs r4, 0
+_08064154:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064164: .4byte gUnknown_83A6537
+ thumb_func_end sub_806413C
+
+ thumb_func_start sub_8064168
+sub_8064168: @ 8064168
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064190 @ =gUnknown_83A653C
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064180
+ movs r4, 0
+_08064180:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064190: .4byte gUnknown_83A653C
+ thumb_func_end sub_8064168
+
+ thumb_func_start sub_8064194
+sub_8064194: @ 8064194
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080641BC @ =gUnknown_83A6541
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080641AC
+ movs r4, 0
+_080641AC:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080641BC: .4byte gUnknown_83A6541
+ thumb_func_end sub_8064194
+
+ thumb_func_start sub_80641C0
+sub_80641C0: @ 80641C0
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080641E8 @ =gUnknown_83A6546
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080641D8
+ movs r4, 0
+_080641D8:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080641E8: .4byte gUnknown_83A6546
+ thumb_func_end sub_80641C0
+
+ thumb_func_start sub_80641EC
+sub_80641EC: @ 80641EC
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064214 @ =gUnknown_83A654B
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064204
+ movs r4, 0
+_08064204:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064214: .4byte gUnknown_83A654B
+ thumb_func_end sub_80641EC
+
+ thumb_func_start GetStepInPlaceDelay32AnimId
+GetStepInPlaceDelay32AnimId: @ 8064218
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064240 @ =gUnknown_83A6550
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064230
+ movs r4, 0
+_08064230:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064240: .4byte gUnknown_83A6550
+ thumb_func_end GetStepInPlaceDelay32AnimId
+
+ thumb_func_start GetStepInPlaceDelay16AnimId
+GetStepInPlaceDelay16AnimId: @ 8064244
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0806426C @ =gUnknown_83A6555
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _0806425C
+ movs r4, 0
+_0806425C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806426C: .4byte gUnknown_83A6555
+ thumb_func_end GetStepInPlaceDelay16AnimId
+
+ thumb_func_start sub_8064270
+sub_8064270: @ 8064270
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064298 @ =gUnknown_83A655A
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064288
+ movs r4, 0
+_08064288:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064298: .4byte gUnknown_83A655A
+ thumb_func_end sub_8064270
+
+ thumb_func_start GetStepInPlaceDelay4AnimId
+GetStepInPlaceDelay4AnimId: @ 806429C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080642C4 @ =gUnknown_83A655F
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080642B4
+ movs r4, 0
+_080642B4:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080642C4: .4byte gUnknown_83A655F
+ thumb_func_end GetStepInPlaceDelay4AnimId
+
+ thumb_func_start ObjectEventFaceOppositeDirection
+ObjectEventFaceOppositeDirection: @ 80642C8
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r0, r1, 24
+ lsrs r0, 24
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8063EB8
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl ObjectEventSetHeldMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end ObjectEventFaceOppositeDirection
+
+ thumb_func_start sub_80642F4
+sub_80642F4: @ 80642F4
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0806431C @ =gUnknown_83A6564
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _0806430C
+ movs r4, 0
+_0806430C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806431C: .4byte gUnknown_83A6564
+ thumb_func_end sub_80642F4
+
+ thumb_func_start sub_8064320
+sub_8064320: @ 8064320
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064348 @ =gUnknown_83A6569
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064338
+ movs r4, 0
+_08064338:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064348: .4byte gUnknown_83A6569
+ thumb_func_end sub_8064320
+
+ thumb_func_start sub_806434C
+sub_806434C: @ 806434C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064374 @ =gUnknown_83A656E
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064364
+ movs r4, 0
+_08064364:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064374: .4byte gUnknown_83A656E
+ thumb_func_end sub_806434C
+
+ thumb_func_start sub_8064378
+sub_8064378: @ 8064378
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080643A0 @ =gUnknown_83A6573
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064390
+ movs r4, 0
+_08064390:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080643A0: .4byte gUnknown_83A6573
+ thumb_func_end sub_8064378
+
+ thumb_func_start sub_80643A4
+sub_80643A4: @ 80643A4
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080643CC @ =gUnknown_83A6578
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080643BC
+ movs r4, 0
+_080643BC:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080643CC: .4byte gUnknown_83A6578
+ thumb_func_end sub_80643A4
+
+ thumb_func_start sub_80643D0
+sub_80643D0: @ 80643D0
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080643F8 @ =gUnknown_83A657D
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080643E8
+ movs r4, 0
+_080643E8:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080643F8: .4byte gUnknown_83A657D
+ thumb_func_end sub_80643D0
+
+ thumb_func_start sub_80643FC
+sub_80643FC: @ 80643FC
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064424 @ =gUnknown_83A6582
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064414
+ movs r4, 0
+_08064414:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064424: .4byte gUnknown_83A6582
+ thumb_func_end sub_80643FC
+
+ thumb_func_start sub_8064428
+sub_8064428: @ 8064428
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08064450 @ =gUnknown_83A6587
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08064440
+ movs r4, 0
+_08064440:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064450: .4byte gUnknown_83A6587
+ thumb_func_end sub_8064428
+
+ thumb_func_start sub_8064454
+sub_8064454: @ 8064454
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0806447C @ =gUnknown_83A658C
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _0806446C
+ movs r4, 0
+_0806446C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806447C: .4byte gUnknown_83A658C
+ thumb_func_end sub_8064454
+
+ thumb_func_start GetOppositeDirection
+GetOppositeDirection: @ 8064480
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080644A4 @ =gUnknown_83A6591
+ mov r0, sp
+ movs r2, 0x8
+ bl memcpy
+ subs r1, r4, 0x1
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, 0x7
+ bhi _080644A8
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ b _080644AA
+ .align 2, 0
+_080644A4: .4byte gUnknown_83A6591
+_080644A8:
+ adds r0, r4, 0
+_080644AA:
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetOppositeDirection
+
+ thumb_func_start zffu_offset_calc
+zffu_offset_calc: @ 80644B4
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080644C8 @ =gUnknown_83A6599
+ lsrs r0, 22
+ subs r0, 0x5
+ adds r1, r0
+ adds r1, r2
+ ldrb r0, [r1]
+ bx lr
+ .align 2, 0
+_080644C8: .4byte gUnknown_83A6599
+ thumb_func_end zffu_offset_calc
+
+ thumb_func_start state_to_direction
+state_to_direction: @ 80644CC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ cmp r1, 0
+ beq _080644EC
+ cmp r2, 0
+ beq _080644EC
+ cmp r1, 0x4
+ bhi _080644EC
+ cmp r2, 0x4
+ bls _080644F0
+_080644EC:
+ movs r0, 0
+ b _08064502
+_080644F0:
+ adds r1, r2, 0
+ bl zffu_offset_calc
+ ldr r2, _08064508 @ =gUnknown_83A65A9
+ lsls r1, r4, 2
+ subs r1, 0x5
+ adds r0, r1
+ adds r0, r2
+ ldrb r0, [r0]
+_08064502:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08064508: .4byte gUnknown_83A65A9
+ thumb_func_end state_to_direction
+
+ thumb_func_start ObjectEventExecSpecialAnim
+ObjectEventExecSpecialAnim: @ 806450C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r2, _08064540 @ =gUnknown_83A65BC
+ ldrb r0, [r4, 0x1C]
+ lsls r0, 2
+ adds r0, r2
+ movs r3, 0x32
+ ldrsh r2, [r1, r3]
+ ldr r0, [r0]
+ lsls r2, 2
+ adds r2, r0
+ ldr r2, [r2]
+ adds r0, r4, 0
+ bl _call_via_r2
+ lsls r0, 24
+ cmp r0, 0
+ beq _08064538
+ ldrb r0, [r4]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r4]
+_08064538:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064540: .4byte gUnknown_83A65BC
+ thumb_func_end ObjectEventExecSpecialAnim
+
+ thumb_func_start sub_8064544
+sub_8064544: @ 8064544
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r2, _08064584 @ =gUnknown_83A65BC
+ ldrb r0, [r4, 0x1C]
+ lsls r0, 2
+ adds r0, r2
+ movs r3, 0x32
+ ldrsh r2, [r1, r3]
+ ldr r0, [r0]
+ lsls r2, 2
+ adds r2, r0
+ ldr r2, [r2]
+ adds r0, r4, 0
+ bl _call_via_r2
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806457C
+ ldrb r0, [r4]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r4]
+ ldrb r0, [r4, 0x5]
+ cmp r0, 0x61
+ bne _0806457C
+ adds r0, r4, 0
+ bl sub_806DE28
+_0806457C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064584: .4byte gUnknown_83A65BC
+ thumb_func_end sub_8064544
+
+ thumb_func_start sub_8064588
+sub_8064588: @ 8064588
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080645B4 @ =gUnknown_83A65BC
+ ldrb r0, [r4, 0x1C]
+ lsls r0, 2
+ adds r0, r1
+ movs r2, 0x32
+ ldrsh r1, [r5, r2]
+ ldr r0, [r0]
+ lsls r1, 2
+ adds r1, r0
+ ldr r2, [r1]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl _call_via_r2
+ lsls r0, 24
+ cmp r0, 0
+ bne _080645B8
+ movs r0, 0
+ b _080645C2
+ .align 2, 0
+_080645B4: .4byte gUnknown_83A65BC
+_080645B8:
+ movs r0, 0xFF
+ strb r0, [r4, 0x1C]
+ movs r0, 0
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080645C2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064588
+
+ thumb_func_start sub_80645C8
+sub_80645C8: @ 80645C8
+ push {r4,lr}
+ adds r3, r0, 0
+ lsls r2, 24
+ lsrs r4, r2, 24
+ movs r0, 0
+ strb r4, [r3, 0x1C]
+ strh r0, [r1, 0x32]
+ ldr r0, _080645F0 @ =gUnknown_3005E88
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _080645EA
+ ldrb r0, [r3, 0x8]
+ ldrb r1, [r3, 0x9]
+ ldrb r2, [r3, 0xA]
+ adds r3, r4, 0
+ bl sub_81124EC
+_080645EA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080645F0: .4byte gUnknown_3005E88
+ thumb_func_end sub_80645C8
+
+ thumb_func_start an_look_any
+an_look_any: @ 80645F4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r1, r2, 24
+ lsrs r1, 24
+ bl ObjectEventSetDirection
+ adds r0, r4, 0
+ bl npc_coords_shift_still
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl get_go_image_anim_num
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl obj_npc_animation_step
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+ strh r0, [r5, 0x32]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end an_look_any
+
+ thumb_func_start sub_8064638
+sub_8064638: @ 8064638
+ push {lr}
+ movs r2, 0x1
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064638
+
+ thumb_func_start sub_8064648
+sub_8064648: @ 8064648
+ push {lr}
+ movs r2, 0x2
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064648
+
+ thumb_func_start sub_8064658
+sub_8064658: @ 8064658
+ push {lr}
+ movs r2, 0x3
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064658
+
+ thumb_func_start sub_8064668
+sub_8064668: @ 8064668
+ push {lr}
+ movs r2, 0x4
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064668
+
+ thumb_func_start sub_8064678
+sub_8064678: @ 8064678
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ sub sp, 0x4
+ mov r8, r0
+ mov r9, r1
+ adds r4, r2, 0
+ adds r6, r3, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r6, 24
+ lsrs r6, 24
+ ldrh r1, [r0, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ mov r1, r8
+ ldrh r0, [r1, 0x12]
+ mov r5, sp
+ adds r5, 0x2
+ strh r0, [r5]
+ mov r0, r8
+ adds r1, r4, 0
+ bl ObjectEventSetDirection
+ adds r0, r4, 0
+ mov r1, sp
+ adds r2, r5, 0
+ bl MoveCoords
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r5, r0]
+ mov r0, r8
+ bl npc_coords_shift
+ mov r0, r9
+ adds r1, r4, 0
+ adds r2, r6, 0
+ bl oamt_npc_ministep_reset
+ mov r2, r9
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x4
+ orrs r0, r1
+ mov r2, r8
+ strb r0, [r2]
+ movs r0, 0x1
+ mov r1, r9
+ strh r0, [r1, 0x32]
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8064678
+
+ thumb_func_start do_go_anim
+do_go_anim: @ 80646FC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ adds r5, r0, 0
+ mov r8, r1
+ adds r4, r3, 0
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r4, 24
+ lsrs r4, 24
+ mov r1, sp
+ ldr r0, _08064754 @ =gUnknown_83A6884
+ ldm r0!, {r3,r6,r7}
+ stm r1!, {r3,r6,r7}
+ ldm r0!, {r3,r6}
+ stm r1!, {r3,r6}
+ adds r0, r5, 0
+ mov r1, r8
+ adds r3, r4, 0
+ bl sub_8064678
+ lsls r4, 2
+ mov r7, sp
+ adds r1, r7, r4
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ ldr r1, [r1]
+ bl _call_via_r1
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ mov r1, r8
+ bl npc_apply_anim_looping
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064754: .4byte gUnknown_83A6884
+ thumb_func_end do_go_anim
+
+ thumb_func_start do_run_anim
+do_run_anim: @ 8064758
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ movs r3, 0x1
+ bl sub_8064678
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl get_run_image_anim_num
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_apply_anim_looping
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end do_run_anim
+
+ thumb_func_start npc_obj_ministep_stop_on_arrival
+npc_obj_ministep_stop_on_arrival: @ 8064788
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl obj_npc_ministep
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806479E
+ movs r0, 0
+ b _080647BA
+_0806479E:
+ adds r0, r4, 0
+ bl npc_coords_shift_still
+ ldrb r0, [r4]
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+_080647BA:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end npc_obj_ministep_stop_on_arrival
+
+ thumb_func_start sub_80647C0
+sub_80647C0: @ 80647C0
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x4
+ adds r6, r0, 0
+ mov r8, r1
+ lsls r5, r2, 24
+ lsrs r5, 24
+ ldrh r1, [r6, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r6, 0x12]
+ mov r4, sp
+ adds r4, 0x2
+ strh r0, [r4]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl ObjectEventSetDirection
+ adds r0, r5, 0
+ mov r1, sp
+ adds r2, r4, 0
+ bl MoveCoords
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r4, r0]
+ adds r0, r6, 0
+ bl npc_coords_shift
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_8068BBC
+ mov r2, r8
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r0, [r6]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r6]
+ movs r0, 0x1
+ mov r1, r8
+ strh r0, [r1, 0x32]
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80647C0
+
+ thumb_func_start sub_8064830
+sub_8064830: @ 8064830
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ bl sub_80647C0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl get_go_image_anim_num
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_apply_anim_looping
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8064830
+
+ thumb_func_start an_walk_any_2
+an_walk_any_2: @ 806485C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8068BCC
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064872
+ movs r0, 0
+ b _0806488E
+_08064872:
+ adds r0, r4, 0
+ bl npc_coords_shift_still
+ ldrb r0, [r4]
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+_0806488E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end an_walk_any_2
+
+ thumb_func_start sub_8064894
+sub_8064894: @ 8064894
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x4
+ adds r6, r0, 0
+ mov r8, r1
+ lsls r5, r2, 24
+ lsrs r5, 24
+ ldrh r1, [r6, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r6, 0x12]
+ mov r4, sp
+ adds r4, 0x2
+ strh r0, [r4]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl ObjectEventSetDirection
+ adds r0, r5, 0
+ mov r1, sp
+ adds r2, r4, 0
+ bl MoveCoords
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r4, r0]
+ adds r0, r6, 0
+ bl npc_coords_shift
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_8068C58
+ mov r2, r8
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r0, [r6]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r6]
+ movs r0, 0x1
+ mov r1, r8
+ strh r0, [r1, 0x32]
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8064894
+
+ thumb_func_start sub_8064904
+sub_8064904: @ 8064904
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ bl sub_8064894
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl get_go_image_anim_num
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_apply_anim_looping
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8064904
+
+ thumb_func_start sub_8064930
+sub_8064930: @ 8064930
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8068C68
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064946
+ movs r0, 0
+ b _08064962
+_08064946:
+ adds r0, r4, 0
+ bl npc_coords_shift_still
+ ldrb r0, [r4]
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+_08064962:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064930
+
+ thumb_func_start sub_8064968
+sub_8064968: @ 8064968
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8064904
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064988
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064968
+
+ thumb_func_start sub_8064988
+sub_8064988: @ 8064988
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064930
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806499A
+ movs r0, 0
+ b _080649A0
+_0806499A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080649A0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064988
+
+ thumb_func_start sub_80649A8
+sub_80649A8: @ 80649A8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl sub_8064904
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80649C8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80649A8
+
+ thumb_func_start sub_80649C8
+sub_80649C8: @ 80649C8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064930
+ lsls r0, 24
+ cmp r0, 0
+ bne _080649DA
+ movs r0, 0
+ b _080649E0
+_080649DA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080649E0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80649C8
+
+ thumb_func_start sub_80649E8
+sub_80649E8: @ 80649E8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl sub_8064904
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064A08
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80649E8
+
+ thumb_func_start sub_8064A08
+sub_8064A08: @ 8064A08
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064930
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064A1A
+ movs r0, 0
+ b _08064A20
+_08064A1A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064A20:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064A08
+
+ thumb_func_start sub_8064A28
+sub_8064A28: @ 8064A28
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ bl sub_8064904
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064A48
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064A28
+
+ thumb_func_start sub_8064A48
+sub_8064A48: @ 8064A48
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064930
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064A5A
+ movs r0, 0
+ b _08064A60
+_08064A5A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064A60:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064A48
+
+ thumb_func_start sub_8064A68
+sub_8064A68: @ 8064A68
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8064830
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064A88
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064A68
+
+ thumb_func_start sub_8064A88
+sub_8064A88: @ 8064A88
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064A9A
+ movs r0, 0
+ b _08064AA0
+_08064A9A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064AA0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064A88
+
+ thumb_func_start sub_8064AA8
+sub_8064AA8: @ 8064AA8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl sub_8064830
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064AC8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064AA8
+
+ thumb_func_start sub_8064AC8
+sub_8064AC8: @ 8064AC8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064ADA
+ movs r0, 0
+ b _08064AE0
+_08064ADA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064AE0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064AC8
+
+ thumb_func_start sub_8064AE8
+sub_8064AE8: @ 8064AE8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl sub_8064830
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064B08
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064AE8
+
+ thumb_func_start sub_8064B08
+sub_8064B08: @ 8064B08
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064B1A
+ movs r0, 0
+ b _08064B20
+_08064B1A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064B20:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064B08
+
+ thumb_func_start sub_8064B28
+sub_8064B28: @ 8064B28
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ bl sub_8064830
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064B48
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064B28
+
+ thumb_func_start sub_8064B48
+sub_8064B48: @ 8064B48
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064B5A
+ movs r0, 0
+ b _08064B60
+_08064B5A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064B60:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064B48
+
+ thumb_func_start sub_8064B68
+sub_8064B68: @ 8064B68
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x4
+ adds r6, r0, 0
+ mov r8, r1
+ lsls r5, r2, 24
+ lsrs r5, 24
+ ldrh r1, [r6, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r6, 0x12]
+ mov r4, sp
+ adds r4, 0x2
+ strh r0, [r4]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl ObjectEventSetDirection
+ adds r0, r5, 0
+ mov r1, sp
+ adds r2, r4, 0
+ bl MoveCoords
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r4, r0]
+ adds r0, r6, 0
+ bl npc_coords_shift
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_8068C08
+ mov r2, r8
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r0, [r6]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r6]
+ movs r0, 0x1
+ mov r1, r8
+ strh r0, [r1, 0x32]
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8064B68
+
+ thumb_func_start sub_8064BD8
+sub_8064BD8: @ 8064BD8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ bl sub_8064B68
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl get_go_image_anim_num
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_apply_anim_looping
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8064BD8
+
+ thumb_func_start sub_8064C04
+sub_8064C04: @ 8064C04
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8068C18
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064C1A
+ movs r0, 0
+ b _08064C36
+_08064C1A:
+ adds r0, r4, 0
+ bl npc_coords_shift_still
+ ldrb r0, [r4]
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+_08064C36:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064C04
+
+ thumb_func_start sub_8064C3C
+sub_8064C3C: @ 8064C3C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl sub_8064BD8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064C5C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064C3C
+
+ thumb_func_start sub_8064C5C
+sub_8064C5C: @ 8064C5C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064C04
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064C6E
+ movs r0, 0
+ b _08064C74
+_08064C6E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064C74:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064C5C
+
+ thumb_func_start sub_8064C7C
+sub_8064C7C: @ 8064C7C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8064BD8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064C9C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064C7C
+
+ thumb_func_start sub_8064C9C
+sub_8064C9C: @ 8064C9C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064C04
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064CAE
+ movs r0, 0
+ b _08064CB4
+_08064CAE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064CB4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064C9C
+
+ thumb_func_start sub_8064CBC
+sub_8064CBC: @ 8064CBC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl sub_8064BD8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064CDC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064CBC
+
+ thumb_func_start sub_8064CDC
+sub_8064CDC: @ 8064CDC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064C04
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064CEE
+ movs r0, 0
+ b _08064CF4
+_08064CEE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064CF4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064CDC
+
+ thumb_func_start sub_8064CFC
+sub_8064CFC: @ 8064CFC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ bl sub_8064BD8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064D1C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064CFC
+
+ thumb_func_start sub_8064D1C
+sub_8064D1C: @ 8064D1C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8064C04
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064D2E
+ movs r0, 0
+ b _08064D34
+_08064D2E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064D34:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064D1C
+
+ thumb_func_start sub_8064D3C
+sub_8064D3C: @ 8064D3C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064D5C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064D3C
+
+ thumb_func_start sub_8064D5C
+sub_8064D5C: @ 8064D5C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064D6E
+ movs r0, 0
+ b _08064D74
+_08064D6E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064D74:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064D5C
+
+ thumb_func_start sub_8064D7C
+sub_8064D7C: @ 8064D7C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064D9C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064D7C
+
+ thumb_func_start sub_8064D9C
+sub_8064D9C: @ 8064D9C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064DAE
+ movs r0, 0
+ b _08064DB4
+_08064DAE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064DB4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064D9C
+
+ thumb_func_start sub_8064DBC
+sub_8064DBC: @ 8064DBC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064DDC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064DBC
+
+ thumb_func_start sub_8064DDC
+sub_8064DDC: @ 8064DDC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064DEE
+ movs r0, 0
+ b _08064DF4
+_08064DEE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064DF4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064DDC
+
+ thumb_func_start sub_8064DFC
+sub_8064DFC: @ 8064DFC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064E1C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064DFC
+
+ thumb_func_start sub_8064E1C
+sub_8064E1C: @ 8064E1C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08064E2E
+ movs r0, 0
+ b _08064E34
+_08064E2E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08064E34:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064E1C
+
+ thumb_func_start sub_8064E3C
+sub_8064E3C: @ 8064E3C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ adds r7, r0, 0
+ mov r10, r1
+ adds r4, r2, 0
+ mov r8, r3
+ ldr r0, [sp, 0x30]
+ lsls r4, 24
+ lsrs r4, 24
+ mov r1, r8
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _08064EF4 @ =gUnknown_83A6958
+ add r0, sp, 0x4
+ movs r2, 0x6
+ bl memcpy
+ add r5, sp, 0xC
+ movs r0, 0
+ strh r0, [r5]
+ mov r6, sp
+ adds r6, 0xE
+ strh r0, [r6]
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl ObjectEventSetDirection
+ mov r1, r8
+ lsls r0, r1, 1
+ add r0, sp
+ adds r0, 0x4
+ movs r1, 0
+ ldrsh r3, [r0, r1]
+ str r3, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl sub_8063A6C
+ ldrh r1, [r5]
+ ldrh r0, [r7, 0x10]
+ adds r1, r0
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r6]
+ ldrh r0, [r7, 0x12]
+ adds r2, r0
+ lsls r2, 16
+ asrs r2, 16
+ adds r0, r7, 0
+ bl npc_coords_shift
+ mov r0, r10
+ adds r1, r4, 0
+ mov r2, r8
+ mov r3, r9
+ bl sub_8068D1C
+ movs r0, 0x1
+ mov r1, r10
+ strh r0, [r1, 0x32]
+ movs r0, 0x2C
+ add r10, r0
+ mov r0, r10
+ ldrb r1, [r0]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ mov r1, r10
+ strb r0, [r1]
+ ldrb r0, [r7]
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r7]
+ 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
+_08064EF4: .4byte gUnknown_83A6958
+ thumb_func_end sub_8064E3C
+
+ thumb_func_start maybe_shadow_1
+maybe_shadow_1: @ 8064EF8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r0, [sp, 0x10]
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ adds r0, r4, 0
+ bl sub_8064E3C
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl get_go_image_anim_num
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_apply_anim_looping
+ adds r0, r4, 0
+ bl DoShadowFieldEffect
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end maybe_shadow_1
+
+ thumb_func_start sub_8064F3C
+sub_8064F3C: @ 8064F3C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ adds r6, r0, 0
+ adds r7, r1, 0
+ adds r4, r2, 0
+ ldr r1, _08064FC8 @ =gUnknown_83A695E
+ add r0, sp, 0x4
+ movs r2, 0x6
+ bl memcpy
+ adds r0, r7, 0
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r0, 0x1
+ bne _08064FCC
+ movs r1, 0x36
+ ldrsh r0, [r7, r1]
+ lsls r0, 1
+ add r0, sp
+ adds r0, 0x4
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ beq _08064FCC
+ add r4, sp, 0xC
+ movs r0, 0
+ strh r0, [r4]
+ mov r5, sp
+ adds r5, 0xE
+ strh r0, [r5]
+ ldrb r0, [r6, 0x18]
+ lsrs r0, 4
+ movs r2, 0x36
+ ldrsh r1, [r7, r2]
+ lsls r1, 1
+ add r1, sp
+ adds r1, 0x4
+ movs r2, 0
+ ldrsh r3, [r1, r2]
+ str r3, [sp]
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_8063A6C
+ ldrh r1, [r4]
+ ldrh r0, [r6, 0x10]
+ adds r1, r0
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r5]
+ ldrh r0, [r6, 0x12]
+ adds r2, r0
+ lsls r2, 16
+ asrs r2, 16
+ adds r0, r6, 0
+ bl npc_coords_shift
+ ldrb r0, [r6]
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r6]
+ b _08064FF0
+ .align 2, 0
+_08064FC8: .4byte gUnknown_83A695E
+_08064FCC:
+ mov r1, r8
+ cmp r1, 0xFF
+ bne _08064FF0
+ adds r0, r6, 0
+ bl npc_coords_shift_still
+ ldrb r0, [r6]
+ movs r1, 0x8
+ orrs r0, r1
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r6]
+ adds r2, r7, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+_08064FF0:
+ mov r0, r8
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8064F3C
+
+ thumb_func_start sub_8065000
+sub_8065000: @ 8065000
+ push {lr}
+ ldr r2, _08065010 @ =sub_8068D3C
+ bl sub_8064F3C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08065010: .4byte sub_8068D3C
+ thumb_func_end sub_8065000
+
+ thumb_func_start sub_8065014
+sub_8065014: @ 8065014
+ push {lr}
+ ldr r2, _08065024 @ =sub_8068DC4
+ bl sub_8064F3C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08065024: .4byte sub_8068DC4
+ thumb_func_end sub_8065014
+
+ thumb_func_start sub_8065028
+sub_8065028: @ 8065028
+ push {lr}
+ bl sub_8065000
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _0806503A
+ movs r0, 0
+ b _0806503C
+_0806503A:
+ movs r0, 0x1
+_0806503C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065028
+
+ thumb_func_start sub_8065040
+sub_8065040: @ 8065040
+ push {lr}
+ bl sub_8065014
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _08065052
+ movs r0, 0
+ b _08065054
+_08065052:
+ movs r0, 0x1
+_08065054:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065040
+
+ thumb_func_start sub_8065058
+sub_8065058: @ 8065058
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065000
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08065072
+ cmp r0, 0xFF
+ bne _0806509E
+ movs r0, 0x1
+ b _080650A0
+_08065072:
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetOppositeDirection
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl ObjectEventSetDirection
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl get_go_image_anim_num
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl obj_npc_animation_step
+_0806509E:
+ movs r0, 0
+_080650A0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065058
+
+ thumb_func_start sub_80650A8
+sub_80650A8: @ 80650A8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0x2
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80650D4
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80650A8
+
+ thumb_func_start sub_80650D4
+sub_80650D4: @ 80650D4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080650E8
+ movs r0, 0
+ b _080650F8
+_080650E8:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080650F8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80650D4
+
+ thumb_func_start sub_8065100
+sub_8065100: @ 8065100
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x2
+ movs r3, 0x2
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806512C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065100
+
+ thumb_func_start sub_806512C
+sub_806512C: @ 806512C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065140
+ movs r0, 0
+ b _08065150
+_08065140:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08065150:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806512C
+
+ thumb_func_start sub_8065158
+sub_8065158: @ 8065158
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x3
+ movs r3, 0x2
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065184
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065158
+
+ thumb_func_start sub_8065184
+sub_8065184: @ 8065184
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065198
+ movs r0, 0
+ b _080651A8
+_08065198:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080651A8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065184
+
+ thumb_func_start sub_80651B0
+sub_80651B0: @ 80651B0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x4
+ movs r3, 0x2
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80651DC
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80651B0
+
+ thumb_func_start sub_80651DC
+sub_80651DC: @ 80651DC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080651F0
+ movs r0, 0
+ b _08065200
+_080651F0:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08065200:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80651DC
+
+ thumb_func_start sub_8065208
+sub_8065208: @ 8065208
+ movs r2, 0x1
+ strh r2, [r0, 0x32]
+ strh r1, [r0, 0x34]
+ bx lr
+ thumb_func_end sub_8065208
+
+ thumb_func_start sub_8065210
+sub_8065210: @ 8065210
+ push {lr}
+ ldrh r0, [r1, 0x34]
+ subs r0, 0x1
+ strh r0, [r1, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ beq _08065222
+ movs r0, 0
+ b _08065228
+_08065222:
+ movs r0, 0x2
+ strh r0, [r1, 0x32]
+ movs r0, 0x1
+_08065228:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065210
+
+ thumb_func_start sub_806522C
+sub_806522C: @ 806522C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8065208
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8065210
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806522C
+
+ thumb_func_start sub_806524C
+sub_806524C: @ 806524C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl sub_8065208
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8065210
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806524C
+
+ thumb_func_start sub_806526C
+sub_806526C: @ 806526C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl sub_8065208
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8065210
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806526C
+
+ thumb_func_start sub_806528C
+sub_806528C: @ 806528C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl sub_8065208
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8065210
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806528C
+
+ thumb_func_start sub_80652AC
+sub_80652AC: @ 80652AC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x10
+ bl sub_8065208
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8065210
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80652AC
+
+ thumb_func_start sub_80652CC
+sub_80652CC: @ 80652CC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80652EC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80652CC
+
+ thumb_func_start sub_80652EC
+sub_80652EC: @ 80652EC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080652FE
+ movs r0, 0
+ b _08065304
+_080652FE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065304:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80652EC
+
+ thumb_func_start sub_806530C
+sub_806530C: @ 806530C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806532C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806530C
+
+ thumb_func_start sub_806532C
+sub_806532C: @ 806532C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806533E
+ movs r0, 0
+ b _08065344
+_0806533E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065344:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806532C
+
+ thumb_func_start sub_806534C
+sub_806534C: @ 806534C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806536C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806534C
+
+ thumb_func_start sub_806536C
+sub_806536C: @ 806536C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806537E
+ movs r0, 0
+ b _08065384
+_0806537E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065384:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806536C
+
+ thumb_func_start sub_806538C
+sub_806538C: @ 806538C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80653AC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806538C
+
+ thumb_func_start sub_80653AC
+sub_80653AC: @ 80653AC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080653BE
+ movs r0, 0
+ b _080653C4
+_080653BE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080653C4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80653AC
+
+ thumb_func_start sub_80653CC
+sub_80653CC: @ 80653CC
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, r1, 0
+ bl obj_npc_ministep
+ lsls r0, 24
+ cmp r0, 0
+ bne _080653E0
+ movs r0, 0
+ b _080653F0
+_080653E0:
+ adds r0, r4, 0
+ bl npc_coords_shift_still
+ ldrb r0, [r4]
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_080653F0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80653CC
+
+ thumb_func_start sub_80653F8
+sub_80653F8: @ 80653F8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r1, [r4, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x1
+ beq _0806541A
+ movs r0, 0x1
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_0806541A:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8064678
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065438
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80653F8
+
+ thumb_func_start sub_8065438
+sub_8065438: @ 8065438
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl AnimateSprite
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80653CC
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065456
+ movs r0, 0
+ b _0806545C
+_08065456:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_0806545C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065438
+
+ thumb_func_start sub_8065464
+sub_8065464: @ 8065464
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r1, [r4, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x2
+ beq _08065486
+ movs r0, 0x2
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_08065486:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl sub_8064678
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80654A4
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065464
+
+ thumb_func_start sub_80654A4
+sub_80654A4: @ 80654A4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl AnimateSprite
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80653CC
+ lsls r0, 24
+ cmp r0, 0
+ bne _080654C2
+ movs r0, 0
+ b _080654C8
+_080654C2:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080654C8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80654A4
+
+ thumb_func_start sub_80654D0
+sub_80654D0: @ 80654D0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r1, [r4, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x3
+ beq _080654F2
+ movs r0, 0x3
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_080654F2:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl sub_8064678
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065510
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80654D0
+
+ thumb_func_start sub_8065510
+sub_8065510: @ 8065510
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl AnimateSprite
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80653CC
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806552E
+ movs r0, 0
+ b _08065534
+_0806552E:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08065534:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065510
+
+ thumb_func_start sub_806553C
+sub_806553C: @ 806553C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r1, [r4, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x4
+ beq _0806555E
+ movs r0, 0x4
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_0806555E:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl sub_8064678
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806557C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806553C
+
+ thumb_func_start sub_806557C
+sub_806557C: @ 806557C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl AnimateSprite
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80653CC
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806559A
+ movs r0, 0
+ b _080655A0
+_0806559A:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080655A0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806557C
+
+ thumb_func_start sub_80655A8
+sub_80655A8: @ 80655A8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r1, r2, 24
+ lsrs r1, 24
+ bl ObjectEventSetDirection
+ adds r0, r4, 0
+ bl npc_coords_shift_still
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+ strh r0, [r5, 0x32]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80655A8
+
+ thumb_func_start sub_80655D4
+sub_80655D4: @ 80655D4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r1, [r5, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x1
+ beq _080655F6
+ movs r0, 0x1
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_080655F6:
+ adds r0, r4, 0
+ bl AnimateSprite
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80655A8
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80655D4
+
+ thumb_func_start sub_8065610
+sub_8065610: @ 8065610
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r1, [r5, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x2
+ beq _08065632
+ movs r0, 0x2
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_08065632:
+ adds r0, r4, 0
+ bl AnimateSprite
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x2
+ bl sub_80655A8
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065610
+
+ thumb_func_start sub_806564C
+sub_806564C: @ 806564C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r1, [r5, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x3
+ beq _0806566E
+ movs r0, 0x3
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_0806566E:
+ adds r0, r4, 0
+ bl AnimateSprite
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x3
+ bl sub_80655A8
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806564C
+
+ thumb_func_start sub_8065688
+sub_8065688: @ 8065688
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r1, [r5, 0x18]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0x4
+ beq _080656AA
+ movs r0, 0x4
+ bl ObjectEventDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_080656AA:
+ adds r0, r4, 0
+ bl AnimateSprite
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x4
+ bl sub_80655A8
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065688
+
+ thumb_func_start sub_80656C4
+sub_80656C4: @ 80656C4
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ mov r8, r0
+ adds r6, r1, 0
+ adds r1, r2, 0
+ adds r4, r3, 0
+ ldr r5, [sp, 0x14]
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 16
+ lsrs r5, 16
+ bl ObjectEventSetDirection
+ mov r0, r8
+ adds r1, r6, 0
+ adds r2, r4, 0
+ bl npc_apply_anim_looping
+ adds r2, r6, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+ strh r0, [r6, 0x32]
+ strh r5, [r6, 0x34]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80656C4
+
+ thumb_func_start sub_806570C
+sub_806570C: @ 806570C
+ push {lr}
+ ldrh r0, [r1, 0x34]
+ subs r0, 0x1
+ strh r0, [r1, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ beq _0806571E
+ movs r0, 0
+ b _08065730
+_0806571E:
+ movs r0, 0x2
+ strh r0, [r1, 0x32]
+ adds r2, r1, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+_08065730:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806570C
+
+ thumb_func_start sub_8065734
+sub_8065734: @ 8065734
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrh r1, [r4, 0x34]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806575E
+ adds r3, r4, 0
+ adds r3, 0x2C
+ ldrb r2, [r3]
+ lsls r1, r2, 26
+ lsrs r1, 26
+ adds r1, 0x1
+ movs r0, 0x3F
+ ands r1, r0
+ movs r0, 0x40
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_0806575E:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065734
+
+ thumb_func_start sub_8065770
+sub_8065770: @ 8065770
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl get_go_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x20
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065734
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065770
+
+ thumb_func_start sub_80657A8
+sub_80657A8: @ 80657A8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl get_go_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x20
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065734
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80657A8
+
+ thumb_func_start sub_80657E0
+sub_80657E0: @ 80657E0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl get_go_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x20
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065734
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80657E0
+
+ thumb_func_start sub_8065818
+sub_8065818: @ 8065818
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl get_go_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x20
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065734
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065818
+
+ thumb_func_start sub_8065850
+sub_8065850: @ 8065850
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl get_go_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x10
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065850
+
+ thumb_func_start sub_8065888
+sub_8065888: @ 8065888
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl get_go_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x10
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065888
+
+ thumb_func_start sub_80658C0
+sub_80658C0: @ 80658C0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl get_go_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x10
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80658C0
+
+ thumb_func_start sub_80658F8
+sub_80658F8: @ 80658F8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl get_go_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x10
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80658F8
+
+ thumb_func_start sub_8065930
+sub_8065930: @ 8065930
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl get_go_fast_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065930
+
+ thumb_func_start sub_8065968
+sub_8065968: @ 8065968
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl get_go_fast_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065968
+
+ thumb_func_start sub_80659A0
+sub_80659A0: @ 80659A0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl get_go_fast_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80659A0
+
+ thumb_func_start sub_80659D8
+sub_80659D8: @ 80659D8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl get_go_fast_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80659D8
+
+ thumb_func_start sub_8065A10
+sub_8065A10: @ 8065A10
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl get_go_faster_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x4
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065A10
+
+ thumb_func_start sub_8065A48
+sub_8065A48: @ 8065A48
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl get_go_faster_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x4
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065A48
+
+ thumb_func_start sub_8065A80
+sub_8065A80: @ 8065A80
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl get_go_faster_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x4
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065A80
+
+ thumb_func_start sub_8065AB8
+sub_8065AB8: @ 8065AB8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl get_go_faster_image_anim_num
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x4
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065AB8
+
+ thumb_func_start sub_8065AF0
+sub_8065AF0: @ 8065AF0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x2
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065B10
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065AF0
+
+ thumb_func_start sub_8065B10
+sub_8065B10: @ 8065B10
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065B22
+ movs r0, 0
+ b _08065B28
+_08065B22:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065B28:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065B10
+
+ thumb_func_start sub_8065B30
+sub_8065B30: @ 8065B30
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x2
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065B50
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065B30
+
+ thumb_func_start sub_8065B50
+sub_8065B50: @ 8065B50
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065B62
+ movs r0, 0
+ b _08065B68
+_08065B62:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065B68:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065B50
+
+ thumb_func_start sub_8065B70
+sub_8065B70: @ 8065B70
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x2
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065B90
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065B70
+
+ thumb_func_start sub_8065B90
+sub_8065B90: @ 8065B90
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065BA2
+ movs r0, 0
+ b _08065BA8
+_08065BA2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065BA8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065B90
+
+ thumb_func_start sub_8065BB0
+sub_8065BB0: @ 8065BB0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x2
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065BD0
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065BB0
+
+ thumb_func_start sub_8065BD0
+sub_8065BD0: @ 8065BD0
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065BE2
+ movs r0, 0
+ b _08065BE8
+_08065BE2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065BE8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065BD0
+
+ thumb_func_start sub_8065BF0
+sub_8065BF0: @ 8065BF0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x3
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065C10
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065BF0
+
+ thumb_func_start sub_8065C10
+sub_8065C10: @ 8065C10
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065C22
+ movs r0, 0
+ b _08065C28
+_08065C22:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065C28:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065C10
+
+ thumb_func_start sub_8065C30
+sub_8065C30: @ 8065C30
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x3
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065C50
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065C30
+
+ thumb_func_start sub_8065C50
+sub_8065C50: @ 8065C50
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065C62
+ movs r0, 0
+ b _08065C68
+_08065C62:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065C68:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065C50
+
+ thumb_func_start sub_8065C70
+sub_8065C70: @ 8065C70
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x3
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065C90
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065C70
+
+ thumb_func_start sub_8065C90
+sub_8065C90: @ 8065C90
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065CA2
+ movs r0, 0
+ b _08065CA8
+_08065CA2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065CA8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065C90
+
+ thumb_func_start sub_8065CB0
+sub_8065CB0: @ 8065CB0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x3
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065CD0
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065CB0
+
+ thumb_func_start sub_8065CD0
+sub_8065CD0: @ 8065CD0
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065CE2
+ movs r0, 0
+ b _08065CE8
+_08065CE2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065CE8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065CD0
+
+ thumb_func_start sub_8065CF0
+sub_8065CF0: @ 8065CF0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x4
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065D10
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065CF0
+
+ thumb_func_start sub_8065D10
+sub_8065D10: @ 8065D10
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065D22
+ movs r0, 0
+ b _08065D28
+_08065D22:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065D28:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065D10
+
+ thumb_func_start sub_8065D30
+sub_8065D30: @ 8065D30
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x4
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065D50
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065D30
+
+ thumb_func_start sub_8065D50
+sub_8065D50: @ 8065D50
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065D62
+ movs r0, 0
+ b _08065D68
+_08065D62:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065D68:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065D50
+
+ thumb_func_start sub_8065D70
+sub_8065D70: @ 8065D70
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x4
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065D90
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065D70
+
+ thumb_func_start sub_8065D90
+sub_8065D90: @ 8065D90
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065DA2
+ movs r0, 0
+ b _08065DA8
+_08065DA2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065DA8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065D90
+
+ thumb_func_start sub_8065DB0
+sub_8065DB0: @ 8065DB0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x4
+ bl do_go_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065DD0
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065DB0
+
+ thumb_func_start sub_8065DD0
+sub_8065DD0: @ 8065DD0
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065DE2
+ movs r0, 0
+ b _08065DE8
+_08065DE2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065DE8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065DD0
+
+ thumb_func_start do_run_south_anim
+do_run_south_anim: @ 8065DF0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl do_run_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065E10
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end do_run_south_anim
+
+ thumb_func_start sub_8065E10
+sub_8065E10: @ 8065E10
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065E22
+ movs r0, 0
+ b _08065E28
+_08065E22:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065E28:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065E10
+
+ thumb_func_start do_run_north_anim
+do_run_north_anim: @ 8065E30
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl do_run_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065E50
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end do_run_north_anim
+
+ thumb_func_start sub_8065E50
+sub_8065E50: @ 8065E50
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065E62
+ movs r0, 0
+ b _08065E68
+_08065E62:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065E68:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065E50
+
+ thumb_func_start do_run_west_anim
+do_run_west_anim: @ 8065E70
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl do_run_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065E90
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end do_run_west_anim
+
+ thumb_func_start sub_8065E90
+sub_8065E90: @ 8065E90
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065EA2
+ movs r0, 0
+ b _08065EA8
+_08065EA2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065EA8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065E90
+
+ thumb_func_start do_run_east_anim
+do_run_east_anim: @ 8065EB0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ bl do_run_anim
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065ED0
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end do_run_east_anim
+
+ thumb_func_start sub_8065ED0
+sub_8065ED0: @ 8065ED0
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065EE2
+ movs r0, 0
+ b _08065EE8
+_08065EE2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065EE8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065ED0
+
+ thumb_func_start sub_8065EF0
+sub_8065EF0: @ 8065EF0
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x4
+ adds r6, r0, 0
+ mov r8, r1
+ lsls r5, r2, 24
+ lsrs r5, 24
+ ldrh r1, [r6, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r6, 0x12]
+ mov r4, sp
+ adds r4, 0x2
+ strh r0, [r4]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl ObjectEventSetDirection
+ adds r0, r5, 0
+ mov r1, sp
+ adds r2, r4, 0
+ bl MoveCoords
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0
+ ldrsh r2, [r4, r0]
+ adds r0, r6, 0
+ bl npc_coords_shift
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_8068CA4
+ mov r2, r8
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r0, [r6]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r6]
+ movs r0, 0x1
+ mov r1, r8
+ strh r0, [r1, 0x32]
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8065EF0
+
+ thumb_func_start sub_8065F60
+sub_8065F60: @ 8065F60
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ bl sub_8065EF0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl get_run_image_anim_num
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_apply_anim_looping
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8065F60
+
+ thumb_func_start sub_8065F8C
+sub_8065F8C: @ 8065F8C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8068CB4
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065FA2
+ movs r0, 0
+ b _08065FBE
+_08065FA2:
+ adds r0, r4, 0
+ bl npc_coords_shift_still
+ ldrb r0, [r4]
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+_08065FBE:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065F8C
+
+ thumb_func_start sub_8065FC4
+sub_8065FC4: @ 8065FC4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8065F60
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8065FE4
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065FC4
+
+ thumb_func_start sub_8065FE4
+sub_8065FE4: @ 8065FE4
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8065F8C
+ lsls r0, 24
+ cmp r0, 0
+ bne _08065FF6
+ movs r0, 0
+ b _08065FFC
+_08065FF6:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08065FFC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8065FE4
+
+ thumb_func_start sub_8066004
+sub_8066004: @ 8066004
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl sub_8065F60
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066024
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066004
+
+ thumb_func_start sub_8066024
+sub_8066024: @ 8066024
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8065F8C
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066036
+ movs r0, 0
+ b _0806603C
+_08066036:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_0806603C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066024
+
+ thumb_func_start sub_8066044
+sub_8066044: @ 8066044
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl sub_8065F60
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066064
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066044
+
+ thumb_func_start sub_8066064
+sub_8066064: @ 8066064
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8065F8C
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066076
+ movs r0, 0
+ b _0806607C
+_08066076:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_0806607C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066064
+
+ thumb_func_start sub_8066084
+sub_8066084: @ 8066084
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8065F60
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80660A4
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066084
+
+ thumb_func_start sub_80660A4
+sub_80660A4: @ 80660A4
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8065F8C
+ lsls r0, 24
+ cmp r0, 0
+ bne _080660B6
+ movs r0, 0
+ b _080660BC
+_080660B6:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080660BC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80660A4
+
+ thumb_func_start npc_set_direction_and_anim__an_proceed
+npc_set_direction_and_anim__an_proceed: @ 80660C4
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r1, r3, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ movs r2, 0
+ bl obj_anim_image_set_and_seek
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl ObjectEventSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x32]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_set_direction_and_anim__an_proceed
+
+ thumb_func_start sub_80660F0
+sub_80660F0: @ 80660F0
+ push {lr}
+ ldrb r2, [r0, 0x18]
+ lsrs r2, 4
+ adds r3, r1, 0
+ adds r3, 0x2A
+ ldrb r3, [r3]
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80660F0
+
+ thumb_func_start sub_8066108
+sub_8066108: @ 8066108
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8068E9C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806611C
+ movs r0, 0
+ b _08066122
+_0806611C:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08066122:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066108
+
+ thumb_func_start sub_8066128
+sub_8066128: @ 8066128
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r1, 0
+ lsls r4, r2, 24
+ lsrs r4, 24
+ movs r1, 0
+ str r1, [sp]
+ adds r1, r5, 0
+ adds r2, r4, 0
+ movs r3, 0x1
+ bl sub_8064E3C
+ adds r0, r4, 0
+ bl sub_8063480
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8066128
+
+ thumb_func_start sub_806615C
+sub_806615C: @ 806615C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8066128
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806617C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806615C
+
+ thumb_func_start sub_806617C
+sub_806617C: @ 806617C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065040
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066190
+ movs r0, 0
+ b _0806619E
+_08066190:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ ldrb r1, [r4]
+ subs r0, 0x23
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_0806619E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806617C
+
+ thumb_func_start sub_80661A4
+sub_80661A4: @ 80661A4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl sub_8066128
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80661C4
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80661A4
+
+ thumb_func_start sub_80661C4
+sub_80661C4: @ 80661C4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065040
+ lsls r0, 24
+ cmp r0, 0
+ bne _080661D8
+ movs r0, 0
+ b _080661E6
+_080661D8:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ ldrb r1, [r4]
+ subs r0, 0x23
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_080661E6:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80661C4
+
+ thumb_func_start sub_80661EC
+sub_80661EC: @ 80661EC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl sub_8066128
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806620C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80661EC
+
+ thumb_func_start sub_806620C
+sub_806620C: @ 806620C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065040
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066220
+ movs r0, 0
+ b _0806622E
+_08066220:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ ldrb r1, [r4]
+ subs r0, 0x23
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_0806622E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806620C
+
+ thumb_func_start sub_8066234
+sub_8066234: @ 8066234
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ bl sub_8066128
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066254
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066234
+
+ thumb_func_start sub_8066254
+sub_8066254: @ 8066254
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065040
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066268
+ movs r0, 0
+ b _08066276
+_08066268:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ ldrb r1, [r4]
+ subs r0, 0x23
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_08066276:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066254
+
+ thumb_func_start sub_806627C
+sub_806627C: @ 806627C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8066128
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806629C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806627C
+
+ thumb_func_start sub_806629C
+sub_806629C: @ 806629C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8065040
+ lsls r0, 24
+ cmp r0, 0
+ bne _080662AE
+ movs r0, 0
+ b _080662B4
+_080662AE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080662B4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806629C
+
+ thumb_func_start sub_80662BC
+sub_80662BC: @ 80662BC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl sub_8066128
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80662DC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80662BC
+
+ thumb_func_start sub_80662DC
+sub_80662DC: @ 80662DC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8065040
+ lsls r0, 24
+ cmp r0, 0
+ bne _080662EE
+ movs r0, 0
+ b _080662F4
+_080662EE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080662F4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80662DC
+
+ thumb_func_start sub_80662FC
+sub_80662FC: @ 80662FC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl sub_8066128
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806631C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80662FC
+
+ thumb_func_start sub_806631C
+sub_806631C: @ 806631C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8065040
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806632E
+ movs r0, 0
+ b _08066334
+_0806632E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08066334:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806631C
+
+ thumb_func_start sub_806633C
+sub_806633C: @ 806633C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ bl sub_8066128
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806635C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806633C
+
+ thumb_func_start sub_806635C
+sub_806635C: @ 806635C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_8065040
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806636E
+ movs r0, 0
+ b _08066374
+_0806636E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08066374:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806635C
+
+ thumb_func_start sub_806637C
+sub_806637C: @ 806637C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _080663C6
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ movs r2, 0x12
+ ldrsh r1, [r5, r2]
+ ldr r4, _080663D4 @ =gObjectEvents
+ mov r2, sp
+ ldrb r2, [r2]
+ lsls r3, r2, 3
+ adds r3, r2
+ lsls r3, 2
+ adds r3, r4
+ movs r4, 0x10
+ ldrsh r2, [r3, r4]
+ movs r4, 0x12
+ ldrsh r3, [r3, r4]
+ bl sub_80635DC
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl an_look_any
+_080663C6:
+ movs r0, 0x1
+ strh r0, [r6, 0x32]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080663D4: .4byte gObjectEvents
+ thumb_func_end sub_806637C
+
+ thumb_func_start sub_80663D8
+sub_80663D8: @ 80663D8
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806642A
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ movs r2, 0x12
+ ldrsh r1, [r5, r2]
+ ldr r4, _08066438 @ =gObjectEvents
+ mov r2, sp
+ ldrb r2, [r2]
+ lsls r3, r2, 3
+ adds r3, r2
+ lsls r3, 2
+ adds r3, r4
+ movs r4, 0x10
+ ldrsh r2, [r3, r4]
+ movs r4, 0x12
+ ldrsh r3, [r3, r4]
+ bl sub_80635DC
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetOppositeDirection
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl an_look_any
+_0806642A:
+ movs r0, 0x1
+ strh r0, [r6, 0x32]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08066438: .4byte gObjectEvents
+ thumb_func_end sub_80663D8
+
+ thumb_func_start sub_806643C
+sub_806643C: @ 806643C
+ ldrb r2, [r0, 0x1]
+ movs r3, 0x2
+ orrs r2, r3
+ strb r2, [r0, 0x1]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_806643C
+
+ thumb_func_start sub_806644C
+sub_806644C: @ 806644C
+ ldrb r3, [r0, 0x1]
+ movs r2, 0x3
+ negs r2, r2
+ ands r2, r3
+ strb r2, [r0, 0x1]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_806644C
+
+ thumb_func_start sub_806645C
+sub_806645C: @ 806645C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066488
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806645C
+
+ thumb_func_start sub_8066488
+sub_8066488: @ 8066488
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806649C
+ movs r0, 0
+ b _080664AC
+_0806649C:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080664AC:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066488
+
+ thumb_func_start sub_80664B4
+sub_80664B4: @ 80664B4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80664E0
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80664B4
+
+ thumb_func_start sub_80664E0
+sub_80664E0: @ 80664E0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080664F4
+ movs r0, 0
+ b _08066504
+_080664F4:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08066504:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80664E0
+
+ thumb_func_start sub_806650C
+sub_806650C: @ 806650C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066538
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806650C
+
+ thumb_func_start sub_8066538
+sub_8066538: @ 8066538
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806654C
+ movs r0, 0
+ b _0806655C
+_0806654C:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_0806655C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066538
+
+ thumb_func_start sub_8066564
+sub_8066564: @ 8066564
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066590
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066564
+
+ thumb_func_start sub_8066590
+sub_8066590: @ 8066590
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080665A4
+ movs r0, 0
+ b _080665B4
+_080665A4:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080665B4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066590
+
+ thumb_func_start sub_80665BC
+sub_80665BC: @ 80665BC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80665E8
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80665BC
+
+ thumb_func_start sub_80665E8
+sub_80665E8: @ 80665E8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080665FC
+ movs r0, 0
+ b _0806660C
+_080665FC:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_0806660C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80665E8
+
+ thumb_func_start sub_8066614
+sub_8066614: @ 8066614
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x2
+ movs r3, 0
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066640
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066614
+
+ thumb_func_start sub_8066640
+sub_8066640: @ 8066640
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066654
+ movs r0, 0
+ b _08066664
+_08066654:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08066664:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066640
+
+ thumb_func_start sub_806666C
+sub_806666C: @ 806666C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x3
+ movs r3, 0
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066698
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806666C
+
+ thumb_func_start sub_8066698
+sub_8066698: @ 8066698
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080666AC
+ movs r0, 0
+ b _080666BC
+_080666AC:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080666BC:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066698
+
+ thumb_func_start sub_80666C4
+sub_80666C4: @ 80666C4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x4
+ movs r3, 0
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80666F0
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80666C4
+
+ thumb_func_start sub_80666F0
+sub_80666F0: @ 80666F0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066704
+ movs r0, 0
+ b _08066714
+_08066704:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08066714:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80666F0
+
+ thumb_func_start sub_806671C
+sub_806671C: @ 806671C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066748
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806671C
+
+ thumb_func_start sub_8066748
+sub_8066748: @ 8066748
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065058
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806675C
+ movs r0, 0
+ b _0806676C
+_0806675C:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_0806676C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066748
+
+ thumb_func_start sub_8066774
+sub_8066774: @ 8066774
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x2
+ movs r3, 0
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80667A0
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066774
+
+ thumb_func_start sub_80667A0
+sub_80667A0: @ 80667A0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065058
+ lsls r0, 24
+ cmp r0, 0
+ bne _080667B4
+ movs r0, 0
+ b _080667C4
+_080667B4:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080667C4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80667A0
+
+ thumb_func_start sub_80667CC
+sub_80667CC: @ 80667CC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x3
+ movs r3, 0
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80667F8
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80667CC
+
+ thumb_func_start sub_80667F8
+sub_80667F8: @ 80667F8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065058
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806680C
+ movs r0, 0
+ b _0806681C
+_0806680C:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_0806681C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80667F8
+
+ thumb_func_start sub_8066824
+sub_8066824: @ 8066824
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x4
+ movs r3, 0
+ bl maybe_shadow_1
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066850
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066824
+
+ thumb_func_start sub_8066850
+sub_8066850: @ 8066850
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065058
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066864
+ movs r0, 0
+ b _08066874
+_08066864:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08066874:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066850
+
+ thumb_func_start sub_806687C
+sub_806687C: @ 806687C
+ push {lr}
+ ldr r3, _08066890 @ =gUnknown_839FD5D
+ ldrb r2, [r0, 0x6]
+ adds r2, r3
+ ldrb r2, [r2]
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08066890: .4byte gUnknown_839FD5D
+ thumb_func_end sub_806687C
+
+ thumb_func_start sub_8066894
+sub_8066894: @ 8066894
+ push {lr}
+ movs r2, 0x1
+ movs r3, 0x14
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066894
+
+ thumb_func_start sub_80668A4
+sub_80668A4: @ 80668A4
+ ldrb r3, [r0, 0x3]
+ movs r2, 0x3
+ negs r2, r2
+ ands r2, r3
+ strb r2, [r0, 0x3]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_80668A4
+
+ thumb_func_start sub_80668B4
+sub_80668B4: @ 80668B4
+ ldrb r2, [r0, 0x3]
+ movs r3, 0x2
+ orrs r2, r3
+ strb r2, [r0, 0x3]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_80668B4
+
+ thumb_func_start sub_80668C4
+sub_80668C4: @ 80668C4
+ ldrb r2, [r0, 0x1]
+ movs r3, 0x10
+ orrs r2, r3
+ strb r2, [r0, 0x1]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_80668C4
+
+ thumb_func_start sub_80668D4
+sub_80668D4: @ 80668D4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x5]
+ bl GetObjectEventGraphicsInfo
+ ldrb r1, [r0, 0xC]
+ lsls r1, 25
+ lsrs r1, 31
+ lsls r1, 4
+ ldrb r2, [r4, 0x1]
+ movs r0, 0x11
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ movs r0, 0x1
+ strh r0, [r5, 0x32]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80668D4
+
+ thumb_func_start sub_8066900
+sub_8066900: @ 8066900
+ ldrb r2, [r0, 0x1]
+ movs r3, 0x20
+ orrs r2, r3
+ strb r2, [r0, 0x1]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_8066900
+
+ thumb_func_start sub_8066910
+sub_8066910: @ 8066910
+ ldrb r3, [r0, 0x1]
+ movs r2, 0x21
+ negs r2, r2
+ ands r2, r3
+ strb r2, [r0, 0x1]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_8066910
+
+ thumb_func_start do_exclamation_mark_bubble_1
+do_exclamation_mark_bubble_1: @ 8066920
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r1, _08066940 @ =gFieldEffectArguments
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ bl ObjectEventGetLocalIdAndMap
+ movs r0, 0
+ bl FieldEffectStart
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08066940: .4byte gFieldEffectArguments
+ thumb_func_end do_exclamation_mark_bubble_1
+
+ thumb_func_start do_exclamation_mark_bubble_2
+do_exclamation_mark_bubble_2: @ 8066944
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r1, _08066964 @ =gFieldEffectArguments
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ bl ObjectEventGetLocalIdAndMap
+ movs r0, 0x21
+ bl FieldEffectStart
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08066964: .4byte gFieldEffectArguments
+ thumb_func_end do_exclamation_mark_bubble_2
+
+ thumb_func_start do_heart_bubble
+do_heart_bubble: @ 8066968
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r1, _08066988 @ =gFieldEffectArguments
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ bl ObjectEventGetLocalIdAndMap
+ movs r0, 0x2E
+ bl FieldEffectStart
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08066988: .4byte gFieldEffectArguments
+ thumb_func_end do_heart_bubble
+
+ thumb_func_start sub_806698C
+sub_806698C: @ 806698C
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r1, _080669AC @ =gFieldEffectArguments
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ bl ObjectEventGetLocalIdAndMap
+ movs r0, 0x42
+ bl FieldEffectStart
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080669AC: .4byte gFieldEffectArguments
+ thumb_func_end sub_806698C
+
+ thumb_func_start sub_80669B0
+sub_80669B0: @ 80669B0
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r1, _080669D0 @ =gFieldEffectArguments
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ bl ObjectEventGetLocalIdAndMap
+ movs r0, 0x40
+ bl FieldEffectStart
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080669D0: .4byte gFieldEffectArguments
+ thumb_func_end sub_80669B0
+
+ thumb_func_start sub_80669D4
+sub_80669D4: @ 80669D4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0x3F
+ bne _080669EA
+ adds r0, r4, 0
+ bl sub_80824EC
+ movs r0, 0
+ b _08066A12
+_080669EA:
+ subs r0, 0x39
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08066A0C
+ adds r0, r4, 0
+ bl sub_80DCBB8
+ movs r0, 0x1
+ strh r0, [r5, 0x32]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066A18
+ lsls r0, 24
+ lsrs r0, 24
+ b _08066A12
+_08066A0C:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08066A12:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80669D4
+
+ thumb_func_start sub_8066A18
+sub_8066A18: @ 8066A18
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_80DCBE0
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066A2A
+ movs r0, 0
+ b _08066A30
+_08066A2A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08066A30:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066A18
+
+ thumb_func_start sub_8066A38
+sub_8066A38: @ 8066A38
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x1
+ movs r2, 0
+ bl obj_anim_image_set_and_seek
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066A38
+
+ thumb_func_start sub_8066A54
+sub_8066A54: @ 8066A54
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8068E9C
+ lsls r0, 24
+ cmp r0, 0
+ beq _08066A70
+ adds r0, r4, 0
+ movs r1, 0x20
+ bl SetObjectEventStepTimer
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+_08066A70:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066A54
+
+ thumb_func_start sub_8066A78
+sub_8066A78: @ 8066A78
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r2, [r4, 0x1]
+ lsls r1, r2, 26
+ lsrs r1, 31
+ movs r0, 0x1
+ eors r1, r0
+ lsls r1, 5
+ subs r0, 0x22
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08066AAA
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ movs r0, 0x3
+ strh r0, [r5, 0x32]
+_08066AAA:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066A78
+
+ thumb_func_start sub_8066AB4
+sub_8066AB4: @ 8066AB4
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x1
+ movs r2, 0
+ bl obj_anim_image_set_and_seek
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066AB4
+
+ thumb_func_start sub_8066AD0
+sub_8066AD0: @ 8066AD0
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8068E9C
+ lsls r0, 24
+ cmp r0, 0
+ beq _08066AEC
+ adds r0, r4, 0
+ movs r1, 0x20
+ bl SetObjectEventStepTimer
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+_08066AEC:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066AD0
+
+ thumb_func_start sub_8066AF4
+sub_8066AF4: @ 8066AF4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r2, [r4, 0x1]
+ lsls r1, r2, 26
+ lsrs r1, 31
+ movs r0, 0x1
+ eors r1, r0
+ lsls r1, 5
+ subs r0, 0x22
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r0, r5, 0
+ bl RunObjectEventStepTimer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08066B26
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ movs r0, 0x3
+ strh r0, [r5, 0x32]
+_08066B26:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066AF4
+
+ thumb_func_start sub_8066B30
+sub_8066B30: @ 8066B30
+ ldrb r2, [r0, 0x3]
+ movs r3, 0x4
+ orrs r2, r3
+ strb r2, [r0, 0x3]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_8066B30
+
+ thumb_func_start sub_8066B40
+sub_8066B40: @ 8066B40
+ ldrb r3, [r0, 0x3]
+ movs r2, 0x5
+ negs r2, r2
+ ands r2, r3
+ strb r2, [r0, 0x3]
+ movs r0, 0x1
+ strh r0, [r1, 0x32]
+ bx lr
+ thumb_func_end sub_8066B40
+
+ thumb_func_start sub_8066B50
+sub_8066B50: @ 8066B50
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x3
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r0, r4, 0
+ bl InitSpriteAffineAnim
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ adds r4, 0x42
+ ldrb r1, [r4]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066B50
+
+ thumb_func_start sub_8066B80
+sub_8066B80: @ 8066B80
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x4
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x1]
+ lsrs r1, 6
+ ldrb r2, [r4, 0x3]
+ lsrs r2, 6
+ movs r3, 0
+ adds r0, r4, 0
+ bl CalcCenterToCornerVec
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066B80
+
+ thumb_func_start sub_8066BB0
+sub_8066BB0: @ 8066BB0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ movs r2, 0x1
+ bl sub_8064830
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAffineAnimIfDifferent
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8066BE4
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066BB0
+
+ thumb_func_start sub_8066BE4
+sub_8066BE4: @ 8066BE4
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066BF6
+ movs r0, 0
+ b _08066C08
+_08066BF6:
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08066C08:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066BE4
+
+ thumb_func_start sub_8066C10
+sub_8066C10: @ 8066C10
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ movs r2, 0x1
+ bl sub_8064830
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnimIfDifferent
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8066C44
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066C10
+
+ thumb_func_start sub_8066C44
+sub_8066C44: @ 8066C44
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066C56
+ movs r0, 0
+ b _08066C68
+_08066C56:
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08066C68:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066C44
+
+ thumb_func_start sub_8066C70
+sub_8066C70: @ 8066C70
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r6, r1, 0
+ lsls r4, r2, 24
+ lsrs r4, 24
+ adds r1, r4, 0
+ bl ObjectEventSetDirection
+ adds r0, r5, 0
+ bl npc_coords_shift_still
+ adds r0, r4, 0
+ bl sub_80634E0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl obj_npc_animation_step
+ adds r2, r6, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+ strh r0, [r6, 0x32]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8066C70
+
+ thumb_func_start sub_8066CB0
+sub_8066CB0: @ 8066CB0
+ push {lr}
+ movs r2, 0x1
+ bl sub_8066C70
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066CB0
+
+ thumb_func_start sub_8066CC0
+sub_8066CC0: @ 8066CC0
+ push {lr}
+ movs r2, 0x2
+ bl sub_8066C70
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066CC0
+
+ thumb_func_start sub_8066CD0
+sub_8066CD0: @ 8066CD0
+ push {lr}
+ movs r2, 0x3
+ bl sub_8066C70
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066CD0
+
+ thumb_func_start sub_8066CE0
+sub_8066CE0: @ 8066CE0
+ push {lr}
+ movs r2, 0x4
+ bl sub_8066C70
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066CE0
+
+ thumb_func_start sub_8066CF0
+sub_8066CF0: @ 8066CF0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl sub_8063490
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066CF0
+
+ thumb_func_start sub_8066D14
+sub_8066D14: @ 8066D14
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl sub_8063490
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066D14
+
+ thumb_func_start sub_8066D38
+sub_8066D38: @ 8066D38
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl sub_8063490
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066D38
+
+ thumb_func_start sub_8066D5C
+sub_8066D5C: @ 8066D5C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl sub_8063490
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066D5C
+
+ thumb_func_start sub_8066D80
+sub_8066D80: @ 8066D80
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl sub_80634B0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066D80
+
+ thumb_func_start sub_8066DA4
+sub_8066DA4: @ 8066DA4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl sub_80634B0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066DA4
+
+ thumb_func_start sub_8066DC8
+sub_8066DC8: @ 8066DC8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl sub_80634B0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066DC8
+
+ thumb_func_start sub_8066DEC
+sub_8066DEC: @ 8066DEC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl sub_80634B0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066DEC
+
+ thumb_func_start sub_8066E10
+sub_8066E10: @ 8066E10
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl sub_80634D0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066E10
+
+ thumb_func_start sub_8066E34
+sub_8066E34: @ 8066E34
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl sub_80634D0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066E34
+
+ thumb_func_start sub_8066E58
+sub_8066E58: @ 8066E58
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl sub_80634D0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066E58
+
+ thumb_func_start sub_8066E7C
+sub_8066E7C: @ 8066E7C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl sub_80634D0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ bl npc_set_direction_and_anim__an_proceed
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066E7C
+
+ thumb_func_start sub_8066EA0
+sub_8066EA0: @ 8066EA0
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r4, r2, 0
+ ldr r0, [sp, 0x14]
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ adds r0, r6, 0
+ adds r2, r4, 0
+ bl sub_8064E3C
+ adds r0, r4, 0
+ bl sub_8063490
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnimIfDifferent
+ adds r0, r6, 0
+ bl DoShadowFieldEffect
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8066EA0
+
+ thumb_func_start sub_8066EE4
+sub_8066EE4: @ 8066EE4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066F10
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066EE4
+
+ thumb_func_start sub_8066F10
+sub_8066F10: @ 8066F10
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066F24
+ movs r0, 0
+ b _08066F34
+_08066F24:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08066F34:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066F10
+
+ thumb_func_start sub_8066F3C
+sub_8066F3C: @ 8066F3C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x2
+ movs r3, 0
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066F68
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066F3C
+
+ thumb_func_start sub_8066F68
+sub_8066F68: @ 8066F68
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066F7C
+ movs r0, 0
+ b _08066F8C
+_08066F7C:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08066F8C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066F68
+
+ thumb_func_start sub_8066F94
+sub_8066F94: @ 8066F94
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x3
+ movs r3, 0
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8066FC0
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066F94
+
+ thumb_func_start sub_8066FC0
+sub_8066FC0: @ 8066FC0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08066FD4
+ movs r0, 0
+ b _08066FE4
+_08066FD4:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08066FE4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066FC0
+
+ thumb_func_start sub_8066FEC
+sub_8066FEC: @ 8066FEC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x4
+ movs r3, 0
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8067018
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8066FEC
+
+ thumb_func_start sub_8067018
+sub_8067018: @ 8067018
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806702C
+ movs r0, 0
+ b _0806703C
+_0806702C:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_0806703C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067018
+
+ thumb_func_start sub_8067044
+sub_8067044: @ 8067044
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8067070
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067044
+
+ thumb_func_start sub_8067070
+sub_8067070: @ 8067070
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08067084
+ movs r0, 0
+ b _08067094
+_08067084:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08067094:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067070
+
+ thumb_func_start sub_806709C
+sub_806709C: @ 806709C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80670C8
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806709C
+
+ thumb_func_start sub_80670C8
+sub_80670C8: @ 80670C8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080670DC
+ movs r0, 0
+ b _080670EC
+_080670DC:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080670EC:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80670C8
+
+ thumb_func_start sub_80670F4
+sub_80670F4: @ 80670F4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8067120
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80670F4
+
+ thumb_func_start sub_8067120
+sub_8067120: @ 8067120
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08067134
+ movs r0, 0
+ b _08067144
+_08067134:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08067144:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067120
+
+ thumb_func_start sub_806714C
+sub_806714C: @ 806714C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8067178
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806714C
+
+ thumb_func_start sub_8067178
+sub_8067178: @ 8067178
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806718C
+ movs r0, 0
+ b _0806719C
+_0806718C:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_0806719C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067178
+
+ thumb_func_start sub_80671A4
+sub_80671A4: @ 80671A4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0x2
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80671D0
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80671A4
+
+ thumb_func_start sub_80671D0
+sub_80671D0: @ 80671D0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080671E4
+ movs r0, 0
+ b _080671F4
+_080671E4:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080671F4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80671D0
+
+ thumb_func_start sub_80671FC
+sub_80671FC: @ 80671FC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x2
+ movs r3, 0x2
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8067228
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80671FC
+
+ thumb_func_start sub_8067228
+sub_8067228: @ 8067228
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806723C
+ movs r0, 0
+ b _0806724C
+_0806723C:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_0806724C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067228
+
+ thumb_func_start sub_8067254
+sub_8067254: @ 8067254
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x3
+ movs r3, 0x2
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8067280
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067254
+
+ thumb_func_start sub_8067280
+sub_8067280: @ 8067280
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _08067294
+ movs r0, 0
+ b _080672A4
+_08067294:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080672A4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067280
+
+ thumb_func_start sub_80672AC
+sub_80672AC: @ 80672AC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x4
+ movs r3, 0x2
+ bl sub_8066EA0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80672D8
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80672AC
+
+ thumb_func_start sub_80672D8
+sub_80672D8: @ 80672D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8065028
+ lsls r0, 24
+ cmp r0, 0
+ bne _080672EC
+ movs r0, 0
+ b _080672FC
+_080672EC:
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4, 0x2]
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080672FC:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80672D8
+
+ thumb_func_start sub_8067304
+sub_8067304: @ 8067304
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl sub_80634E0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067304
+
+ thumb_func_start sub_806733C
+sub_806733C: @ 806733C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl sub_80634E0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806733C
+
+ thumb_func_start sub_8067374
+sub_8067374: @ 8067374
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl sub_80634E0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x3
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067374
+
+ thumb_func_start sub_80673AC
+sub_80673AC: @ 80673AC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl sub_80634E0
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x4
+ bl sub_80656C4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806570C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80673AC
+
+ thumb_func_start sub_80673E4
+sub_80673E4: @ 80673E4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ bl sub_8064678
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8063490
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ movs r1, 0
+ bl SeekSpriteAnim
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80673E4
+
+ thumb_func_start sub_806741C
+sub_806741C: @ 806741C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_80673E4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806743C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806741C
+
+ thumb_func_start sub_806743C
+sub_806743C: @ 806743C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806744E
+ movs r0, 0
+ b _08067454
+_0806744E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08067454:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806743C
+
+ thumb_func_start sub_806745C
+sub_806745C: @ 806745C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl sub_80673E4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806747C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806745C
+
+ thumb_func_start sub_806747C
+sub_806747C: @ 806747C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806748E
+ movs r0, 0
+ b _08067494
+_0806748E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08067494:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806747C
+
+ thumb_func_start sub_806749C
+sub_806749C: @ 806749C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl sub_80673E4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80674BC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806749C
+
+ thumb_func_start sub_80674BC
+sub_80674BC: @ 80674BC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080674CE
+ movs r0, 0
+ b _080674D4
+_080674CE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080674D4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80674BC
+
+ thumb_func_start sub_80674DC
+sub_80674DC: @ 80674DC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl sub_80673E4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80674FC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80674DC
+
+ thumb_func_start sub_80674FC
+sub_80674FC: @ 80674FC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806750E
+ movs r0, 0
+ b _08067514
+_0806750E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08067514:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80674FC
+
+ thumb_func_start sub_806751C
+sub_806751C: @ 806751C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ bl sub_8064678
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_80634E0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_apply_anim_looping
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806751C
+
+ thumb_func_start sub_806754C
+sub_806754C: @ 806754C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_806751C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806756C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806754C
+
+ thumb_func_start sub_806756C
+sub_806756C: @ 806756C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806757E
+ movs r0, 0
+ b _08067584
+_0806757E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08067584:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806756C
+
+ thumb_func_start sub_806758C
+sub_806758C: @ 806758C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl sub_806751C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80675AC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806758C
+
+ thumb_func_start sub_80675AC
+sub_80675AC: @ 80675AC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080675BE
+ movs r0, 0
+ b _080675C4
+_080675BE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080675C4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80675AC
+
+ thumb_func_start sub_80675CC
+sub_80675CC: @ 80675CC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl sub_806751C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80675EC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80675CC
+
+ thumb_func_start sub_80675EC
+sub_80675EC: @ 80675EC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080675FE
+ movs r0, 0
+ b _08067604
+_080675FE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08067604:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80675EC
+
+ thumb_func_start sub_806760C
+sub_806760C: @ 806760C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl sub_806751C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806762C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806760C
+
+ thumb_func_start sub_806762C
+sub_806762C: @ 806762C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806763E
+ movs r0, 0
+ b _08067644
+_0806763E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08067644:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806762C
+
+ thumb_func_start sub_806764C
+sub_806764C: @ 806764C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ bl sub_8064678
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_80634C0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_apply_anim_looping
+ adds r0, r5, 0
+ movs r1, 0
+ bl SeekSpriteAnim
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806764C
+
+ thumb_func_start sub_8067684
+sub_8067684: @ 8067684
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_806764C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80676A4
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067684
+
+ thumb_func_start sub_80676A4
+sub_80676A4: @ 80676A4
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080676B6
+ movs r0, 0
+ b _080676BC
+_080676B6:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080676BC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80676A4
+
+ thumb_func_start sub_80676C4
+sub_80676C4: @ 80676C4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl sub_806764C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80676E4
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80676C4
+
+ thumb_func_start sub_80676E4
+sub_80676E4: @ 80676E4
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080676F6
+ movs r0, 0
+ b _080676FC
+_080676F6:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080676FC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80676E4
+
+ thumb_func_start sub_8067704
+sub_8067704: @ 8067704
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl sub_806764C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8067724
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067704
+
+ thumb_func_start sub_8067724
+sub_8067724: @ 8067724
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08067736
+ movs r0, 0
+ b _0806773C
+_08067736:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_0806773C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067724
+
+ thumb_func_start sub_8067744
+sub_8067744: @ 8067744
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl sub_806764C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8067764
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067744
+
+ thumb_func_start sub_8067764
+sub_8067764: @ 8067764
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08067776
+ movs r0, 0
+ b _0806777C
+_08067776:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_0806777C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067764
+
+ thumb_func_start sub_8067784
+sub_8067784: @ 8067784
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x14
+ bl StartSpriteAnim
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5, 0x1]
+ movs r1, 0
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ strh r1, [r4, 0x36]
+ strh r1, [r4, 0x38]
+ strh r1, [r4, 0x3A]
+ strh r1, [r4, 0x3C]
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067784
+
+ thumb_func_start sub_80677C0
+sub_80677C0: @ 80677C0
+ adds r1, 0x3F
+ ldrb r0, [r1]
+ lsls r0, 27
+ lsrs r0, 31
+ bx lr
+ thumb_func_end sub_80677C0
+
+ thumb_func_start sub_80677CC
+sub_80677CC: @ 80677CC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _08067854
+ cmp r1, 0x1
+ bgt _080677E4
+ cmp r1, 0
+ beq _080677EA
+ b _080678B6
+_080677E4:
+ cmp r1, 0x2
+ beq _08067896
+ b _080678B6
+_080677EA:
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0xA
+ strh r0, [r4, 0x3A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7F
+ ble _08067822
+ strh r1, [r4, 0x3A]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ strh r0, [r4, 0x3C]
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5, 0x1]
+_08067822:
+ ldr r1, _08067850 @ =gSineTable
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ lsls r0, r1, 1
+ adds r0, r1
+ asrs r0, 7
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ negs r1, r0
+ orrs r1, r0
+ lsrs r1, 31
+ lsls r1, 1
+ ldrb r2, [r5]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5]
+ b _080678B6
+ .align 2, 0
+_08067850: .4byte gSineTable
+_08067854:
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ movs r6, 0
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _0806788A
+ strh r6, [r4, 0x36]
+ adds r0, r4, 0
+ movs r1, 0x14
+ bl StartSpriteAnim
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5, 0x1]
+ strh r6, [r4, 0x3C]
+ b _080678B6
+_0806788A:
+ ldrb r1, [r5]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5]
+ b _080678B6
+_08067896:
+ ldrb r1, [r5]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x50
+ ble _080678B6
+ movs r0, 0
+ strh r0, [r4, 0x36]
+ movs r0, 0x1
+ b _080678B8
+_080678B6:
+ movs r0, 0
+_080678B8:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80677CC
+
+ thumb_func_start sub_80678C0
+sub_80678C0: @ 80678C0
+ push {r4,lr}
+ ldrh r2, [r1, 0x3C]
+ adds r2, 0x4
+ movs r0, 0xFF
+ ands r2, r0
+ strh r2, [r1, 0x3C]
+ ldr r3, _080678EC @ =gSineTable
+ movs r4, 0x3C
+ ldrsh r0, [r1, r4]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 23
+ strh r0, [r1, 0x24]
+ movs r0, 0
+ cmp r2, 0
+ bne _080678E6
+ movs r0, 0x1
+_080678E6:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080678EC: .4byte gSineTable
+ thumb_func_end sub_80678C0
+
+ thumb_func_start sub_80678F0
+sub_80678F0: @ 80678F0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x1C
+ bl StartSpriteAnim
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5, 0x1]
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80678F0
+
+ thumb_func_start sub_8067924
+sub_8067924: @ 8067924
+ adds r1, 0x3F
+ ldrb r0, [r1]
+ lsls r0, 27
+ lsrs r0, 31
+ bx lr
+ thumb_func_end sub_8067924
+
+ thumb_func_start sub_8067930
+sub_8067930: @ 8067930
+ movs r0, 0x1
+ bx lr
+ thumb_func_end sub_8067930
+
+ thumb_func_start sub_8067934
+sub_8067934: @ 8067934
+ adds r1, 0x2C
+ ldrb r0, [r1]
+ movs r2, 0x40
+ orrs r0, r2
+ strb r0, [r1]
+ movs r0, 0x1
+ bx lr
+ thumb_func_end sub_8067934
+
+ thumb_func_start sub_8067944
+sub_8067944: @ 8067944
+ movs r0, 0
+ strh r0, [r1, 0x26]
+ ldrh r0, [r1, 0x32]
+ adds r0, 0x1
+ strh r0, [r1, 0x32]
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_8067944
+
+ thumb_func_start sub_8067954
+sub_8067954: @ 8067954
+ push {lr}
+ adds r2, r1, 0
+ ldrh r0, [r2, 0x26]
+ subs r0, 0x8
+ strh r0, [r2, 0x26]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0xA0
+ negs r1, r1
+ cmp r0, r1
+ bne _08067970
+ ldrh r0, [r2, 0x32]
+ adds r0, 0x1
+ strh r0, [r2, 0x32]
+_08067970:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8067954
+
+ thumb_func_start sub_8067978
+sub_8067978: @ 8067978
+ ldr r0, _08067988 @ =0x0000ff60
+ strh r0, [r1, 0x26]
+ ldrh r0, [r1, 0x32]
+ adds r0, 0x1
+ strh r0, [r1, 0x32]
+ movs r0, 0
+ bx lr
+ .align 2, 0
+_08067988: .4byte 0x0000ff60
+ thumb_func_end sub_8067978
+
+ thumb_func_start sub_806798C
+sub_806798C: @ 806798C
+ push {lr}
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x8
+ strh r0, [r1, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080679A0
+ ldrh r0, [r1, 0x32]
+ adds r0, 0x1
+ strh r0, [r1, 0x32]
+_080679A0:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806798C
+
+ thumb_func_start sub_80679A8
+sub_80679A8: @ 80679A8
+ movs r0, 0x1
+ bx lr
+ thumb_func_end sub_80679A8
+
+ thumb_func_start npc_obj_transfer_image_anim_pause_flag
+npc_obj_transfer_image_anim_pause_flag: @ 80679AC
+ push {lr}
+ ldrb r0, [r0, 0x1]
+ lsls r0, 29
+ cmp r0, 0
+ bge _080679C2
+ adds r0, r1, 0
+ adds r0, 0x2C
+ ldrb r1, [r0]
+ movs r2, 0x40
+ orrs r1, r2
+ strb r1, [r0]
+_080679C2:
+ pop {r0}
+ bx r0
+ thumb_func_end npc_obj_transfer_image_anim_pause_flag
+
+ thumb_func_start sub_80679C8
+sub_80679C8: @ 80679C8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrb r3, [r4, 0x1]
+ lsls r0, r3, 28
+ cmp r0, 0
+ bge _080679F0
+ adds r2, r1, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ movs r1, 0x9
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r4, 0x1]
+_080679F0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80679C8
+
+ thumb_func_start sub_80679F8
+sub_80679F8: @ 80679F8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8067A10
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl npc_update_obj_anim_flag
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80679F8
+
+ thumb_func_start sub_8067A10
+sub_8067A10: @ 8067A10
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5, 0x1]
+ ldrb r0, [r5, 0x5]
+ bl GetObjectEventGraphicsInfo
+ adds r7, r0, 0
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08067A74
+ ldrh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r1, r0
+ adds r0, r4, 0
+ adds r0, 0x28
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldr r2, _08067A6C @ =gSpriteCoordOffsetX
+ adds r0, r1
+ ldrh r2, [r2]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r3, r0, 16
+ ldrh r1, [r4, 0x26]
+ ldrh r0, [r4, 0x22]
+ adds r1, r0
+ adds r0, r4, 0
+ adds r0, 0x29
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldr r2, _08067A70 @ =gSpriteCoordOffsetY
+ adds r0, r1
+ ldrh r2, [r2]
+ adds r0, r2
+ b _08067A9C
+ .align 2, 0
+_08067A6C: .4byte gSpriteCoordOffsetX
+_08067A70: .4byte gSpriteCoordOffsetY
+_08067A74:
+ ldrh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r1, r0
+ adds r0, r4, 0
+ adds r0, 0x28
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ adds r0, r1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ ldrh r1, [r4, 0x26]
+ ldrh r0, [r4, 0x22]
+ adds r1, r0
+ adds r0, r4, 0
+ adds r0, 0x29
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ adds r0, r1
+_08067A9C:
+ lsls r0, 16
+ lsrs r2, r0, 16
+ ldrh r0, [r7, 0x8]
+ adds r0, r3
+ lsls r0, 16
+ lsrs r6, r0, 16
+ ldrh r0, [r7, 0xA]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r7, r0, 16
+ ldr r0, _08067B00 @ =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrh r1, [r0, 0x4]
+ ldr r0, _08067B04 @ =0x00000401
+ ldr r4, _08067B08 @ =0x0000fff0
+ cmp r1, r0
+ bne _08067AC6
+ ldrb r0, [r5, 0x8]
+ cmp r0, 0x1
+ bne _08067AC6
+ subs r4, 0x10
+_08067AC6:
+ lsls r0, r3, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ bgt _08067AD6
+ lsls r1, r6, 16
+ lsls r0, r4, 16
+ cmp r1, r0
+ bge _08067ADE
+_08067AD6:
+ ldrb r0, [r5, 0x1]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+_08067ADE:
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, 0xAF
+ bgt _08067AF2
+ lsls r0, r7, 16
+ asrs r0, 16
+ movs r1, 0x10
+ negs r1, r1
+ cmp r0, r1
+ bge _08067AFA
+_08067AF2:
+ ldrb r0, [r5, 0x1]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+_08067AFA:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08067B00: .4byte gSaveBlock1Ptr
+_08067B04: .4byte 0x00000401
+_08067B08: .4byte 0x0000fff0
+ thumb_func_end sub_8067A10
+
+ thumb_func_start npc_update_obj_anim_flag
+npc_update_obj_anim_flag: @ 8067B0C
+ push {lr}
+ adds r2, r1, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r3, 0x5
+ negs r3, r3
+ ands r3, r1
+ strb r3, [r2]
+ ldrb r1, [r0, 0x1]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _08067B2E
+ movs r1, 0x4
+ adds r0, r3, 0
+ orrs r0, r1
+ strb r0, [r2]
+_08067B2E:
+ pop {r0}
+ bx r0
+ thumb_func_end npc_update_obj_anim_flag
+
+ .align 2, 0 @ Don't pad with nop.