summaryrefslogtreecommitdiff
path: root/asm/field_map_obj.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/field_map_obj.s')
-rw-r--r--asm/field_map_obj.s19605
1 files changed, 19605 insertions, 0 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
new file mode 100644
index 000000000..58533b91e
--- /dev/null
+++ b/asm/field_map_obj.s
@@ -0,0 +1,19605 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start npc_clear_ids_and_state
+npc_clear_ids_and_state: @ 805AA50
+ 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: @ 805AA70
+ push {r4,r5,lr}
+ movs r4, 0
+ ldr r5, _0805AA94 @ =gMapObjects
+_0805AA76:
+ 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 _0805AA76
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805AA94: .4byte gMapObjects
+ thumb_func_end npcs_clear_ids_and_state
+
+ thumb_func_start sub_805AA98
+sub_805AA98: @ 805AA98
+ push {lr}
+ bl strange_npc_table_clear
+ bl npcs_clear_ids_and_state
+ bl ClearPlayerAvatarInfo
+ bl sub_805AAB0
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805AA98
+
+ thumb_func_start sub_805AAB0
+sub_805AAB0: @ 805AAB0
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ ldr r0, _0805AB4C @ =gFieldEffectObjectTemplatePointers
+ 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, _0805AB50 @ =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
+_0805AB4C: .4byte gFieldEffectObjectTemplatePointers
+_0805AB50: .4byte gSprites
+ thumb_func_end sub_805AAB0
+
+ thumb_func_start sub_805AB54
+sub_805AB54: @ 805AB54
+ push {lr}
+ movs r1, 0
+ ldr r2, _0805AB60 @ =gMapObjects
+ ldrb r0, [r2]
+ b _0805AB78
+ .align 2, 0
+_0805AB60: .4byte gMapObjects
+_0805AB64:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xF
+ bhi _0805AB7E
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0]
+_0805AB78:
+ lsls r0, 31
+ cmp r0, 0
+ bne _0805AB64
+_0805AB7E:
+ adds r0, r1, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805AB54
+
+ thumb_func_start GetFieldObjectIdByLocalIdAndMap
+GetFieldObjectIdByLocalIdAndMap: @ 805AB84
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ cmp r0, 0xFE
+ bls _0805AB9C
+ bl GetFieldObjectIdByLocalId
+ b _0805ABA0
+_0805AB9C:
+ bl GetFieldObjectIdByLocalIdAndMapInternal
+_0805ABA0:
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end GetFieldObjectIdByLocalIdAndMap
+
+ thumb_func_start TryGetFieldObjectIdByLocalIdAndMap
+TryGetFieldObjectIdByLocalIdAndMap: @ 805ABA8
+ 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 GetFieldObjectIdByLocalIdAndMap
+ strb r0, [r4]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x10
+ beq _0805ABCA
+ movs r0, 0
+ b _0805ABCC
+_0805ABCA:
+ movs r0, 0x1
+_0805ABCC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end TryGetFieldObjectIdByLocalIdAndMap
+
+ thumb_func_start GetFieldObjectIdByXY
+GetFieldObjectIdByXY: @ 805ABD4
+ push {r4-r6,lr}
+ movs r3, 0
+ ldr r5, _0805AC14 @ =gMapObjects
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 16
+ asrs r1, 16
+_0805ABE2:
+ lsls r0, r3, 3
+ adds r0, r3
+ lsls r0, 2
+ adds r2, r0, r5
+ ldrb r0, [r2]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805AC02
+ movs r6, 0x10
+ ldrsh r0, [r2, r6]
+ cmp r0, r4
+ bne _0805AC02
+ movs r6, 0x12
+ ldrsh r0, [r2, r6]
+ cmp r0, r1
+ beq _0805AC0C
+_0805AC02:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xF
+ bls _0805ABE2
+_0805AC0C:
+ adds r0, r3, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805AC14: .4byte gMapObjects
+ thumb_func_end GetFieldObjectIdByXY
+
+ thumb_func_start GetFieldObjectIdByLocalIdAndMapInternal
+GetFieldObjectIdByLocalIdAndMapInternal: @ 805AC18
+ 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, _0805AC50 @ =gMapObjects
+_0805AC2A:
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r3, r0, r6
+ ldrb r0, [r3]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805AC54
+ ldrb r0, [r3, 0x8]
+ cmp r0, r5
+ bne _0805AC54
+ ldrb r0, [r3, 0x9]
+ cmp r0, r4
+ bne _0805AC54
+ ldrb r0, [r3, 0xA]
+ cmp r0, r2
+ bne _0805AC54
+ adds r0, r1, 0
+ b _0805AC60
+ .align 2, 0
+_0805AC50: .4byte gMapObjects
+_0805AC54:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xF
+ bls _0805AC2A
+ movs r0, 0x10
+_0805AC60:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end GetFieldObjectIdByLocalIdAndMapInternal
+
+ thumb_func_start GetFieldObjectIdByLocalId
+GetFieldObjectIdByLocalId: @ 805AC68
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ movs r2, 0
+ ldr r4, _0805AC8C @ =gMapObjects
+_0805AC72:
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r4
+ ldrb r0, [r1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805AC90
+ ldrb r0, [r1, 0x8]
+ cmp r0, r3
+ bne _0805AC90
+ adds r0, r2, 0
+ b _0805AC9C
+ .align 2, 0
+_0805AC8C: .4byte gMapObjects
+_0805AC90:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xF
+ bls _0805AC72
+ movs r0, 0x10
+_0805AC9C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetFieldObjectIdByLocalId
+
+ thumb_func_start InitFieldObjectStateFromTemplate
+InitFieldObjectStateFromTemplate: @ 805ACA4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ lsls r2, 24
+ lsrs r7, r2, 24
+ ldrb r0, [r5]
+ adds r1, r6, 0
+ adds r2, r7, 0
+ mov r3, sp
+ bl GetAvailableFieldObjectSlot
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805ACCE
+ movs r0, 0x10
+ b _0805ADC2
+_0805ACCE:
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805ADD0 @ =gMapObjects
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl npc_clear_ids_and_state
+ ldrh r3, [r5, 0x4]
+ adds r3, 0x7
+ lsls r3, 16
+ lsrs r3, 16
+ ldrh r2, [r5, 0x6]
+ adds r2, 0x7
+ lsls r2, 16
+ lsrs r2, 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 r6, [r4, 0x9]
+ strb r7, [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 r7, 0xF
+ adds r1, r7, 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, r7
+ 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, r7
+ 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, _0805ADD4 @ =gUnknown_0836DC09
+ 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 FieldObjectSetDirection
+ adds r0, r4, 0
+ bl FieldObjectHandleDynamicGraphicsId
+ ldr r1, _0805ADD8 @ =gUnknown_0836DBBC
+ ldrb r0, [r4, 0x6]
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0805ADBE
+ ldrb r2, [r4, 0x19]
+ adds r0, r7, 0
+ ands r0, r2
+ cmp r0, 0
+ bne _0805ADA6
+ 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]
+_0805ADA6:
+ ldrb r2, [r4, 0x19]
+ movs r0, 0xF0
+ ands r0, r2
+ cmp r0, 0
+ bne _0805ADBE
+ lsrs r1, r2, 4
+ adds r1, 0x1
+ lsls r1, 4
+ adds r0, r7, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x19]
+_0805ADBE:
+ mov r0, sp
+ ldrb r0, [r0]
+_0805ADC2:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805ADD0: .4byte gMapObjects
+_0805ADD4: .4byte gUnknown_0836DC09
+_0805ADD8: .4byte gUnknown_0836DBBC
+ thumb_func_end InitFieldObjectStateFromTemplate
+
+ thumb_func_start sub_805ADDC
+sub_805ADDC: @ 805ADDC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r0, _0805ADF4 @ =gMapHeader
+ ldr r0, [r0, 0x4]
+ cmp r0, 0
+ bne _0805AE10
+ b _0805AE3E
+ .align 2, 0
+_0805ADF4: .4byte gMapHeader
+_0805ADF8:
+ ldr r1, _0805AE0C @ =0xfffff3e0
+ adds r0, r7, r1
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ adds r0, r4, 0
+ bl InitFieldObjectStateFromTemplate
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805AE40
+ .align 2, 0
+_0805AE0C: .4byte 0xfffff3e0
+_0805AE10:
+ ldrb r6, [r0]
+ movs r5, 0
+ cmp r5, r6
+ bcs _0805AE3E
+ ldr r7, _0805AE4C @ =gSaveBlock1 + 0xC20
+_0805AE1A:
+ lsls r0, r5, 1
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r7
+ ldrb r0, [r4]
+ cmp r0, r8
+ bne _0805AE34
+ ldrh r0, [r4, 0x14]
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805ADF8
+_0805AE34:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r6
+ bcc _0805AE1A
+_0805AE3E:
+ movs r0, 0x10
+_0805AE40:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805AE4C: .4byte gSaveBlock1 + 0xC20
+ thumb_func_end sub_805ADDC
+
+ thumb_func_start GetAvailableFieldObjectSlot
+GetAvailableFieldObjectSlot: @ 805AE50
+ 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, _0805AEAC @ =gMapObjects
+ ldrb r0, [r1]
+ lsls r0, 31
+ adds r7, r1, 0
+ cmp r0, 0
+ beq _0805AEA4
+ adds r3, r1, 0
+_0805AE70:
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r3
+ ldrb r0, [r1, 0x8]
+ cmp r0, r6
+ bne _0805AE8A
+ ldrb r0, [r1, 0x9]
+ cmp r0, r5
+ bne _0805AE8A
+ ldrb r0, [r1, 0xA]
+ cmp r0, r4
+ beq _0805AEA8
+_0805AE8A:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xF
+ bhi _0805AEA8
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r7
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0805AE70
+_0805AEA4:
+ cmp r2, 0xF
+ bls _0805AEB0
+_0805AEA8:
+ movs r0, 0x1
+ b _0805AEE4
+ .align 2, 0
+_0805AEAC: .4byte gMapObjects
+_0805AEB0:
+ mov r0, r12
+ strb r2, [r0]
+ ldr r1, _0805AEEC @ =gMapObjects
+_0805AEB6:
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r3, r0, r1
+ ldrb r0, [r3]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805AED8
+ ldrb r0, [r3, 0x8]
+ cmp r0, r6
+ bne _0805AED8
+ ldrb r0, [r3, 0x9]
+ cmp r0, r5
+ bne _0805AED8
+ ldrb r0, [r3, 0xA]
+ cmp r0, r4
+ beq _0805AEA8
+_0805AED8:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xF
+ bls _0805AEB6
+ movs r0, 0
+_0805AEE4:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805AEEC: .4byte gMapObjects
+ thumb_func_end GetAvailableFieldObjectSlot
+
+ thumb_func_start RemoveFieldObject
+RemoveFieldObject: @ 805AEF0
+ push {lr}
+ ldrb r2, [r0]
+ movs r1, 0x2
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ bl RemoveFieldObjectInternal
+ pop {r0}
+ bx r0
+ thumb_func_end RemoveFieldObject
+
+ thumb_func_start RemoveFieldObjectByLocalIdAndMap
+RemoveFieldObjectByLocalIdAndMap: @ 805AF04
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805AF42
+ mov r0, sp
+ ldrb r0, [r0]
+ bl GetFieldObjectFlagIdByFieldObjectId
+ 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, _0805AF48 @ =gMapObjects
+ adds r0, r1
+ bl RemoveFieldObject
+_0805AF42:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805AF48: .4byte gMapObjects
+ thumb_func_end RemoveFieldObjectByLocalIdAndMap
+
+ thumb_func_start RemoveFieldObjectInternal
+RemoveFieldObjectInternal: @ 805AF4C
+ push {r4,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldrb r0, [r4, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ ldrh r2, [r0, 0x6]
+ ldr r1, _0805AF90 @ =0xffff0000
+ ldr r0, [sp, 0x4]
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp, 0x4]
+ ldr r2, _0805AF94 @ =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
+_0805AF90: .4byte 0xffff0000
+_0805AF94: .4byte gSprites
+ thumb_func_end RemoveFieldObjectInternal
+
+ thumb_func_start npc_hide_all_but_player
+npc_hide_all_but_player: @ 805AF98
+ push {r4,lr}
+ movs r4, 0
+_0805AF9C:
+ ldr r0, _0805AFC4 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ cmp r4, r0
+ beq _0805AFB2
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ ldr r1, _0805AFC8 @ =gMapObjects
+ adds r0, r1
+ bl RemoveFieldObject
+_0805AFB2:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _0805AF9C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805AFC4: .4byte gPlayerAvatar
+_0805AFC8: .4byte gMapObjects
+ thumb_func_end npc_hide_all_but_player
+
+ thumb_func_start sub_805AFCC
+sub_805AFCC: @ 805AFCC
+ 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 InitFieldObjectStateFromTemplate
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r0, 0x10
+ bne _0805B006
+ movs r0, 0x10
+ b _0805B154
+_0805B006:
+ mov r0, r8
+ lsls r4, r0, 3
+ adds r0, r4, r0
+ lsls r0, 2
+ ldr r1, _0805B030 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r0, [r5, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r6, r0, 0
+ ldrb r1, [r6, 0xC]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _0805B034
+ ldrh r0, [r6, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__no_record
+ b _0805B042
+ .align 2, 0
+_0805B030: .4byte gMapObjects
+_0805B034:
+ cmp r0, 0xA
+ bne _0805B042
+ ldrh r0, [r6, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805B042:
+ ldrb r0, [r5, 0x6]
+ cmp r0, 0x4C
+ bne _0805B050
+ ldrb r0, [r5, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+_0805B050:
+ ldr r1, _0805B084 @ =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 _0805B08C
+ ldr r0, _0805B088 @ =gMapObjects
+ 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 _0805B154
+ .align 2, 0
+_0805B084: .4byte 0x0000ffff
+_0805B088: .4byte gMapObjects
+_0805B08C:
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, _0805B164 @ =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_8060388
+ 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 _0805B13E
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl FieldObjectDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_0805B13E:
+ 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_80634D0
+ mov r0, r8
+_0805B154:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805B164: .4byte gSprites
+ thumb_func_end sub_805AFCC
+
+ thumb_func_start SpawnFieldObject
+SpawnFieldObject: @ 805B168
+ 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 GetFieldObjectGraphicsInfo
+ adds r7, r0, 0
+ add r2, sp, 0x20
+ mov r0, r9
+ add r1, sp, 0x8
+ bl MakeObjectTemplateFromFieldObjectTemplate
+ ldrh r3, [r7, 0x6]
+ ldr r2, _0805B1E0 @ =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_805AFCC
+ lsls r0, 24
+ lsrs r2, r0, 24
+ adds r5, r2, 0
+ cmp r2, 0x10
+ bne _0805B1E4
+ movs r0, 0x10
+ b _0805B21A
+ .align 2, 0
+_0805B1E0: .4byte 0xffff0000
+_0805B1E4:
+ ldr r4, _0805B228 @ =gSprites
+ ldr r1, _0805B22C @ =gMapObjects
+ 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 _0805B218
+ ldrb r1, [r3, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ adds r1, r2, 0
+ bl SetSubspriteTables
+_0805B218:
+ adds r0, r5, 0
+_0805B21A:
+ add sp, 0x2C
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805B228: .4byte gSprites
+_0805B22C: .4byte gMapObjects
+ thumb_func_end SpawnFieldObject
+
+ thumb_func_start SpawnSpecialFieldObject
+SpawnSpecialFieldObject: @ 805B230
+ 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 GetFieldObjectMovingCameraOffset
+ ldr r0, _0805B268 @ =gSaveBlock1
+ 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 SpawnFieldObject
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805B268: .4byte gSaveBlock1
+ thumb_func_end SpawnSpecialFieldObject
+
+ thumb_func_start SpawnSpecialFieldObjectParametrized
+SpawnSpecialFieldObjectParametrized: @ 805B26C
+ 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, _0805B2D0 @ =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 SpawnSpecialFieldObject
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x18
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805B2D0: .4byte 0xfff90000
+ thumb_func_end SpawnSpecialFieldObjectParametrized
+
+ thumb_func_start show_sprite
+show_sprite: @ 805B2D4
+ 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 GetFieldObjectTemplateByLocalIdAndMap
+ adds r5, r0, 0
+ cmp r5, 0
+ beq _0805B31A
+ mov r4, sp
+ adds r4, 0x6
+ add r0, sp, 0x4
+ adds r1, r4, 0
+ bl GetFieldObjectMovingCameraOffset
+ 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 SpawnFieldObject
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805B31C
+_0805B31A:
+ movs r0, 0x10
+_0805B31C:
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end show_sprite
+
+ thumb_func_start MakeObjectTemplateFromFieldObjectGraphicsInfo
+MakeObjectTemplateFromFieldObjectGraphicsInfo: @ 805B324
+ push {r4-r6,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r6, r3, 0
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetFieldObjectGraphicsInfo
+ ldrh r1, [r0]
+ strh r1, [r4]
+ ldrh r1, [r0, 0x2]
+ strh r1, [r4, 0x2]
+ ldr r1, [r0, 0x10]
+ str r1, [r4, 0x4]
+ ldr r1, [r0, 0x18]
+ str r1, [r4, 0x8]
+ ldr r1, [r0, 0x1C]
+ str r1, [r4, 0xC]
+ ldr r1, [r0, 0x20]
+ str r1, [r4, 0x10]
+ str r5, [r4, 0x14]
+ ldr r0, [r0, 0x14]
+ str r0, [r6]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end MakeObjectTemplateFromFieldObjectGraphicsInfo
+
+ thumb_func_start MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex
+MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex: @ 805B358
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ ldr r4, _0805B374 @ =gUnknown_0836DA88
+ lsrs r1, 14
+ adds r1, r4
+ ldr r1, [r1]
+ bl MakeObjectTemplateFromFieldObjectGraphicsInfo
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805B374: .4byte gUnknown_0836DA88
+ thumb_func_end MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex
+
+ thumb_func_start MakeObjectTemplateFromFieldObjectTemplate
+MakeObjectTemplateFromFieldObjectTemplate: @ 805B378
+ 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 MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end MakeObjectTemplateFromFieldObjectTemplate
+
+ thumb_func_start AddPseudoFieldObject
+AddPseudoFieldObject: @ 805B390
+ 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 MakeObjectTemplateFromFieldObjectGraphicsInfo
+ mov r0, sp
+ ldrh r1, [r0, 0x2]
+ ldr r0, _0805B408 @ =0x0000ffff
+ cmp r1, r0
+ beq _0805B3C0
+ mov r0, sp
+ ldrh r0, [r0, 0x2]
+ bl sub_805BDF8
+_0805B3C0:
+ 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 _0805B3FC
+ ldr r1, [sp, 0x18]
+ cmp r1, 0
+ beq _0805B3FC
+ lsls r4, r5, 4
+ adds r4, r5
+ lsls r4, 2
+ ldr r0, _0805B40C @ =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]
+_0805B3FC:
+ adds r0, r5, 0
+ add sp, 0x1C
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805B408: .4byte 0x0000ffff
+_0805B40C: .4byte gSprites
+ thumb_func_end AddPseudoFieldObject
+
+ thumb_func_start sub_805B410
+sub_805B410: @ 805B410
+ 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 GetFieldObjectGraphicsInfo
+ adds r4, r0, 0
+ ldr r1, _0805B550 @ =sub_8064970
+ add r3, sp, 0x1C
+ adds r0, r5, 0
+ mov r2, sp
+ bl MakeObjectTemplateFromFieldObjectGraphicsInfo
+ mov r1, sp
+ ldr r2, _0805B554 @ =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_8060470
+ 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 _0805B53C
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ ldr r1, _0805B558 @ =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 _0805B4FC
+ ldrh r0, [r4, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805B4FC:
+ ldr r1, [sp, 0x1C]
+ cmp r1, 0
+ beq _0805B518
+ 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]
+_0805B518:
+ 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 FieldObjectDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_0805B53C:
+ 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
+_0805B550: .4byte sub_8064970
+_0805B554: .4byte 0x0000ffff
+_0805B558: .4byte gSprites
+ thumb_func_end sub_805B410
+
+ thumb_func_start sub_805B55C
+sub_805B55C: @ 805B55C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ lsls r0, 16
+ lsrs r3, r0, 16
+ lsls r1, 16
+ lsrs r1, 16
+ str r1, [sp, 0x4]
+ ldr r0, _0805B628 @ =gMapHeader
+ ldr r5, [r0, 0x4]
+ cmp r5, 0
+ beq _0805B618
+ ldr r4, _0805B62C @ =gSaveBlock1
+ ldrh r0, [r4]
+ subs r1, r0, 0x2
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, 0x11
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x8]
+ ldrh r2, [r4, 0x2]
+ adds r0, r2, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0xC]
+ ldrb r6, [r5]
+ movs r5, 0
+ cmp r5, r6
+ bcs _0805B618
+ lsls r0, r2, 16
+ asrs r0, 16
+ mov r10, r0
+ adds r7, r4, 0
+ lsls r0, r1, 16
+ asrs r0, 16
+ mov r9, r0
+ lsls r3, 16
+ mov r8, r3
+_0805B5B2:
+ lsls r0, r5, 1
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0805B630 @ =gSaveBlock1 + 0xC20
+ adds r4, r0, r1
+ 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 r10, r1
+ bgt _0805B60E
+ ldr r3, [sp, 0xC]
+ lsls r0, r3, 16
+ asrs r0, 16
+ cmp r0, r1
+ blt _0805B60E
+ lsls r0, r2, 16
+ asrs r1, r0, 16
+ cmp r9, r1
+ bgt _0805B60E
+ ldr r2, [sp, 0x8]
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, r1
+ blt _0805B60E
+ ldrh r0, [r4, 0x14]
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805B60E
+ ldrb r1, [r7, 0x5]
+ ldrb r2, [r7, 0x4]
+ ldr r3, [sp, 0x4]
+ lsls r0, r3, 16
+ asrs r0, 16
+ str r0, [sp]
+ adds r0, r4, 0
+ mov r4, r8
+ asrs r3, r4, 16
+ bl SpawnFieldObject
+_0805B60E:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r6
+ bcc _0805B5B2
+_0805B618:
+ 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
+_0805B628: .4byte gMapHeader
+_0805B62C: .4byte gSaveBlock1
+_0805B630: .4byte gSaveBlock1 + 0xC20
+ thumb_func_end sub_805B55C
+
+ thumb_func_start RemoveFieldObjectsOutsideView
+RemoveFieldObjectsOutsideView: @ 805B634
+ push {r4-r6,lr}
+ movs r3, 0
+ ldr r6, _0805B688 @ =gLinkPlayerMapObjects
+_0805B63A:
+ movs r2, 0
+ movs r4, 0
+ adds r5, r3, 0x1
+_0805B640:
+ lsls r0, r2, 2
+ adds r1, r0, r6
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0805B652
+ ldrb r1, [r1, 0x2]
+ cmp r3, r1
+ bne _0805B652
+ movs r4, 0x1
+_0805B652:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x3
+ bls _0805B640
+ cmp r4, 0
+ bne _0805B67A
+ lsls r0, r3, 3
+ adds r0, r3
+ lsls r0, 2
+ ldr r1, _0805B68C @ =gMapObjects
+ adds r2, r0, r1
+ ldr r0, [r2]
+ ldr r1, _0805B690 @ =0x00010001
+ ands r0, r1
+ cmp r0, 0x1
+ bne _0805B67A
+ adds r0, r2, 0
+ bl RemoveFieldObjectIfOutsideView
+_0805B67A:
+ lsls r0, r5, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xF
+ bls _0805B63A
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805B688: .4byte gLinkPlayerMapObjects
+_0805B68C: .4byte gMapObjects
+_0805B690: .4byte 0x00010001
+ thumb_func_end RemoveFieldObjectsOutsideView
+
+ thumb_func_start RemoveFieldObjectIfOutsideView
+RemoveFieldObjectIfOutsideView: @ 805B694
+ push {r4-r7,lr}
+ adds r3, r0, 0
+ ldr r2, _0805B70C @ =gSaveBlock1
+ 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 _0805B6D8
+ lsls r0, r5, 16
+ asrs r0, 16
+ cmp r2, r0
+ bgt _0805B6D8
+ movs r0, 0x12
+ ldrsh r1, [r3, r0]
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r1, r0
+ blt _0805B6D8
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r1, r0
+ ble _0805B706
+_0805B6D8:
+ movs r0, 0xC
+ ldrsh r1, [r3, r0]
+ lsls r0, r7, 16
+ asrs r0, 16
+ cmp r1, r0
+ blt _0805B700
+ lsls r0, r5, 16
+ asrs r0, 16
+ cmp r1, r0
+ bgt _0805B700
+ movs r0, 0xE
+ ldrsh r1, [r3, r0]
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r1, r0
+ blt _0805B700
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r1, r0
+ ble _0805B706
+_0805B700:
+ adds r0, r3, 0
+ bl RemoveFieldObject
+_0805B706:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805B70C: .4byte gSaveBlock1
+ thumb_func_end RemoveFieldObjectIfOutsideView
+
+ thumb_func_start sub_805B710
+sub_805B710: @ 805B710
+ 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, _0805B758 @ =gMapObjects
+ lsls r4, 16
+ lsls r5, 16
+_0805B72A:
+ lsls r0, r6, 3
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r7
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805B744
+ adds r0, r6, 0
+ asrs r1, r4, 16
+ asrs r2, r5, 16
+ bl sub_805B75C
+_0805B744:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0xF
+ bls _0805B72A
+ bl sub_805AAB0
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805B758: .4byte gMapObjects
+ thumb_func_end sub_805B710
+
+ thumb_func_start sub_805B75C
+sub_805B75C: @ 805B75C
+ 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, _0805B900 @ =gLinkPlayerMapObjects
+_0805B77E:
+ lsls r0, r7, 2
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0805B790
+ ldrb r1, [r1, 0x2]
+ cmp r8, r1
+ bne _0805B790
+ b _0805B8EE
+_0805B790:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x3
+ bls _0805B77E
+ mov r1, r8
+ lsls r0, r1, 3
+ add r0, r8
+ lsls r0, 2
+ ldr r1, _0805B904 @ =gMapObjects
+ adds r6, r0, r1
+ movs r0, 0
+ str r0, [sp, 0x20]
+ ldrb r0, [r6, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r5, r0, 0
+ ldrh r2, [r5, 0x6]
+ ldr r1, _0805B908 @ =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 MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex
+ str r4, [sp, 0xC]
+ mov r0, sp
+ ldr r2, _0805B90C @ =0x0000ffff
+ adds r4, r2, 0
+ strh r4, [r0, 0x2]
+ ldrb r1, [r5, 0xC]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _0805B7EA
+ ldrh r0, [r5, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__no_record
+_0805B7EA:
+ ldrb r0, [r5, 0xC]
+ lsls r1, r0, 28
+ lsrs r0, r1, 28
+ cmp r0, 0x9
+ bls _0805B7FC
+ ldrh r0, [r5, 0x2]
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805B7FC:
+ 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 _0805B8EE
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, _0805B910 @ =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_8060388
+ 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 _0805B88A
+ mov r0, r8
+ adds r1, r7, 0
+ bl SetPlayerAvatarFieldObjectIdAndObjectId
+ bl sub_8126B54
+ strb r0, [r6, 0x1B]
+_0805B88A:
+ ldr r1, [sp, 0x20]
+ cmp r1, 0
+ beq _0805B896
+ adds r0, r4, 0
+ bl SetSubspriteTables
+_0805B896:
+ 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 _0805B8DC
+ ldrb r0, [r6, 0x6]
+ cmp r0, 0xB
+ beq _0805B8DC
+ ldrb r0, [r6, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl FieldObjectDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_0805B8DC:
+ adds r0, r6, 0
+ bl sub_805B914
+ ldrb r0, [r6, 0xB]
+ lsrs r0, 4
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl SetObjectSubpriorityByZCoord
+_0805B8EE:
+ 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
+_0805B900: .4byte gLinkPlayerMapObjects
+_0805B904: .4byte gMapObjects
+_0805B908: .4byte 0xffff0000
+_0805B90C: .4byte 0x0000ffff
+_0805B910: .4byte gSprites
+ thumb_func_end sub_805B75C
+
+ thumb_func_start sub_805B914
+sub_805B914: @ 805B914
+ 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 FieldObjectClearAnim
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805B914
+
+ thumb_func_start SetPlayerAvatarFieldObjectIdAndObjectId
+SetPlayerAvatarFieldObjectIdAndObjectId: @ 805B94C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r5, _0805B978 @ =gPlayerAvatar
+ strb r0, [r5, 0x5]
+ strb r1, [r5, 0x4]
+ ldr r1, _0805B97C @ =gMapObjects
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ adds r4, r1
+ ldrb r0, [r4, 0x5]
+ bl GetPlayerAvatarGenderByGraphicsId
+ strb r0, [r5, 0x7]
+ ldrb r0, [r4, 0x5]
+ movs r1, 0x20
+ bl SetPlayerAvatarExtraStateTransition
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805B978: .4byte gPlayerAvatar
+_0805B97C: .4byte gMapObjects
+ thumb_func_end SetPlayerAvatarFieldObjectIdAndObjectId
+
+ thumb_func_start sub_805B980
+sub_805B980: @ 805B980
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ mov r0, r8
+ bl GetFieldObjectGraphicsInfo
+ adds r5, r0, 0
+ ldrb r1, [r6, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805BA7C @ =gSprites
+ adds r4, r0, r1
+ ldrb r1, [r5, 0xC]
+ movs r7, 0xF
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0805B9B8
+ ldrh r0, [r5, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl pal_patch_for_npc
+_0805B9B8:
+ ldrb r1, [r5, 0xC]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0xA
+ bne _0805B9CC
+ ldrh r0, [r5, 0x2]
+ lsls r1, 28
+ lsrs r1, 28
+ bl npc_load_two_palettes__and_record
+_0805B9CC:
+ 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 r0, [r5, 0x1C]
+ str r0, [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]
+ adds r0, r7, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ 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 r0, r8
+ strb r0, [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_80603CC
+ 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 _0805BA72
+ bl CameraObjectReset1
+_0805BA72:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BA7C: .4byte gSprites
+ thumb_func_end sub_805B980
+
+ thumb_func_start unref_sub_805BA80
+unref_sub_805BA80: @ 805BA80
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805BAB4
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805BABC @ =gMapObjects
+ adds r0, r1
+ adds r1, r4, 0
+ bl sub_805B980
+_0805BAB4:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BABC: .4byte gMapObjects
+ thumb_func_end unref_sub_805BA80
+
+ thumb_func_start FieldObjectTurn
+FieldObjectTurn: @ 805BAC0
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ bl FieldObjectSetDirection
+ ldrb r0, [r6, 0x1]
+ lsls r0, 27
+ cmp r0, 0
+ blt _0805BB06
+ ldrb r0, [r6, 0x4]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r5, _0805BB0C @ =gSprites
+ adds r4, r5
+ ldrb r0, [r6, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl FieldObjectDirectionToImageAnimId
+ 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
+_0805BB06:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BB0C: .4byte gSprites
+ thumb_func_end FieldObjectTurn
+
+ thumb_func_start FieldObjectTurnByLocalIdAndMap
+FieldObjectTurnByLocalIdAndMap: @ 805BB10
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805BB44
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805BB4C @ =gMapObjects
+ adds r0, r1
+ adds r1, r4, 0
+ bl FieldObjectTurn
+_0805BB44:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BB4C: .4byte gMapObjects
+ thumb_func_end FieldObjectTurnByLocalIdAndMap
+
+ thumb_func_start unref_sub_805BB50
+unref_sub_805BB50: @ 805BB50
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0x5]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0805BB6C @ =gMapObjects
+ adds r0, r2
+ bl FieldObjectTurn
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BB6C: .4byte gMapObjects
+ thumb_func_end unref_sub_805BB50
+
+ thumb_func_start get_berry_tree_graphics
+get_berry_tree_graphics: @ 805BB70
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r7, r1, 0
+ ldrb r0, [r5, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+ adds r4, r7, 0
+ adds r4, 0x3E
+ ldrb r0, [r4]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4]
+ ldrb r0, [r5, 0x1D]
+ bl GetStageByBerryTreeId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0
+ beq _0805BBFC
+ ldrb r1, [r5, 0x1]
+ movs r0, 0x21
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5, 0x1]
+ ldrb r1, [r4]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4]
+ ldrb r0, [r5, 0x1D]
+ bl GetBerryTypeByBerryTreeId
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ subs r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r4, 0x2B
+ bls _0805BBC4
+ movs r4, 0
+_0805BBC4:
+ ldr r0, _0805BC04 @ =gBerryTreeGraphicsIdTablePointers
+ lsls r4, 2
+ adds r0, r4, r0
+ ldr r0, [r0]
+ adds r0, r6
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl sub_805B980
+ ldr r0, _0805BC08 @ =gBerryTreePicTablePointers
+ adds r0, r4, r0
+ ldr r0, [r0]
+ str r0, [r7, 0xC]
+ ldr r0, _0805BC0C @ =gBerryTreePaletteSlotTablePointers
+ adds r4, r0
+ ldr r0, [r4]
+ adds r0, r6
+ ldrb r1, [r0]
+ lsls r1, 4
+ ldrb r2, [r7, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r7, 0x5]
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl StartSpriteAnim
+_0805BBFC:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BC04: .4byte gBerryTreeGraphicsIdTablePointers
+_0805BC08: .4byte gBerryTreePicTablePointers
+_0805BC0C: .4byte gBerryTreePaletteSlotTablePointers
+ thumb_func_end get_berry_tree_graphics
+
+ thumb_func_start GetFieldObjectGraphicsInfo
+GetFieldObjectGraphicsInfo: @ 805BC10
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xEF
+ bls _0805BC28
+ adds r0, r1, 0
+ adds r0, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ bl VarGetFieldObjectGraphicsId
+ adds r1, r0, 0
+_0805BC28:
+ cmp r1, 0xD9
+ bls _0805BC2E
+ movs r1, 0x5
+_0805BC2E:
+ ldr r0, _0805BC3C @ =gMapObjectGraphicsInfoPointers
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, [r1]
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805BC3C: .4byte gMapObjectGraphicsInfoPointers
+ thumb_func_end GetFieldObjectGraphicsInfo
+
+ thumb_func_start FieldObjectHandleDynamicGraphicsId
+FieldObjectHandleDynamicGraphicsId: @ 805BC40
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrb r0, [r4, 0x5]
+ cmp r0, 0xEF
+ bls _0805BC56
+ adds r0, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ bl VarGetFieldObjectGraphicsId
+ strb r0, [r4, 0x5]
+_0805BC56:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldObjectHandleDynamicGraphicsId
+
+ 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: @ 805BC5C
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805BC9E
+ ldr r2, _0805BCA8 @ =gMapObjects
+ 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]
+_0805BC9E:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BCA8: .4byte gMapObjects
+ thumb_func_end npc_by_local_id_and_map_set_field_1_bit_x20
+
+ thumb_func_start FieldObjectGetLocalIdAndMap
+FieldObjectGetLocalIdAndMap: @ 805BCAC
+ 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 FieldObjectGetLocalIdAndMap
+
+ thumb_func_start sub_805BCC0
+sub_805BCC0: @ 805BCC0
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ bl GetFieldObjectIdByXY
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x10
+ beq _0805BCE8
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805BCEC @ =gMapObjects
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_0805BCE8:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BCEC: .4byte gMapObjects
+ thumb_func_end sub_805BCC0
+
+ thumb_func_start sub_805BCF0
+sub_805BCF0: @ 805BCF0
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805BD36
+ mov r0, sp
+ ldrb r0, [r0]
+ lsls r2, r0, 3
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _0805BD40 @ =gMapObjects
+ adds r2, r0
+ ldrb r1, [r2, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805BD44 @ =gSprites
+ adds r0, r1
+ ldrb r1, [r2, 0x3]
+ movs r3, 0x4
+ orrs r1, r3
+ strb r1, [r2, 0x3]
+ adds r0, 0x43
+ strb r4, [r0]
+_0805BD36:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BD40: .4byte gMapObjects
+_0805BD44: .4byte gSprites
+ thumb_func_end sub_805BCF0
+
+ thumb_func_start sub_805BD48
+sub_805BD48: @ 805BD48
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805BD84
+ mov r0, sp
+ ldrb r0, [r0]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _0805BD8C @ =gMapObjects
+ 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]
+_0805BD84:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BD8C: .4byte gMapObjects
+ thumb_func_end sub_805BD48
+
+ thumb_func_start sub_805BD90
+sub_805BD90: @ 805BD90
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805BDD4
+ ldr r2, _0805BDDC @ =gMapObjects
+ 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, _0805BDE0 @ =gSprites
+ adds r0, r1
+ strh r5, [r0, 0x24]
+ strh r4, [r0, 0x26]
+_0805BDD4:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BDDC: .4byte gMapObjects
+_0805BDE0: .4byte gSprites
+ thumb_func_end sub_805BD90
+
+ thumb_func_start gpu_pal_allocator_reset__manage_upper_four
+gpu_pal_allocator_reset__manage_upper_four: @ 805BDE4
+ push {lr}
+ bl FreeAllSpritePalettes
+ ldr r1, _0805BDF4 @ =gReservedSpritePaletteCount
+ movs r0, 0xC
+ strb r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BDF4: .4byte gReservedSpritePaletteCount
+ thumb_func_end gpu_pal_allocator_reset__manage_upper_four
+
+ thumb_func_start sub_805BDF8
+sub_805BDF8: @ 805BDF8
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ bl FindFieldObjectPaletteIndexByTag
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r0, _0805BE1C @ =0x000011ff
+ cmp r1, r0
+ beq _0805BE16
+ lsls r0, r1, 3
+ ldr r1, _0805BE20 @ =gUnknown_0837377C
+ adds r0, r1
+ bl sub_805BE58
+_0805BE16:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BE1C: .4byte 0x000011ff
+_0805BE20: .4byte gUnknown_0837377C
+ thumb_func_end sub_805BDF8
+
+ thumb_func_start unref_sub_805BE24
+unref_sub_805BE24: @ 805BE24
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r4, 0
+ ldrh r0, [r5]
+ ldr r1, _0805BE54 @ =0x000011ff
+ cmp r0, r1
+ beq _0805BE4E
+ adds r6, r1, 0
+_0805BE34:
+ lsls r0, r4, 1
+ adds r0, r5
+ ldrh r0, [r0]
+ bl sub_805BDF8
+ 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 _0805BE34
+_0805BE4E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BE54: .4byte 0x000011ff
+ thumb_func_end unref_sub_805BE24
+
+ thumb_func_start sub_805BE58
+sub_805BE58: @ 805BE58
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x4]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _0805BE76
+ adds r0, r4, 0
+ bl LoadSpritePalette
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805BE78
+_0805BE76:
+ movs r0, 0xFF
+_0805BE78:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805BE58
+
+ thumb_func_start pal_patch_for_npc
+pal_patch_for_npc: @ 805BE80
+ push {r4,lr}
+ adds r4, r1, 0
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 24
+ lsrs r4, 24
+ bl FindFieldObjectPaletteIndexByTag
+ lsls r0, 24
+ ldr r1, _0805BEB4 @ =gUnknown_0837377C
+ lsrs r0, 21
+ adds r0, r1
+ ldr r0, [r0]
+ lsls r4, 20
+ movs r1, 0x80
+ lsls r1, 17
+ adds r4, r1
+ lsrs r4, 16
+ adds r1, r4, 0
+ movs r2, 0x20
+ bl LoadPalette
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805BEB4: .4byte gUnknown_0837377C
+ thumb_func_end pal_patch_for_npc
+
+ thumb_func_start pal_patch_for_npc_range
+pal_patch_for_npc_range: @ 805BEB8
+ 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 _0805BEDC
+_0805BEC8:
+ 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 _0805BEC8
+_0805BEDC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end pal_patch_for_npc_range
+
+ thumb_func_start FindFieldObjectPaletteIndexByTag
+FindFieldObjectPaletteIndexByTag: @ 805BEE4
+ push {r4-r6,lr}
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r2, 0
+ ldr r0, _0805BF0C @ =gUnknown_0837377C
+ ldrh r1, [r0, 0x4]
+ ldr r3, _0805BF10 @ =0x000011ff
+ adds r4, r0, 0
+ cmp r1, r3
+ beq _0805BF24
+ adds r6, r4, 0
+ adds r1, r3, 0
+_0805BEFC:
+ lsls r0, r2, 3
+ adds r0, r6
+ ldrh r0, [r0, 0x4]
+ cmp r0, r5
+ bne _0805BF14
+ adds r0, r2, 0
+ b _0805BF26
+ .align 2, 0
+_0805BF0C: .4byte gUnknown_0837377C
+_0805BF10: .4byte 0x000011ff
+_0805BF14:
+ 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 _0805BEFC
+_0805BF24:
+ movs r0, 0xFF
+_0805BF26:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end FindFieldObjectPaletteIndexByTag
+
+ thumb_func_start npc_load_two_palettes__no_record
+npc_load_two_palettes__no_record: @ 805BF2C
+ 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, _0805BF74 @ =gUnknown_08373874
+ ldrh r0, [r1]
+ ldr r2, _0805BF78 @ =0x000011ff
+ cmp r0, r2
+ beq _0805BF94
+ ldr r0, _0805BF7C @ =gUnknown_0830FD14
+ adds r5, r0
+ adds r6, r2, 0
+_0805BF50:
+ lsls r2, r3, 3
+ adds r0, r2, r1
+ ldrh r0, [r0]
+ cmp r0, r4
+ bne _0805BF84
+ adds r1, 0x4
+ adds r1, r2, r1
+ ldr r0, _0805BF80 @ =gUnknown_030005A4
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ ldrb r1, [r5]
+ bl pal_patch_for_npc
+ b _0805BF94
+ .align 2, 0
+_0805BF74: .4byte gUnknown_08373874
+_0805BF78: .4byte 0x000011ff
+_0805BF7C: .4byte gUnknown_0830FD14
+_0805BF80: .4byte gUnknown_030005A4
+_0805BF84:
+ 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 _0805BF50
+_0805BF94:
+ 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: @ 805BF9C
+ push {r4-r6,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, _0805BFE8 @ =gUnknown_030005A6
+ strh r4, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl pal_patch_for_npc
+ movs r3, 0
+ ldr r1, _0805BFEC @ =gUnknown_083738E4
+ ldrh r0, [r1]
+ ldr r2, _0805BFF0 @ =0x000011ff
+ cmp r0, r2
+ beq _0805C00C
+ ldr r0, _0805BFF4 @ =gUnknown_0830FD14
+ adds r5, r0
+ adds r6, r2, 0
+_0805BFC4:
+ lsls r2, r3, 3
+ adds r0, r2, r1
+ ldrh r0, [r0]
+ cmp r0, r4
+ bne _0805BFFC
+ adds r1, 0x4
+ adds r1, r2, r1
+ ldr r0, _0805BFF8 @ =gUnknown_030005A4
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ ldrb r1, [r5]
+ bl pal_patch_for_npc
+ b _0805C00C
+ .align 2, 0
+_0805BFE8: .4byte gUnknown_030005A6
+_0805BFEC: .4byte gUnknown_083738E4
+_0805BFF0: .4byte 0x000011ff
+_0805BFF4: .4byte gUnknown_0830FD14
+_0805BFF8: .4byte gUnknown_030005A4
+_0805BFFC:
+ 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 _0805BFC4
+_0805C00C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_load_two_palettes__and_record
+
+ thumb_func_start unref_sub_805C014
+unref_sub_805C014: @ 805C014
+ 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_805C014
+
+ thumb_func_start npc_coords_shift
+npc_coords_shift: @ 805C034
+ 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: @ 805C044
+ 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_805C058
+sub_805C058: @ 805C058
+ 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, _0805C0F4 @ =gSprites
+ adds r7, r0, r1
+ ldrb r0, [r6, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ 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_80603CC
+ 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_805B914
+ ldrb r0, [r6, 0x1]
+ lsrs r0, 7
+ cmp r0, 0
+ beq _0805C0EA
+ bl CameraObjectReset1
+_0805C0EA:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805C0F4: .4byte gSprites
+ thumb_func_end sub_805C058
+
+ thumb_func_start sub_805C0F8
+sub_805C0F8: @ 805C0F8
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805C140
+ 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, _0805C148 @ =gMapObjects
+ adds r0, r3
+ movs r3, 0xE0
+ lsls r3, 11
+ adds r1, r3
+ asrs r1, 16
+ adds r2, r3
+ asrs r2, 16
+ bl sub_805C058
+_0805C140:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805C148: .4byte gMapObjects
+ thumb_func_end sub_805C0F8
+
+ thumb_func_start npc_coords_shift_still
+npc_coords_shift_still: @ 805C14C
+ 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 UpdateFieldObjectCoordsForCameraUpdate
+UpdateFieldObjectCoordsForCameraUpdate: @ 805C160
+ push {r4,r5,lr}
+ ldr r2, _0805C1C0 @ =gUnknown_0202E844
+ ldrb r1, [r2]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0805C1B8
+ movs r3, 0
+ ldr r5, _0805C1C4 @ =gMapObjects
+ movs r0, 0x4
+ ldrsh r4, [r2, r0]
+ movs r0, 0x8
+ ldrsh r1, [r2, r0]
+_0805C17A:
+ lsls r0, r3, 3
+ adds r0, r3
+ lsls r0, 2
+ adds r2, r0, r5
+ ldrb r0, [r2]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0805C1AE
+ 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]
+_0805C1AE:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xF
+ bls _0805C17A
+_0805C1B8:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805C1C0: .4byte gUnknown_0202E844
+_0805C1C4: .4byte gMapObjects
+ thumb_func_end UpdateFieldObjectCoordsForCameraUpdate
+
+ thumb_func_start GetFieldObjectIdByXYZ
+GetFieldObjectIdByXYZ: @ 805C1C8
+ 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, _0805C214 @ =gMapObjects
+ mov r8, r0
+_0805C1E0:
+ 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 _0805C218
+ movs r2, 0x10
+ ldrsh r0, [r1, r2]
+ cmp r0, r7
+ bne _0805C218
+ movs r2, 0x12
+ ldrsh r0, [r1, r2]
+ cmp r0, r6
+ bne _0805C218
+ adds r0, r1, 0
+ adds r1, r5, 0
+ bl FieldObjectDoesZCoordMatch
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805C218
+ adds r0, r4, 0
+ b _0805C224
+ .align 2, 0
+_0805C214: .4byte gMapObjects
+_0805C218:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _0805C1E0
+ movs r0, 0x10
+_0805C224:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end GetFieldObjectIdByXYZ
+
+ thumb_func_start FieldObjectDoesZCoordMatch
+FieldObjectDoesZCoordMatch: @ 805C230
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0xB]
+ movs r0, 0xF
+ ands r0, r2
+ cmp r0, 0
+ beq _0805C250
+ cmp r1, 0
+ beq _0805C250
+ lsls r0, r2, 28
+ lsrs r0, 28
+ cmp r0, r1
+ beq _0805C250
+ movs r0, 0
+ b _0805C252
+_0805C250:
+ movs r0, 0x1
+_0805C252:
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectDoesZCoordMatch
+
+ thumb_func_start UpdateFieldObjectsForCameraUpdate
+UpdateFieldObjectsForCameraUpdate: @ 805C258
+ 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 UpdateFieldObjectCoordsForCameraUpdate
+ lsls r4, 16
+ asrs r4, 16
+ lsls r5, 16
+ asrs r5, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_805B55C
+ bl RemoveFieldObjectsOutsideView
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end UpdateFieldObjectsForCameraUpdate
+
+ thumb_func_start AddCameraObject
+AddCameraObject: @ 805C284
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _0805C2C0 @ =gSpriteTemplate_830FD24
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x4
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0805C2C4 @ =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
+_0805C2C0: .4byte gSpriteTemplate_830FD24
+_0805C2C4: .4byte gSprites
+ thumb_func_end AddCameraObject
+
+ thumb_func_start ObjectCB_CameraObject
+ObjectCB_CameraObject: @ 805C2C8
+ push {r4,r5,lr}
+ sub sp, 0xC
+ mov r2, sp
+ ldr r1, _0805C2EC @ =gUnknown_0830FD3C
+ 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
+_0805C2EC: .4byte gUnknown_0830FD3C
+ thumb_func_end ObjectCB_CameraObject
+
+ thumb_func_start CameraObject_0
+CameraObject_0: @ 805C2F0
+ push {lr}
+ ldr r3, _0805C328 @ =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
+_0805C328: .4byte gSprites
+ thumb_func_end CameraObject_0
+
+ thumb_func_start CameraObject_1
+CameraObject_1: @ 805C32C
+ push {r4,r5,lr}
+ ldr r3, _0805C360 @ =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
+_0805C360: .4byte gSprites
+ thumb_func_end CameraObject_1
+
+ thumb_func_start CameraObject_2
+CameraObject_2: @ 805C364
+ push {r4,lr}
+ ldr r4, _0805C390 @ =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
+_0805C390: .4byte gSprites
+ thumb_func_end CameraObject_2
+
+ thumb_func_start FindCameraObject
+FindCameraObject: @ 805C394
+ push {r4,r5,lr}
+ movs r3, 0
+ ldr r4, _0805C3C0 @ =gSprites
+ adds r5, r4, 0
+ adds r5, 0x1C
+_0805C39E:
+ 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 _0805C3C8
+ adds r0, r1, r5
+ ldr r1, [r0]
+ ldr r0, _0805C3C4 @ =ObjectCB_CameraObject
+ cmp r1, r0
+ bne _0805C3C8
+ adds r0, r2, 0
+ b _0805C3D4
+ .align 2, 0
+_0805C3C0: .4byte gSprites
+_0805C3C4: .4byte ObjectCB_CameraObject
+_0805C3C8:
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x3F
+ bls _0805C39E
+ movs r0, 0
+_0805C3D4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end FindCameraObject
+
+ thumb_func_start CameraObjectReset1
+CameraObjectReset1: @ 805C3DC
+ push {lr}
+ bl FindCameraObject
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _0805C3F4
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ ldr r1, [r2, 0x1C]
+ adds r0, r2, 0
+ bl _call_via_r1
+_0805C3F4:
+ pop {r0}
+ bx r0
+ thumb_func_end CameraObjectReset1
+
+ thumb_func_start CameraObjectSetFollowedObjectId
+CameraObjectSetFollowedObjectId: @ 805C3F8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl FindCameraObject
+ cmp r0, 0
+ beq _0805C40C
+ strh r4, [r0, 0x2E]
+ bl CameraObjectReset1
+_0805C40C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end CameraObjectSetFollowedObjectId
+
+ thumb_func_start CameraObjectGetFollowedObjectId
+CameraObjectGetFollowedObjectId: @ 805C414
+ push {lr}
+ bl FindCameraObject
+ cmp r0, 0
+ beq _0805C426
+ ldrh r0, [r0, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805C428
+_0805C426:
+ movs r0, 0x40
+_0805C428:
+ pop {r1}
+ bx r1
+ thumb_func_end CameraObjectGetFollowedObjectId
+
+ thumb_func_start CameraObjectReset2
+CameraObjectReset2: @ 805C42C
+ push {lr}
+ bl FindCameraObject
+ movs r1, 0x2
+ strh r1, [r0, 0x30]
+ pop {r0}
+ bx r0
+ thumb_func_end CameraObjectReset2
+
+ thumb_func_start unref_sub_805C43C
+unref_sub_805C43C: @ 805C43C
+ 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, _0805C484 @ =gSprites
+_0805C456:
+ 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 _0805C488
+ 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 _0805C492
+ .align 2, 0
+_0805C484: .4byte gSprites
+_0805C488:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3F
+ bls _0805C456
+_0805C492:
+ adds r0, r5, 0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_805C43C
+
+ thumb_func_start obj_unfreeze
+obj_unfreeze: @ 805C4A0
+ 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, _0805C4F4 @ =gSprites
+ movs r2, 0x1
+ negs r2, r2
+_0805C4BE:
+ 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 _0805C4F8
+ 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 _0805C506
+ .align 2, 0
+_0805C4F4: .4byte gSprites
+_0805C4F8:
+ subs r0, r1, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ asrs r0, 16
+ cmp r0, r2
+ bgt _0805C4BE
+ movs r0, 0x40
+_0805C506:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end obj_unfreeze
+
+ thumb_func_start FieldObjectSetDirection
+FieldObjectSetDirection: @ 805C510
+ 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 _0805C540
+ 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]
+_0805C540:
+ 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 FieldObjectSetDirection
+
+ thumb_func_start GetFieldObjectScriptPointerByLocalIdAndMap
+GetFieldObjectScriptPointerByLocalIdAndMap: @ 805C554
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ bl GetFieldObjectTemplateByLocalIdAndMap
+ ldr r0, [r0, 0x10]
+ pop {r1}
+ bx r1
+ thumb_func_end GetFieldObjectScriptPointerByLocalIdAndMap
+
+ thumb_func_start GetFieldObjectScriptPointerByFieldObjectId
+GetFieldObjectScriptPointerByFieldObjectId: @ 805C56C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805C58C @ =gMapObjects
+ 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 GetFieldObjectScriptPointerByLocalIdAndMap
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805C58C: .4byte gMapObjects
+ thumb_func_end GetFieldObjectScriptPointerByFieldObjectId
+
+ thumb_func_start GetFieldObjectFlagIdByLocalIdAndMap
+GetFieldObjectFlagIdByLocalIdAndMap: @ 805C590
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ bl GetFieldObjectTemplateByLocalIdAndMap
+ ldrh r0, [r0, 0x14]
+ pop {r1}
+ bx r1
+ thumb_func_end GetFieldObjectFlagIdByLocalIdAndMap
+
+ thumb_func_start GetFieldObjectFlagIdByFieldObjectId
+GetFieldObjectFlagIdByFieldObjectId: @ 805C5A8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805C5CC @ =gMapObjects
+ 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 GetFieldObjectFlagIdByLocalIdAndMap
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805C5CC: .4byte gMapObjects
+ thumb_func_end GetFieldObjectFlagIdByFieldObjectId
+
+ thumb_func_start unref_sub_805C5D0
+unref_sub_805C5D0: @ 805C5D0
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805C604
+ ldr r2, _0805C600 @ =gMapObjects
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x7]
+ b _0805C606
+ .align 2, 0
+_0805C600: .4byte gMapObjects
+_0805C604:
+ movs r0, 0xFF
+_0805C606:
+ add sp, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_805C5D0
+
+ thumb_func_start unref_sub_805C60C
+unref_sub_805C60C: @ 805C60C
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0805C620 @ =gMapObjects
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r0, [r1, 0x7]
+ bx lr
+ .align 2, 0
+_0805C620: .4byte gMapObjects
+ thumb_func_end unref_sub_805C60C
+
+ thumb_func_start unref_sub_805C624
+unref_sub_805C624: @ 805C624
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805C658
+ ldr r2, _0805C654 @ =gMapObjects
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1D]
+ b _0805C65A
+ .align 2, 0
+_0805C654: .4byte gMapObjects
+_0805C658:
+ movs r0, 0xFF
+_0805C65A:
+ add sp, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_805C624
+
+ thumb_func_start FieldObjectGetBerryTreeId
+FieldObjectGetBerryTreeId: @ 805C660
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0805C674 @ =gMapObjects
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r0, [r1, 0x1D]
+ bx lr
+ .align 2, 0
+_0805C674: .4byte gMapObjects
+ thumb_func_end FieldObjectGetBerryTreeId
+
+ thumb_func_start GetFieldObjectTemplateByLocalIdAndMap
+GetFieldObjectTemplateByLocalIdAndMap: @ 805C678
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r3, r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, _0805C6A4 @ =gSaveBlock1
+ movs r0, 0x5
+ ldrsb r0, [r1, r0]
+ cmp r0, r3
+ bne _0805C6AC
+ movs r0, 0x4
+ ldrsb r0, [r1, r0]
+ cmp r0, r2
+ bne _0805C6AC
+ movs r0, 0xC2
+ lsls r0, 4
+ adds r1, r0
+ ldr r0, _0805C6A8 @ =gMapHeader
+ ldr r0, [r0, 0x4]
+ b _0805C6B8
+ .align 2, 0
+_0805C6A4: .4byte gSaveBlock1
+_0805C6A8: .4byte gMapHeader
+_0805C6AC:
+ adds r0, r2, 0
+ adds r1, r3, 0
+ bl get_mapheader_by_bank_and_number
+ ldr r0, [r0, 0x4]
+ ldr r1, [r0, 0x4]
+_0805C6B8:
+ ldrb r2, [r0]
+ adds r0, r4, 0
+ bl FindFieldObjectTemplateInArrayByLocalId
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetFieldObjectTemplateByLocalIdAndMap
+
+ thumb_func_start FindFieldObjectTemplateInArrayByLocalId
+FindFieldObjectTemplateInArrayByLocalId: @ 805C6C8
+ 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 _0805C6F6
+_0805C6DA:
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ adds r3, r0, r5
+ ldrb r0, [r3]
+ cmp r0, r4
+ bne _0805C6EC
+ adds r0, r3, 0
+ b _0805C6F8
+_0805C6EC:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, r2
+ bcc _0805C6DA
+_0805C6F6:
+ movs r0, 0
+_0805C6F8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end FindFieldObjectTemplateInArrayByLocalId
+
+ thumb_func_start sub_805C700
+sub_805C700: @ 805C700
+ push {r4,r5,lr}
+ adds r2, r0, 0
+ ldrb r1, [r2, 0x9]
+ ldr r4, _0805C720 @ =gSaveBlock1
+ movs r0, 0x5
+ ldrsb r0, [r4, r0]
+ adds r5, r4, 0
+ cmp r1, r0
+ bne _0805C74A
+ ldrb r1, [r2, 0xA]
+ movs r0, 0x4
+ ldrsb r0, [r5, r0]
+ cmp r1, r0
+ beq _0805C72E
+ b _0805C74A
+ .align 2, 0
+_0805C720: .4byte gSaveBlock1
+_0805C724:
+ movs r1, 0xC2
+ lsls r1, 4
+ adds r0, r5, r1
+ adds r0, r2, r0
+ b _0805C74C
+_0805C72E:
+ movs r3, 0
+ ldrb r0, [r2, 0x8]
+ movs r2, 0xC2
+ lsls r2, 4
+ adds r1, r4, r2
+ movs r2, 0
+_0805C73A:
+ ldrb r4, [r1]
+ cmp r0, r4
+ beq _0805C724
+ adds r1, 0x18
+ adds r2, 0x18
+ adds r3, 0x1
+ cmp r3, 0x3F
+ ble _0805C73A
+_0805C74A:
+ movs r0, 0
+_0805C74C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805C700
+
+ thumb_func_start sub_805C754
+sub_805C754: @ 805C754
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_805C700
+ adds r1, r0, 0
+ cmp r1, 0
+ beq _0805C76E
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x7
+ strh r0, [r1, 0x4]
+ ldrh r0, [r4, 0x12]
+ subs r0, 0x7
+ strh r0, [r1, 0x6]
+_0805C76E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805C754
+
+ thumb_func_start sub_805C774
+sub_805C774: @ 805C774
+ push {r4,lr}
+ lsls r1, 24
+ lsrs r4, r1, 24
+ bl sub_805C700
+ cmp r0, 0
+ beq _0805C784
+ strb r4, [r0, 0x9]
+_0805C784:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805C774
+
+ thumb_func_start sub_805C78C
+sub_805C78C: @ 805C78C
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805C7BA
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805C7C0 @ =gMapObjects
+ adds r0, r1
+ bl sub_805C754
+_0805C7BA:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805C7C0: .4byte gMapObjects
+ thumb_func_end sub_805C78C
+
+ thumb_func_start sub_805C7C4
+sub_805C7C4: @ 805C7C4
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl gpu_pal_allocator_reset__manage_upper_four
+ ldr r1, _0805C7F4 @ =gUnknown_030005A6
+ ldr r2, _0805C7F8 @ =0x000011ff
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _0805C7FC @ =gUnknown_030005A4
+ strb r4, [r0]
+ ldr r1, _0805C800 @ =gUnknown_0837399C
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0
+ movs r2, 0xA
+ bl pal_patch_for_npc_range
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805C7F4: .4byte gUnknown_030005A6
+_0805C7F8: .4byte 0x000011ff
+_0805C7FC: .4byte gUnknown_030005A4
+_0805C800: .4byte gUnknown_0837399C
+ thumb_func_end sub_805C7C4
+
+ thumb_func_start npc_paltag_by_palslot
+npc_paltag_by_palslot: @ 805C804
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x9
+ bhi _0805C840
+ ldr r1, _0805C820 @ =gUnknown_0837399C
+ ldr r0, _0805C824 @ =gUnknown_030005A4
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r0, r2, 1
+ b _0805C834
+ .align 2, 0
+_0805C820: .4byte gUnknown_0837399C
+_0805C824: .4byte gUnknown_030005A4
+_0805C828:
+ adds r1, r4, 0x4
+ adds r1, r2, r1
+ ldr r0, _0805C83C @ =gUnknown_030005A4
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 1
+_0805C834:
+ adds r0, r1
+ ldrh r0, [r0]
+ b _0805C872
+ .align 2, 0
+_0805C83C: .4byte gUnknown_030005A4
+_0805C840:
+ movs r3, 0
+ ldr r0, _0805C878 @ =gUnknown_083738E4
+ ldrh r1, [r0]
+ ldr r2, _0805C87C @ =0x000011ff
+ adds r4, r0, 0
+ cmp r1, r2
+ beq _0805C870
+ adds r6, r4, 0
+ ldr r0, _0805C880 @ =gUnknown_030005A6
+ ldrh r1, [r0]
+ adds r5, r2, 0
+_0805C856:
+ lsls r2, r3, 3
+ adds r0, r2, r6
+ ldrh r0, [r0]
+ cmp r0, r1
+ beq _0805C828
+ 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 _0805C856
+_0805C870:
+ ldr r0, _0805C87C @ =0x000011ff
+_0805C872:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805C878: .4byte gUnknown_083738E4
+_0805C87C: .4byte 0x000011ff
+_0805C880: .4byte gUnknown_030005A6
+ thumb_func_end npc_paltag_by_palslot
+
+ thumb_func_start sub_805C884
+sub_805C884: @ 805C884
+ 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, _0805C8A0 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805C8A4 @ =sub_805C8A8
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805C8A0: .4byte gMapObjects
+_0805C8A4: .4byte sub_805C8A8
+ thumb_func_end sub_805C884
+
+ thumb_func_start sub_805C8A8
+sub_805C8A8: @ 805C8A8
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_805C8A8
+
+ thumb_func_start sub_805C8AC
+sub_805C8AC: @ 805C8AC
+ 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, _0805C8C8 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805C8CC @ =sub_805C8D0
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805C8C8: .4byte gMapObjects
+_0805C8CC: .4byte sub_805C8D0
+ thumb_func_end sub_805C8AC
+
+ thumb_func_start sub_805C8D0
+sub_805C8D0: @ 805C8D0
+ push {r4,lr}
+ ldr r3, _0805C8EC @ =gUnknown_08375224
+ 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
+_0805C8EC: .4byte gUnknown_08375224
+ thumb_func_end sub_805C8D0
+
+ thumb_func_start sub_805C8F0
+sub_805C8F0: @ 805C8F0
+ 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_805C8F0
+
+ thumb_func_start sub_805C904
+sub_805C904: @ 805C904
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805C904
+
+ thumb_func_start sub_805C930
+sub_805C930: @ 805C930
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805C964
+ ldr r5, _0805C960 @ =gUnknown_0837520C
+ 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 sub_8064820
+ strh r4, [r6, 0x30]
+ movs r0, 0x1
+ b _0805C966
+ .align 2, 0
+_0805C960: .4byte gUnknown_0837520C
+_0805C964:
+ movs r0, 0
+_0805C966:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805C930
+
+ thumb_func_start sub_805C96C
+sub_805C96C: @ 805C96C
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805C980
+ movs r0, 0
+ b _0805C986
+_0805C980:
+ movs r0, 0x4
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_0805C986:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805C96C
+
+ thumb_func_start sub_805C98C
+sub_805C98C: @ 805C98C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldr r1, _0805C9D4 @ =gUnknown_08375240
+ 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 FieldObjectSetDirection
+ movs r0, 0x5
+ strh r0, [r6, 0x30]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_805FF20
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805C9CA
+ movs r0, 0x1
+ strh r0, [r6, 0x30]
+_0805C9CA:
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805C9D4: .4byte gUnknown_08375240
+ thumb_func_end sub_805C98C
+
+ thumb_func_start sub_805C9D8
+sub_805C9D8: @ 805C9D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetGoSpeed0AnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ 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_805C9D8
+
+ thumb_func_start sub_805CA08
+sub_805CA08: @ 805CA08
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805CA26
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_0805CA26:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CA08
+
+ thumb_func_start FieldObjectIsTrainerAndCloseToPlayer
+FieldObjectIsTrainerAndCloseToPlayer: @ 805CA30
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ movs r0, 0x80
+ bl TestPlayerAvatarFlags
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805CA9C
+ ldrb r0, [r5, 0x7]
+ cmp r0, 0x1
+ beq _0805CA4C
+ cmp r0, 0x3
+ bne _0805CA9C
+_0805CA4C:
+ 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 _0805CA9C
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, r4
+ blt _0805CA9C
+ lsls r0, r5, 16
+ asrs r0, 16
+ movs r2, 0
+ ldrsh r1, [r7, r2]
+ cmp r0, r1
+ bgt _0805CA9C
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r0, r1
+ bge _0805CAA0
+_0805CA9C:
+ movs r0, 0
+ b _0805CAA2
+_0805CAA0:
+ movs r0, 0x1
+_0805CAA2:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectIsTrainerAndCloseToPlayer
+
+ thumb_func_start sub_805CAAC
+sub_805CAAC: @ 805CAAC
+ 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 _0805CACA
+ movs r2, 0x4
+ lsls r0, r4, 16
+ cmp r0, 0
+ bge _0805CAD4
+ movs r2, 0x3
+ b _0805CAD4
+_0805CACA:
+ movs r2, 0x1
+ lsls r0, 16
+ cmp r0, 0
+ bge _0805CAD4
+ movs r2, 0x2
+_0805CAD4:
+ adds r0, r2, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CAAC
+
+ thumb_func_start sub_805CADC
+sub_805CADC: @ 805CADC
+ push {lr}
+ movs r0, 0x1
+ lsls r1, 16
+ cmp r1, 0
+ bge _0805CAE8
+ movs r0, 0x2
+_0805CAE8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CADC
+
+ thumb_func_start sub_805CAEC
+sub_805CAEC: @ 805CAEC
+ push {lr}
+ movs r1, 0x4
+ lsls r0, 16
+ cmp r0, 0
+ bge _0805CAF8
+ movs r1, 0x3
+_0805CAF8:
+ adds r0, r1, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CAEC
+
+ thumb_func_start sub_805CB00
+sub_805CB00: @ 805CB00
+ 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 sub_805CAAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0805CB3C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_805CAEC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bne _0805CB56
+ b _0805CB54
+_0805CB3C:
+ cmp r0, 0x4
+ bne _0805CB56
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_805CADC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0805CB56
+_0805CB54:
+ movs r0, 0x2
+_0805CB56:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CB00
+
+ thumb_func_start sub_805CB5C
+sub_805CB5C: @ 805CB5C
+ 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 sub_805CAAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0805CB98
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_805CAEC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _0805CBB2
+ b _0805CBB0
+_0805CB98:
+ cmp r0, 0x3
+ bne _0805CBB2
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_805CADC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0805CBB2
+_0805CBB0:
+ movs r0, 0x2
+_0805CBB2:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CB5C
+
+ thumb_func_start sub_805CBB8
+sub_805CBB8: @ 805CBB8
+ 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 sub_805CAAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0805CBF4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_805CAEC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bne _0805CC0E
+ b _0805CC0C
+_0805CBF4:
+ cmp r0, 0x4
+ bne _0805CC0E
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_805CADC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0805CC0E
+_0805CC0C:
+ movs r0, 0x1
+_0805CC0E:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CBB8
+
+ thumb_func_start sub_805CC14
+sub_805CC14: @ 805CC14
+ 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 sub_805CAAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0805CC50
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_805CAEC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _0805CC6A
+ b _0805CC68
+_0805CC50:
+ cmp r0, 0x3
+ bne _0805CC6A
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_805CADC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0805CC6A
+_0805CC68:
+ movs r0, 0x1
+_0805CC6A:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CC14
+
+ thumb_func_start sub_805CC70
+sub_805CC70: @ 805CC70
+ 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 sub_805CAAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bne _0805CCA6
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl sub_805CADC
+ lsls r0, 24
+ lsrs r0, 24
+_0805CCA6:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CC70
+
+ thumb_func_start sub_805CCAC
+sub_805CCAC: @ 805CCAC
+ 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 sub_805CAAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _0805CCE2
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl sub_805CADC
+ lsls r0, 24
+ lsrs r0, 24
+_0805CCE2:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CCAC
+
+ thumb_func_start sub_805CCE8
+sub_805CCE8: @ 805CCE8
+ 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 sub_805CAAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0805CD1E
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl sub_805CAEC
+ lsls r0, 24
+ lsrs r0, 24
+_0805CD1E:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CCE8
+
+ thumb_func_start sub_805CD24
+sub_805CD24: @ 805CD24
+ 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 sub_805CAAC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0805CD5A
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl sub_805CAEC
+ lsls r0, 24
+ lsrs r0, 24
+_0805CD5A:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CD24
+
+ thumb_func_start sub_805CD60
+sub_805CD60: @ 805CD60
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805CD78
+ movs r0, 0
+ b _0805CDDC
+_0805CD78:
+ 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 _0805CDAC
+ negs r0, r0
+ lsls r0, 16
+ lsrs r2, r0, 16
+_0805CDAC:
+ lsls r0, r3, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _0805CDBA
+ negs r0, r0
+ lsls r0, 16
+ lsrs r3, r0, 16
+_0805CDBA:
+ ldr r0, _0805CDE4 @ =gUnknown_08375244
+ 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
+_0805CDDC:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805CDE4: .4byte gUnknown_08375244
+ thumb_func_end sub_805CD60
+
+ thumb_func_start sub_805CDE8
+sub_805CDE8: @ 805CDE8
+ 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, _0805CE04 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805CE08 @ =sub_805CE0C
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805CE04: .4byte gMapObjects
+_0805CE08: .4byte sub_805CE0C
+ thumb_func_end sub_805CDE8
+
+ thumb_func_start sub_805CE0C
+sub_805CE0C: @ 805CE0C
+ push {r4,lr}
+ ldr r3, _0805CE28 @ =gUnknown_08375270
+ 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
+_0805CE28: .4byte gUnknown_08375270
+ thumb_func_end sub_805CE0C
+
+ thumb_func_start sub_805CE2C
+sub_805CE2C: @ 805CE2C
+ 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_805CE2C
+
+ thumb_func_start sub_805CE40
+sub_805CE40: @ 805CE40
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CE40
+
+ thumb_func_start sub_805CE6C
+sub_805CE6C: @ 805CE6C
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805CEA2
+ ldr r4, _0805CEAC @ =gUnknown_0837520C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805CEA2:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805CEAC: .4byte gUnknown_0837520C
+ thumb_func_end sub_805CE6C
+
+ thumb_func_start sub_805CEB0
+sub_805CEB0: @ 805CEB0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805CECE
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805CED6
+_0805CECE:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805CED8
+_0805CED6:
+ movs r0, 0
+_0805CED8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CEB0
+
+ thumb_func_start sub_805CEE0
+sub_805CEE0: @ 805CEE0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805CF24 @ =gUnknown_08375240
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805CF10
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805CF10:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805CF24: .4byte gUnknown_08375240
+ thumb_func_end sub_805CEE0
+
+ thumb_func_start sub_805CF28
+sub_805CF28: @ 805CF28
+ 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, _0805CF44 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805CF48 @ =sub_805CF4C
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805CF44: .4byte gMapObjects
+_0805CF48: .4byte sub_805CF4C
+ thumb_func_end sub_805CF28
+
+ thumb_func_start sub_805CF4C
+sub_805CF4C: @ 805CF4C
+ push {r4,lr}
+ ldr r3, _0805CF68 @ =gUnknown_08375284
+ 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
+_0805CF68: .4byte gUnknown_08375284
+ thumb_func_end sub_805CF4C
+
+ thumb_func_start sub_805CF6C
+sub_805CF6C: @ 805CF6C
+ 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_805CF6C
+
+ thumb_func_start sub_805CF80
+sub_805CF80: @ 805CF80
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CF80
+
+ thumb_func_start sub_805CFAC
+sub_805CFAC: @ 805CFAC
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805CFE0
+ ldr r5, _0805CFDC @ =gUnknown_0837520C
+ 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 sub_8064820
+ strh r4, [r6, 0x30]
+ movs r0, 0x1
+ b _0805CFE2
+ .align 2, 0
+_0805CFDC: .4byte gUnknown_0837520C
+_0805CFE0:
+ movs r0, 0
+_0805CFE2:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CFAC
+
+ thumb_func_start sub_805CFE8
+sub_805CFE8: @ 805CFE8
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805CFFC
+ movs r0, 0
+ b _0805D002
+_0805CFFC:
+ movs r0, 0x4
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_0805D002:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805CFE8
+
+ thumb_func_start sub_805D008
+sub_805D008: @ 805D008
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldr r1, _0805D050 @ =gUnknown_083752A0
+ 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 FieldObjectSetDirection
+ movs r0, 0x5
+ strh r0, [r6, 0x30]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_805FF20
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D046
+ strh r7, [r6, 0x30]
+_0805D046:
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D050: .4byte gUnknown_083752A0
+ thumb_func_end sub_805D008
+
+ thumb_func_start sub_805D054
+sub_805D054: @ 805D054
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetGoSpeed0AnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ 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_805D054
+
+ thumb_func_start sub_805D084
+sub_805D084: @ 805D084
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D0A2
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_0805D0A2:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D084
+
+ thumb_func_start sub_805D0AC
+sub_805D0AC: @ 805D0AC
+ 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, _0805D0C8 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805D0CC @ =sub_805D0D0
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805D0C8: .4byte gMapObjects
+_0805D0CC: .4byte sub_805D0D0
+ thumb_func_end sub_805D0AC
+
+ thumb_func_start sub_805D0D0
+sub_805D0D0: @ 805D0D0
+ push {r4,lr}
+ ldr r3, _0805D0EC @ =gUnknown_083752A4
+ 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
+_0805D0EC: .4byte gUnknown_083752A4
+ thumb_func_end sub_805D0D0
+
+ thumb_func_start sub_805D0F0
+sub_805D0F0: @ 805D0F0
+ 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_805D0F0
+
+ thumb_func_start sub_805D104
+sub_805D104: @ 805D104
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D104
+
+ thumb_func_start sub_805D130
+sub_805D130: @ 805D130
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D164
+ ldr r5, _0805D160 @ =gUnknown_0837520C
+ 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 sub_8064820
+ strh r4, [r6, 0x30]
+ movs r0, 0x1
+ b _0805D166
+ .align 2, 0
+_0805D160: .4byte gUnknown_0837520C
+_0805D164:
+ movs r0, 0
+_0805D166:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D130
+
+ thumb_func_start sub_805D16C
+sub_805D16C: @ 805D16C
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805D180
+ movs r0, 0
+ b _0805D186
+_0805D180:
+ movs r0, 0x4
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_0805D186:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D16C
+
+ thumb_func_start sub_805D18C
+sub_805D18C: @ 805D18C
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldr r1, _0805D1D4 @ =gUnknown_083752C0
+ 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 FieldObjectSetDirection
+ movs r0, 0x5
+ strh r0, [r6, 0x30]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_805FF20
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D1CA
+ strh r7, [r6, 0x30]
+_0805D1CA:
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D1D4: .4byte gUnknown_083752C0
+ thumb_func_end sub_805D18C
+
+ thumb_func_start sub_805D1D8
+sub_805D1D8: @ 805D1D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetGoSpeed0AnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ 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_805D1D8
+
+ thumb_func_start sub_805D208
+sub_805D208: @ 805D208
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D226
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_0805D226:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D208
+
+ thumb_func_start sub_805D230
+sub_805D230: @ 805D230
+ 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, _0805D24C @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805D250 @ =sub_805D254
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805D24C: .4byte gMapObjects
+_0805D250: .4byte sub_805D254
+ thumb_func_end sub_805D230
+
+ thumb_func_start sub_805D254
+sub_805D254: @ 805D254
+ push {r4,lr}
+ ldr r3, _0805D270 @ =gUnknown_083752C4
+ 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
+_0805D270: .4byte gUnknown_083752C4
+ thumb_func_end sub_805D254
+
+ thumb_func_start sub_805D274
+sub_805D274: @ 805D274
+ 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 GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D274
+
+ thumb_func_start sub_805D2A0
+sub_805D2A0: @ 805D2A0
+ push {r4,lr}
+ adds r4, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805D2B2
+ movs r0, 0
+ b _0805D2B8
+_0805D2B2:
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_0805D2B8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D2A0
+
+ thumb_func_start sub_805D2C0
+sub_805D2C0: @ 805D2C0
+ ldrb r2, [r0]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_805D2C0
+
+ thumb_func_start FieldObjectCB_BerryTree
+FieldObjectCB_BerryTree: @ 805D2D0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805D30C @ =gMapObjects
+ adds r5, r0, r1
+ ldrh r1, [r4, 0x3C]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0805D2FC
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl get_berry_tree_graphics
+ ldrh r1, [r4, 0x3C]
+ movs r0, 0x1
+ orrs r0, r1
+ strh r0, [r4, 0x3C]
+_0805D2FC:
+ ldr r2, _0805D310 @ =sub_805D314
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl meta_step
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805D30C: .4byte gMapObjects
+_0805D310: .4byte sub_805D314
+ thumb_func_end FieldObjectCB_BerryTree
+
+ thumb_func_start sub_805D314
+sub_805D314: @ 805D314
+ push {r4,lr}
+ ldr r3, _0805D330 @ =gUnknown_083752D0
+ 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
+_0805D330: .4byte gUnknown_083752D0
+ thumb_func_end sub_805D314
+
+ thumb_func_start do_berry_tree_growth_sparkle_1
+do_berry_tree_growth_sparkle_1: @ 805D334
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl npc_reset
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r6, r5, 0
+ adds r6, 0x3E
+ ldrb r0, [r6]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r6]
+ ldrb r0, [r4, 0x1D]
+ bl GetStageByBerryTreeId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0
+ bne _0805D3A4
+ ldrh r1, [r5, 0x3C]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _0805D39A
+ subs r6, 0x14
+ ldrb r0, [r6]
+ cmp r0, 0x4
+ bne _0805D39A
+ ldr r1, _0805D3A0 @ =gUnknown_0202FF84
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ str r0, [r1]
+ movs r2, 0x12
+ ldrsh r0, [r4, r2]
+ str r0, [r1, 0x4]
+ adds r0, r5, 0
+ adds r0, 0x43
+ ldrb r0, [r0]
+ subs r0, 0x1
+ str r0, [r1, 0x8]
+ ldrb r0, [r5, 0x5]
+ lsls r0, 28
+ lsrs r0, 30
+ str r0, [r1, 0xC]
+ movs r0, 0x17
+ bl FieldEffectStart
+ strb r7, [r6]
+_0805D39A:
+ movs r0, 0
+ b _0805D3E6
+ .align 2, 0
+_0805D3A0: .4byte gUnknown_0202FF84
+_0805D3A4:
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x21
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ ldrb r1, [r6]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ subs r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r0, r5, 0
+ adds r0, 0x2A
+ ldrb r0, [r0]
+ cmp r0, r7
+ bne _0805D3E0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl get_berry_tree_graphics
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x39
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ b _0805D3E6
+_0805D3E0:
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+_0805D3E6:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end do_berry_tree_growth_sparkle_1
+
+ thumb_func_start sub_805D3EC
+sub_805D3EC: @ 805D3EC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805D3FE
+ movs r0, 0
+ b _0805D404
+_0805D3FE:
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_0805D404:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D3EC
+
+ thumb_func_start do_berry_tree_growth_sparkle_2
+do_berry_tree_growth_sparkle_2: @ 805D40C
+ push {r4,lr}
+ ldrb r2, [r0]
+ movs r3, 0x2
+ orrs r2, r3
+ strb r2, [r0]
+ movs r3, 0
+ movs r2, 0x3
+ strh r2, [r1, 0x30]
+ strh r3, [r1, 0x32]
+ ldrh r3, [r1, 0x3C]
+ movs r2, 0x2
+ orrs r2, r3
+ strh r2, [r1, 0x3C]
+ ldr r3, _0805D454 @ =gUnknown_0202FF84
+ movs r4, 0x10
+ ldrsh r2, [r0, r4]
+ str r2, [r3]
+ movs r2, 0x12
+ ldrsh r0, [r0, r2]
+ str r0, [r3, 0x4]
+ adds r0, r1, 0
+ adds r0, 0x43
+ ldrb r0, [r0]
+ subs r0, 0x1
+ str r0, [r3, 0x8]
+ ldrb r0, [r1, 0x5]
+ lsls r0, 28
+ lsrs r0, 30
+ str r0, [r3, 0xC]
+ movs r0, 0x17
+ bl FieldEffectStart
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D454: .4byte gUnknown_0202FF84
+ thumb_func_end do_berry_tree_growth_sparkle_2
+
+ thumb_func_start sub_805D458
+sub_805D458: @ 805D458
+ push {r4,lr}
+ adds r3, r0, 0
+ adds r4, r1, 0
+ ldrh r1, [r4, 0x32]
+ adds r1, 0x1
+ strh r1, [r4, 0x32]
+ movs r0, 0x2
+ ands r1, r0
+ lsls r1, 16
+ lsrs r1, 17
+ lsls r1, 5
+ ldrb r2, [r3, 0x1]
+ subs r0, 0x23
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x1]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x40
+ bgt _0805D490
+ movs r0, 0
+ b _0805D4A2
+_0805D490:
+ adds r0, r3, 0
+ adds r1, r4, 0
+ bl get_berry_tree_graphics
+ movs r0, 0x4
+ strh r0, [r4, 0x30]
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_0805D4A2:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D458
+
+ thumb_func_start sub_805D4A8
+sub_805D4A8: @ 805D4A8
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrh r2, [r4, 0x32]
+ adds r2, 0x1
+ strh r2, [r4, 0x32]
+ movs r1, 0x2
+ ands r2, r1
+ lsls r2, 16
+ lsrs r2, 17
+ lsls r2, 5
+ ldrb r3, [r0, 0x1]
+ subs r1, 0x23
+ ands r1, r3
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x40
+ bgt _0805D4DE
+ movs r0, 0
+ b _0805D4EC
+_0805D4DE:
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x3C]
+ subs r0, 0x3
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ movs r0, 0x1
+_0805D4EC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D4A8
+
+ thumb_func_start sub_805D4F4
+sub_805D4F4: @ 805D4F4
+ 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, _0805D510 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805D514 @ =sub_805D518
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805D510: .4byte gMapObjects
+_0805D514: .4byte sub_805D518
+ thumb_func_end sub_805D4F4
+
+ thumb_func_start sub_805D518
+sub_805D518: @ 805D518
+ push {r4,lr}
+ ldr r3, _0805D534 @ =gUnknown_083752E4
+ 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
+_0805D534: .4byte gUnknown_083752E4
+ thumb_func_end sub_805D518
+
+ thumb_func_start sub_805D538
+sub_805D538: @ 805D538
+ 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_805D538
+
+ thumb_func_start sub_805D54C
+sub_805D54C: @ 805D54C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D54C
+
+ thumb_func_start sub_805D578
+sub_805D578: @ 805D578
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D5AE
+ ldr r4, _0805D5B8 @ =gUnknown_0837520C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805D5AE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D5B8: .4byte gUnknown_0837520C
+ thumb_func_end sub_805D578
+
+ thumb_func_start sub_805D5BC
+sub_805D5BC: @ 805D5BC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805D5DA
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D5E2
+_0805D5DA:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805D5E4
+_0805D5E2:
+ movs r0, 0
+_0805D5E4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D5BC
+
+ thumb_func_start sub_805D5EC
+sub_805D5EC: @ 805D5EC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805D630 @ =gUnknown_083752A0
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805D61C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805D61C:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D630: .4byte gUnknown_083752A0
+ thumb_func_end sub_805D5EC
+
+ thumb_func_start sub_805D634
+sub_805D634: @ 805D634
+ 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, _0805D650 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805D654 @ =sub_805D658
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805D650: .4byte gMapObjects
+_0805D654: .4byte sub_805D658
+ thumb_func_end sub_805D634
+
+ thumb_func_start sub_805D658
+sub_805D658: @ 805D658
+ push {r4,lr}
+ ldr r3, _0805D674 @ =gUnknown_083752F8
+ 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
+_0805D674: .4byte gUnknown_083752F8
+ thumb_func_end sub_805D658
+
+ thumb_func_start sub_805D678
+sub_805D678: @ 805D678
+ 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_805D678
+
+ thumb_func_start sub_805D68C
+sub_805D68C: @ 805D68C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D68C
+
+ thumb_func_start sub_805D6B8
+sub_805D6B8: @ 805D6B8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D6EE
+ ldr r4, _0805D6F8 @ =gUnknown_0837520C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805D6EE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D6F8: .4byte gUnknown_0837520C
+ thumb_func_end sub_805D6B8
+
+ thumb_func_start sub_805D6FC
+sub_805D6FC: @ 805D6FC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805D71A
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D722
+_0805D71A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805D724
+_0805D722:
+ movs r0, 0
+_0805D724:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D6FC
+
+ thumb_func_start sub_805D72C
+sub_805D72C: @ 805D72C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805D770 @ =gUnknown_083752C0
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805D75C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805D75C:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D770: .4byte gUnknown_083752C0
+ thumb_func_end sub_805D72C
+
+ thumb_func_start sub_805D774
+sub_805D774: @ 805D774
+ 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, _0805D790 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805D794 @ =sub_805D798
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805D790: .4byte gMapObjects
+_0805D794: .4byte sub_805D798
+ thumb_func_end sub_805D774
+
+ thumb_func_start sub_805D798
+sub_805D798: @ 805D798
+ push {r4,lr}
+ ldr r3, _0805D7B4 @ =gUnknown_0837530C
+ 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
+_0805D7B4: .4byte gUnknown_0837530C
+ thumb_func_end sub_805D798
+
+ thumb_func_start sub_805D7B8
+sub_805D7B8: @ 805D7B8
+ 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_805D7B8
+
+ thumb_func_start sub_805D7CC
+sub_805D7CC: @ 805D7CC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D7CC
+
+ thumb_func_start sub_805D7F8
+sub_805D7F8: @ 805D7F8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D82E
+ ldr r4, _0805D838 @ =gUnknown_0837521C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805D82E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D838: .4byte gUnknown_0837521C
+ thumb_func_end sub_805D7F8
+
+ thumb_func_start sub_805D83C
+sub_805D83C: @ 805D83C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805D85A
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D862
+_0805D85A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805D864
+_0805D862:
+ movs r0, 0
+_0805D864:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D83C
+
+ thumb_func_start sub_805D86C
+sub_805D86C: @ 805D86C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805D8B0 @ =gUnknown_08375320
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805D89C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805D89C:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D8B0: .4byte gUnknown_08375320
+ thumb_func_end sub_805D86C
+
+ thumb_func_start sub_805D8B4
+sub_805D8B4: @ 805D8B4
+ 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, _0805D8D0 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805D8D4 @ =sub_805D8D8
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805D8D0: .4byte gMapObjects
+_0805D8D4: .4byte sub_805D8D8
+ thumb_func_end sub_805D8B4
+
+ thumb_func_start sub_805D8D8
+sub_805D8D8: @ 805D8D8
+ push {r4,lr}
+ ldr r3, _0805D8F4 @ =gUnknown_08375324
+ 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
+_0805D8F4: .4byte gUnknown_08375324
+ thumb_func_end sub_805D8D8
+
+ thumb_func_start sub_805D8F8
+sub_805D8F8: @ 805D8F8
+ 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_805D8F8
+
+ thumb_func_start sub_805D90C
+sub_805D90C: @ 805D90C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D90C
+
+ thumb_func_start sub_805D938
+sub_805D938: @ 805D938
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D96E
+ ldr r4, _0805D978 @ =gUnknown_0837521C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805D96E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D978: .4byte gUnknown_0837521C
+ thumb_func_end sub_805D938
+
+ thumb_func_start sub_805D97C
+sub_805D97C: @ 805D97C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805D99A
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805D9A2
+_0805D99A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805D9A4
+_0805D9A2:
+ movs r0, 0
+_0805D9A4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805D97C
+
+ thumb_func_start sub_805D9AC
+sub_805D9AC: @ 805D9AC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805D9F0 @ =gUnknown_08375338
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805D9DC
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805D9DC:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805D9F0: .4byte gUnknown_08375338
+ thumb_func_end sub_805D9AC
+
+ thumb_func_start sub_805D9F4
+sub_805D9F4: @ 805D9F4
+ 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, _0805DA10 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805DA14 @ =sub_805DA18
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805DA10: .4byte gMapObjects
+_0805DA14: .4byte sub_805DA18
+ thumb_func_end sub_805D9F4
+
+ thumb_func_start sub_805DA18
+sub_805DA18: @ 805DA18
+ push {r4,lr}
+ ldr r3, _0805DA34 @ =gUnknown_0837533C
+ 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
+_0805DA34: .4byte gUnknown_0837533C
+ thumb_func_end sub_805DA18
+
+ thumb_func_start sub_805DA38
+sub_805DA38: @ 805DA38
+ 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_805DA38
+
+ thumb_func_start sub_805DA4C
+sub_805DA4C: @ 805DA4C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DA4C
+
+ thumb_func_start sub_805DA78
+sub_805DA78: @ 805DA78
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DAAE
+ ldr r4, _0805DAB8 @ =gUnknown_0837521C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805DAAE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DAB8: .4byte gUnknown_0837521C
+ thumb_func_end sub_805DA78
+
+ thumb_func_start sub_805DABC
+sub_805DABC: @ 805DABC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805DADA
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DAE2
+_0805DADA:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805DAE4
+_0805DAE2:
+ movs r0, 0
+_0805DAE4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DABC
+
+ thumb_func_start sub_805DAEC
+sub_805DAEC: @ 805DAEC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805DB30 @ =gUnknown_08375350
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805DB1C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805DB1C:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DB30: .4byte gUnknown_08375350
+ thumb_func_end sub_805DAEC
+
+ thumb_func_start sub_805DB34
+sub_805DB34: @ 805DB34
+ 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, _0805DB50 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805DB54 @ =sub_805DB58
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805DB50: .4byte gMapObjects
+_0805DB54: .4byte sub_805DB58
+ thumb_func_end sub_805DB34
+
+ thumb_func_start sub_805DB58
+sub_805DB58: @ 805DB58
+ push {r4,lr}
+ ldr r3, _0805DB74 @ =gUnknown_08375354
+ 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
+_0805DB74: .4byte gUnknown_08375354
+ thumb_func_end sub_805DB58
+
+ thumb_func_start sub_805DB78
+sub_805DB78: @ 805DB78
+ 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_805DB78
+
+ thumb_func_start sub_805DB8C
+sub_805DB8C: @ 805DB8C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DB8C
+
+ thumb_func_start sub_805DBB8
+sub_805DBB8: @ 805DBB8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DBEE
+ ldr r4, _0805DBF8 @ =gUnknown_0837521C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805DBEE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DBF8: .4byte gUnknown_0837521C
+ thumb_func_end sub_805DBB8
+
+ thumb_func_start sub_805DBFC
+sub_805DBFC: @ 805DBFC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805DC1A
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DC22
+_0805DC1A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805DC24
+_0805DC22:
+ movs r0, 0
+_0805DC24:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DBFC
+
+ thumb_func_start sub_805DC2C
+sub_805DC2C: @ 805DC2C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805DC70 @ =gUnknown_08375368
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805DC5C
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805DC5C:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DC70: .4byte gUnknown_08375368
+ thumb_func_end sub_805DC2C
+
+ thumb_func_start sub_805DC74
+sub_805DC74: @ 805DC74
+ 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, _0805DC90 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805DC94 @ =sub_805DC98
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805DC90: .4byte gMapObjects
+_0805DC94: .4byte sub_805DC98
+ thumb_func_end sub_805DC74
+
+ thumb_func_start sub_805DC98
+sub_805DC98: @ 805DC98
+ push {r4,lr}
+ ldr r3, _0805DCB4 @ =gUnknown_0837536C
+ 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
+_0805DCB4: .4byte gUnknown_0837536C
+ thumb_func_end sub_805DC98
+
+ thumb_func_start sub_805DCB8
+sub_805DCB8: @ 805DCB8
+ 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_805DCB8
+
+ thumb_func_start sub_805DCCC
+sub_805DCCC: @ 805DCCC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DCCC
+
+ thumb_func_start sub_805DCF8
+sub_805DCF8: @ 805DCF8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DD2E
+ ldr r4, _0805DD38 @ =gUnknown_0837521C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805DD2E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DD38: .4byte gUnknown_0837521C
+ thumb_func_end sub_805DCF8
+
+ thumb_func_start sub_805DD3C
+sub_805DD3C: @ 805DD3C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805DD5A
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DD62
+_0805DD5A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805DD64
+_0805DD62:
+ movs r0, 0
+_0805DD64:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DD3C
+
+ thumb_func_start sub_805DD6C
+sub_805DD6C: @ 805DD6C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805DDB0 @ =gUnknown_08375380
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x7
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805DD9C
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805DD9C:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DDB0: .4byte gUnknown_08375380
+ thumb_func_end sub_805DD6C
+
+ thumb_func_start sub_805DDB4
+sub_805DDB4: @ 805DDB4
+ 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, _0805DDD0 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805DDD4 @ =sub_805DDD8
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805DDD0: .4byte gMapObjects
+_0805DDD4: .4byte sub_805DDD8
+ thumb_func_end sub_805DDB4
+
+ thumb_func_start sub_805DDD8
+sub_805DDD8: @ 805DDD8
+ push {r4,lr}
+ ldr r3, _0805DDF4 @ =gUnknown_08375384
+ 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
+_0805DDF4: .4byte gUnknown_08375384
+ thumb_func_end sub_805DDD8
+
+ thumb_func_start sub_805DDF8
+sub_805DDF8: @ 805DDF8
+ 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_805DDF8
+
+ thumb_func_start sub_805DE0C
+sub_805DE0C: @ 805DE0C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DE0C
+
+ thumb_func_start sub_805DE38
+sub_805DE38: @ 805DE38
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DE6E
+ ldr r4, _0805DE78 @ =gUnknown_0837521C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805DE6E:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DE78: .4byte gUnknown_0837521C
+ thumb_func_end sub_805DE38
+
+ thumb_func_start sub_805DE7C
+sub_805DE7C: @ 805DE7C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805DE9A
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DEA2
+_0805DE9A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805DEA4
+_0805DEA2:
+ movs r0, 0
+_0805DEA4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DE7C
+
+ thumb_func_start sub_805DEAC
+sub_805DEAC: @ 805DEAC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805DEF0 @ =gUnknown_08375398
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805DEDC
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805DEDC:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DEF0: .4byte gUnknown_08375398
+ thumb_func_end sub_805DEAC
+
+ thumb_func_start sub_805DEF4
+sub_805DEF4: @ 805DEF4
+ 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, _0805DF10 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805DF14 @ =sub_805DF18
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805DF10: .4byte gMapObjects
+_0805DF14: .4byte sub_805DF18
+ thumb_func_end sub_805DEF4
+
+ thumb_func_start sub_805DF18
+sub_805DF18: @ 805DF18
+ push {r4,lr}
+ ldr r3, _0805DF34 @ =gUnknown_0837539C
+ 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
+_0805DF34: .4byte gUnknown_0837539C
+ thumb_func_end sub_805DF18
+
+ thumb_func_start sub_805DF38
+sub_805DF38: @ 805DF38
+ 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_805DF38
+
+ thumb_func_start sub_805DF4C
+sub_805DF4C: @ 805DF4C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DF4C
+
+ thumb_func_start sub_805DF78
+sub_805DF78: @ 805DF78
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DFAE
+ ldr r4, _0805DFB8 @ =gUnknown_0837521C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805DFAE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805DFB8: .4byte gUnknown_0837521C
+ thumb_func_end sub_805DF78
+
+ thumb_func_start sub_805DFBC
+sub_805DFBC: @ 805DFBC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805DFDA
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805DFE2
+_0805DFDA:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805DFE4
+_0805DFE2:
+ movs r0, 0
+_0805DFE4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805DFBC
+
+ thumb_func_start sub_805DFEC
+sub_805DFEC: @ 805DFEC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E030 @ =gUnknown_083753B0
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0x9
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805E01C
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805E01C:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E030: .4byte gUnknown_083753B0
+ thumb_func_end sub_805DFEC
+
+ thumb_func_start sub_805E034
+sub_805E034: @ 805E034
+ 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, _0805E050 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E054 @ =sub_805E058
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E050: .4byte gMapObjects
+_0805E054: .4byte sub_805E058
+ thumb_func_end sub_805E034
+
+ thumb_func_start sub_805E058
+sub_805E058: @ 805E058
+ push {r4,lr}
+ ldr r3, _0805E074 @ =gUnknown_083753B4
+ 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
+_0805E074: .4byte gUnknown_083753B4
+ thumb_func_end sub_805E058
+
+ thumb_func_start sub_805E078
+sub_805E078: @ 805E078
+ 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_805E078
+
+ thumb_func_start sub_805E08C
+sub_805E08C: @ 805E08C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E08C
+
+ thumb_func_start sub_805E0B8
+sub_805E0B8: @ 805E0B8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E0EE
+ ldr r4, _0805E0F8 @ =gUnknown_0837521C
+ 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 sub_8064820
+ ldrb r1, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r6]
+ strh r5, [r7, 0x30]
+_0805E0EE:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E0F8: .4byte gUnknown_0837521C
+ thumb_func_end sub_805E0B8
+
+ thumb_func_start sub_805E0FC
+sub_805E0FC: @ 805E0FC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805E11A
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E122
+_0805E11A:
+ movs r0, 0x4
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ b _0805E124
+_0805E122:
+ movs r0, 0
+_0805E124:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E0FC
+
+ thumb_func_start sub_805E12C
+sub_805E12C: @ 805E12C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E170 @ =gUnknown_083753C8
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0xA
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805E15C
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r1, [r0]
+_0805E15C:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E170: .4byte gUnknown_083753C8
+ thumb_func_end sub_805E12C
+
+ thumb_func_start sub_805E174
+sub_805E174: @ 805E174
+ 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, _0805E190 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E194 @ =sub_805E198
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E190: .4byte gMapObjects
+_0805E194: .4byte sub_805E198
+ thumb_func_end sub_805E174
+
+ thumb_func_start sub_805E198
+sub_805E198: @ 805E198
+ push {r4,lr}
+ ldr r3, _0805E1B4 @ =gUnknown_083753CC
+ 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
+_0805E1B4: .4byte gUnknown_083753CC
+ thumb_func_end sub_805E198
+
+ thumb_func_start sub_805E1B8
+sub_805E1B8: @ 805E1B8
+ 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 GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E1B8
+
+ thumb_func_start sub_805E1E4
+sub_805E1E4: @ 805E1E4
+ push {r4,lr}
+ adds r4, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E1FE
+ adds r0, r4, 0
+ movs r1, 0x30
+ bl sub_8064820
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+_0805E1FE:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E1E4
+
+ thumb_func_start sub_805E208
+sub_805E208: @ 805E208
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805E226
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E22A
+_0805E226:
+ movs r0, 0x3
+ strh r0, [r5, 0x30]
+_0805E22A:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E208
+
+ thumb_func_start sub_805E234
+sub_805E234: @ 805E234
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E274 @ =gUnknown_083753DC
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805E260
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ add r0, sp
+ ldrb r1, [r0]
+_0805E260:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E274: .4byte gUnknown_083753DC
+ thumb_func_end sub_805E234
+
+ thumb_func_start sub_805E278
+sub_805E278: @ 805E278
+ 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, _0805E294 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E298 @ =sub_805E29C
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E294: .4byte gMapObjects
+_0805E298: .4byte sub_805E29C
+ thumb_func_end sub_805E278
+
+ thumb_func_start sub_805E29C
+sub_805E29C: @ 805E29C
+ push {r4,lr}
+ ldr r3, _0805E2B8 @ =gUnknown_083753E4
+ 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
+_0805E2B8: .4byte gUnknown_083753E4
+ thumb_func_end sub_805E29C
+
+ thumb_func_start sub_805E2BC
+sub_805E2BC: @ 805E2BC
+ 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 GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E2BC
+
+ thumb_func_start sub_805E2E8
+sub_805E2E8: @ 805E2E8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E302
+ adds r0, r4, 0
+ movs r1, 0x30
+ bl sub_8064820
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+_0805E302:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E2E8
+
+ thumb_func_start sub_805E30C
+sub_805E30C: @ 805E30C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805E32A
+ adds r0, r4, 0
+ bl FieldObjectIsTrainerAndCloseToPlayer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E32E
+_0805E32A:
+ movs r0, 0x3
+ strh r0, [r5, 0x30]
+_0805E32E:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E30C
+
+ thumb_func_start sub_805E338
+sub_805E338: @ 805E338
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E378 @ =gUnknown_083753F4
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_805CD60
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0805E364
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ add r0, sp
+ ldrb r1, [r0]
+_0805E364:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E378: .4byte gUnknown_083753F4
+ thumb_func_end sub_805E338
+
+ thumb_func_start sub_805E37C
+sub_805E37C: @ 805E37C
+ 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, _0805E398 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E39C @ =sub_805E3A0
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E398: .4byte gMapObjects
+_0805E39C: .4byte sub_805E3A0
+ thumb_func_end sub_805E37C
+
+ thumb_func_start sub_805E3A0
+sub_805E3A0: @ 805E3A0
+ push {r4,lr}
+ ldr r3, _0805E3BC @ =gUnknown_083753FC
+ 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
+_0805E3BC: .4byte gUnknown_083753FC
+ thumb_func_end sub_805E3A0
+
+ thumb_func_start sub_805E3C0
+sub_805E3C0: @ 805E3C0
+ 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_805E3C0
+
+ thumb_func_start sub_805E3D4
+sub_805E3D4: @ 805E3D4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r0, _0805E408 @ =gUnknown_0836DC09
+ ldrb r1, [r4, 0x6]
+ adds r1, r0
+ ldrb r1, [r1]
+ adds r0, r4, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0805E3F6
+ adds r0, r1, 0
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r1, r0, 24
+_0805E3F6:
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x2
+ strh r0, [r5, 0x30]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E408: .4byte gUnknown_0836DC09
+ thumb_func_end sub_805E3D4
+
+ thumb_func_start sub_805E40C
+sub_805E40C: @ 805E40C
+ 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 _0805E43C
+ ldr r1, [r4, 0xC]
+ ldr r0, [r4, 0x10]
+ cmp r1, r0
+ bne _0805E43C
+ 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 FieldObjectSetDirection
+_0805E43C:
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl sub_805FF20
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetGoSpeed0AnimId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r5, 0x1
+ bne _0805E492
+ 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 FieldObjectSetDirection
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetGoSpeed0AnimId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl sub_805FF20
+ lsls r0, 24
+ lsrs r5, r0, 24
+_0805E492:
+ cmp r5, 0
+ beq _0805E4A4
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetStepInPlaceDelay16AnimId
+ lsls r0, 24
+ lsrs r6, r0, 24
+_0805E4A4:
+ adds r0, r4, 0
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl FieldObjectSetRegularAnim
+ 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_805E40C
+
+ thumb_func_start sub_805E4C4
+sub_805E4C4: @ 805E4C4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E4E2
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_0805E4E2:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E4C4
+
+ thumb_func_start sub_805E4EC
+sub_805E4EC: @ 805E4EC
+ 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_805E4EC
+
+ thumb_func_start MoveFieldObjectInNextDirectionInSequence
+MoveFieldObjectInNextDirectionInSequence: @ 805E500
+ 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 _0805E522
+ ldr r1, [r4, 0xC]
+ ldr r0, [r4, 0x10]
+ cmp r1, r0
+ bne _0805E522
+ movs r0, 0
+ strb r0, [r2]
+_0805E522:
+ adds r5, r4, 0
+ adds r5, 0x21
+ ldrb r0, [r5]
+ adds r0, r7, r0
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetGoSpeed0AnimId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl sub_805FF20
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0805E57C
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ ldrb r0, [r5]
+ adds r0, r7, r0
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetGoSpeed0AnimId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl sub_805FF20
+ lsls r0, 24
+ lsrs r0, 24
+_0805E57C:
+ cmp r0, 0
+ beq _0805E58E
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetStepInPlaceDelay16AnimId
+ lsls r0, 24
+ lsrs r6, r0, 24
+_0805E58E:
+ adds r0, r4, 0
+ mov r1, r8
+ adds r2, r6, 0
+ bl FieldObjectSetRegularAnim
+ 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 MoveFieldObjectInNextDirectionInSequence
+
+ thumb_func_start sub_805E5B4
+sub_805E5B4: @ 805E5B4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805E5D2
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_0805E5D2:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805E5B4
+
+ thumb_func_start sub_805E5DC
+sub_805E5DC: @ 805E5DC
+ 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, _0805E5F8 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E5FC @ =sub_805E600
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E5F8: .4byte gMapObjects
+_0805E5FC: .4byte sub_805E600
+ thumb_func_end sub_805E5DC
+
+ thumb_func_start sub_805E600
+sub_805E600: @ 805E600
+ push {r4,lr}
+ ldr r3, _0805E61C @ =gUnknown_0837540C
+ 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
+_0805E61C: .4byte gUnknown_0837540C
+ thumb_func_end sub_805E600
+
+ thumb_func_start sub_805E620
+sub_805E620: @ 805E620
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E664 @ =gUnknown_08375418
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805E64C
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805E64C
+ movs r0, 0x3
+ strb r0, [r2]
+_0805E64C:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E664: .4byte gUnknown_08375418
+ thumb_func_end sub_805E620
+
+ thumb_func_start sub_805E668
+sub_805E668: @ 805E668
+ 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, _0805E684 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E688 @ =sub_805E68C
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E684: .4byte gMapObjects
+_0805E688: .4byte sub_805E68C
+ thumb_func_end sub_805E668
+
+ thumb_func_start sub_805E68C
+sub_805E68C: @ 805E68C
+ push {r4,lr}
+ ldr r3, _0805E6A8 @ =gUnknown_0837541C
+ 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
+_0805E6A8: .4byte gUnknown_0837541C
+ thumb_func_end sub_805E68C
+
+ thumb_func_start sub_805E6AC
+sub_805E6AC: @ 805E6AC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E6F0 @ =gUnknown_08375428
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0805E6D8
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805E6D8
+ movs r0, 0x2
+ strb r0, [r2]
+_0805E6D8:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E6F0: .4byte gUnknown_08375428
+ thumb_func_end sub_805E6AC
+
+ thumb_func_start sub_805E6F4
+sub_805E6F4: @ 805E6F4
+ 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, _0805E710 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E714 @ =sub_805E718
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E710: .4byte gMapObjects
+_0805E714: .4byte sub_805E718
+ thumb_func_end sub_805E6F4
+
+ thumb_func_start sub_805E718
+sub_805E718: @ 805E718
+ push {r4,lr}
+ ldr r3, _0805E734 @ =gUnknown_0837542C
+ 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
+_0805E734: .4byte gUnknown_0837542C
+ thumb_func_end sub_805E718
+
+ thumb_func_start sub_805E738
+sub_805E738: @ 805E738
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E77C @ =gUnknown_08375438
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0805E764
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805E764
+ movs r0, 0x2
+ strb r0, [r2]
+_0805E764:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E77C: .4byte gUnknown_08375438
+ thumb_func_end sub_805E738
+
+ thumb_func_start sub_805E780
+sub_805E780: @ 805E780
+ 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, _0805E79C @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E7A0 @ =sub_805E7A4
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E79C: .4byte gMapObjects
+_0805E7A0: .4byte sub_805E7A4
+ thumb_func_end sub_805E780
+
+ thumb_func_start sub_805E7A4
+sub_805E7A4: @ 805E7A4
+ push {r4,lr}
+ ldr r3, _0805E7C0 @ =gUnknown_0837543C
+ 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
+_0805E7C0: .4byte gUnknown_0837543C
+ thumb_func_end sub_805E7A4
+
+ thumb_func_start sub_805E7C4
+sub_805E7C4: @ 805E7C4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E808 @ =gUnknown_08375448
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805E7F0
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805E7F0
+ movs r0, 0x3
+ strb r0, [r2]
+_0805E7F0:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E808: .4byte gUnknown_08375448
+ thumb_func_end sub_805E7C4
+
+ thumb_func_start sub_805E80C
+sub_805E80C: @ 805E80C
+ 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, _0805E828 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E82C @ =sub_805E830
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E828: .4byte gMapObjects
+_0805E82C: .4byte sub_805E830
+ thumb_func_end sub_805E80C
+
+ thumb_func_start sub_805E830
+sub_805E830: @ 805E830
+ push {r4,lr}
+ ldr r3, _0805E84C @ =gUnknown_0837544C
+ 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
+_0805E84C: .4byte gUnknown_0837544C
+ thumb_func_end sub_805E830
+
+ thumb_func_start sub_805E850
+sub_805E850: @ 805E850
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E894 @ =gUnknown_08375458
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805E87C
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805E87C
+ movs r0, 0x3
+ strb r0, [r2]
+_0805E87C:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E894: .4byte gUnknown_08375458
+ thumb_func_end sub_805E850
+
+ thumb_func_start sub_805E898
+sub_805E898: @ 805E898
+ 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, _0805E8B4 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E8B8 @ =sub_805E8BC
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E8B4: .4byte gMapObjects
+_0805E8B8: .4byte sub_805E8BC
+ thumb_func_end sub_805E898
+
+ thumb_func_start sub_805E8BC
+sub_805E8BC: @ 805E8BC
+ push {r4,lr}
+ ldr r3, _0805E8D8 @ =gUnknown_0837545C
+ 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
+_0805E8D8: .4byte gUnknown_0837545C
+ thumb_func_end sub_805E8BC
+
+ thumb_func_start sub_805E8DC
+sub_805E8DC: @ 805E8DC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E920 @ =gUnknown_08375468
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0805E908
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805E908
+ movs r0, 0x2
+ strb r0, [r2]
+_0805E908:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E920: .4byte gUnknown_08375468
+ thumb_func_end sub_805E8DC
+
+ thumb_func_start sub_805E924
+sub_805E924: @ 805E924
+ 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, _0805E940 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E944 @ =sub_805E948
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E940: .4byte gMapObjects
+_0805E944: .4byte sub_805E948
+ thumb_func_end sub_805E924
+
+ thumb_func_start sub_805E948
+sub_805E948: @ 805E948
+ push {r4,lr}
+ ldr r3, _0805E964 @ =gUnknown_0837546C
+ 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
+_0805E964: .4byte gUnknown_0837546C
+ thumb_func_end sub_805E948
+
+ thumb_func_start sub_805E968
+sub_805E968: @ 805E968
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805E9AC @ =gUnknown_08375240
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0805E994
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805E994
+ movs r0, 0x2
+ strb r0, [r2]
+_0805E994:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805E9AC: .4byte gUnknown_08375240
+ thumb_func_end sub_805E968
+
+ thumb_func_start sub_805E9B0
+sub_805E9B0: @ 805E9B0
+ 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, _0805E9CC @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805E9D0 @ =sub_805E9D4
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805E9CC: .4byte gMapObjects
+_0805E9D0: .4byte sub_805E9D4
+ thumb_func_end sub_805E9B0
+
+ thumb_func_start sub_805E9D4
+sub_805E9D4: @ 805E9D4
+ push {r4,lr}
+ ldr r3, _0805E9F0 @ =gUnknown_08375478
+ 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
+_0805E9F0: .4byte gUnknown_08375478
+ thumb_func_end sub_805E9D4
+
+ thumb_func_start sub_805E9F4
+sub_805E9F4: @ 805E9F4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EA38 @ =gUnknown_08375484
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805EA20
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EA20
+ movs r0, 0x3
+ strb r0, [r2]
+_0805EA20:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EA38: .4byte gUnknown_08375484
+ thumb_func_end sub_805E9F4
+
+ thumb_func_start sub_805EA3C
+sub_805EA3C: @ 805EA3C
+ 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, _0805EA58 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EA5C @ =sub_805EA60
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EA58: .4byte gMapObjects
+_0805EA5C: .4byte sub_805EA60
+ thumb_func_end sub_805EA3C
+
+ thumb_func_start sub_805EA60
+sub_805EA60: @ 805EA60
+ push {r4,lr}
+ ldr r3, _0805EA7C @ =gUnknown_08375488
+ 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
+_0805EA7C: .4byte gUnknown_08375488
+ thumb_func_end sub_805EA60
+
+ thumb_func_start sub_805EA80
+sub_805EA80: @ 805EA80
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EAC4 @ =gUnknown_08375494
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805EAAC
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EAAC
+ movs r0, 0x3
+ strb r0, [r2]
+_0805EAAC:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EAC4: .4byte gUnknown_08375494
+ thumb_func_end sub_805EA80
+
+ thumb_func_start sub_805EAC8
+sub_805EAC8: @ 805EAC8
+ 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, _0805EAE4 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EAE8 @ =sub_805EAEC
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EAE4: .4byte gMapObjects
+_0805EAE8: .4byte sub_805EAEC
+ thumb_func_end sub_805EAC8
+
+ thumb_func_start sub_805EAEC
+sub_805EAEC: @ 805EAEC
+ push {r4,lr}
+ ldr r3, _0805EB08 @ =gUnknown_08375498
+ 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
+_0805EB08: .4byte gUnknown_08375498
+ thumb_func_end sub_805EAEC
+
+ thumb_func_start sub_805EB0C
+sub_805EB0C: @ 805EB0C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EB50 @ =gUnknown_083754A4
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0805EB38
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EB38
+ movs r0, 0x2
+ strb r0, [r2]
+_0805EB38:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EB50: .4byte gUnknown_083754A4
+ thumb_func_end sub_805EB0C
+
+ thumb_func_start sub_805EB54
+sub_805EB54: @ 805EB54
+ 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, _0805EB70 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EB74 @ =sub_805EB78
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EB70: .4byte gMapObjects
+_0805EB74: .4byte sub_805EB78
+ thumb_func_end sub_805EB54
+
+ thumb_func_start sub_805EB78
+sub_805EB78: @ 805EB78
+ push {r4,lr}
+ ldr r3, _0805EB94 @ =gUnknown_083754A8
+ 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
+_0805EB94: .4byte gUnknown_083754A8
+ thumb_func_end sub_805EB78
+
+ thumb_func_start sub_805EB98
+sub_805EB98: @ 805EB98
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EBDC @ =gUnknown_083754B4
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0805EBC4
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EBC4
+ movs r0, 0x2
+ strb r0, [r2]
+_0805EBC4:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EBDC: .4byte gUnknown_083754B4
+ thumb_func_end sub_805EB98
+
+ thumb_func_start sub_805EBE0
+sub_805EBE0: @ 805EBE0
+ 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, _0805EBFC @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EC00 @ =sub_805EC04
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EBFC: .4byte gMapObjects
+_0805EC00: .4byte sub_805EC04
+ thumb_func_end sub_805EBE0
+
+ thumb_func_start sub_805EC04
+sub_805EC04: @ 805EC04
+ push {r4,lr}
+ ldr r3, _0805EC20 @ =gUnknown_083754B8
+ 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
+_0805EC20: .4byte gUnknown_083754B8
+ thumb_func_end sub_805EC04
+
+ thumb_func_start sub_805EC24
+sub_805EC24: @ 805EC24
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EC68 @ =gUnknown_083754C4
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805EC50
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EC50
+ movs r0, 0x3
+ strb r0, [r2]
+_0805EC50:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EC68: .4byte gUnknown_083754C4
+ thumb_func_end sub_805EC24
+
+ thumb_func_start sub_805EC6C
+sub_805EC6C: @ 805EC6C
+ 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, _0805EC88 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EC8C @ =sub_805EC90
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EC88: .4byte gMapObjects
+_0805EC8C: .4byte sub_805EC90
+ thumb_func_end sub_805EC6C
+
+ thumb_func_start sub_805EC90
+sub_805EC90: @ 805EC90
+ push {r4,lr}
+ ldr r3, _0805ECAC @ =gUnknown_083754C8
+ 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
+_0805ECAC: .4byte gUnknown_083754C8
+ thumb_func_end sub_805EC90
+
+ thumb_func_start sub_805ECB0
+sub_805ECB0: @ 805ECB0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805ECF4 @ =gUnknown_083754D4
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805ECDC
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805ECDC
+ movs r0, 0x3
+ strb r0, [r2]
+_0805ECDC:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805ECF4: .4byte gUnknown_083754D4
+ thumb_func_end sub_805ECB0
+
+ thumb_func_start sub_805ECF8
+sub_805ECF8: @ 805ECF8
+ 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, _0805ED14 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805ED18 @ =sub_805ED1C
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805ED14: .4byte gMapObjects
+_0805ED18: .4byte sub_805ED1C
+ thumb_func_end sub_805ECF8
+
+ thumb_func_start sub_805ED1C
+sub_805ED1C: @ 805ED1C
+ push {r4,lr}
+ ldr r3, _0805ED38 @ =gUnknown_083754D8
+ 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
+_0805ED38: .4byte gUnknown_083754D8
+ thumb_func_end sub_805ED1C
+
+ thumb_func_start sub_805ED3C
+sub_805ED3C: @ 805ED3C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805ED80 @ =gUnknown_083754E4
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0805ED68
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805ED68
+ movs r0, 0x2
+ strb r0, [r2]
+_0805ED68:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805ED80: .4byte gUnknown_083754E4
+ thumb_func_end sub_805ED3C
+
+ thumb_func_start sub_805ED84
+sub_805ED84: @ 805ED84
+ 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, _0805EDA0 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EDA4 @ =sub_805EDA8
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EDA0: .4byte gMapObjects
+_0805EDA4: .4byte sub_805EDA8
+ thumb_func_end sub_805ED84
+
+ thumb_func_start sub_805EDA8
+sub_805EDA8: @ 805EDA8
+ push {r4,lr}
+ ldr r3, _0805EDC4 @ =gUnknown_083754E8
+ 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
+_0805EDC4: .4byte gUnknown_083754E8
+ thumb_func_end sub_805EDA8
+
+ thumb_func_start sub_805EDC8
+sub_805EDC8: @ 805EDC8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EE0C @ =gUnknown_083754F4
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0805EDF4
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EDF4
+ movs r0, 0x2
+ strb r0, [r2]
+_0805EDF4:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EE0C: .4byte gUnknown_083754F4
+ thumb_func_end sub_805EDC8
+
+ thumb_func_start sub_805EE10
+sub_805EE10: @ 805EE10
+ 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, _0805EE2C @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EE30 @ =sub_805EE34
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EE2C: .4byte gMapObjects
+_0805EE30: .4byte sub_805EE34
+ thumb_func_end sub_805EE10
+
+ thumb_func_start sub_805EE34
+sub_805EE34: @ 805EE34
+ push {r4,lr}
+ ldr r3, _0805EE50 @ =gUnknown_083754F8
+ 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
+_0805EE50: .4byte gUnknown_083754F8
+ thumb_func_end sub_805EE34
+
+ thumb_func_start sub_805EE54
+sub_805EE54: @ 805EE54
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EE98 @ =gUnknown_08375504
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805EE80
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EE80
+ movs r0, 0x3
+ strb r0, [r2]
+_0805EE80:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EE98: .4byte gUnknown_08375504
+ thumb_func_end sub_805EE54
+
+ thumb_func_start sub_805EE9C
+sub_805EE9C: @ 805EE9C
+ 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, _0805EEB8 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EEBC @ =sub_805EEC0
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EEB8: .4byte gMapObjects
+_0805EEBC: .4byte sub_805EEC0
+ thumb_func_end sub_805EE9C
+
+ thumb_func_start sub_805EEC0
+sub_805EEC0: @ 805EEC0
+ push {r4,lr}
+ ldr r3, _0805EEDC @ =gUnknown_08375508
+ 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
+_0805EEDC: .4byte gUnknown_08375508
+ thumb_func_end sub_805EEC0
+
+ thumb_func_start sub_805EEE0
+sub_805EEE0: @ 805EEE0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EF24 @ =gUnknown_08375514
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805EF0C
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EF0C
+ movs r0, 0x3
+ strb r0, [r2]
+_0805EF0C:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EF24: .4byte gUnknown_08375514
+ thumb_func_end sub_805EEE0
+
+ thumb_func_start sub_805EF28
+sub_805EF28: @ 805EF28
+ 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, _0805EF44 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EF48 @ =sub_805EF4C
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EF44: .4byte gMapObjects
+_0805EF48: .4byte sub_805EF4C
+ thumb_func_end sub_805EF28
+
+ thumb_func_start sub_805EF4C
+sub_805EF4C: @ 805EF4C
+ push {r4,lr}
+ ldr r3, _0805EF68 @ =gUnknown_08375518
+ 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
+_0805EF68: .4byte gUnknown_08375518
+ thumb_func_end sub_805EF4C
+
+ thumb_func_start sub_805EF6C
+sub_805EF6C: @ 805EF6C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805EFB0 @ =gUnknown_08375524
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805EF98
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805EF98
+ movs r0, 0x3
+ strb r0, [r2]
+_0805EF98:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805EFB0: .4byte gUnknown_08375524
+ thumb_func_end sub_805EF6C
+
+ thumb_func_start sub_805EFB4
+sub_805EFB4: @ 805EFB4
+ 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, _0805EFD0 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805EFD4 @ =sub_805EFD8
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805EFD0: .4byte gMapObjects
+_0805EFD4: .4byte sub_805EFD8
+ thumb_func_end sub_805EFB4
+
+ thumb_func_start sub_805EFD8
+sub_805EFD8: @ 805EFD8
+ push {r4,lr}
+ ldr r3, _0805EFF4 @ =gUnknown_08375528
+ 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
+_0805EFF4: .4byte gUnknown_08375528
+ thumb_func_end sub_805EFD8
+
+ thumb_func_start sub_805EFF8
+sub_805EFF8: @ 805EFF8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805F03C @ =gUnknown_08375534
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805F024
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805F024
+ movs r0, 0x3
+ strb r0, [r2]
+_0805F024:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F03C: .4byte gUnknown_08375534
+ thumb_func_end sub_805EFF8
+
+ thumb_func_start sub_805F040
+sub_805F040: @ 805F040
+ 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, _0805F05C @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805F060 @ =sub_805F064
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F05C: .4byte gMapObjects
+_0805F060: .4byte sub_805F064
+ thumb_func_end sub_805F040
+
+ thumb_func_start sub_805F064
+sub_805F064: @ 805F064
+ push {r4,lr}
+ ldr r3, _0805F080 @ =gUnknown_08375538
+ 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
+_0805F080: .4byte gUnknown_08375538
+ thumb_func_end sub_805F064
+
+ thumb_func_start sub_805F084
+sub_805F084: @ 805F084
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805F0C8 @ =gUnknown_08375544
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805F0B0
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805F0B0
+ movs r0, 0x3
+ strb r0, [r2]
+_0805F0B0:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F0C8: .4byte gUnknown_08375544
+ thumb_func_end sub_805F084
+
+ thumb_func_start sub_805F0CC
+sub_805F0CC: @ 805F0CC
+ 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, _0805F0E8 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805F0EC @ =sub_805F0F0
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F0E8: .4byte gMapObjects
+_0805F0EC: .4byte sub_805F0F0
+ thumb_func_end sub_805F0CC
+
+ thumb_func_start sub_805F0F0
+sub_805F0F0: @ 805F0F0
+ push {r4,lr}
+ ldr r3, _0805F10C @ =gUnknown_08375548
+ 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
+_0805F10C: .4byte gUnknown_08375548
+ thumb_func_end sub_805F0F0
+
+ thumb_func_start sub_805F110
+sub_805F110: @ 805F110
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805F154 @ =gUnknown_08375554
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805F13C
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805F13C
+ movs r0, 0x3
+ strb r0, [r2]
+_0805F13C:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F154: .4byte gUnknown_08375554
+ thumb_func_end sub_805F110
+
+ thumb_func_start sub_805F158
+sub_805F158: @ 805F158
+ 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, _0805F174 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805F178 @ =sub_805F17C
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F174: .4byte gMapObjects
+_0805F178: .4byte sub_805F17C
+ thumb_func_end sub_805F158
+
+ thumb_func_start sub_805F17C
+sub_805F17C: @ 805F17C
+ push {r4,lr}
+ ldr r3, _0805F198 @ =gUnknown_08375558
+ 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
+_0805F198: .4byte gUnknown_08375558
+ thumb_func_end sub_805F17C
+
+ thumb_func_start sub_805F19C
+sub_805F19C: @ 805F19C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805F1E0 @ =gUnknown_08375564
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805F1C8
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805F1C8
+ movs r0, 0x3
+ strb r0, [r2]
+_0805F1C8:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F1E0: .4byte gUnknown_08375564
+ thumb_func_end sub_805F19C
+
+ thumb_func_start sub_805F1E4
+sub_805F1E4: @ 805F1E4
+ 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, _0805F200 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805F204 @ =sub_805F208
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F200: .4byte gMapObjects
+_0805F204: .4byte sub_805F208
+ thumb_func_end sub_805F1E4
+
+ thumb_func_start sub_805F208
+sub_805F208: @ 805F208
+ push {r4,lr}
+ ldr r3, _0805F224 @ =gUnknown_08375568
+ 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
+_0805F224: .4byte gUnknown_08375568
+ thumb_func_end sub_805F208
+
+ thumb_func_start sub_805F228
+sub_805F228: @ 805F228
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805F26C @ =gUnknown_08375574
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805F254
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805F254
+ movs r0, 0x3
+ strb r0, [r2]
+_0805F254:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F26C: .4byte gUnknown_08375574
+ thumb_func_end sub_805F228
+
+ thumb_func_start sub_805F270
+sub_805F270: @ 805F270
+ 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, _0805F28C @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805F290 @ =sub_805F294
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F28C: .4byte gMapObjects
+_0805F290: .4byte sub_805F294
+ thumb_func_end sub_805F270
+
+ thumb_func_start sub_805F294
+sub_805F294: @ 805F294
+ push {r4,lr}
+ ldr r3, _0805F2B0 @ =gUnknown_08375578
+ 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
+_0805F2B0: .4byte gUnknown_08375578
+ thumb_func_end sub_805F294
+
+ thumb_func_start sub_805F2B4
+sub_805F2B4: @ 805F2B4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805F2F8 @ =gUnknown_08375584
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _0805F2E0
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _0805F2E0
+ movs r0, 0x3
+ strb r0, [r2]
+_0805F2E0:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl MoveFieldObjectInNextDirectionInSequence
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F2F8: .4byte gUnknown_08375584
+ thumb_func_end sub_805F2B4
+
+ thumb_func_start sub_805F2FC
+sub_805F2FC: @ 805F2FC
+ 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, _0805F318 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805F31C @ =sub_805F320
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F318: .4byte gMapObjects
+_0805F31C: .4byte sub_805F320
+ thumb_func_end sub_805F2FC
+
+ thumb_func_start sub_805F320
+sub_805F320: @ 805F320
+ push {r4,lr}
+ ldr r3, _0805F33C @ =gUnknown_08375588
+ 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
+_0805F33C: .4byte gUnknown_08375588
+ thumb_func_end sub_805F320
+
+ thumb_func_start mss_npc_reset_oampriv3_1_unk2_unk3
+mss_npc_reset_oampriv3_1_unk2_unk3: @ 805F340
+ 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 _0805F358
+ bl player_get_direction_lower_nybble
+ strb r0, [r4]
+_0805F358:
+ 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_805F364
+sub_805F364: @ 805F364
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ ldr r2, _0805F388 @ =gMapObjects
+ ldr r3, _0805F38C @ =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 _0805F384
+ ldrb r0, [r3, 0x3]
+ cmp r0, 0x2
+ bne _0805F390
+_0805F384:
+ movs r0, 0
+ b _0805F3B8
+ .align 2, 0
+_0805F388: .4byte gMapObjects
+_0805F38C: .4byte gPlayerAvatar
+_0805F390:
+ ldr r5, _0805F3C0 @ =gUnknown_08375594
+ 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
+_0805F3B8:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F3C0: .4byte gUnknown_08375594
+ thumb_func_end sub_805F364
+
+ thumb_func_start sub_805F3C4
+sub_805F3C4: @ 805F3C4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805F3E2
+ ldrb r0, [r4]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r4]
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+_0805F3E2:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805F3C4
+
+ thumb_func_start sub_805F3EC
+sub_805F3EC: @ 805F3EC
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_805F3EC
+
+ thumb_func_start sub_805F3F0
+sub_805F3F0: @ 805F3F0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, _0805F434 @ =gUnknown_0836DC09
+ 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 GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ 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
+_0805F434: .4byte gUnknown_0836DC09
+ thumb_func_end sub_805F3F0
+
+ thumb_func_start sub_805F438
+sub_805F438: @ 805F438
+ 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, _0805F4EC @ =gUnknown_0836DC09
+ 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 FieldObjectMoveDestCoords
+ adds r0, r6, 0
+ bl GetGoSpeed0AnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+ 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 _0805F4BE
+ mov r1, r8
+ cmp r1, 0
+ beq _0805F4D2
+ 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 _0805F4D2
+_0805F4BE:
+ adds r0, r6, 0
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+_0805F4D2:
+ 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
+_0805F4EC: .4byte gUnknown_0836DC09
+ thumb_func_end sub_805F438
+
+ thumb_func_start sub_805F4F0
+sub_805F4F0: @ 805F4F0
+ 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, _0805F5A4 @ =gUnknown_0836DC09
+ 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 FieldObjectMoveDestCoords
+ adds r0, r6, 0
+ bl sub_8060744
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+ 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 _0805F576
+ mov r1, r8
+ cmp r1, 0
+ beq _0805F58A
+ 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 _0805F58A
+_0805F576:
+ adds r0, r6, 0
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+_0805F58A:
+ 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
+_0805F5A4: .4byte gUnknown_0836DC09
+ thumb_func_end sub_805F4F0
+
+ thumb_func_start sub_805F5A8
+sub_805F5A8: @ 805F5A8
+ 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, _0805F65C @ =gUnknown_0836DC09
+ 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 FieldObjectMoveDestCoords
+ adds r0, r6, 0
+ bl sub_806079C
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+ 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 _0805F62E
+ mov r1, r8
+ cmp r1, 0
+ beq _0805F642
+ 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 _0805F642
+_0805F62E:
+ adds r0, r6, 0
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+_0805F642:
+ 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
+_0805F65C: .4byte gUnknown_0836DC09
+ thumb_func_end sub_805F5A8
+
+ thumb_func_start sub_805F660
+sub_805F660: @ 805F660
+ 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, _0805F714 @ =gUnknown_0836DC09
+ 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 FieldObjectMoveDestCoords
+ adds r0, r6, 0
+ bl sub_80607C8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+ 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 _0805F6E6
+ mov r1, r8
+ cmp r1, 0
+ beq _0805F6FA
+ 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 _0805F6FA
+_0805F6E6:
+ adds r0, r6, 0
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+_0805F6FA:
+ 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
+_0805F714: .4byte gUnknown_0836DC09
+ thumb_func_end sub_805F660
+
+ thumb_func_start cph_IM_DIFFERENT
+cph_IM_DIFFERENT: @ 805F718
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, _0805F75C @ =gUnknown_0836DC09
+ 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_806084C
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ 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
+_0805F75C: .4byte gUnknown_0836DC09
+ thumb_func_end cph_IM_DIFFERENT
+
+ thumb_func_start sub_805F760
+sub_805F760: @ 805F760
+ 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, _0805F814 @ =gUnknown_0836DC09
+ 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 FieldObjectMoveDestCoords
+ adds r0, r6, 0
+ bl sub_80608A4
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+ 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 _0805F7E6
+ mov r1, r8
+ cmp r1, 0
+ beq _0805F7FA
+ 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 _0805F7FA
+_0805F7E6:
+ adds r0, r6, 0
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+_0805F7FA:
+ 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
+_0805F814: .4byte gUnknown_0836DC09
+ thumb_func_end sub_805F760
+
+ thumb_func_start oac_hopping
+oac_hopping: @ 805F818
+ 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, _0805F8DC @ =gUnknown_0836DC09
+ 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_8060320
+ 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 FieldObjectSetRegularAnim
+ 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 _0805F8AC
+ mov r1, r8
+ cmp r1, 0
+ beq _0805F8C0
+ 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 _0805F8C0
+_0805F8AC:
+ adds r0, r6, 0
+ bl GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl FieldObjectSetRegularAnim
+_0805F8C0:
+ 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
+_0805F8DC: .4byte gUnknown_0836DC09
+ thumb_func_end oac_hopping
+
+ thumb_func_start sub_805F8E0
+sub_805F8E0: @ 805F8E0
+ 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, _0805F8FC @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805F900 @ =sub_805F904
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F8FC: .4byte gMapObjects
+_0805F900: .4byte sub_805F904
+ thumb_func_end sub_805F8E0
+
+ thumb_func_start sub_805F904
+sub_805F904: @ 805F904
+ push {r4,lr}
+ ldr r3, _0805F920 @ =gUnknown_083755C0
+ 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
+_0805F920: .4byte gUnknown_083755C0
+ thumb_func_end sub_805F904
+
+ thumb_func_start mss_08062EA4
+mss_08062EA4: @ 805F924
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ ldr r2, _0805F948 @ =gMapObjects
+ ldr r3, _0805F94C @ =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 _0805F944
+ ldrb r0, [r3, 0x3]
+ cmp r0, 0x2
+ bne _0805F950
+_0805F944:
+ movs r0, 0
+ b _0805F978
+ .align 2, 0
+_0805F948: .4byte gMapObjects
+_0805F94C: .4byte gPlayerAvatar
+_0805F950:
+ ldr r5, _0805F980 @ =gUnknown_08375594
+ 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, _0805F984 @ =sub_8056E14
+ ldr r4, [r4]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r0, 24
+_0805F978:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805F980: .4byte gUnknown_08375594
+_0805F984: .4byte sub_8056E14
+ thumb_func_end mss_08062EA4
+
+ thumb_func_start FieldObjectCB_TreeDisguise
+FieldObjectCB_TreeDisguise: @ 805F988
+ 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, _0805F9EC @ =gMapObjects
+ adds r4, r1, r0
+ adds r6, r4, 0
+ adds r6, 0x21
+ ldrb r0, [r6]
+ cmp r0, 0
+ beq _0805F9B0
+ cmp r0, 0x1
+ bne _0805F9D0
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0805F9D0
+_0805F9B0:
+ ldr r1, _0805F9F0 @ =gUnknown_0202FF84
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ adds r0, r4, 0
+ bl FieldObjectGetLocalIdAndMap
+ 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]
+_0805F9D0:
+ movs r0, 0x2E
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805F9EC @ =gMapObjects
+ adds r0, r1
+ ldr r2, _0805F9F4 @ =sub_805F9F8
+ adds r1, r5, 0
+ bl meta_step
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805F9EC: .4byte gMapObjects
+_0805F9F0: .4byte gUnknown_0202FF84
+_0805F9F4: .4byte sub_805F9F8
+ thumb_func_end FieldObjectCB_TreeDisguise
+
+ thumb_func_start sub_805F9F8
+sub_805F9F8: @ 805F9F8
+ push {lr}
+ bl npc_reset
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805F9F8
+
+ thumb_func_start FieldObjectCB_MountainDisguise
+FieldObjectCB_MountainDisguise: @ 805FA04
+ 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, _0805FA68 @ =gMapObjects
+ adds r4, r1, r0
+ adds r6, r4, 0
+ adds r6, 0x21
+ ldrb r0, [r6]
+ cmp r0, 0
+ beq _0805FA2C
+ cmp r0, 0x1
+ bne _0805FA4C
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0805FA4C
+_0805FA2C:
+ ldr r1, _0805FA6C @ =gUnknown_0202FF84
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ adds r0, r4, 0
+ bl FieldObjectGetLocalIdAndMap
+ 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]
+_0805FA4C:
+ movs r0, 0x2E
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805FA68 @ =gMapObjects
+ adds r0, r1
+ ldr r2, _0805FA70 @ =sub_805F9F8
+ adds r1, r5, 0
+ bl meta_step
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FA68: .4byte gMapObjects
+_0805FA6C: .4byte gUnknown_0202FF84
+_0805FA70: .4byte sub_805F9F8
+ thumb_func_end FieldObjectCB_MountainDisguise
+
+ thumb_func_start FieldObjectCB_Hidden1
+FieldObjectCB_Hidden1: @ 805FA74
+ push {r4,lr}
+ adds r3, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r3, r1]
+ ldr r4, _0805FAD0 @ =gMapObjects
+ cmp r0, 0
+ bne _0805FAB4
+ 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]
+_0805FAB4:
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldr r2, _0805FAD4 @ =sub_805FAD8
+ adds r1, r3, 0
+ bl meta_step
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FAD0: .4byte gMapObjects
+_0805FAD4: .4byte sub_805FAD8
+ thumb_func_end FieldObjectCB_Hidden1
+
+ thumb_func_start sub_805FAD8
+sub_805FAD8: @ 805FAD8
+ push {r4,lr}
+ ldr r3, _0805FAF4 @ =gUnknown_083755CC
+ 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
+_0805FAF4: .4byte gUnknown_083755CC
+ thumb_func_end sub_805FAD8
+
+ thumb_func_start sub_805FAF8
+sub_805FAF8: @ 805FAF8
+ push {lr}
+ bl npc_reset
+ movs r0, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FAF8
+
+ thumb_func_start sub_805FB04
+sub_805FB04: @ 805FB04
+ push {r4,lr}
+ adds r4, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805FB16
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_0805FB16:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FB04
+
+ thumb_func_start sub_805FB20
+sub_805FB20: @ 805FB20
+ 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, _0805FB3C @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805FB40 @ =sub_805FB44
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FB3C: .4byte gMapObjects
+_0805FB40: .4byte sub_805FB44
+ thumb_func_end sub_805FB20
+
+ thumb_func_start sub_805FB44
+sub_805FB44: @ 805FB44
+ push {r4,lr}
+ ldr r3, _0805FB60 @ =gUnknown_083755D0
+ 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
+_0805FB60: .4byte gUnknown_083755D0
+ thumb_func_end sub_805FB44
+
+ thumb_func_start sub_805FB64
+sub_805FB64: @ 805FB64
+ 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 FieldObjectSetRegularAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FB64
+
+ thumb_func_start sub_805FB90
+sub_805FB90: @ 805FB90
+ 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, _0805FBAC @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805FBB0 @ =sub_805FBB4
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FBAC: .4byte gMapObjects
+_0805FBB0: .4byte sub_805FBB4
+ thumb_func_end sub_805FB90
+
+ thumb_func_start sub_805FBB4
+sub_805FBB4: @ 805FBB4
+ push {r4,lr}
+ ldr r3, _0805FBD0 @ =gUnknown_083755D8
+ 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
+_0805FBD0: .4byte gUnknown_083755D8
+ thumb_func_end sub_805FBB4
+
+ thumb_func_start sub_805FBD4
+sub_805FBD4: @ 805FBD4
+ 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 GetStepInPlaceDelay8AnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FBD4
+
+ thumb_func_start sub_805FC00
+sub_805FC00: @ 805FC00
+ 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, _0805FC1C @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805FC20 @ =sub_805FC24
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FC1C: .4byte gMapObjects
+_0805FC20: .4byte sub_805FC24
+ thumb_func_end sub_805FC00
+
+ thumb_func_start sub_805FC24
+sub_805FC24: @ 805FC24
+ push {r4,lr}
+ ldr r3, _0805FC40 @ =gUnknown_083755E0
+ 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
+_0805FC40: .4byte gUnknown_083755E0
+ thumb_func_end sub_805FC24
+
+ thumb_func_start sub_805FC44
+sub_805FC44: @ 805FC44
+ 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 FieldObjectSetRegularAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x30]
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FC44
+
+ thumb_func_start sub_805FC70
+sub_805FC70: @ 805FC70
+ 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, _0805FC8C @ =gMapObjects
+ adds r0, r2
+ ldr r2, _0805FC90 @ =sub_805FC94
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805FC8C: .4byte gMapObjects
+_0805FC90: .4byte sub_805FC94
+ thumb_func_end sub_805FC70
+
+ thumb_func_start sub_805FC94
+sub_805FC94: @ 805FC94
+ push {r4,lr}
+ ldr r3, _0805FCB0 @ =gUnknown_083755E8
+ 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
+_0805FCB0: .4byte gUnknown_083755E8
+ thumb_func_end sub_805FC94
+
+ thumb_func_start sub_805FCB4
+sub_805FCB4: @ 805FCB4
+ 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 GetFaceDirectionAnimId
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetRegularAnim
+ 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_805FCB4
+
+ thumb_func_start sub_805FCE8
+sub_805FCE8: @ 805FCE8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl FieldObjectExecRegularAnim
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805FCFA
+ movs r0, 0
+ b _0805FD00
+_0805FCFA:
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+_0805FD00:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FCE8
+
+ thumb_func_start sub_805FD08
+sub_805FD08: @ 805FD08
+ ldrb r2, [r0]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_805FD08
+
+ thumb_func_start npc_reset
+npc_reset: @ 805FD18
+ 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 FieldObjectDirectionToImageAnimId
+FieldObjectDirectionToImageAnimId: @ 805FD38
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FD44 @ =gUnknown_083755F4
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FD44: .4byte gUnknown_083755F4
+ thumb_func_end FieldObjectDirectionToImageAnimId
+
+ thumb_func_start get_go_image_anim_num
+get_go_image_anim_num: @ 805FD48
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FD54 @ =gUnknown_083755FD
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FD54: .4byte gUnknown_083755FD
+ thumb_func_end get_go_image_anim_num
+
+ thumb_func_start get_go_fast_image_anim_num
+get_go_fast_image_anim_num: @ 805FD58
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FD64 @ =gUnknown_08375606
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FD64: .4byte gUnknown_08375606
+ thumb_func_end get_go_fast_image_anim_num
+
+ thumb_func_start get_go_faster_image_anim_num
+get_go_faster_image_anim_num: @ 805FD68
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FD74 @ =gUnknown_0837560F
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FD74: .4byte gUnknown_0837560F
+ thumb_func_end get_go_faster_image_anim_num
+
+ thumb_func_start sub_805FD78
+sub_805FD78: @ 805FD78
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FD84 @ =gUnknown_08375618
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FD84: .4byte gUnknown_08375618
+ thumb_func_end sub_805FD78
+
+ thumb_func_start sub_805FD88
+sub_805FD88: @ 805FD88
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FD94 @ =gUnknown_08375621
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FD94: .4byte gUnknown_08375621
+ thumb_func_end sub_805FD88
+
+ thumb_func_start sub_805FD98
+sub_805FD98: @ 805FD98
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FDA4 @ =gUnknown_0837562A
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FDA4: .4byte gUnknown_0837562A
+ thumb_func_end sub_805FD98
+
+ thumb_func_start unref_sub_805FDA8
+unref_sub_805FDA8: @ 805FDA8
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FDB4 @ =gUnknown_08375633
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FDB4: .4byte gUnknown_08375633
+ thumb_func_end unref_sub_805FDA8
+
+ thumb_func_start sub_805FDB8
+sub_805FDB8: @ 805FDB8
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FDC4 @ =gUnknown_0837563C
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FDC4: .4byte gUnknown_0837563C
+ thumb_func_end sub_805FDB8
+
+ thumb_func_start sub_805FDC8
+sub_805FDC8: @ 805FDC8
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FDD4 @ =gUnknown_08375645
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FDD4: .4byte gUnknown_08375645
+ thumb_func_end sub_805FDC8
+
+ thumb_func_start sub_805FDD8
+sub_805FDD8: @ 805FDD8
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FDE4 @ =gUnknown_0837564E
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FDE4: .4byte gUnknown_0837564E
+ thumb_func_end sub_805FDD8
+
+ thumb_func_start sub_805FDE8
+sub_805FDE8: @ 805FDE8
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FDF4 @ =gUnknown_08375657
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FDF4: .4byte gUnknown_08375657
+ thumb_func_end sub_805FDE8
+
+ thumb_func_start sub_805FDF8
+sub_805FDF8: @ 805FDF8
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FE04 @ =gUnknown_08375660
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FE04: .4byte gUnknown_08375660
+ thumb_func_end sub_805FDF8
+
+ thumb_func_start sub_805FE08
+sub_805FE08: @ 805FE08
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FE14 @ =gUnknown_08375669
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FE14: .4byte gUnknown_08375669
+ thumb_func_end sub_805FE08
+
+ thumb_func_start get_run_image_anim_num
+get_run_image_anim_num: @ 805FE18
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FE24 @ =gUnknown_08375672
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FE24: .4byte gUnknown_08375672
+ thumb_func_end get_run_image_anim_num
+
+ thumb_func_start sub_805FE28
+sub_805FE28: @ 805FE28
+ push {r4,lr}
+ adds r3, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r0, [r0, 0x1]
+ lsls r0, 27
+ lsrs r4, r0, 31
+ cmp r4, 0
+ bne _0805FE5E
+ adds r0, r3, 0
+ adds r0, 0x2A
+ strb r2, [r0]
+ adds r0, 0x1
+ ldrb r2, [r0]
+ adds r1, r0, 0
+ cmp r2, 0x1
+ bne _0805FE50
+ movs r0, 0x2
+ strb r0, [r1]
+ b _0805FE56
+_0805FE50:
+ cmp r2, 0x3
+ bne _0805FE56
+ strb r4, [r1]
+_0805FE56:
+ ldrb r1, [r1]
+ adds r0, r3, 0
+ bl SeekSpriteAnim
+_0805FE5E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805FE28
+
+ thumb_func_start sub_805FE64
+sub_805FE64: @ 805FE64
+ push {lr}
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r0, [r0, 0x1]
+ lsls r0, 27
+ cmp r0, 0
+ blt _0805FE8C
+ adds r0, r1, 0
+ adds r0, 0x2A
+ strb r2, [r0]
+ movs r2, 0x3
+ adds r0, 0x1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bhi _0805FE84
+ movs r2, 0x1
+_0805FE84:
+ adds r0, r1, 0
+ adds r1, r2, 0
+ bl SeekSpriteAnim
+_0805FE8C:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805FE64
+
+ thumb_func_start sub_805FE90
+sub_805FE90: @ 805FE90
+ 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 _0805FEAA
+ movs r0, 0x3
+ b _0805FEC0
+_0805FEAA:
+ cmp r0, r2
+ bge _0805FEB2
+ movs r0, 0x4
+ b _0805FEC0
+_0805FEB2:
+ lsls r1, 16
+ lsls r0, r3, 16
+ cmp r1, r0
+ bgt _0805FEBE
+ movs r0, 0x1
+ b _0805FEC0
+_0805FEBE:
+ movs r0, 0x2
+_0805FEC0:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805FE90
+
+ thumb_func_start npc_set_running_behaviour_etc
+npc_set_running_behaviour_etc: @ 805FEC4
+ 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, _0805FF08 @ =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, _0805FF0C @ =gUnknown_0836DA88
+ 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
+_0805FF08: .4byte gSprites
+_0805FF0C: .4byte gUnknown_0836DA88
+ thumb_func_end npc_set_running_behaviour_etc
+
+ thumb_func_start npc_running_behaviour_by_direction
+npc_running_behaviour_by_direction: @ 805FF10
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0805FF1C @ =gUnknown_0837567B
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_0805FF1C: .4byte gUnknown_0837567B
+ thumb_func_end npc_running_behaviour_by_direction
+
+ thumb_func_start sub_805FF20
+sub_805FF20: @ 805FF20
+ 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 sub_805FF20
+
+ thumb_func_start npc_block_way
+npc_block_way: @ 805FF60
+ 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 IsCoordOutsideFieldObjectMovementRect
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805FF96
+ movs r0, 0x1
+ b _08060016
+_0805FF96:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl MapGridIsImpassableAt
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805FFD8
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl GetMapBorderIdAt
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ beq _0805FFD8
+ 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 _0805FFD8
+ ldrb r0, [r6, 0x1]
+ lsrs r0, 7
+ cmp r0, 0
+ beq _0805FFDC
+ mov r0, r8
+ bl CanCameraMoveInDirection
+ cmp r0, 0
+ bne _0805FFDC
+_0805FFD8:
+ movs r0, 0x2
+ b _08060016
+_0805FFDC:
+ 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 _08060000
+ movs r0, 0x3
+ b _08060016
+_08060000:
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl CheckForCollisionBetweenFieldObjects
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060014
+ movs r0, 0
+ b _08060016
+_08060014:
+ movs r0, 0x4
+_08060016:
+ 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_8060024
+sub_8060024: @ 8060024
+ 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 IsCoordOutsideFieldObjectMovementRect
+ 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 _0806009C
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl GetMapBorderIdAt
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ beq _0806009C
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ mov r3, r8
+ bl IsMetatileDirectionallyImpassable
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806009C
+ ldrb r0, [r7, 0x1]
+ lsrs r0, 7
+ cmp r0, 0
+ beq _080600A0
+ mov r0, r8
+ bl CanCameraMoveInDirection
+ cmp r0, 0
+ bne _080600A0
+_0806009C:
+ movs r0, 0x2
+ orrs r4, r0
+_080600A0:
+ 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 _080600C8
+ movs r0, 0x4
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_080600C8:
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ bl CheckForCollisionBetweenFieldObjects
+ lsls r0, 24
+ cmp r0, 0
+ beq _080600E0
+ movs r0, 0x8
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_080600E0:
+ 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_8060024
+
+ thumb_func_start IsCoordOutsideFieldObjectMovementRect
+IsCoordOutsideFieldObjectMovementRect: @ 80600F0
+ 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 _08060128
+ 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 _08060154
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, r3
+ blt _08060154
+_08060128:
+ ldrb r1, [r4, 0x19]
+ movs r0, 0xF0
+ ands r0, r1
+ cmp r0, 0
+ beq _08060158
+ 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 _08060154
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, r3
+ bge _08060158
+_08060154:
+ movs r0, 0x1
+ b _0806015A
+_08060158:
+ movs r0, 0
+_0806015A:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end IsCoordOutsideFieldObjectMovementRect
+
+ thumb_func_start IsMetatileDirectionallyImpassable
+IsMetatileDirectionallyImpassable: @ 8060160
+ push {r4-r7,lr}
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r7, r2, 16
+ lsls r3, 24
+ ldr r1, _080601A8 @ =gUnknown_08375684
+ 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 _080601A2
+ ldr r4, _080601AC @ =gUnknown_08375694
+ 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 _080601B0
+_080601A2:
+ movs r0, 0x1
+ b _080601B2
+ .align 2, 0
+_080601A8: .4byte gUnknown_08375684
+_080601AC: .4byte gUnknown_08375694
+_080601B0:
+ movs r0, 0
+_080601B2:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end IsMetatileDirectionallyImpassable
+
+ thumb_func_start CheckForCollisionBetweenFieldObjects
+CheckForCollisionBetweenFieldObjects: @ 80601B8
+ 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
+_080601C6:
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ ldr r1, _0806021C @ =gMapObjects
+ adds r2, r0, r1
+ ldrb r0, [r2]
+ lsls r0, 31
+ cmp r0, 0
+ beq _08060220
+ cmp r2, r6
+ beq _08060220
+ movs r0, 0x10
+ ldrsh r1, [r2, r0]
+ lsls r0, r7, 16
+ asrs r3, r0, 16
+ cmp r1, r3
+ bne _080601F0
+ movs r1, 0x12
+ ldrsh r0, [r2, r1]
+ cmp r0, r5
+ beq _08060200
+_080601F0:
+ movs r1, 0x14
+ ldrsh r0, [r2, r1]
+ cmp r0, r3
+ bne _08060220
+ movs r1, 0x16
+ ldrsh r0, [r2, r1]
+ cmp r0, r5
+ bne _08060220
+_08060200:
+ 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 _08060220
+ movs r0, 0x1
+ b _0806022C
+ .align 2, 0
+_0806021C: .4byte gMapObjects
+_08060220:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _080601C6
+ movs r0, 0
+_0806022C:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckForCollisionBetweenFieldObjects
+
+ thumb_func_start sub_8060234
+sub_8060234: @ 8060234
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060280
+ ldr r3, _08060278 @ =gSprites
+ ldr r2, _0806027C @ =gMapObjects
+ 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 _08060280
+ movs r0, 0x1
+ b _08060282
+ .align 2, 0
+_08060278: .4byte gSprites
+_0806027C: .4byte gMapObjects
+_08060280:
+ movs r0, 0
+_08060282:
+ add sp, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060234
+
+ thumb_func_start sub_8060288
+sub_8060288: @ 8060288
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _080602C6
+ ldr r3, _080602CC @ =gSprites
+ ldr r2, _080602D0 @ =gMapObjects
+ 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]
+_080602C6:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080602CC: .4byte gSprites
+_080602D0: .4byte gMapObjects
+ thumb_func_end sub_8060288
+
+ thumb_func_start MoveCoords
+MoveCoords: @ 80602D4
+ push {r4,lr}
+ lsls r0, 24
+ ldr r3, _080602F4 @ =gDirectionToVector
+ 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
+_080602F4: .4byte gDirectionToVector
+ thumb_func_end MoveCoords
+
+ thumb_func_start unref_sub_80602F8
+unref_sub_80602F8: @ 80602F8
+ push {r4,lr}
+ lsls r0, 24
+ ldr r3, _0806031C @ =gDirectionToVector
+ 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
+_0806031C: .4byte gDirectionToVector
+ thumb_func_end unref_sub_80602F8
+
+ thumb_func_start sub_8060320
+sub_8060320: @ 8060320
+ 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, _08060384 @ =gDirectionToVector
+ lsrs r0, 22
+ adds r5, r0, r1
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ cmp r1, 0
+ ble _0806034C
+ lsls r0, r3, 16
+ asrs r0, 16
+ ldrh r3, [r4]
+ adds r0, r3
+ strh r0, [r4]
+_0806034C:
+ cmp r1, 0
+ bge _0806035A
+ ldrh r1, [r4]
+ lsls r0, r7, 16
+ asrs r0, 16
+ subs r1, r0
+ strh r1, [r4]
+_0806035A:
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ cmp r1, 0
+ ble _0806036C
+ lsls r0, r6, 16
+ asrs r0, 16
+ ldrh r3, [r2]
+ adds r0, r3
+ strh r0, [r2]
+_0806036C:
+ cmp r1, 0
+ bge _0806037C
+ ldrh r1, [r2]
+ mov r3, r12
+ lsls r0, r3, 16
+ asrs r0, 16
+ subs r1, r0
+ strh r1, [r2]
+_0806037C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08060384: .4byte gDirectionToVector
+ thumb_func_end sub_8060320
+
+ thumb_func_start sub_8060388
+sub_8060388: @ 8060388
+ push {r4,r5,lr}
+ ldr r5, _080603C0 @ =gSaveBlock1
+ ldrh r4, [r5]
+ lsls r0, 16
+ asrs r0, 16
+ subs r0, r4
+ lsls r0, 4
+ strh r0, [r2]
+ ldrh r0, [r5, 0x2]
+ lsls r1, 16
+ asrs r1, 16
+ subs r1, r0
+ lsls r1, 4
+ strh r1, [r3]
+ ldr r1, _080603C4 @ =gUnknown_0300489C
+ ldrh r0, [r2]
+ ldrh r1, [r1]
+ subs r0, r1
+ strh r0, [r2]
+ ldr r1, _080603C8 @ =gUnknown_03004898
+ ldrh r0, [r3]
+ ldrh r1, [r1]
+ subs r0, r1
+ strh r0, [r3]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080603C0: .4byte gSaveBlock1
+_080603C4: .4byte gUnknown_0300489C
+_080603C8: .4byte gUnknown_03004898
+ thumb_func_end sub_8060388
+
+ thumb_func_start sub_80603CC
+sub_80603CC: @ 80603CC
+ 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, _0806045C @ =gUnknown_0300489C
+ ldrh r0, [r0]
+ negs r0, r0
+ ldr r1, _08060460 @ =gUnknown_03004880
+ ldr r2, [r1, 0x10]
+ subs r0, r2
+ lsls r0, 16
+ lsrs r3, r0, 16
+ ldr r0, _08060464 @ =gUnknown_03004898
+ ldrh r0, [r0]
+ negs r0, r0
+ ldr r1, [r1, 0x14]
+ subs r0, r1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r2, 0
+ ble _08060406
+ lsls r0, r3, 16
+ movs r3, 0x80
+ lsls r3, 13
+ adds r0, r3
+ lsrs r3, r0, 16
+_08060406:
+ cmp r2, 0
+ bge _08060412
+ lsls r0, r3, 16
+ ldr r2, _08060468 @ =0xfff00000
+ adds r0, r2
+ lsrs r3, r0, 16
+_08060412:
+ cmp r1, 0
+ ble _08060420
+ lsls r0, r4, 16
+ movs r2, 0x80
+ lsls r2, 13
+ adds r0, r2
+ lsrs r4, r0, 16
+_08060420:
+ cmp r1, 0
+ bge _0806042C
+ lsls r0, r4, 16
+ ldr r1, _08060468 @ =0xfff00000
+ adds r0, r1
+ lsrs r4, r0, 16
+_0806042C:
+ ldr r2, _0806046C @ =gSaveBlock1
+ ldrh r1, [r2]
+ 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]
+ ldrh r1, [r2, 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
+_0806045C: .4byte gUnknown_0300489C
+_08060460: .4byte gUnknown_03004880
+_08060464: .4byte gUnknown_03004898
+_08060468: .4byte 0xfff00000
+_0806046C: .4byte gSaveBlock1
+ thumb_func_end sub_80603CC
+
+ thumb_func_start sub_8060470
+sub_8060470: @ 8060470
+ 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_80603CC
+ 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_8060470
+
+ thumb_func_start GetFieldObjectMovingCameraOffset
+GetFieldObjectMovingCameraOffset: @ 80604BC
+ push {lr}
+ adds r2, r0, 0
+ movs r0, 0
+ strh r0, [r2]
+ strh r0, [r1]
+ ldr r3, _080604F8 @ =gUnknown_03004880
+ ldr r0, [r3, 0x10]
+ cmp r0, 0
+ ble _080604D2
+ movs r0, 0x1
+ strh r0, [r2]
+_080604D2:
+ ldr r0, [r3, 0x10]
+ cmp r0, 0
+ bge _080604DE
+ ldrh r0, [r2]
+ subs r0, 0x1
+ strh r0, [r2]
+_080604DE:
+ ldr r2, [r3, 0x14]
+ cmp r2, 0
+ ble _080604EA
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+_080604EA:
+ cmp r2, 0
+ bge _080604F4
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+_080604F4:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080604F8: .4byte gUnknown_03004880
+ thumb_func_end GetFieldObjectMovingCameraOffset
+
+ thumb_func_start FieldObjectMoveDestCoords
+FieldObjectMoveDestCoords: @ 80604FC
+ 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 FieldObjectMoveDestCoords
+
+ thumb_func_start FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive: @ 806051C
+ push {lr}
+ ldrb r1, [r0]
+ movs r0, 0x42
+ ands r0, r1
+ cmp r0, 0
+ bne _0806052C
+ movs r0, 0
+ b _0806052E
+_0806052C:
+ movs r0, 0x1
+_0806052E:
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+
+ thumb_func_start FieldObjectIsSpecialAnimActive
+FieldObjectIsSpecialAnimActive: @ 8060534
+ push {lr}
+ adds r1, r0, 0
+ ldrb r0, [r1]
+ lsls r0, 25
+ cmp r0, 0
+ bge _0806054A
+ ldrb r0, [r1, 0x1C]
+ cmp r0, 0xFF
+ beq _0806054A
+ movs r0, 0x1
+ b _0806054C
+_0806054A:
+ movs r0, 0
+_0806054C:
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectIsSpecialAnimActive
+
+ thumb_func_start FieldObjectSetSpecialAnim
+FieldObjectSetSpecialAnim: @ 8060550
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0
+ bne _08060590
+ adds r0, r4, 0
+ bl npc_sync_anim_pause_bits
+ strb r5, [r4, 0x1C]
+ ldrb r0, [r4]
+ movs r1, 0x40
+ orrs r0, r1
+ movs r1, 0x7F
+ ands r0, r1
+ strb r0, [r4]
+ ldr r2, _0806058C @ =gSprites
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r6, [r0, 0x32]
+ movs r0, 0
+ b _08060592
+ .align 2, 0
+_0806058C: .4byte gSprites
+_08060590:
+ movs r0, 0x1
+_08060592:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectSetSpecialAnim
+
+ thumb_func_start FieldObjectForceSetSpecialAnim
+FieldObjectForceSetSpecialAnim: @ 8060598
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r4, r1, 24
+ lsrs r4, 24
+ bl FieldObjectClearAnimIfSpecialAnimActive
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl FieldObjectSetSpecialAnim
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldObjectForceSetSpecialAnim
+
+ thumb_func_start FieldObjectClearAnimIfSpecialAnimActive
+FieldObjectClearAnimIfSpecialAnimActive: @ 80605B4
+ push {lr}
+ adds r1, r0, 0
+ ldrb r0, [r1]
+ lsls r0, 25
+ cmp r0, 0
+ bge _080605C6
+ adds r0, r1, 0
+ bl FieldObjectClearAnim
+_080605C6:
+ pop {r0}
+ bx r0
+ thumb_func_end FieldObjectClearAnimIfSpecialAnimActive
+
+ thumb_func_start FieldObjectClearAnim
+FieldObjectClearAnim: @ 80605CC
+ 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, _080605FC @ =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
+_080605FC: .4byte gSprites
+ thumb_func_end FieldObjectClearAnim
+
+ thumb_func_start FieldObjectCheckIfSpecialAnimFinishedOrInactive
+FieldObjectCheckIfSpecialAnimFinishedOrInactive: @ 8060600
+ push {lr}
+ ldrb r1, [r0]
+ lsls r0, r1, 25
+ cmp r0, 0
+ blt _0806060E
+ movs r0, 0x10
+ b _08060610
+_0806060E:
+ lsrs r0, r1, 7
+_08060610:
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectCheckIfSpecialAnimFinishedOrInactive
+
+ thumb_func_start FieldObjectClearAnimIfSpecialAnimFinished
+FieldObjectClearAnimIfSpecialAnimFinished: @ 8060614
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _0806062E
+ cmp r4, 0x10
+ beq _0806062E
+ adds r0, r5, 0
+ bl FieldObjectClearAnimIfSpecialAnimActive
+_0806062E:
+ adds r0, r4, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectClearAnimIfSpecialAnimFinished
+
+ thumb_func_start FieldObjectGetSpecialAnim
+FieldObjectGetSpecialAnim: @ 8060638
+ push {lr}
+ adds r1, r0, 0
+ ldrb r0, [r1]
+ lsls r0, 25
+ cmp r0, 0
+ blt _08060648
+ movs r0, 0xFF
+ b _0806064A
+_08060648:
+ ldrb r0, [r1, 0x1C]
+_0806064A:
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectGetSpecialAnim
+
+ thumb_func_start meta_step
+meta_step: @ 8060650
+ 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_80634A0
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806067A
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectExecSpecialAnim
+ b _08060690
+_0806067A:
+ ldrb r0, [r4, 0x1]
+ lsls r0, 31
+ cmp r0, 0
+ bne _08060690
+_08060682:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl _call_via_r6
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060682
+_08060690:
+ 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_80634D0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectUpdateSubpriority
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end meta_step
+
+ thumb_func_start GetFaceDirectionAnimId
+GetFaceDirectionAnimId: @ 80606C0
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080606E8 @ =gUnknown_083756C8
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080606D8
+ movs r4, 0
+_080606D8:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080606E8: .4byte gUnknown_083756C8
+ thumb_func_end GetFaceDirectionAnimId
+
+ thumb_func_start GetSimpleGoAnimId
+GetSimpleGoAnimId: @ 80606EC
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060714 @ =gUnknown_083756CD
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060704
+ movs r4, 0
+_08060704:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060714: .4byte gUnknown_083756CD
+ thumb_func_end GetSimpleGoAnimId
+
+ thumb_func_start GetGoSpeed0AnimId
+GetGoSpeed0AnimId: @ 8060718
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060740 @ =gUnknown_083756D2
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060730
+ movs r4, 0
+_08060730:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060740: .4byte gUnknown_083756D2
+ thumb_func_end GetGoSpeed0AnimId
+
+ thumb_func_start sub_8060744
+sub_8060744: @ 8060744
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0806076C @ =gUnknown_083756D7
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _0806075C
+ movs r4, 0
+_0806075C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806076C: .4byte gUnknown_083756D7
+ thumb_func_end sub_8060744
+
+ thumb_func_start d2s_08064034
+d2s_08064034: @ 8060770
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060798 @ =gUnknown_083756DC
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060788
+ movs r4, 0
+_08060788:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060798: .4byte gUnknown_083756DC
+ thumb_func_end d2s_08064034
+
+ thumb_func_start sub_806079C
+sub_806079C: @ 806079C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080607C4 @ =gUnknown_083756E1
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080607B4
+ movs r4, 0
+_080607B4:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080607C4: .4byte gUnknown_083756E1
+ thumb_func_end sub_806079C
+
+ thumb_func_start sub_80607C8
+sub_80607C8: @ 80607C8
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080607F0 @ =gUnknown_083756E6
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080607E0
+ movs r4, 0
+_080607E0:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080607F0: .4byte gUnknown_083756E6
+ thumb_func_end sub_80607C8
+
+ thumb_func_start sub_80607F4
+sub_80607F4: @ 80607F4
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0806081C @ =gUnknown_083756EB
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _0806080C
+ movs r4, 0
+_0806080C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806081C: .4byte gUnknown_083756EB
+ thumb_func_end sub_80607F4
+
+ thumb_func_start GetJumpLedgeAnimId
+GetJumpLedgeAnimId: @ 8060820
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060848 @ =gUnknown_083756F0
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060838
+ movs r4, 0
+_08060838:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060848: .4byte gUnknown_083756F0
+ thumb_func_end GetJumpLedgeAnimId
+
+ thumb_func_start sub_806084C
+sub_806084C: @ 806084C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060874 @ =gUnknown_083756F5
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060864
+ movs r4, 0
+_08060864:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060874: .4byte gUnknown_083756F5
+ thumb_func_end sub_806084C
+
+ thumb_func_start sub_8060878
+sub_8060878: @ 8060878
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080608A0 @ =gUnknown_083756FA
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060890
+ movs r4, 0
+_08060890:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080608A0: .4byte gUnknown_083756FA
+ thumb_func_end sub_8060878
+
+ thumb_func_start sub_80608A4
+sub_80608A4: @ 80608A4
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080608CC @ =gUnknown_083756FF
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080608BC
+ movs r4, 0
+_080608BC:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080608CC: .4byte gUnknown_083756FF
+ thumb_func_end sub_80608A4
+
+ thumb_func_start sub_80608D0
+sub_80608D0: @ 80608D0
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080608F8 @ =gUnknown_08375704
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080608E8
+ movs r4, 0
+_080608E8:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080608F8: .4byte gUnknown_08375704
+ thumb_func_end sub_80608D0
+
+ thumb_func_start GetStepInPlaceDelay32AnimId
+GetStepInPlaceDelay32AnimId: @ 80608FC
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060924 @ =gUnknown_08375709
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060914
+ movs r4, 0
+_08060914:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060924: .4byte gUnknown_08375709
+ thumb_func_end GetStepInPlaceDelay32AnimId
+
+ thumb_func_start GetStepInPlaceDelay16AnimId
+GetStepInPlaceDelay16AnimId: @ 8060928
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060950 @ =gUnknown_0837570E
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060940
+ movs r4, 0
+_08060940:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060950: .4byte gUnknown_0837570E
+ thumb_func_end GetStepInPlaceDelay16AnimId
+
+ thumb_func_start GetStepInPlaceDelay8AnimId
+GetStepInPlaceDelay8AnimId: @ 8060954
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0806097C @ =gUnknown_08375713
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _0806096C
+ movs r4, 0
+_0806096C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806097C: .4byte gUnknown_08375713
+ thumb_func_end GetStepInPlaceDelay8AnimId
+
+ thumb_func_start GetStepInPlaceDelay4AnimId
+GetStepInPlaceDelay4AnimId: @ 8060980
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080609A8 @ =gUnknown_08375718
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060998
+ movs r4, 0
+_08060998:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080609A8: .4byte gUnknown_08375718
+ thumb_func_end GetStepInPlaceDelay4AnimId
+
+ thumb_func_start FieldObjectFaceOppositeDirection
+FieldObjectFaceOppositeDirection: @ 80609AC
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r0, r1, 24
+ lsrs r0, 24
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetFaceDirectionAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectFaceOppositeDirection
+
+ thumb_func_start sub_80609D8
+sub_80609D8: @ 80609D8
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060A00 @ =gUnknown_0837571D
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _080609F0
+ movs r4, 0
+_080609F0:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060A00: .4byte gUnknown_0837571D
+ thumb_func_end sub_80609D8
+
+ thumb_func_start sub_8060A04
+sub_8060A04: @ 8060A04
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060A2C @ =gUnknown_08375722
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060A1C
+ movs r4, 0
+_08060A1C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060A2C: .4byte gUnknown_08375722
+ thumb_func_end sub_8060A04
+
+ thumb_func_start sub_8060A30
+sub_8060A30: @ 8060A30
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060A58 @ =gUnknown_08375727
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060A48
+ movs r4, 0
+_08060A48:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060A58: .4byte gUnknown_08375727
+ thumb_func_end sub_8060A30
+
+ thumb_func_start sub_8060A5C
+sub_8060A5C: @ 8060A5C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060A84 @ =gUnknown_0837572C
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060A74
+ movs r4, 0
+_08060A74:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060A84: .4byte gUnknown_0837572C
+ thumb_func_end sub_8060A5C
+
+ thumb_func_start sub_8060A88
+sub_8060A88: @ 8060A88
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060AB0 @ =gUnknown_08375731
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060AA0
+ movs r4, 0
+_08060AA0:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060AB0: .4byte gUnknown_08375731
+ thumb_func_end sub_8060A88
+
+ thumb_func_start sub_8060AB4
+sub_8060AB4: @ 8060AB4
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060ADC @ =gUnknown_08375736
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060ACC
+ movs r4, 0
+_08060ACC:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060ADC: .4byte gUnknown_08375736
+ thumb_func_end sub_8060AB4
+
+ thumb_func_start sub_8060AE0
+sub_8060AE0: @ 8060AE0
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060B08 @ =gUnknown_0837573B
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060AF8
+ movs r4, 0
+_08060AF8:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060B08: .4byte gUnknown_0837573B
+ thumb_func_end sub_8060AE0
+
+ thumb_func_start sub_8060B0C
+sub_8060B0C: @ 8060B0C
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060B34 @ =gUnknown_08375740
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060B24
+ movs r4, 0
+_08060B24:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060B34: .4byte gUnknown_08375740
+ thumb_func_end sub_8060B0C
+
+ thumb_func_start sub_8060B38
+sub_8060B38: @ 8060B38
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060B60 @ =gUnknown_08375745
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060B50
+ movs r4, 0
+_08060B50:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060B60: .4byte gUnknown_08375745
+ thumb_func_end sub_8060B38
+
+ thumb_func_start sub_8060B64
+sub_8060B64: @ 8060B64
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060B8C @ =gUnknown_0837574A
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ cmp r4, 0x4
+ bls _08060B7C
+ movs r4, 0
+_08060B7C:
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060B8C: .4byte gUnknown_0837574A
+ thumb_func_end sub_8060B64
+
+ thumb_func_start GetOppositeDirection
+GetOppositeDirection: @ 8060B90
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08060BB4 @ =gUnknown_0837574F
+ mov r0, sp
+ movs r2, 0x8
+ bl memcpy
+ subs r1, r4, 0x1
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, 0x7
+ bhi _08060BB8
+ mov r2, sp
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ b _08060BBA
+ .align 2, 0
+_08060BB4: .4byte gUnknown_0837574F
+_08060BB8:
+ adds r0, r4, 0
+_08060BBA:
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetOppositeDirection
+
+ thumb_func_start zffu_offset_calc
+zffu_offset_calc: @ 8060BC4
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _08060BD8 @ =gUnknown_08375757
+ lsrs r0, 22
+ subs r0, 0x5
+ adds r1, r0
+ adds r1, r2
+ ldrb r0, [r1]
+ bx lr
+ .align 2, 0
+_08060BD8: .4byte gUnknown_08375757
+ thumb_func_end zffu_offset_calc
+
+ thumb_func_start state_to_direction
+state_to_direction: @ 8060BDC
+ 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 _08060BFC
+ cmp r2, 0
+ beq _08060BFC
+ cmp r1, 0x4
+ bhi _08060BFC
+ cmp r2, 0x4
+ bls _08060C00
+_08060BFC:
+ movs r0, 0
+ b _08060C12
+_08060C00:
+ adds r1, r2, 0
+ bl zffu_offset_calc
+ ldr r2, _08060C18 @ =gUnknown_08375767
+ lsls r1, r4, 2
+ subs r1, 0x5
+ adds r0, r1
+ adds r0, r2
+ ldrb r0, [r0]
+_08060C12:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08060C18: .4byte gUnknown_08375767
+ thumb_func_end state_to_direction
+
+ thumb_func_start FieldObjectExecSpecialAnim
+FieldObjectExecSpecialAnim: @ 8060C1C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r2, _08060C50 @ =gUnknown_08375778
+ 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 _08060C48
+ ldrb r0, [r4]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r4]
+_08060C48:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08060C50: .4byte gUnknown_08375778
+ thumb_func_end FieldObjectExecSpecialAnim
+
+ thumb_func_start FieldObjectExecRegularAnim
+FieldObjectExecRegularAnim: @ 8060C54
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _08060C80 @ =gUnknown_08375778
+ 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 _08060C84
+ movs r0, 0
+ b _08060C8E
+ .align 2, 0
+_08060C80: .4byte gUnknown_08375778
+_08060C84:
+ movs r0, 0xFF
+ strb r0, [r4, 0x1C]
+ movs r0, 0
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_08060C8E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectExecRegularAnim
+
+ thumb_func_start FieldObjectSetRegularAnim
+FieldObjectSetRegularAnim: @ 8060C94
+ movs r3, 0
+ strb r2, [r0, 0x1C]
+ strh r3, [r1, 0x32]
+ bx lr
+ thumb_func_end FieldObjectSetRegularAnim
+
+ thumb_func_start an_look_any
+an_look_any: @ 8060C9C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r1, r2, 24
+ lsrs r1, 24
+ bl FieldObjectSetDirection
+ 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 sub_805FE64
+ 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_8060CE0
+sub_8060CE0: @ 8060CE0
+ push {lr}
+ movs r2, 0x1
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060CE0
+
+ thumb_func_start sub_8060CF0
+sub_8060CF0: @ 8060CF0
+ push {lr}
+ movs r2, 0x2
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060CF0
+
+ thumb_func_start sub_8060D00
+sub_8060D00: @ 8060D00
+ push {lr}
+ movs r2, 0x3
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060D00
+
+ thumb_func_start sub_8060D10
+sub_8060D10: @ 8060D10
+ push {lr}
+ movs r2, 0x4
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060D10
+
+ thumb_func_start sub_8060D20
+sub_8060D20: @ 8060D20
+ 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 FieldObjectSetDirection
+ 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_8060D20
+
+ thumb_func_start do_go_anim
+do_go_anim: @ 8060DA4
+ 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, _08060DFC @ =gUnknown_083759C0
+ 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_8060D20
+ 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 sub_805FE28
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08060DFC: .4byte gUnknown_083759C0
+ thumb_func_end do_go_anim
+
+ thumb_func_start do_run_anim
+do_run_anim: @ 8060E00
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ movs r3, 0x1
+ bl sub_8060D20
+ 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 sub_805FE28
+ 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: @ 8060E30
+ 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 _08060E46
+ movs r0, 0
+ b _08060E62
+_08060E46:
+ 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
+_08060E62:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end npc_obj_ministep_stop_on_arrival
+
+ thumb_func_start sub_8060E68
+sub_8060E68: @ 8060E68
+ 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 FieldObjectSetDirection
+ 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_806467C
+ 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_8060E68
+
+ thumb_func_start sub_8060ED8
+sub_8060ED8: @ 8060ED8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ bl sub_8060E68
+ 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 sub_805FE28
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8060ED8
+
+ thumb_func_start an_walk_any_2
+an_walk_any_2: @ 8060F04
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl sub_806468C
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060F1A
+ movs r0, 0
+ b _08060F36
+_08060F1A:
+ 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
+_08060F36:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end an_walk_any_2
+
+ thumb_func_start sub_8060F3C
+sub_8060F3C: @ 8060F3C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8060ED8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8060F5C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060F3C
+
+ thumb_func_start sub_8060F5C
+sub_8060F5C: @ 8060F5C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060F6E
+ movs r0, 0
+ b _08060F74
+_08060F6E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08060F74:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060F5C
+
+ thumb_func_start sub_8060F7C
+sub_8060F7C: @ 8060F7C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl sub_8060ED8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8060F9C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060F7C
+
+ thumb_func_start sub_8060F9C
+sub_8060F9C: @ 8060F9C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060FAE
+ movs r0, 0
+ b _08060FB4
+_08060FAE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08060FB4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060F9C
+
+ thumb_func_start sub_8060FBC
+sub_8060FBC: @ 8060FBC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl sub_8060ED8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8060FDC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060FBC
+
+ thumb_func_start sub_8060FDC
+sub_8060FDC: @ 8060FDC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08060FEE
+ movs r0, 0
+ b _08060FF4
+_08060FEE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08060FF4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060FDC
+
+ thumb_func_start sub_8060FFC
+sub_8060FFC: @ 8060FFC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ bl sub_8060ED8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806101C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8060FFC
+
+ thumb_func_start sub_806101C
+sub_806101C: @ 806101C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806102E
+ movs r0, 0
+ b _08061034
+_0806102E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061034:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806101C
+
+ thumb_func_start sub_806103C
+sub_806103C: @ 806103C
+ 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_806105C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806103C
+
+ thumb_func_start sub_806105C
+sub_806105C: @ 806105C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806106E
+ movs r0, 0
+ b _08061074
+_0806106E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061074:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806105C
+
+ thumb_func_start sub_806107C
+sub_806107C: @ 806107C
+ 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_806109C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806107C
+
+ thumb_func_start sub_806109C
+sub_806109C: @ 806109C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080610AE
+ movs r0, 0
+ b _080610B4
+_080610AE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080610B4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806109C
+
+ thumb_func_start sub_80610BC
+sub_80610BC: @ 80610BC
+ 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_80610DC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80610BC
+
+ thumb_func_start sub_80610DC
+sub_80610DC: @ 80610DC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080610EE
+ movs r0, 0
+ b _080610F4
+_080610EE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080610F4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80610DC
+
+ thumb_func_start sub_80610FC
+sub_80610FC: @ 80610FC
+ 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_806111C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80610FC
+
+ thumb_func_start sub_806111C
+sub_806111C: @ 806111C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806112E
+ movs r0, 0
+ b _08061134
+_0806112E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061134:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806111C
+
+ thumb_func_start sub_806113C
+sub_806113C: @ 806113C
+ 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, _080611F4 @ =gUnknown_08375A34
+ 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 FieldObjectSetDirection
+ 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_8060320
+ 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_80646E4
+ 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
+_080611F4: .4byte gUnknown_08375A34
+ thumb_func_end sub_806113C
+
+ thumb_func_start maybe_shadow_1
+maybe_shadow_1: @ 80611F8
+ 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_806113C
+ 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 sub_805FE28
+ 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_806123C
+sub_806123C: @ 806123C
+ 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, _080612C8 @ =gUnknown_08375A3A
+ 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 _080612CC
+ 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 _080612CC
+ 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_8060320
+ 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 _080612F0
+ .align 2, 0
+_080612C8: .4byte gUnknown_08375A3A
+_080612CC:
+ mov r1, r8
+ cmp r1, 0xFF
+ bne _080612F0
+ 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]
+_080612F0:
+ mov r0, r8
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806123C
+
+ thumb_func_start sub_8061300
+sub_8061300: @ 8061300
+ push {lr}
+ ldr r2, _08061310 @ =sub_8064704
+ bl sub_806123C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061310: .4byte sub_8064704
+ thumb_func_end sub_8061300
+
+ thumb_func_start sub_8061314
+sub_8061314: @ 8061314
+ push {lr}
+ ldr r2, _08061324 @ =sub_806478C
+ bl sub_806123C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08061324: .4byte sub_806478C
+ thumb_func_end sub_8061314
+
+ thumb_func_start sub_8061328
+sub_8061328: @ 8061328
+ push {lr}
+ bl sub_8061300
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _0806133A
+ movs r0, 0
+ b _0806133C
+_0806133A:
+ movs r0, 0x1
+_0806133C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061328
+
+ thumb_func_start sub_8061340
+sub_8061340: @ 8061340
+ push {lr}
+ bl sub_8061314
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _08061352
+ movs r0, 0
+ b _08061354
+_08061352:
+ movs r0, 0x1
+_08061354:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061340
+
+ thumb_func_start sub_8061358
+sub_8061358: @ 8061358
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061300
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08061372
+ cmp r0, 0xFF
+ bne _0806139E
+ movs r0, 0x1
+ b _080613A0
+_08061372:
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl GetOppositeDirection
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ 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 sub_805FE64
+_0806139E:
+ movs r0, 0
+_080613A0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061358
+
+ thumb_func_start sub_80613A8
+sub_80613A8: @ 80613A8
+ 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_80613D4
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80613A8
+
+ thumb_func_start sub_80613D4
+sub_80613D4: @ 80613D4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _080613E8
+ movs r0, 0
+ b _080613F8
+_080613E8:
+ 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
+_080613F8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80613D4
+
+ thumb_func_start sub_8061400
+sub_8061400: @ 8061400
+ 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_806142C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061400
+
+ thumb_func_start sub_806142C
+sub_806142C: @ 806142C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061440
+ movs r0, 0
+ b _08061450
+_08061440:
+ 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
+_08061450:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806142C
+
+ thumb_func_start sub_8061458
+sub_8061458: @ 8061458
+ 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_8061484
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061458
+
+ thumb_func_start sub_8061484
+sub_8061484: @ 8061484
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061498
+ movs r0, 0
+ b _080614A8
+_08061498:
+ 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
+_080614A8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061484
+
+ thumb_func_start sub_80614B0
+sub_80614B0: @ 80614B0
+ 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_80614DC
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80614B0
+
+ thumb_func_start sub_80614DC
+sub_80614DC: @ 80614DC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _080614F0
+ movs r0, 0
+ b _08061500
+_080614F0:
+ 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
+_08061500:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80614DC
+
+ thumb_func_start sub_8061508
+sub_8061508: @ 8061508
+ movs r2, 0x1
+ strh r2, [r0, 0x32]
+ strh r1, [r0, 0x34]
+ bx lr
+ thumb_func_end sub_8061508
+
+ thumb_func_start sub_8061510
+sub_8061510: @ 8061510
+ push {lr}
+ ldrh r0, [r1, 0x34]
+ subs r0, 0x1
+ strh r0, [r1, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ beq _08061522
+ movs r0, 0
+ b _08061528
+_08061522:
+ movs r0, 0x2
+ strh r0, [r1, 0x32]
+ movs r0, 0x1
+_08061528:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061510
+
+ thumb_func_start sub_806152C
+sub_806152C: @ 806152C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8061508
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8061510
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806152C
+
+ thumb_func_start sub_806154C
+sub_806154C: @ 806154C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl sub_8061508
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8061510
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806154C
+
+ thumb_func_start sub_806156C
+sub_806156C: @ 806156C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl sub_8061508
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8061510
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806156C
+
+ thumb_func_start sub_806158C
+sub_806158C: @ 806158C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl sub_8061508
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8061510
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806158C
+
+ thumb_func_start sub_80615AC
+sub_80615AC: @ 80615AC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ movs r1, 0x10
+ bl sub_8061508
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8061510
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80615AC
+
+ thumb_func_start sub_80615CC
+sub_80615CC: @ 80615CC
+ 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_80615EC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80615CC
+
+ thumb_func_start sub_80615EC
+sub_80615EC: @ 80615EC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080615FE
+ movs r0, 0
+ b _08061604
+_080615FE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061604:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80615EC
+
+ thumb_func_start sub_806160C
+sub_806160C: @ 806160C
+ 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_806162C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806160C
+
+ thumb_func_start sub_806162C
+sub_806162C: @ 806162C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806163E
+ movs r0, 0
+ b _08061644
+_0806163E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061644:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806162C
+
+ thumb_func_start sub_806164C
+sub_806164C: @ 806164C
+ 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_806166C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806164C
+
+ thumb_func_start sub_806166C
+sub_806166C: @ 806166C
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806167E
+ movs r0, 0
+ b _08061684
+_0806167E:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061684:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806166C
+
+ thumb_func_start sub_806168C
+sub_806168C: @ 806168C
+ 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_80616AC
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806168C
+
+ thumb_func_start sub_80616AC
+sub_80616AC: @ 80616AC
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080616BE
+ movs r0, 0
+ b _080616C4
+_080616BE:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080616C4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80616AC
+
+ thumb_func_start sub_80616CC
+sub_80616CC: @ 80616CC
+ 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 FieldObjectSetDirection
+ mov r0, r8
+ adds r1, r6, 0
+ adds r2, r4, 0
+ bl sub_805FE28
+ 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_80616CC
+
+ thumb_func_start sub_8061714
+sub_8061714: @ 8061714
+ push {lr}
+ ldrh r0, [r1, 0x34]
+ subs r0, 0x1
+ strh r0, [r1, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ beq _08061726
+ movs r0, 0
+ b _08061738
+_08061726:
+ 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
+_08061738:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061714
+
+ thumb_func_start sub_806173C
+sub_806173C: @ 806173C
+ 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 _08061766
+ 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]
+_08061766:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806173C
+
+ thumb_func_start sub_8061778
+sub_8061778: @ 8061778
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806173C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061778
+
+ thumb_func_start sub_80617B0
+sub_80617B0: @ 80617B0
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806173C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80617B0
+
+ thumb_func_start sub_80617E8
+sub_80617E8: @ 80617E8
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806173C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80617E8
+
+ thumb_func_start sub_8061820
+sub_8061820: @ 8061820
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_806173C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061820
+
+ thumb_func_start sub_8061858
+sub_8061858: @ 8061858
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061858
+
+ thumb_func_start sub_8061890
+sub_8061890: @ 8061890
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061890
+
+ thumb_func_start sub_80618C8
+sub_80618C8: @ 80618C8
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80618C8
+
+ thumb_func_start sub_8061900
+sub_8061900: @ 8061900
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061900
+
+ thumb_func_start sub_8061938
+sub_8061938: @ 8061938
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061938
+
+ thumb_func_start sub_8061970
+sub_8061970: @ 8061970
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061970
+
+ thumb_func_start sub_80619A8
+sub_80619A8: @ 80619A8
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80619A8
+
+ thumb_func_start sub_80619E0
+sub_80619E0: @ 80619E0
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80619E0
+
+ thumb_func_start sub_8061A18
+sub_8061A18: @ 8061A18
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061A18
+
+ thumb_func_start sub_8061A50
+sub_8061A50: @ 8061A50
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061A50
+
+ thumb_func_start sub_8061A88
+sub_8061A88: @ 8061A88
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061A88
+
+ thumb_func_start sub_8061AC0
+sub_8061AC0: @ 8061AC0
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061AC0
+
+ thumb_func_start sub_8061AF8
+sub_8061AF8: @ 8061AF8
+ 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_8061B18
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061AF8
+
+ thumb_func_start sub_8061B18
+sub_8061B18: @ 8061B18
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061B2A
+ movs r0, 0
+ b _08061B30
+_08061B2A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061B30:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061B18
+
+ thumb_func_start sub_8061B38
+sub_8061B38: @ 8061B38
+ 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_8061B58
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061B38
+
+ thumb_func_start sub_8061B58
+sub_8061B58: @ 8061B58
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061B6A
+ movs r0, 0
+ b _08061B70
+_08061B6A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061B70:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061B58
+
+ thumb_func_start sub_8061B78
+sub_8061B78: @ 8061B78
+ 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_8061B98
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061B78
+
+ thumb_func_start sub_8061B98
+sub_8061B98: @ 8061B98
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061BAA
+ movs r0, 0
+ b _08061BB0
+_08061BAA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061BB0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061B98
+
+ thumb_func_start sub_8061BB8
+sub_8061BB8: @ 8061BB8
+ 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_8061BD8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061BB8
+
+ thumb_func_start sub_8061BD8
+sub_8061BD8: @ 8061BD8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061BEA
+ movs r0, 0
+ b _08061BF0
+_08061BEA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061BF0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061BD8
+
+ thumb_func_start sub_8061BF8
+sub_8061BF8: @ 8061BF8
+ 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_8061C18
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061BF8
+
+ thumb_func_start sub_8061C18
+sub_8061C18: @ 8061C18
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061C2A
+ movs r0, 0
+ b _08061C30
+_08061C2A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061C30:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061C18
+
+ thumb_func_start sub_8061C38
+sub_8061C38: @ 8061C38
+ 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_8061C58
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061C38
+
+ thumb_func_start sub_8061C58
+sub_8061C58: @ 8061C58
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061C6A
+ movs r0, 0
+ b _08061C70
+_08061C6A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061C70:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061C58
+
+ thumb_func_start sub_8061C78
+sub_8061C78: @ 8061C78
+ 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_8061C98
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061C78
+
+ thumb_func_start sub_8061C98
+sub_8061C98: @ 8061C98
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061CAA
+ movs r0, 0
+ b _08061CB0
+_08061CAA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061CB0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061C98
+
+ thumb_func_start sub_8061CB8
+sub_8061CB8: @ 8061CB8
+ 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_8061CD8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061CB8
+
+ thumb_func_start sub_8061CD8
+sub_8061CD8: @ 8061CD8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061CEA
+ movs r0, 0
+ b _08061CF0
+_08061CEA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061CF0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061CD8
+
+ thumb_func_start sub_8061CF8
+sub_8061CF8: @ 8061CF8
+ 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_8061D18
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061CF8
+
+ thumb_func_start sub_8061D18
+sub_8061D18: @ 8061D18
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061D2A
+ movs r0, 0
+ b _08061D30
+_08061D2A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061D30:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061D18
+
+ thumb_func_start sub_8061D38
+sub_8061D38: @ 8061D38
+ 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_8061D58
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061D38
+
+ thumb_func_start sub_8061D58
+sub_8061D58: @ 8061D58
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061D6A
+ movs r0, 0
+ b _08061D70
+_08061D6A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061D70:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061D58
+
+ thumb_func_start sub_8061D78
+sub_8061D78: @ 8061D78
+ 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_8061D98
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061D78
+
+ thumb_func_start sub_8061D98
+sub_8061D98: @ 8061D98
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061DAA
+ movs r0, 0
+ b _08061DB0
+_08061DAA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061DB0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061D98
+
+ thumb_func_start sub_8061DB8
+sub_8061DB8: @ 8061DB8
+ 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_8061DD8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061DB8
+
+ thumb_func_start sub_8061DD8
+sub_8061DD8: @ 8061DD8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061DEA
+ movs r0, 0
+ b _08061DF0
+_08061DEA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061DF0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061DD8
+
+ thumb_func_start do_run_south_anim
+do_run_south_anim: @ 8061DF8
+ 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_8061E18
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end do_run_south_anim
+
+ thumb_func_start sub_8061E18
+sub_8061E18: @ 8061E18
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061E2A
+ movs r0, 0
+ b _08061E30
+_08061E2A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061E30:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061E18
+
+ thumb_func_start do_run_north_anim
+do_run_north_anim: @ 8061E38
+ 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_8061E58
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end do_run_north_anim
+
+ thumb_func_start sub_8061E58
+sub_8061E58: @ 8061E58
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061E6A
+ movs r0, 0
+ b _08061E70
+_08061E6A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061E70:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061E58
+
+ thumb_func_start do_run_west_anim
+do_run_west_anim: @ 8061E78
+ 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_8061E98
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end do_run_west_anim
+
+ thumb_func_start sub_8061E98
+sub_8061E98: @ 8061E98
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061EAA
+ movs r0, 0
+ b _08061EB0
+_08061EAA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061EB0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061E98
+
+ thumb_func_start do_run_east_anim
+do_run_east_anim: @ 8061EB8
+ 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_8061ED8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end do_run_east_anim
+
+ thumb_func_start sub_8061ED8
+sub_8061ED8: @ 8061ED8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061EEA
+ movs r0, 0
+ b _08061EF0
+_08061EEA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061EF0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061ED8
+
+ thumb_func_start npc_set_direction_and_anim__an_proceed
+npc_set_direction_and_anim__an_proceed: @ 8061EF8
+ 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 FieldObjectSetDirection
+ 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_8061F24
+sub_8061F24: @ 8061F24
+ 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_8061F24
+
+ thumb_func_start sub_8061F3C
+sub_8061F3C: @ 8061F3C
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8064864
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061F50
+ movs r0, 0
+ b _08061F56
+_08061F50:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08061F56:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061F3C
+
+ thumb_func_start sub_8061F5C
+sub_8061F5C: @ 8061F5C
+ 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_806113C
+ adds r0, r4, 0
+ bl sub_805FD88
+ 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_8061F5C
+
+ thumb_func_start sub_8061F90
+sub_8061F90: @ 8061F90
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ bl sub_8061F5C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061FB0
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061F90
+
+ thumb_func_start sub_8061FB0
+sub_8061FB0: @ 8061FB0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061340
+ lsls r0, 24
+ cmp r0, 0
+ bne _08061FC4
+ movs r0, 0
+ b _08061FD2
+_08061FC4:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ ldrb r1, [r4]
+ subs r0, 0x23
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_08061FD2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061FB0
+
+ thumb_func_start sub_8061FD8
+sub_8061FD8: @ 8061FD8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ bl sub_8061F5C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061FF8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061FD8
+
+ thumb_func_start sub_8061FF8
+sub_8061FF8: @ 8061FF8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061340
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806200C
+ movs r0, 0
+ b _0806201A
+_0806200C:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ ldrb r1, [r4]
+ subs r0, 0x23
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_0806201A:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8061FF8
+
+ thumb_func_start sub_8062020
+sub_8062020: @ 8062020
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ bl sub_8061F5C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062040
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062020
+
+ thumb_func_start sub_8062040
+sub_8062040: @ 8062040
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061340
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062054
+ movs r0, 0
+ b _08062062
+_08062054:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ ldrb r1, [r4]
+ subs r0, 0x23
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_08062062:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062040
+
+ thumb_func_start sub_8062068
+sub_8062068: @ 8062068
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ bl sub_8061F5C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062088
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062068
+
+ thumb_func_start sub_8062088
+sub_8062088: @ 8062088
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061340
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806209C
+ movs r0, 0
+ b _080620AA
+_0806209C:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ ldrb r1, [r4]
+ subs r0, 0x23
+ ands r0, r1
+ strb r0, [r4]
+ movs r0, 0x1
+_080620AA:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062088
+
+ thumb_func_start sub_80620B0
+sub_80620B0: @ 80620B0
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _080620FA
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ movs r2, 0x12
+ ldrsh r1, [r5, r2]
+ ldr r4, _08062108 @ =gMapObjects
+ 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_805FE90
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl an_look_any
+_080620FA:
+ movs r0, 0x1
+ strh r0, [r6, 0x32]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062108: .4byte gMapObjects
+ thumb_func_end sub_80620B0
+
+ thumb_func_start sub_806210C
+sub_806210C: @ 806210C
+ 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 TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806215E
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ movs r2, 0x12
+ ldrsh r1, [r5, r2]
+ ldr r4, _0806216C @ =gMapObjects
+ 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_805FE90
+ 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
+_0806215E:
+ movs r0, 0x1
+ strh r0, [r6, 0x32]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806216C: .4byte gMapObjects
+ thumb_func_end sub_806210C
+
+ thumb_func_start sub_8062170
+sub_8062170: @ 8062170
+ 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_8062170
+
+ thumb_func_start sub_8062180
+sub_8062180: @ 8062180
+ 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_8062180
+
+ thumb_func_start sub_8062190
+sub_8062190: @ 8062190
+ 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_80621BC
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062190
+
+ thumb_func_start sub_80621BC
+sub_80621BC: @ 80621BC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _080621D0
+ movs r0, 0
+ b _080621E0
+_080621D0:
+ 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
+_080621E0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80621BC
+
+ thumb_func_start sub_80621E8
+sub_80621E8: @ 80621E8
+ 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_8062214
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80621E8
+
+ thumb_func_start sub_8062214
+sub_8062214: @ 8062214
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062228
+ movs r0, 0
+ b _08062238
+_08062228:
+ 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
+_08062238:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062214
+
+ thumb_func_start sub_8062240
+sub_8062240: @ 8062240
+ 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_806226C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062240
+
+ thumb_func_start sub_806226C
+sub_806226C: @ 806226C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062280
+ movs r0, 0
+ b _08062290
+_08062280:
+ 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
+_08062290:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806226C
+
+ thumb_func_start sub_8062298
+sub_8062298: @ 8062298
+ 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_80622C4
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062298
+
+ thumb_func_start sub_80622C4
+sub_80622C4: @ 80622C4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _080622D8
+ movs r0, 0
+ b _080622E8
+_080622D8:
+ 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
+_080622E8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80622C4
+
+ thumb_func_start sub_80622F0
+sub_80622F0: @ 80622F0
+ 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_806231C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80622F0
+
+ thumb_func_start sub_806231C
+sub_806231C: @ 806231C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062330
+ movs r0, 0
+ b _08062340
+_08062330:
+ 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
+_08062340:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806231C
+
+ thumb_func_start sub_8062348
+sub_8062348: @ 8062348
+ 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_8062374
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062348
+
+ thumb_func_start sub_8062374
+sub_8062374: @ 8062374
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062388
+ movs r0, 0
+ b _08062398
+_08062388:
+ 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
+_08062398:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062374
+
+ thumb_func_start sub_80623A0
+sub_80623A0: @ 80623A0
+ 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_80623CC
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80623A0
+
+ thumb_func_start sub_80623CC
+sub_80623CC: @ 80623CC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _080623E0
+ movs r0, 0
+ b _080623F0
+_080623E0:
+ 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
+_080623F0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80623CC
+
+ thumb_func_start sub_80623F8
+sub_80623F8: @ 80623F8
+ 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_8062424
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80623F8
+
+ thumb_func_start sub_8062424
+sub_8062424: @ 8062424
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062438
+ movs r0, 0
+ b _08062448
+_08062438:
+ 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
+_08062448:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062424
+
+ thumb_func_start sub_8062450
+sub_8062450: @ 8062450
+ 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_806247C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062450
+
+ thumb_func_start sub_806247C
+sub_806247C: @ 806247C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061358
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062490
+ movs r0, 0
+ b _080624A0
+_08062490:
+ 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
+_080624A0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806247C
+
+ thumb_func_start sub_80624A8
+sub_80624A8: @ 80624A8
+ 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_80624D4
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80624A8
+
+ thumb_func_start sub_80624D4
+sub_80624D4: @ 80624D4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061358
+ lsls r0, 24
+ cmp r0, 0
+ bne _080624E8
+ movs r0, 0
+ b _080624F8
+_080624E8:
+ 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
+_080624F8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80624D4
+
+ thumb_func_start sub_8062500
+sub_8062500: @ 8062500
+ 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_806252C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062500
+
+ thumb_func_start sub_806252C
+sub_806252C: @ 806252C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061358
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062540
+ movs r0, 0
+ b _08062550
+_08062540:
+ 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
+_08062550:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806252C
+
+ thumb_func_start sub_8062558
+sub_8062558: @ 8062558
+ 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_8062584
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062558
+
+ thumb_func_start sub_8062584
+sub_8062584: @ 8062584
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061358
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062598
+ movs r0, 0
+ b _080625A8
+_08062598:
+ 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
+_080625A8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062584
+
+ thumb_func_start sub_80625B0
+sub_80625B0: @ 80625B0
+ push {lr}
+ ldr r3, _080625C4 @ =gUnknown_0836DC09
+ ldrb r2, [r0, 0x6]
+ adds r2, r3
+ ldrb r2, [r2]
+ bl an_look_any
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080625C4: .4byte gUnknown_0836DC09
+ thumb_func_end sub_80625B0
+
+ thumb_func_start sub_80625C8
+sub_80625C8: @ 80625C8
+ 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_80625C8
+
+ thumb_func_start sub_80625D8
+sub_80625D8: @ 80625D8
+ 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_80625D8
+
+ thumb_func_start sub_80625E8
+sub_80625E8: @ 80625E8
+ 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_80625E8
+
+ thumb_func_start sub_80625F8
+sub_80625F8: @ 80625F8
+ 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_80625F8
+
+ thumb_func_start sub_8062608
+sub_8062608: @ 8062608
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ 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_8062608
+
+ thumb_func_start sub_8062634
+sub_8062634: @ 8062634
+ 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_8062634
+
+ thumb_func_start sub_8062644
+sub_8062644: @ 8062644
+ 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_8062644
+
+ thumb_func_start do_exclamation_mark_bubble_1
+do_exclamation_mark_bubble_1: @ 8062654
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r1, _08062674 @ =gUnknown_0202FF84
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ bl FieldObjectGetLocalIdAndMap
+ movs r0, 0
+ bl FieldEffectStart
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062674: .4byte gUnknown_0202FF84
+ thumb_func_end do_exclamation_mark_bubble_1
+
+ thumb_func_start do_exclamation_mark_bubble_2
+do_exclamation_mark_bubble_2: @ 8062678
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r1, _08062698 @ =gUnknown_0202FF84
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ bl FieldObjectGetLocalIdAndMap
+ movs r0, 0x21
+ bl FieldEffectStart
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08062698: .4byte gUnknown_0202FF84
+ thumb_func_end do_exclamation_mark_bubble_2
+
+ thumb_func_start do_heart_bubble
+do_heart_bubble: @ 806269C
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r1, _080626BC @ =gUnknown_0202FF84
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ bl FieldObjectGetLocalIdAndMap
+ movs r0, 0x2E
+ bl FieldEffectStart
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080626BC: .4byte gUnknown_0202FF84
+ thumb_func_end do_heart_bubble
+
+ thumb_func_start sub_80626C0
+sub_80626C0: @ 80626C0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0x3F
+ bne _080626D6
+ adds r0, r4, 0
+ bl sub_8084794
+ movs r0, 0
+ b _080626FE
+_080626D6:
+ subs r0, 0x39
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _080626F8
+ adds r0, r4, 0
+ bl sub_812869C
+ movs r0, 0x1
+ strh r0, [r5, 0x32]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062704
+ lsls r0, 24
+ lsrs r0, 24
+ b _080626FE
+_080626F8:
+ movs r0, 0x2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+_080626FE:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80626C0
+
+ thumb_func_start sub_8062704
+sub_8062704: @ 8062704
+ push {r4,lr}
+ adds r4, r1, 0
+ bl sub_81286C4
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062716
+ movs r0, 0
+ b _0806271C
+_08062716:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_0806271C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062704
+
+ thumb_func_start sub_8062724
+sub_8062724: @ 8062724
+ 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_8062724
+
+ thumb_func_start sub_8062740
+sub_8062740: @ 8062740
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8064864
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806275C
+ adds r0, r4, 0
+ movs r1, 0x20
+ bl sub_8064820
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+_0806275C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062740
+
+ thumb_func_start sub_8062764
+sub_8062764: @ 8062764
+ 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 sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ beq _08062796
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ movs r0, 0x3
+ strh r0, [r5, 0x32]
+_08062796:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062764
+
+ thumb_func_start sub_80627A0
+sub_80627A0: @ 80627A0
+ 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_80627A0
+
+ thumb_func_start sub_80627BC
+sub_80627BC: @ 80627BC
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl sub_8064864
+ lsls r0, 24
+ cmp r0, 0
+ beq _080627D8
+ adds r0, r4, 0
+ movs r1, 0x20
+ bl sub_8064820
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+_080627D8:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80627BC
+
+ thumb_func_start sub_80627E0
+sub_80627E0: @ 80627E0
+ 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 sub_8064824
+ lsls r0, 24
+ cmp r0, 0
+ beq _08062812
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ movs r0, 0x3
+ strh r0, [r5, 0x32]
+_08062812:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80627E0
+
+ thumb_func_start sub_806281C
+sub_806281C: @ 806281C
+ 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_806281C
+
+ thumb_func_start sub_806282C
+sub_806282C: @ 806282C
+ 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_806282C
+
+ thumb_func_start sub_806283C
+sub_806283C: @ 806283C
+ 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_806283C
+
+ thumb_func_start sub_806286C
+sub_806286C: @ 806286C
+ 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_806286C
+
+ thumb_func_start sub_806289C
+sub_806289C: @ 806289C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ movs r2, 0x1
+ bl sub_8060ED8
+ 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_80628D0
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806289C
+
+ thumb_func_start sub_80628D0
+sub_80628D0: @ 80628D0
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _080628E2
+ movs r0, 0
+ b _080628F4
+_080628E2:
+ 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
+_080628F4:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80628D0
+
+ thumb_func_start sub_80628FC
+sub_80628FC: @ 80628FC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ movs r2, 0x1
+ bl sub_8060ED8
+ 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_8062930
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80628FC
+
+ thumb_func_start sub_8062930
+sub_8062930: @ 8062930
+ push {r4,lr}
+ adds r4, r1, 0
+ bl an_walk_any_2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062942
+ movs r0, 0
+ b _08062954
+_08062942:
+ 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
+_08062954:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062930
+
+ thumb_func_start sub_806295C
+sub_806295C: @ 806295C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r6, r1, 0
+ lsls r4, r2, 24
+ lsrs r4, 24
+ adds r1, r4, 0
+ bl FieldObjectSetDirection
+ adds r0, r5, 0
+ bl npc_coords_shift_still
+ adds r0, r4, 0
+ bl sub_805FDD8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl sub_805FE64
+ 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_806295C
+
+ thumb_func_start sub_806299C
+sub_806299C: @ 806299C
+ push {lr}
+ movs r2, 0x1
+ bl sub_806295C
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806299C
+
+ thumb_func_start sub_80629AC
+sub_80629AC: @ 80629AC
+ push {lr}
+ movs r2, 0x2
+ bl sub_806295C
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80629AC
+
+ thumb_func_start sub_80629BC
+sub_80629BC: @ 80629BC
+ push {lr}
+ movs r2, 0x3
+ bl sub_806295C
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80629BC
+
+ thumb_func_start sub_80629CC
+sub_80629CC: @ 80629CC
+ push {lr}
+ movs r2, 0x4
+ bl sub_806295C
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80629CC
+
+ thumb_func_start sub_80629DC
+sub_80629DC: @ 80629DC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl sub_805FD98
+ 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_80629DC
+
+ thumb_func_start sub_8062A00
+sub_8062A00: @ 8062A00
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl sub_805FD98
+ 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_8062A00
+
+ thumb_func_start sub_8062A24
+sub_8062A24: @ 8062A24
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl sub_805FD98
+ 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_8062A24
+
+ thumb_func_start sub_8062A48
+sub_8062A48: @ 8062A48
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl sub_805FD98
+ 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_8062A48
+
+ thumb_func_start sub_8062A6C
+sub_8062A6C: @ 8062A6C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl sub_805FDB8
+ 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_8062A6C
+
+ thumb_func_start sub_8062A90
+sub_8062A90: @ 8062A90
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl sub_805FDB8
+ 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_8062A90
+
+ thumb_func_start sub_8062AB4
+sub_8062AB4: @ 8062AB4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl sub_805FDB8
+ 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_8062AB4
+
+ thumb_func_start sub_8062AD8
+sub_8062AD8: @ 8062AD8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl sub_805FDB8
+ 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_8062AD8
+
+ thumb_func_start sub_8062AFC
+sub_8062AFC: @ 8062AFC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl sub_805FDC8
+ 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_8062AFC
+
+ thumb_func_start sub_8062B20
+sub_8062B20: @ 8062B20
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl sub_805FDC8
+ 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_8062B20
+
+ thumb_func_start sub_8062B44
+sub_8062B44: @ 8062B44
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl sub_805FDC8
+ 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_8062B44
+
+ thumb_func_start sub_8062B68
+sub_8062B68: @ 8062B68
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl sub_805FDC8
+ 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_8062B68
+
+ thumb_func_start sub_8062B8C
+sub_8062B8C: @ 8062B8C
+ 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_806113C
+ adds r0, r4, 0
+ bl sub_805FD98
+ 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_8062B8C
+
+ thumb_func_start sub_8062BD0
+sub_8062BD0: @ 8062BD0
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062BFC
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062BD0
+
+ thumb_func_start sub_8062BFC
+sub_8062BFC: @ 8062BFC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062C10
+ movs r0, 0
+ b _08062C20
+_08062C10:
+ 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
+_08062C20:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062BFC
+
+ thumb_func_start sub_8062C28
+sub_8062C28: @ 8062C28
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062C54
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062C28
+
+ thumb_func_start sub_8062C54
+sub_8062C54: @ 8062C54
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062C68
+ movs r0, 0
+ b _08062C78
+_08062C68:
+ 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
+_08062C78:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062C54
+
+ thumb_func_start sub_8062C80
+sub_8062C80: @ 8062C80
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062CAC
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062C80
+
+ thumb_func_start sub_8062CAC
+sub_8062CAC: @ 8062CAC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062CC0
+ movs r0, 0
+ b _08062CD0
+_08062CC0:
+ 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
+_08062CD0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062CAC
+
+ thumb_func_start sub_8062CD8
+sub_8062CD8: @ 8062CD8
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062D04
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062CD8
+
+ thumb_func_start sub_8062D04
+sub_8062D04: @ 8062D04
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062D18
+ movs r0, 0
+ b _08062D28
+_08062D18:
+ 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
+_08062D28:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062D04
+
+ thumb_func_start sub_8062D30
+sub_8062D30: @ 8062D30
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062D5C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062D30
+
+ thumb_func_start sub_8062D5C
+sub_8062D5C: @ 8062D5C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062D70
+ movs r0, 0
+ b _08062D80
+_08062D70:
+ 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
+_08062D80:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062D5C
+
+ thumb_func_start sub_8062D88
+sub_8062D88: @ 8062D88
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062DB4
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062D88
+
+ thumb_func_start sub_8062DB4
+sub_8062DB4: @ 8062DB4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062DC8
+ movs r0, 0
+ b _08062DD8
+_08062DC8:
+ 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
+_08062DD8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062DB4
+
+ thumb_func_start sub_8062DE0
+sub_8062DE0: @ 8062DE0
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062E0C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062DE0
+
+ thumb_func_start sub_8062E0C
+sub_8062E0C: @ 8062E0C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062E20
+ movs r0, 0
+ b _08062E30
+_08062E20:
+ 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
+_08062E30:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062E0C
+
+ thumb_func_start sub_8062E38
+sub_8062E38: @ 8062E38
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062E64
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062E38
+
+ thumb_func_start sub_8062E64
+sub_8062E64: @ 8062E64
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062E78
+ movs r0, 0
+ b _08062E88
+_08062E78:
+ 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
+_08062E88:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062E64
+
+ thumb_func_start sub_8062E90
+sub_8062E90: @ 8062E90
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062EBC
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062E90
+
+ thumb_func_start sub_8062EBC
+sub_8062EBC: @ 8062EBC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062ED0
+ movs r0, 0
+ b _08062EE0
+_08062ED0:
+ 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
+_08062EE0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062EBC
+
+ thumb_func_start sub_8062EE8
+sub_8062EE8: @ 8062EE8
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062F14
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062EE8
+
+ thumb_func_start sub_8062F14
+sub_8062F14: @ 8062F14
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062F28
+ movs r0, 0
+ b _08062F38
+_08062F28:
+ 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
+_08062F38:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062F14
+
+ thumb_func_start sub_8062F40
+sub_8062F40: @ 8062F40
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062F6C
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062F40
+
+ thumb_func_start sub_8062F6C
+sub_8062F6C: @ 8062F6C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062F80
+ movs r0, 0
+ b _08062F90
+_08062F80:
+ 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
+_08062F90:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062F6C
+
+ thumb_func_start sub_8062F98
+sub_8062F98: @ 8062F98
+ 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_8062B8C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8062FC4
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062F98
+
+ thumb_func_start sub_8062FC4
+sub_8062FC4: @ 8062FC4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_8061328
+ lsls r0, 24
+ cmp r0, 0
+ bne _08062FD8
+ movs r0, 0
+ b _08062FE8
+_08062FD8:
+ 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
+_08062FE8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062FC4
+
+ thumb_func_start sub_8062FF0
+sub_8062FF0: @ 8062FF0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x1
+ bl sub_805FDD8
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8062FF0
+
+ thumb_func_start sub_8063028
+sub_8063028: @ 8063028
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x2
+ bl sub_805FDD8
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063028
+
+ thumb_func_start sub_8063060
+sub_8063060: @ 8063060
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x3
+ bl sub_805FDD8
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063060
+
+ thumb_func_start sub_8063098
+sub_8063098: @ 8063098
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r0, 0x4
+ bl sub_805FDD8
+ 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_80616CC
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8061714
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063098
+
+ thumb_func_start sub_80630D0
+sub_80630D0: @ 80630D0
+ 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_8060D20
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_805FD98
+ 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_80630D0
+
+ thumb_func_start sub_8063108
+sub_8063108: @ 8063108
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_80630D0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8063128
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063108
+
+ thumb_func_start sub_8063128
+sub_8063128: @ 8063128
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806313A
+ movs r0, 0
+ b _08063140
+_0806313A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08063140:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063128
+
+ thumb_func_start sub_8063148
+sub_8063148: @ 8063148
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl sub_80630D0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8063168
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063148
+
+ thumb_func_start sub_8063168
+sub_8063168: @ 8063168
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806317A
+ movs r0, 0
+ b _08063180
+_0806317A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08063180:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063168
+
+ thumb_func_start sub_8063188
+sub_8063188: @ 8063188
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl sub_80630D0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80631A8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063188
+
+ thumb_func_start sub_80631A8
+sub_80631A8: @ 80631A8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080631BA
+ movs r0, 0
+ b _080631C0
+_080631BA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080631C0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80631A8
+
+ thumb_func_start sub_80631C8
+sub_80631C8: @ 80631C8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl sub_80630D0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80631E8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80631C8
+
+ thumb_func_start sub_80631E8
+sub_80631E8: @ 80631E8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080631FA
+ movs r0, 0
+ b _08063200
+_080631FA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08063200:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80631E8
+
+ thumb_func_start sub_8063208
+sub_8063208: @ 8063208
+ 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_8060D20
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_805FDD8
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_805FE28
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8063208
+
+ thumb_func_start sub_8063238
+sub_8063238: @ 8063238
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8063208
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8063258
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063238
+
+ thumb_func_start sub_8063258
+sub_8063258: @ 8063258
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806326A
+ movs r0, 0
+ b _08063270
+_0806326A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08063270:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063258
+
+ thumb_func_start sub_8063278
+sub_8063278: @ 8063278
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl sub_8063208
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8063298
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063278
+
+ thumb_func_start sub_8063298
+sub_8063298: @ 8063298
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080632AA
+ movs r0, 0
+ b _080632B0
+_080632AA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080632B0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063298
+
+ thumb_func_start sub_80632B8
+sub_80632B8: @ 80632B8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl sub_8063208
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80632D8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80632B8
+
+ thumb_func_start sub_80632D8
+sub_80632D8: @ 80632D8
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080632EA
+ movs r0, 0
+ b _080632F0
+_080632EA:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080632F0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80632D8
+
+ thumb_func_start sub_80632F8
+sub_80632F8: @ 80632F8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl sub_8063208
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8063318
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80632F8
+
+ thumb_func_start sub_8063318
+sub_8063318: @ 8063318
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806332A
+ movs r0, 0
+ b _08063330
+_0806332A:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08063330:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063318
+
+ thumb_func_start sub_8063338
+sub_8063338: @ 8063338
+ 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_8060D20
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_805FDB8
+ 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_8063338
+
+ thumb_func_start sub_8063370
+sub_8063370: @ 8063370
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8063338
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8063390
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063370
+
+ thumb_func_start sub_8063390
+sub_8063390: @ 8063390
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080633A2
+ movs r0, 0
+ b _080633A8
+_080633A2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080633A8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063390
+
+ thumb_func_start sub_80633B0
+sub_80633B0: @ 80633B0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl sub_8063338
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80633D0
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80633B0
+
+ thumb_func_start sub_80633D0
+sub_80633D0: @ 80633D0
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _080633E2
+ movs r0, 0
+ b _080633E8
+_080633E2:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_080633E8:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80633D0
+
+ thumb_func_start sub_80633F0
+sub_80633F0: @ 80633F0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x3
+ movs r3, 0x1
+ bl sub_8063338
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8063410
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80633F0
+
+ thumb_func_start sub_8063410
+sub_8063410: @ 8063410
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063422
+ movs r0, 0
+ b _08063428
+_08063422:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08063428:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063410
+
+ thumb_func_start sub_8063430
+sub_8063430: @ 8063430
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r2, 0x4
+ movs r3, 0x1
+ bl sub_8063338
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8063450
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063430
+
+ thumb_func_start sub_8063450
+sub_8063450: @ 8063450
+ push {r4,lr}
+ adds r4, r1, 0
+ bl npc_obj_ministep_stop_on_arrival
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063462
+ movs r0, 0
+ b _08063468
+_08063462:
+ movs r0, 0x2
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+_08063468:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8063450
+
+ thumb_func_start sub_8063470
+sub_8063470: @ 8063470
+ movs r0, 0x1
+ bx lr
+ thumb_func_end sub_8063470
+
+ thumb_func_start sub_8063474
+sub_8063474: @ 8063474
+ adds r1, 0x2C
+ ldrb r0, [r1]
+ movs r2, 0x40
+ orrs r0, r2
+ strb r0, [r1]
+ movs r0, 0x1
+ bx lr
+ thumb_func_end sub_8063474
+
+ thumb_func_start npc_obj_transfer_image_anim_pause_flag
+npc_obj_transfer_image_anim_pause_flag: @ 8063484
+ push {lr}
+ ldrb r0, [r0, 0x1]
+ lsls r0, 29
+ cmp r0, 0
+ bge _0806349A
+ adds r0, r1, 0
+ adds r0, 0x2C
+ ldrb r1, [r0]
+ movs r2, 0x40
+ orrs r1, r2
+ strb r1, [r0]
+_0806349A:
+ pop {r0}
+ bx r0
+ thumb_func_end npc_obj_transfer_image_anim_pause_flag
+
+ thumb_func_start sub_80634A0
+sub_80634A0: @ 80634A0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrb r3, [r4, 0x1]
+ lsls r0, r3, 28
+ cmp r0, 0
+ bge _080634C8
+ 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]
+_080634C8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80634A0
+
+ thumb_func_start sub_80634D0
+sub_80634D0: @ 80634D0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl sub_80634E8
+ 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_80634D0
+
+ thumb_func_start sub_80634E8
+sub_80634E8: @ 80634E8
+ push {r4-r6,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 GetFieldObjectGraphicsInfo
+ adds r6, r0, 0
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0806354C
+ 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, _08063544 @ =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, _08063548 @ =gSpriteCoordOffsetY
+ adds r0, r1
+ ldrh r2, [r2]
+ adds r0, r2
+ b _08063574
+ .align 2, 0
+_08063544: .4byte gSpriteCoordOffsetX
+_08063548: .4byte gSpriteCoordOffsetY
+_0806354C:
+ 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
+_08063574:
+ lsls r0, 16
+ lsrs r2, r0, 16
+ ldrh r0, [r6, 0x8]
+ adds r0, r3
+ lsls r0, 16
+ lsrs r1, r0, 16
+ ldrh r0, [r6, 0xA]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r0, r3, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ bgt _0806359C
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r1, 0x10
+ negs r1, r1
+ cmp r0, r1
+ bge _080635A4
+_0806359C:
+ ldrb r0, [r5, 0x1]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+_080635A4:
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, 0xAF
+ bgt _080635B8
+ lsls r0, r4, 16
+ asrs r0, 16
+ movs r1, 0x10
+ negs r1, r1
+ cmp r0, r1
+ bge _080635C0
+_080635B8:
+ ldrb r0, [r5, 0x1]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+_080635C0:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80634E8
+
+ thumb_func_start npc_update_obj_anim_flag
+npc_update_obj_anim_flag: @ 80635C8
+ 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 _080635EA
+ movs r1, 0x4
+ adds r0, r3, 0
+ orrs r0, r1
+ strb r0, [r2]
+_080635EA:
+ pop {r0}
+ bx r0
+ thumb_func_end npc_update_obj_anim_flag
+
+ .align 2, 0 @ Don't pad with nop.