	.include "asm/macros.inc"
	.include "constants/constants.inc"

	.syntax unified

	.text

	thumb_func_start npc_clear_ids_and_state
npc_clear_ids_and_state: @ 805DE2C
	push {r4,lr}
	adds r4, r0, 0
	movs r1, 0
	movs r2, 0x24
	bl memset
	movs r0, 0xFF
	strb r0, [r4, 0x8]
	movs r0, 0x1
	negs r0, r0
	strb r0, [r4, 0x9]
	strb r0, [r4, 0xA]
	strb r0, [r4, 0x1C]
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end npc_clear_ids_and_state

	thumb_func_start npcs_clear_ids_and_state
npcs_clear_ids_and_state: @ 805DE4C
	push {r4,r5,lr}
	movs r4, 0
	ldr r5, _0805DE70 @ =gObjectEvents
_0805DE52:
	lsls r0, r4, 3
	adds r0, r4
	lsls r0, 2
	adds r0, r5
	bl npc_clear_ids_and_state
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0xF
	bls _0805DE52
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0805DE70: .4byte gObjectEvents
	thumb_func_end npcs_clear_ids_and_state

	thumb_func_start sub_805DE74
sub_805DE74: @ 805DE74
	push {lr}
	bl strange_npc_table_clear
	bl npcs_clear_ids_and_state
	bl ClearPlayerAvatarInfo
	bl sub_805DE8C
	pop {r0}
	bx r0
	thumb_func_end sub_805DE74

	thumb_func_start sub_805DE8C
sub_805DE8C: @ 805DE8C
	push {r4-r6,lr}
	mov r6, r10
	mov r5, r9
	mov r4, r8
	push {r4-r6}
	ldr r0, _0805DF28 @ =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, _0805DF2C @ =gSprites
	mov r10, r1
	lsls r4, r0, 4
	adds r4, r0
	lsls r4, 2
	add r4, r10
	ldrb r1, [r4, 0x1]
	movs r5, 0x4
	negs r5, r5
	adds r0, r5, 0
	ands r0, r1
	movs r1, 0x1
	mov r8, r1
	mov r1, r8
	orrs r0, r1
	strb r0, [r4, 0x1]
	adds r0, r4, 0
	bl InitSpriteAffineAnim
	adds r0, r4, 0
	movs r1, 0
	bl StartSpriteAffineAnim
	adds r4, 0x3E
	ldrb r0, [r4]
	movs r6, 0x4
	orrs r0, r6
	strb r0, [r4]
	mov r0, r9
	movs r1, 0
	movs r2, 0
	movs r3, 0x1F
	bl CreateSpriteAtEnd
	lsls r0, 24
	lsrs r0, 24
	lsls r4, r0, 4
	adds r4, r0
	lsls r4, 2
	add r4, r10
	ldrb r0, [r4, 0x1]
	ands r5, r0
	mov r0, r8
	orrs r5, r0
	strb r5, [r4, 0x1]
	adds r0, r4, 0
	bl InitSpriteAffineAnim
	adds r0, r4, 0
	movs r1, 0x1
	bl StartSpriteAffineAnim
	adds r4, 0x3E
	ldrb r0, [r4]
	orrs r0, r6
	strb r0, [r4]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_0805DF28: .4byte gFieldEffectObjectTemplatePointers
_0805DF2C: .4byte gSprites
	thumb_func_end sub_805DE8C

	thumb_func_start sub_805DF30
sub_805DF30: @ 805DF30
	push {lr}
	movs r1, 0
	ldr r2, _0805DF3C @ =gObjectEvents
	ldrb r0, [r2]
	b _0805DF54
	.align 2, 0
_0805DF3C: .4byte gObjectEvents
_0805DF40:
	adds r0, r1, 0x1
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0xF
	bhi _0805DF5A
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0]
_0805DF54:
	lsls r0, 31
	cmp r0, 0
	bne _0805DF40
_0805DF5A:
	adds r0, r1, 0
	pop {r1}
	bx r1
	thumb_func_end sub_805DF30

	thumb_func_start GetObjectEventIdByLocalIdAndMap
GetObjectEventIdByLocalIdAndMap: @ 805DF60
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	cmp r0, 0xFE
	bls _0805DF78
	bl GetObjectEventIdByLocalId
	b _0805DF7C
_0805DF78:
	bl GetObjectEventIdByLocalIdAndMapInternal
_0805DF7C:
	lsls r0, 24
	lsrs r0, 24
	pop {r1}
	bx r1
	thumb_func_end GetObjectEventIdByLocalIdAndMap

	thumb_func_start TryGetObjectEventIdByLocalIdAndMap
TryGetObjectEventIdByLocalIdAndMap: @ 805DF84
	push {r4,lr}
	adds r4, r3, 0
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	bl GetObjectEventIdByLocalIdAndMap
	strb r0, [r4]
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x10
	beq _0805DFA6
	movs r0, 0
	b _0805DFA8
_0805DFA6:
	movs r0, 0x1
_0805DFA8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end TryGetObjectEventIdByLocalIdAndMap

	thumb_func_start GetObjectEventIdByXY
GetObjectEventIdByXY: @ 805DFB0
	push {r4-r6,lr}
	movs r3, 0
	ldr r5, _0805DFF0 @ =gObjectEvents
	lsls r0, 16
	asrs r4, r0, 16
	lsls r1, 16
	asrs r1, 16
_0805DFBE:
	lsls r0, r3, 3
	adds r0, r3
	lsls r0, 2
	adds r2, r0, r5
	ldrb r0, [r2]
	lsls r0, 31
	cmp r0, 0
	beq _0805DFDE
	movs r6, 0x10
	ldrsh r0, [r2, r6]
	cmp r0, r4
	bne _0805DFDE
	movs r6, 0x12
	ldrsh r0, [r2, r6]
	cmp r0, r1
	beq _0805DFE8
_0805DFDE:
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, 0xF
	bls _0805DFBE
_0805DFE8:
	adds r0, r3, 0
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_0805DFF0: .4byte gObjectEvents
	thumb_func_end GetObjectEventIdByXY

	thumb_func_start GetObjectEventIdByLocalIdAndMapInternal
GetObjectEventIdByLocalIdAndMapInternal: @ 805DFF4
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r5, r0, 24
	lsls r1, 24
	lsrs r4, r1, 24
	lsls r2, 24
	lsrs r2, 24
	movs r1, 0
	ldr r6, _0805E02C @ =gObjectEvents
_0805E006:
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r3, r0, r6
	ldrb r0, [r3]
	lsls r0, 31
	cmp r0, 0
	beq _0805E030
	ldrb r0, [r3, 0x8]
	cmp r0, r5
	bne _0805E030
	ldrb r0, [r3, 0x9]
	cmp r0, r4
	bne _0805E030
	ldrb r0, [r3, 0xA]
	cmp r0, r2
	bne _0805E030
	adds r0, r1, 0
	b _0805E03C
	.align 2, 0
_0805E02C: .4byte gObjectEvents
_0805E030:
	adds r0, r1, 0x1
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0xF
	bls _0805E006
	movs r0, 0x10
_0805E03C:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end GetObjectEventIdByLocalIdAndMapInternal

	thumb_func_start GetObjectEventIdByLocalId
GetObjectEventIdByLocalId: @ 805E044
	push {r4,lr}
	lsls r0, 24
	lsrs r3, r0, 24
	movs r2, 0
	ldr r4, _0805E068 @ =gObjectEvents
_0805E04E:
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	adds r1, r0, r4
	ldrb r0, [r1]
	lsls r0, 31
	cmp r0, 0
	beq _0805E06C
	ldrb r0, [r1, 0x8]
	cmp r0, r3
	bne _0805E06C
	adds r0, r2, 0
	b _0805E078
	.align 2, 0
_0805E068: .4byte gObjectEvents
_0805E06C:
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0xF
	bls _0805E04E
	movs r0, 0x10
_0805E078:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end GetObjectEventIdByLocalId

	thumb_func_start sub_805E080
sub_805E080: @ 805E080
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0xC
	adds r5, r0, 0
	lsls r1, 24
	lsrs r7, r1, 24
	lsls r2, 24
	lsrs r6, r2, 24
	movs r0, 0
	mov r10, r0
	mov r8, r0
	mov r9, r0
	movs r1, 0
	str r1, [sp, 0x4]
	str r0, [sp, 0x8]
	ldrb r0, [r5, 0x2]
	cmp r0, 0xFF
	bne _0805E0DA
	movs r1, 0x1
	mov r10, r1
	ldrb r4, [r5, 0x8]
	ldrb r7, [r5, 0xC]
	ldrb r6, [r5, 0xE]
	ldrh r0, [r5, 0x4]
	mov r8, r0
	ldrh r5, [r5, 0x6]
	mov r9, r5
	mov r1, r8
	str r1, [sp, 0x4]
	mov r0, r9
	str r0, [sp, 0x8]
	adds r0, r6, 0
	adds r1, r7, 0
	bl Overworld_GetMapHeaderByGroupAndId
	ldr r1, [r0, 0x4]
	lsls r0, r4, 1
	adds r0, r4
	lsls r0, 3
	subs r0, 0x18
	ldr r1, [r1, 0x4]
	adds r5, r1, r0
_0805E0DA:
	ldrb r0, [r5]
	adds r1, r7, 0
	adds r2, r6, 0
	mov r3, sp
	bl GetAvailableObjectEventSlot
	lsls r0, 24
	cmp r0, 0
	bne _0805E106
	ldr r1, [sp, 0x4]
	lsls r2, r1, 16
	asrs r2, 16
	ldr r0, [sp, 0x8]
	lsls r3, r0, 16
	asrs r3, 16
	adds r0, r5, 0
	mov r1, r10
	bl sub_805E238
	lsls r0, 24
	cmp r0, 0
	bne _0805E10A
_0805E106:
	movs r0, 0x10
	b _0805E220
_0805E10A:
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805E13C @ =gObjectEvents
	adds r4, r0, r1
	adds r0, r4, 0
	bl npc_clear_ids_and_state
	mov r1, r10
	cmp r1, 0
	beq _0805E140
	mov r1, r8
	lsls r0, r1, 16
	movs r1, 0xE0
	lsls r1, 11
	adds r0, r1
	lsrs r3, r0, 16
	mov r1, r9
	lsls r0, r1, 16
	movs r1, 0xE0
	lsls r1, 11
	adds r0, r1
	b _0805E14E
	.align 2, 0
_0805E13C: .4byte gObjectEvents
_0805E140:
	ldrh r0, [r5, 0x4]
	adds r0, 0x7
	lsls r0, 16
	lsrs r3, r0, 16
	ldrh r0, [r5, 0x6]
	adds r0, 0x7
	lsls r0, 16
_0805E14E:
	lsrs r2, r0, 16
	ldrb r0, [r4]
	movs r1, 0x1
	orrs r0, r1
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r4]
	ldrb r0, [r5, 0x1]
	strb r0, [r4, 0x5]
	ldrb r0, [r5, 0x9]
	strb r0, [r4, 0x6]
	ldrb r0, [r5]
	strb r0, [r4, 0x8]
	strb r7, [r4, 0x9]
	strb r6, [r4, 0xA]
	strh r3, [r4, 0xC]
	strh r2, [r4, 0xE]
	strh r3, [r4, 0x10]
	strh r2, [r4, 0x12]
	strh r3, [r4, 0x14]
	strh r2, [r4, 0x16]
	ldrb r0, [r5, 0x8]
	movs r6, 0xF
	adds r1, r6, 0
	ands r1, r0
	ldrb r2, [r4, 0xB]
	movs r0, 0x10
	negs r0, r0
	mov r8, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0xB]
	ldrb r1, [r5, 0x8]
	lsls r1, 4
	ands r0, r6
	orrs r0, r1
	strb r0, [r4, 0xB]
	ldrb r1, [r5, 0xA]
	lsls r1, 28
	movs r0, 0xF
	mov r9, r0
	lsrs r1, 28
	ldrb r2, [r4, 0x19]
	mov r0, r8
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0x19]
	ldrb r1, [r5, 0xA]
	lsrs r1, 4
	lsls r1, 4
	ands r0, r6
	orrs r0, r1
	strb r0, [r4, 0x19]
	ldrh r0, [r5, 0xC]
	strb r0, [r4, 0x7]
	ldrh r0, [r5, 0xE]
	strb r0, [r4, 0x1D]
	ldr r1, _0805E230 @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r5, 0x9]
	adds r0, r1
	ldrb r1, [r0]
	adds r0, r4, 0
	adds r0, 0x20
	strb r1, [r0]
	ldrb r1, [r0]
	adds r0, r4, 0
	bl ObjectEventSetDirection
	adds r0, r4, 0
	bl ObjectEventHandleDynamicGraphicsId
	ldr r1, _0805E234 @ =gRangedMovementTypes
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	cmp r0, 0
	beq _0805E21C
	ldrb r2, [r4, 0x19]
	adds r0, r6, 0
	ands r0, r2
	cmp r0, 0
	bne _0805E204
	lsls r0, r2, 28
	lsrs r0, 28
	adds r0, 0x1
	mov r1, r9
	ands r0, r1
	mov r1, r8
	ands r1, r2
	orrs r1, r0
	strb r1, [r4, 0x19]
_0805E204:
	ldrb r2, [r4, 0x19]
	movs r0, 0xF0
	ands r0, r2
	cmp r0, 0
	bne _0805E21C
	lsrs r1, r2, 4
	adds r1, 0x1
	lsls r1, 4
	adds r0, r6, 0
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0x19]
_0805E21C:
	mov r0, sp
	ldrb r0, [r0]
_0805E220:
	add sp, 0xC
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_0805E230: .4byte gInitialMovementTypeFacingDirections
_0805E234: .4byte gRangedMovementTypes
	thumb_func_end sub_805E080

	thumb_func_start sub_805E238
sub_805E238: @ 805E238
	push {r4-r6,lr}
	adds r6, r0, 0
	lsls r1, 24
	lsls r2, 16
	lsrs r4, r2, 16
	lsls r3, 16
	lsrs r5, r3, 16
	cmp r1, 0
	beq _0805E25C
	lsls r1, r4, 16
	asrs r1, 16
	lsls r2, r5, 16
	asrs r2, 16
	bl sub_805E27C
	lsls r0, 24
	cmp r0, 0
	beq _0805E274
_0805E25C:
	lsls r1, r4, 16
	asrs r1, 16
	lsls r2, r5, 16
	asrs r2, 16
	adds r0, r6, 0
	bl sub_805E2E8
	lsls r0, 24
	cmp r0, 0
	beq _0805E274
	movs r0, 0x1
	b _0805E276
_0805E274:
	movs r0, 0
_0805E276:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_805E238

	thumb_func_start sub_805E27C
sub_805E27C: @ 805E27C
	push {r4,r5,lr}
	lsls r1, 16
	lsrs r3, r1, 16
	lsls r2, 16
	lsrs r4, r2, 16
	adds r5, r4, 0
	ldrb r0, [r0, 0x1]
	subs r0, 0x5F
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bhi _0805E2DE
	ldr r0, _0805E2B8 @ =gSaveBlock1Ptr
	ldr r2, [r0]
	movs r0, 0
	ldrsh r1, [r2, r0]
	lsls r0, r3, 16
	asrs r3, r0, 16
	cmp r1, r3
	bge _0805E2BC
	adds r0, r1, 0
	adds r0, 0x8
	cmp r0, r3
	blt _0805E2DE
	movs r0, 0x2
	ldrsh r3, [r2, r0]
	subs r1, r3, 0x6
	lsls r0, r4, 16
	b _0805E2CE
	.align 2, 0
_0805E2B8: .4byte gSaveBlock1Ptr
_0805E2BC:
	movs r1, 0
	ldrsh r0, [r2, r1]
	subs r0, 0x8
	cmp r0, r3
	bgt _0805E2DE
	movs r0, 0x2
	ldrsh r3, [r2, r0]
	subs r1, r3, 0x6
	lsls r0, r5, 16
_0805E2CE:
	asrs r2, r0, 16
	cmp r1, r2
	bgt _0805E2DE
	adds r0, r3, 0x6
	cmp r0, r2
	blt _0805E2DE
	movs r0, 0
	b _0805E2E0
_0805E2DE:
	movs r0, 0x1
_0805E2E0:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_805E27C

	thumb_func_start sub_805E2E8
sub_805E2E8: @ 805E2E8
	push {r4,r5,lr}
	adds r4, r0, 0
	bl GetCurrentMapType
	lsls r0, 24
	lsrs r0, 24
	bl is_light_level_1_2_3_5_or_6
	lsls r0, 24
	cmp r0, 0
	beq _0805E37C
	ldr r1, _0805E374 @ =VMap
	ldr r0, [r1]
	adds r3, r0, 0
	subs r3, 0x10
	ldr r0, [r1, 0x4]
	adds r5, r0, 0
	subs r5, 0xF
	ldrb r0, [r4, 0x1]
	subs r0, 0x5F
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bhi _0805E37C
	ldr r0, _0805E378 @ =gSaveBlock1Ptr
	ldr r1, [r0]
	movs r2, 0
	ldrsh r1, [r1, r2]
	adds r2, r0, 0
	cmp r1, 0
	bne _0805E32E
	movs r1, 0x4
	ldrsh r0, [r4, r1]
	cmp r0, 0x8
	ble _0805E36A
_0805E32E:
	ldr r0, [r2]
	movs r1, 0
	ldrsh r0, [r0, r1]
	cmp r0, r3
	bne _0805E344
	movs r0, 0x4
	ldrsh r1, [r4, r0]
	adds r0, r3, 0
	subs r0, 0x8
	cmp r1, r0
	bge _0805E36A
_0805E344:
	ldr r0, [r2]
	movs r1, 0x2
	ldrsh r0, [r0, r1]
	cmp r0, 0
	bne _0805E356
	movs r1, 0x6
	ldrsh r0, [r4, r1]
	cmp r0, 0x6
	ble _0805E36A
_0805E356:
	ldr r0, [r2]
	movs r2, 0x2
	ldrsh r0, [r0, r2]
	cmp r0, r5
	bne _0805E37C
	movs r0, 0x6
	ldrsh r1, [r4, r0]
	subs r0, r5, 0x6
	cmp r1, r0
	blt _0805E37C
_0805E36A:
	adds r0, r4, 0
	bl sub_805E384
	movs r0, 0
	b _0805E37E
	.align 2, 0
_0805E374: .4byte VMap
_0805E378: .4byte gSaveBlock1Ptr
_0805E37C:
	movs r0, 0x1
_0805E37E:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_805E2E8

	thumb_func_start sub_805E384
sub_805E384: @ 805E384
	push {lr}
	adds r1, r0, 0
	ldrh r0, [r1, 0x14]
	subs r0, 0x11
	lsls r0, 16
	lsrs r0, 16
	cmp r0, 0xE
	bhi _0805E39A
	ldrh r0, [r1, 0x14]
	bl FlagSet
_0805E39A:
	pop {r0}
	bx r0
	thumb_func_end sub_805E384

	thumb_func_start sub_805E3A0
sub_805E3A0: @ 805E3A0
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	ldr r0, _0805E3B8 @ =gMapHeader
	ldr r0, [r0, 0x4]
	cmp r0, 0
	bne _0805E3CE
	b _0805E404
	.align 2, 0
_0805E3B8: .4byte gMapHeader
_0805E3BC:
	ldr r0, [r7]
	ldrb r1, [r0, 0x5]
	ldrb r2, [r0, 0x4]
	adds r0, r4, 0
	bl sub_805E080
	lsls r0, 24
	lsrs r0, 24
	b _0805E406
_0805E3CE:
	ldrb r6, [r0]
	movs r5, 0
	cmp r5, r6
	bcs _0805E404
	ldr r7, _0805E410 @ =gSaveBlock1Ptr
_0805E3D8:
	lsls r0, r5, 1
	adds r0, r5
	lsls r0, 3
	movs r1, 0x8E
	lsls r1, 4
	adds r0, r1
	ldr r1, [r7]
	adds r4, r1, r0
	ldrb r0, [r4]
	cmp r0, r8
	bne _0805E3FA
	ldrh r0, [r4, 0x14]
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _0805E3BC
_0805E3FA:
	adds r0, r5, 0x1
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, r6
	bcc _0805E3D8
_0805E404:
	movs r0, 0x10
_0805E406:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_0805E410: .4byte gSaveBlock1Ptr
	thumb_func_end sub_805E3A0

	thumb_func_start GetAvailableObjectEventSlot
GetAvailableObjectEventSlot: @ 805E414
	push {r4-r7,lr}
	mov r12, r3
	lsls r0, 16
	lsrs r6, r0, 16
	lsls r1, 24
	lsrs r5, r1, 24
	lsls r2, 24
	lsrs r4, r2, 24
	movs r2, 0
	ldr r1, _0805E470 @ =gObjectEvents
	ldrb r0, [r1]
	lsls r0, 31
	adds r7, r1, 0
	cmp r0, 0
	beq _0805E468
	adds r3, r1, 0
_0805E434:
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	adds r1, r0, r3
	ldrb r0, [r1, 0x8]
	cmp r0, r6
	bne _0805E44E
	ldrb r0, [r1, 0x9]
	cmp r0, r5
	bne _0805E44E
	ldrb r0, [r1, 0xA]
	cmp r0, r4
	beq _0805E46C
_0805E44E:
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0xF
	bhi _0805E46C
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	adds r0, r7
	ldrb r0, [r0]
	lsls r0, 31
	cmp r0, 0
	bne _0805E434
_0805E468:
	cmp r2, 0xF
	bls _0805E474
_0805E46C:
	movs r0, 0x1
	b _0805E4A8
	.align 2, 0
_0805E470: .4byte gObjectEvents
_0805E474:
	mov r0, r12
	strb r2, [r0]
	ldr r1, _0805E4B0 @ =gObjectEvents
_0805E47A:
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	adds r3, r0, r1
	ldrb r0, [r3]
	lsls r0, 31
	cmp r0, 0
	beq _0805E49C
	ldrb r0, [r3, 0x8]
	cmp r0, r6
	bne _0805E49C
	ldrb r0, [r3, 0x9]
	cmp r0, r5
	bne _0805E49C
	ldrb r0, [r3, 0xA]
	cmp r0, r4
	beq _0805E46C
_0805E49C:
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0xF
	bls _0805E47A
	movs r0, 0
_0805E4A8:
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_0805E4B0: .4byte gObjectEvents
	thumb_func_end GetAvailableObjectEventSlot

	thumb_func_start RemoveObjectEvent
RemoveObjectEvent: @ 805E4B4
	push {lr}
	ldrb r2, [r0]
	movs r1, 0x2
	negs r1, r1
	ands r1, r2
	strb r1, [r0]
	bl RemoveObjectEventInternal
	pop {r0}
	bx r0
	thumb_func_end RemoveObjectEvent

	thumb_func_start RemoveObjectEventByLocalIdAndMap
RemoveObjectEventByLocalIdAndMap: @ 805E4C8
	push {lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805E506
	mov r0, sp
	ldrb r0, [r0]
	bl GetObjectEventFlagIdByObjectEventId
	lsls r0, 16
	lsrs r0, 16
	bl FlagSet
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805E50C @ =gObjectEvents
	adds r0, r1
	bl RemoveObjectEvent
_0805E506:
	add sp, 0x4
	pop {r0}
	bx r0
	.align 2, 0
_0805E50C: .4byte gObjectEvents
	thumb_func_end RemoveObjectEventByLocalIdAndMap

	thumb_func_start RemoveObjectEventInternal
RemoveObjectEventInternal: @ 805E510
	push {r4,lr}
	sub sp, 0x8
	adds r4, r0, 0
	ldrb r0, [r4, 0x5]
	bl GetObjectEventGraphicsInfo
	ldrh r2, [r0, 0x6]
	ldr r1, _0805E554 @ =0xffff0000
	ldr r0, [sp, 0x4]
	ands r0, r1
	orrs r0, r2
	str r0, [sp, 0x4]
	ldr r2, _0805E558 @ =gSprites
	ldrb r1, [r4, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r1, r2, 0
	adds r1, 0xC
	adds r0, r1
	mov r1, sp
	str r1, [r0]
	ldrb r1, [r4, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	bl DestroySprite
	add sp, 0x8
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805E554: .4byte 0xffff0000
_0805E558: .4byte gSprites
	thumb_func_end RemoveObjectEventInternal

	thumb_func_start unref_sub_808D958
unref_sub_808D958: @ 805E55C
	push {r4,lr}
	movs r4, 0
_0805E560:
	ldr r0, _0805E588 @ =gPlayerAvatar
	ldrb r0, [r0, 0x5]
	cmp r4, r0
	beq _0805E576
	lsls r0, r4, 3
	adds r0, r4
	lsls r0, 2
	ldr r1, _0805E58C @ =gObjectEvents
	adds r0, r1
	bl RemoveObjectEvent
_0805E576:
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0xF
	bls _0805E560
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805E588: .4byte gPlayerAvatar
_0805E58C: .4byte gObjectEvents
	thumb_func_end unref_sub_808D958

	thumb_func_start sub_805E590
sub_805E590: @ 805E590
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	adds r7, r1, 0
	adds r1, r2, 0
	adds r2, r3, 0
	ldr r3, [sp, 0x20]
	ldr r4, [sp, 0x24]
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 16
	lsrs r3, 16
	mov r9, r3
	lsls r4, 16
	lsrs r4, 16
	mov r10, r4
	bl sub_805E080
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	cmp r0, 0x10
	bne _0805E5CA
	movs r0, 0x10
	b _0805E718
_0805E5CA:
	mov r0, r8
	lsls r4, r0, 3
	adds r0, r4, r0
	lsls r0, 2
	ldr r1, _0805E5F4 @ =gObjectEvents
	adds r5, r0, r1
	ldrb r0, [r5, 0x5]
	bl GetObjectEventGraphicsInfo
	adds r6, r0, 0
	ldrb r1, [r6, 0xC]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0
	bne _0805E5F8
	ldrh r0, [r6, 0x2]
	lsls r1, 28
	lsrs r1, 28
	bl npc_load_two_palettes__no_record
	b _0805E606
	.align 2, 0
_0805E5F4: .4byte gObjectEvents
_0805E5F8:
	cmp r0, 0xA
	bne _0805E606
	ldrh r0, [r6, 0x2]
	lsls r1, 28
	lsrs r1, 28
	bl npc_load_two_palettes__and_record
_0805E606:
	ldrb r0, [r5, 0x6]
	cmp r0, 0x4C
	bne _0805E614
	ldrb r0, [r5, 0x1]
	movs r1, 0x20
	orrs r0, r1
	strb r0, [r5, 0x1]
_0805E614:
	ldr r1, _0805E648 @ =0x0000ffff
	adds r0, r1, 0
	strh r0, [r7, 0x2]
	adds r0, r7, 0
	movs r1, 0
	movs r2, 0
	movs r3, 0
	bl CreateSprite
	lsls r0, 24
	lsrs r7, r0, 24
	cmp r7, 0x40
	bne _0805E650
	ldr r0, _0805E64C @ =gObjectEvents
	mov r2, r8
	adds r1, r4, r2
	lsls r1, 2
	adds r1, r0
	ldrb r2, [r1]
	movs r0, 0x2
	negs r0, r0
	ands r0, r2
	strb r0, [r1]
	movs r0, 0x10
	b _0805E718
	.align 2, 0
_0805E648: .4byte 0x0000ffff
_0805E64C: .4byte gObjectEvents
_0805E650:
	lsls r0, r7, 4
	adds r0, r7
	lsls r0, 2
	ldr r1, _0805E728 @ =gSprites
	adds r4, r0, r1
	mov r1, r9
	lsls r0, r1, 16
	asrs r0, 16
	ldrh r2, [r5, 0x10]
	adds r0, r2
	lsls r0, 16
	asrs r0, 16
	mov r2, r10
	lsls r1, r2, 16
	asrs r1, 16
	ldrh r2, [r5, 0x12]
	adds r1, r2
	lsls r1, 16
	asrs r1, 16
	adds r2, r4, 0
	adds r2, 0x20
	adds r3, r4, 0
	adds r3, 0x22
	bl sub_8063AD4
	ldrh r0, [r6, 0x8]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r1, r4, 0
	adds r1, 0x28
	strb r0, [r1]
	ldrh r0, [r6, 0xA]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r2, r4, 0
	adds r2, 0x29
	strb r0, [r2]
	ldrh r0, [r4, 0x20]
	adds r0, 0x8
	strh r0, [r4, 0x20]
	ldrh r1, [r4, 0x22]
	adds r1, 0x10
	movs r0, 0
	ldrsb r0, [r2, r0]
	adds r0, r1
	strh r0, [r4, 0x22]
	ldrb r1, [r6, 0xC]
	lsls r1, 28
	lsrs r1, 24
	ldrb r2, [r4, 0x5]
	movs r0, 0xF
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0x5]
	adds r2, r4, 0
	adds r2, 0x3E
	ldrb r0, [r2]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r2]
	mov r0, r8
	strh r0, [r4, 0x2E]
	strb r7, [r5, 0x4]
	ldrb r1, [r6, 0xC]
	lsls r1, 25
	lsrs r1, 31
	lsls r1, 4
	ldrb r2, [r5, 0x1]
	movs r0, 0x11
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r5, 0x1]
	lsls r0, 27
	cmp r0, 0
	blt _0805E702
	ldrb r0, [r5, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
_0805E702:
	ldrb r0, [r5, 0xB]
	lsrs r0, 4
	adds r1, r4, 0
	movs r2, 0x1
	bl SetObjectSubpriorityByZCoord
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_80679F8
	mov r0, r8
_0805E718:
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_0805E728: .4byte gSprites
	thumb_func_end sub_805E590

	thumb_func_start SpawnObjectEvent
SpawnObjectEvent: @ 805E72C
	push {r4-r7,lr}
	mov r7, r9
	mov r6, r8
	push {r6,r7}
	sub sp, 0x2C
	mov r9, r0
	adds r6, r1, 0
	mov r8, r2
	adds r4, r3, 0
	ldr r5, [sp, 0x48]
	lsls r6, 24
	lsrs r6, 24
	mov r0, r8
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	lsls r4, 16
	lsrs r4, 16
	lsls r5, 16
	lsrs r5, 16
	movs r0, 0
	str r0, [sp, 0x20]
	mov r1, r9
	ldrb r0, [r1, 0x1]
	bl GetObjectEventGraphicsInfo
	adds r7, r0, 0
	add r2, sp, 0x20
	mov r0, r9
	add r1, sp, 0x8
	bl MakeObjectTemplateFromObjectEventTemplate
	ldrh r3, [r7, 0x6]
	ldr r2, _0805E7A4 @ =0xffff0000
	add r1, sp, 0x24
	ldr r0, [r1, 0x4]
	ands r0, r2
	orrs r0, r3
	str r0, [r1, 0x4]
	str r1, [sp, 0x14]
	lsls r4, 16
	asrs r4, 16
	str r4, [sp]
	lsls r5, 16
	asrs r5, 16
	str r5, [sp, 0x4]
	mov r0, r9
	add r1, sp, 0x8
	adds r2, r6, 0
	mov r3, r8
	bl sub_805E590
	lsls r0, 24
	lsrs r2, r0, 24
	adds r5, r2, 0
	cmp r2, 0x10
	bne _0805E7A8
	movs r0, 0x10
	b _0805E7DE
	.align 2, 0
_0805E7A4: .4byte 0xffff0000
_0805E7A8:
	ldr r4, _0805E7EC @ =gSprites
	ldr r1, _0805E7F0 @ =gObjectEvents
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	adds r3, r0, r1
	ldrb r1, [r3, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r1, r4, 0
	adds r1, 0xC
	adds r0, r1
	ldr r1, [r7, 0x1C]
	str r1, [r0]
	ldr r2, [sp, 0x20]
	cmp r2, 0
	beq _0805E7DC
	ldrb r1, [r3, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	adds r1, r2, 0
	bl SetSubspriteTables
_0805E7DC:
	adds r0, r5, 0
_0805E7DE:
	add sp, 0x2C
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_0805E7EC: .4byte gSprites
_0805E7F0: .4byte gObjectEvents
	thumb_func_end SpawnObjectEvent

	thumb_func_start SpawnSpecialObjectEvent
SpawnSpecialObjectEvent: @ 805E7F4
	push {r4-r6,lr}
	sub sp, 0x8
	adds r5, r0, 0
	mov r4, sp
	adds r4, 0x6
	add r0, sp, 0x4
	adds r1, r4, 0
	bl GetObjectEventMovingCameraOffset
	ldr r0, _0805E82C @ =gSaveBlock1Ptr
	ldr r0, [r0]
	ldrb r1, [r0, 0x5]
	ldrb r2, [r0, 0x4]
	add r0, sp, 0x4
	movs r6, 0
	ldrsh r3, [r0, r6]
	movs r6, 0
	ldrsh r0, [r4, r6]
	str r0, [sp]
	adds r0, r5, 0
	bl SpawnObjectEvent
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x8
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_0805E82C: .4byte gSaveBlock1Ptr
	thumb_func_end SpawnSpecialObjectEvent

	thumb_func_start SpawnSpecialObjectEventParameterized
SpawnSpecialObjectEventParameterized: @ 805E830
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	sub sp, 0x18
	ldr r4, [sp, 0x2C]
	ldr r5, [sp, 0x30]
	mov r8, r5
	lsls r0, 24
	lsrs r0, 24
	lsls r3, 16
	ldr r5, _0805E894 @ =0xfff90000
	adds r3, r5
	lsrs r3, 16
	lsls r4, 16
	adds r4, r5
	lsrs r4, 16
	mov r5, sp
	movs r6, 0
	strb r2, [r5]
	mov r2, sp
	strb r0, [r2, 0x1]
	mov r0, sp
	strb r6, [r0, 0x2]
	movs r5, 0
	strh r3, [r0, 0x4]
	strh r4, [r0, 0x6]
	mov r2, r8
	strb r2, [r0, 0x8]
	strb r1, [r0, 0x9]
	mov r2, sp
	ldrb r1, [r2, 0xA]
	movs r0, 0x10
	negs r0, r0
	ands r0, r1
	strb r0, [r2, 0xA]
	mov r0, sp
	strb r5, [r0, 0xA]
	strh r6, [r0, 0xC]
	strh r6, [r0, 0xE]
	bl SpawnSpecialObjectEvent
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x18
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_0805E894: .4byte 0xfff90000
	thumb_func_end SpawnSpecialObjectEventParameterized

	thumb_func_start show_sprite
show_sprite: @ 805E898
	push {r4-r7,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r7, r1, 24
	lsls r2, 24
	lsrs r6, r2, 24
	adds r1, r7, 0
	adds r2, r6, 0
	bl GetObjectEventTemplateByLocalIdAndMap
	adds r5, r0, 0
	cmp r5, 0
	beq _0805E8DE
	mov r4, sp
	adds r4, 0x6
	add r0, sp, 0x4
	adds r1, r4, 0
	bl GetObjectEventMovingCameraOffset
	add r0, sp, 0x4
	movs r1, 0
	ldrsh r3, [r0, r1]
	movs r1, 0
	ldrsh r0, [r4, r1]
	str r0, [sp]
	adds r0, r5, 0
	adds r1, r7, 0
	adds r2, r6, 0
	bl SpawnObjectEvent
	lsls r0, 24
	lsrs r0, 24
	b _0805E8E0
_0805E8DE:
	movs r0, 0x10
_0805E8E0:
	add sp, 0x8
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end show_sprite

	thumb_func_start sub_805E8E8
sub_805E8E8: @ 805E8E8
	push {r4-r7,lr}
	adds r6, r1, 0
	adds r4, r2, 0
	adds r7, r3, 0
	lsls r0, 24
	lsrs r0, 24
	bl GetObjectEventGraphicsInfo
	adds r5, r0, 0
	ldrh r0, [r5]
	strh r0, [r4]
	ldrh r0, [r5, 0x2]
	strh r0, [r4, 0x2]
	ldr r0, [r5, 0x10]
	str r0, [r4, 0x4]
	ldr r0, [r5, 0x18]
	str r0, [r4, 0x8]
	ldr r0, [r5, 0x1C]
	str r0, [r4, 0xC]
	ldr r0, [r5, 0x20]
	str r0, [r4, 0x10]
	bl ScriptContext1_IsScriptSetUp
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _0805E934
	bl sub_8112CAC
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0805E934
	ldr r0, _0805E930 @ =sub_811246C
	str r0, [r4, 0x14]
	b _0805E936
	.align 2, 0
_0805E930: .4byte sub_811246C
_0805E934:
	str r6, [r4, 0x14]
_0805E936:
	ldr r0, [r5, 0x14]
	str r0, [r7]
	pop {r4-r7}
	pop {r0}
	bx r0
	thumb_func_end sub_805E8E8

	thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex
MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex: @ 805E940
	push {r4,lr}
	lsls r0, 16
	lsrs r0, 16
	lsls r1, 16
	ldr r4, _0805E95C @ =gMovementTypeCallbacks
	lsrs r1, 14
	adds r1, r4
	ldr r1, [r1]
	bl sub_805E8E8
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805E95C: .4byte gMovementTypeCallbacks
	thumb_func_end MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex

	thumb_func_start MakeObjectTemplateFromObjectEventTemplate
MakeObjectTemplateFromObjectEventTemplate: @ 805E960
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r3, r2, 0
	ldrb r0, [r4, 0x1]
	ldrb r1, [r4, 0x9]
	adds r2, r5, 0
	bl MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end MakeObjectTemplateFromObjectEventTemplate

	thumb_func_start AddPseudoObjectEvent
AddPseudoObjectEvent: @ 805E978
	push {r4-r6,lr}
	sub sp, 0x1C
	ldr r4, [sp, 0x2C]
	lsls r0, 16
	lsrs r0, 16
	lsls r2, 16
	lsrs r6, r2, 16
	lsls r3, 16
	lsrs r5, r3, 16
	lsls r4, 24
	lsrs r4, 24
	add r3, sp, 0x18
	mov r2, sp
	bl sub_805E8E8
	mov r0, sp
	ldrh r1, [r0, 0x2]
	ldr r0, _0805E9F0 @ =0x0000ffff
	cmp r1, r0
	beq _0805E9A8
	mov r0, sp
	ldrh r0, [r0, 0x2]
	bl sub_805F4B0
_0805E9A8:
	lsls r1, r6, 16
	asrs r1, 16
	lsls r2, r5, 16
	asrs r2, 16
	mov r0, sp
	adds r3, r4, 0
	bl CreateSprite
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0x40
	beq _0805E9E4
	ldr r1, [sp, 0x18]
	cmp r1, 0
	beq _0805E9E4
	lsls r4, r5, 4
	adds r4, r5
	lsls r4, 2
	ldr r0, _0805E9F4 @ =gSprites
	adds r4, r0
	adds r0, r4, 0
	bl SetSubspriteTables
	adds r4, 0x42
	ldrb r1, [r4]
	movs r0, 0x3F
	ands r0, r1
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r4]
_0805E9E4:
	adds r0, r5, 0
	add sp, 0x1C
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_0805E9F0: .4byte 0x0000ffff
_0805E9F4: .4byte gSprites
	thumb_func_end AddPseudoObjectEvent

	thumb_func_start sprite_new
sprite_new: @ 805E9F8
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x24
	adds r5, r0, 0
	ldr r0, [sp, 0x44]
	ldr r4, [sp, 0x48]
	lsls r5, 24
	lsrs r5, 24
	lsls r1, 24
	lsrs r1, 24
	mov r10, r1
	add r1, sp, 0x18
	mov r8, r1
	strh r2, [r1]
	mov r6, sp
	adds r6, 0x1A
	strh r3, [r6]
	lsls r0, 24
	lsrs r7, r0, 24
	mov r9, r7
	lsls r4, 24
	lsrs r4, 24
	str r4, [sp, 0x20]
	adds r0, r5, 0
	bl GetObjectEventGraphicsInfo
	adds r4, r0, 0
	ldr r1, _0805EB38 @ =sub_8068FA8
	add r3, sp, 0x1C
	adds r0, r5, 0
	mov r2, sp
	bl sub_805E8E8
	mov r1, sp
	ldr r2, _0805EB3C @ =0x0000ffff
	adds r0, r2, 0
	strh r0, [r1, 0x2]
	mov r1, r8
	movs r2, 0
	ldrsh r0, [r1, r2]
	adds r0, 0x7
	strh r0, [r1]
	movs r1, 0
	ldrsh r0, [r6, r1]
	adds r0, 0x7
	strh r0, [r6]
	mov r0, r8
	adds r1, r6, 0
	movs r2, 0x8
	movs r3, 0x10
	bl sub_8063BC4
	mov r2, r8
	movs r0, 0
	ldrsh r1, [r2, r0]
	movs r0, 0
	ldrsh r2, [r6, r0]
	mov r0, sp
	movs r3, 0
	bl CreateSpriteAtEnd
	lsls r0, 24
	lsrs r6, r0, 24
	cmp r6, 0x40
	beq _0805EB24
	lsls r0, r6, 4
	adds r0, r6
	lsls r0, 2
	ldr r1, _0805EB40 @ =gSprites
	adds r5, r0, r1
	ldrh r0, [r4, 0x8]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r1, r5, 0
	adds r1, 0x28
	strb r0, [r1]
	ldrh r0, [r4, 0xA]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r1, 0x1
	strb r0, [r1]
	movs r0, 0
	ldrsb r0, [r1, r0]
	ldrh r1, [r5, 0x22]
	adds r0, r1
	strh r0, [r5, 0x22]
	ldrb r1, [r4, 0xC]
	lsls r1, 28
	lsrs r1, 24
	ldrb r3, [r5, 0x5]
	movs r2, 0xF
	adds r0, r2, 0
	ands r0, r3
	orrs r0, r1
	strb r0, [r5, 0x5]
	adds r3, r5, 0
	adds r3, 0x3E
	ldrb r0, [r3]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r3]
	mov r0, r10
	strh r0, [r5, 0x2E]
	strh r7, [r5, 0x30]
	ldrb r1, [r4, 0xC]
	ands r2, r1
	cmp r2, 0xA
	bne _0805EAE4
	ldrh r0, [r4, 0x2]
	lsls r1, 28
	lsrs r1, 28
	bl npc_load_two_palettes__and_record
_0805EAE4:
	ldr r1, [sp, 0x1C]
	cmp r1, 0
	beq _0805EB00
	adds r0, r5, 0
	bl SetSubspriteTables
	adds r2, r5, 0
	adds r2, 0x42
	ldrb r0, [r2]
	movs r1, 0x3F
	ands r1, r0
	movs r0, 0x80
	orrs r1, r0
	strb r1, [r2]
_0805EB00:
	adds r0, r5, 0
	mov r1, r9
	bl InitObjectPriorityByZCoord
	mov r0, r9
	adds r1, r5, 0
	movs r2, 0x1
	bl SetObjectSubpriorityByZCoord
	ldr r0, [sp, 0x20]
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r5, 0
	bl StartSpriteAnim
_0805EB24:
	adds r0, r6, 0
	add sp, 0x24
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_0805EB38: .4byte sub_8068FA8
_0805EB3C: .4byte 0x0000ffff
_0805EB40: .4byte gSprites
	thumb_func_end sprite_new

	thumb_func_start sub_805EB44
sub_805EB44: @ 805EB44
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x1C
	adds r6, r0, 0
	adds r4, r2, 0
	adds r5, r3, 0
	lsls r6, 24
	lsrs r6, 24
	lsls r1, 24
	lsrs r1, 24
	mov r8, r1
	lsls r4, 16
	lsrs r4, 16
	lsls r5, 16
	lsrs r5, 16
	adds r0, r6, 0
	bl GetObjectEventGraphicsInfo
	adds r7, r0, 0
	ldr r1, _0805EC24 @ =SpriteCallbackDummy
	add r3, sp, 0x18
	adds r0, r6, 0
	mov r2, sp
	bl sub_805E8E8
	mov r1, sp
	ldr r2, _0805EC28 @ =0x0000ffff
	adds r0, r2, 0
	strh r0, [r1, 0x2]
	lsls r4, 16
	asrs r4, 16
	lsls r5, 16
	asrs r5, 16
	mov r0, sp
	adds r1, r4, 0
	adds r2, r5, 0
	movs r3, 0
	bl CreateSpriteAtEnd
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0x40
	beq _0805EC14
	lsls r0, r5, 4
	adds r0, r5
	lsls r0, 2
	ldr r1, _0805EC2C @ =gSprites
	adds r4, r0, r1
	ldrh r0, [r7, 0xA]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r1, r4, 0
	adds r1, 0x29
	strb r0, [r1]
	movs r0, 0
	ldrsb r0, [r1, r0]
	ldrh r1, [r4, 0x22]
	adds r0, r1
	strh r0, [r4, 0x22]
	ldrb r1, [r7, 0xC]
	lsls r1, 28
	lsrs r1, 24
	ldrb r3, [r4, 0x5]
	movs r2, 0xF
	adds r0, r2, 0
	ands r0, r3
	orrs r0, r1
	strb r0, [r4, 0x5]
	mov r0, r8
	strh r0, [r4, 0x2E]
	ldrb r1, [r7, 0xC]
	ands r2, r1
	cmp r2, 0xA
	bne _0805EBE6
	ldrh r0, [r7, 0x2]
	lsls r1, 28
	lsrs r1, 28
	bl npc_load_two_palettes__and_record
_0805EBE6:
	ldr r1, [sp, 0x18]
	cmp r1, 0
	beq _0805EC02
	adds r0, r4, 0
	bl SetSubspriteTables
	adds r2, r4, 0
	adds r2, 0x42
	ldrb r0, [r2]
	movs r1, 0x3F
	ands r1, r0
	movs r0, 0x80
	orrs r1, r0
	strb r1, [r2]
_0805EC02:
	movs r0, 0x1
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
_0805EC14:
	adds r0, r5, 0
	add sp, 0x1C
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_0805EC24: .4byte SpriteCallbackDummy
_0805EC28: .4byte 0x0000ffff
_0805EC2C: .4byte gSprites
	thumb_func_end sub_805EB44

	thumb_func_start sub_805EC30
sub_805EC30: @ 805EC30
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x14
	lsls r0, 16
	lsrs r0, 16
	str r0, [sp, 0x4]
	lsls r1, 16
	lsrs r1, 16
	str r1, [sp, 0x8]
	ldr r0, _0805ED08 @ =gMapHeader
	ldr r3, [r0, 0x4]
	cmp r3, 0
	beq _0805ECF8
	ldr r7, _0805ED0C @ =gSaveBlock1Ptr
	ldr r2, [r7]
	ldrh r1, [r2]
	subs r0, r1, 0x2
	lsls r0, 16
	lsrs r4, r0, 16
	adds r1, 0x11
	lsls r1, 16
	lsrs r1, 16
	str r1, [sp, 0xC]
	ldrh r1, [r2, 0x2]
	adds r0, r1, 0
	adds r0, 0x10
	lsls r0, 16
	lsrs r0, 16
	mov r10, r0
	ldrb r3, [r3]
	str r3, [sp, 0x10]
	movs r5, 0
	cmp r5, r3
	bcs _0805ECF8
	lsls r0, r1, 16
	asrs r0, 16
	mov r9, r0
	lsls r0, r4, 16
	asrs r0, 16
	mov r8, r0
_0805EC86:
	lsls r0, r5, 1
	adds r0, r5
	lsls r0, 3
	movs r1, 0x8E
	lsls r1, 4
	adds r0, r1
	ldr r1, [r7]
	adds r4, r1, r0
	ldrh r0, [r4, 0x4]
	adds r0, 0x7
	lsls r0, 16
	lsrs r2, r0, 16
	ldrh r0, [r4, 0x6]
	adds r0, 0x7
	lsls r0, 16
	asrs r1, r0, 16
	cmp r9, r1
	bgt _0805ECEC
	mov r3, r10
	lsls r0, r3, 16
	asrs r0, 16
	cmp r0, r1
	blt _0805ECEC
	lsls r0, r2, 16
	asrs r1, r0, 16
	cmp r8, r1
	bgt _0805ECEC
	ldr r6, [sp, 0xC]
	lsls r0, r6, 16
	asrs r0, 16
	cmp r0, r1
	blt _0805ECEC
	ldrh r0, [r4, 0x14]
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	bne _0805ECEC
	ldr r0, [r7]
	ldrb r1, [r0, 0x5]
	ldrb r2, [r0, 0x4]
	ldr r0, [sp, 0x4]
	lsls r3, r0, 16
	ldr r6, [sp, 0x8]
	lsls r0, r6, 16
	asrs r0, 16
	str r0, [sp]
	adds r0, r4, 0
	asrs r3, 16
	bl SpawnObjectEvent
_0805ECEC:
	adds r0, r5, 0x1
	lsls r0, 24
	lsrs r5, r0, 24
	ldr r0, [sp, 0x10]
	cmp r5, r0
	bcc _0805EC86
_0805ECF8:
	add sp, 0x14
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0805ED08: .4byte gMapHeader
_0805ED0C: .4byte gSaveBlock1Ptr
	thumb_func_end sub_805EC30

	thumb_func_start RemoveObjectEventsOutsideView
RemoveObjectEventsOutsideView: @ 805ED10
	push {r4-r6,lr}
	movs r3, 0
	ldr r6, _0805ED64 @ =gUnknown_2031DEC
_0805ED16:
	movs r2, 0
	movs r4, 0
	adds r5, r3, 0x1
_0805ED1C:
	lsls r0, r2, 2
	adds r1, r0, r6
	ldrb r0, [r1]
	cmp r0, 0
	beq _0805ED2E
	ldrb r1, [r1, 0x2]
	cmp r3, r1
	bne _0805ED2E
	movs r4, 0x1
_0805ED2E:
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0x3
	bls _0805ED1C
	cmp r4, 0
	bne _0805ED56
	lsls r0, r3, 3
	adds r0, r3
	lsls r0, 2
	ldr r1, _0805ED68 @ =gObjectEvents
	adds r2, r0, r1
	ldr r0, [r2]
	ldr r1, _0805ED6C @ =0x00010001
	ands r0, r1
	cmp r0, 0x1
	bne _0805ED56
	adds r0, r2, 0
	bl RemoveObjectEventIfOutsideView
_0805ED56:
	lsls r0, r5, 24
	lsrs r3, r0, 24
	cmp r3, 0xF
	bls _0805ED16
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_0805ED64: .4byte gUnknown_2031DEC
_0805ED68: .4byte gObjectEvents
_0805ED6C: .4byte 0x00010001
	thumb_func_end RemoveObjectEventsOutsideView

	thumb_func_start RemoveObjectEventIfOutsideView
RemoveObjectEventIfOutsideView: @ 805ED70
	push {r4-r7,lr}
	adds r3, r0, 0
	ldr r0, _0805EDEC @ =gSaveBlock1Ptr
	ldr r2, [r0]
	ldrh r0, [r2]
	subs r1, r0, 0x2
	lsls r1, 16
	adds r0, 0x11
	lsls r0, 16
	lsrs r5, r0, 16
	ldrh r4, [r2, 0x2]
	adds r0, r4, 0
	adds r0, 0x10
	lsls r0, 16
	lsrs r6, r0, 16
	movs r0, 0x10
	ldrsh r2, [r3, r0]
	lsrs r7, r1, 16
	asrs r1, 16
	cmp r2, r1
	blt _0805EDB6
	lsls r0, r5, 16
	asrs r0, 16
	cmp r2, r0
	bgt _0805EDB6
	movs r0, 0x12
	ldrsh r1, [r3, r0]
	lsls r0, r4, 16
	asrs r0, 16
	cmp r1, r0
	blt _0805EDB6
	lsls r0, r6, 16
	asrs r0, 16
	cmp r1, r0
	ble _0805EDE4
_0805EDB6:
	movs r0, 0xC
	ldrsh r1, [r3, r0]
	lsls r0, r7, 16
	asrs r0, 16
	cmp r1, r0
	blt _0805EDDE
	lsls r0, r5, 16
	asrs r0, 16
	cmp r1, r0
	bgt _0805EDDE
	movs r0, 0xE
	ldrsh r1, [r3, r0]
	lsls r0, r4, 16
	asrs r0, 16
	cmp r1, r0
	blt _0805EDDE
	lsls r0, r6, 16
	asrs r0, 16
	cmp r1, r0
	ble _0805EDE4
_0805EDDE:
	adds r0, r3, 0
	bl RemoveObjectEvent
_0805EDE4:
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0805EDEC: .4byte gSaveBlock1Ptr
	thumb_func_end RemoveObjectEventIfOutsideView

	thumb_func_start sub_805EDF0
sub_805EDF0: @ 805EDF0
	push {r4-r7,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r4, 16
	lsrs r4, 16
	lsls r5, 16
	lsrs r5, 16
	bl ClearPlayerAvatarInfo
	movs r6, 0
	ldr r7, _0805EE38 @ =gObjectEvents
	lsls r4, 16
	lsls r5, 16
_0805EE0A:
	lsls r0, r6, 3
	adds r0, r6
	lsls r0, 2
	adds r0, r7
	ldrb r0, [r0]
	lsls r0, 31
	cmp r0, 0
	beq _0805EE24
	adds r0, r6, 0
	asrs r1, r4, 16
	asrs r2, r5, 16
	bl sub_805EE3C
_0805EE24:
	adds r0, r6, 0x1
	lsls r0, 24
	lsrs r6, r0, 24
	cmp r6, 0xF
	bls _0805EE0A
	bl sub_805DE8C
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0805EE38: .4byte gObjectEvents
	thumb_func_end sub_805EDF0

	thumb_func_start sub_805EE3C
sub_805EE3C: @ 805EE3C
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x24
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	lsls r1, 16
	lsrs r1, 16
	mov r9, r1
	lsls r2, 16
	lsrs r2, 16
	mov r10, r2
	movs r7, 0
	ldr r2, _0805EFE0 @ =gUnknown_2031DEC
_0805EE5E:
	lsls r0, r7, 2
	adds r1, r0, r2
	ldrb r0, [r1]
	cmp r0, 0
	beq _0805EE70
	ldrb r1, [r1, 0x2]
	cmp r8, r1
	bne _0805EE70
	b _0805EFCE
_0805EE70:
	adds r0, r7, 0x1
	lsls r0, 24
	lsrs r7, r0, 24
	cmp r7, 0x3
	bls _0805EE5E
	mov r1, r8
	lsls r0, r1, 3
	add r0, r8
	lsls r0, 2
	ldr r1, _0805EFE4 @ =gObjectEvents
	adds r6, r0, r1
	movs r0, 0
	str r0, [sp, 0x20]
	ldrb r0, [r6, 0x5]
	bl GetObjectEventGraphicsInfo
	adds r5, r0, 0
	ldrh r2, [r5, 0x6]
	ldr r1, _0805EFE8 @ =0xffff0000
	add r4, sp, 0x18
	ldr r0, [r4, 0x4]
	ands r0, r1
	orrs r0, r2
	str r0, [r4, 0x4]
	ldrb r0, [r6, 0x5]
	ldrb r1, [r6, 0x6]
	add r3, sp, 0x20
	mov r2, sp
	bl MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex
	str r4, [sp, 0xC]
	mov r0, sp
	ldr r2, _0805EFEC @ =0x0000ffff
	adds r4, r2, 0
	strh r4, [r0, 0x2]
	ldrb r1, [r5, 0xC]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0
	bne _0805EECA
	ldrh r0, [r5, 0x2]
	lsls r1, 28
	lsrs r1, 28
	bl npc_load_two_palettes__no_record
_0805EECA:
	ldrb r0, [r5, 0xC]
	lsls r1, r0, 28
	lsrs r0, r1, 28
	cmp r0, 0x9
	bls _0805EEDC
	ldrh r0, [r5, 0x2]
	lsrs r1, 28
	bl npc_load_two_palettes__and_record
_0805EEDC:
	mov r0, sp
	strh r4, [r0, 0x2]
	movs r1, 0
	movs r2, 0
	movs r3, 0
	bl CreateSprite
	lsls r0, 24
	lsrs r7, r0, 24
	cmp r7, 0x40
	beq _0805EFCE
	lsls r0, r7, 4
	adds r0, r7
	lsls r0, 2
	ldr r1, _0805EFF0 @ =gSprites
	adds r4, r0, r1
	mov r1, r9
	lsls r0, r1, 16
	asrs r0, 16
	ldrh r2, [r6, 0x10]
	adds r0, r2
	lsls r0, 16
	asrs r0, 16
	mov r2, r10
	lsls r1, r2, 16
	asrs r1, 16
	ldrh r2, [r6, 0x12]
	adds r1, r2
	lsls r1, 16
	asrs r1, 16
	adds r2, r4, 0
	adds r2, 0x20
	adds r3, r4, 0
	adds r3, 0x22
	bl sub_8063AD4
	ldrh r0, [r5, 0x8]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r1, r4, 0
	adds r1, 0x28
	strb r0, [r1]
	ldrh r0, [r5, 0xA]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r2, r4, 0
	adds r2, 0x29
	strb r0, [r2]
	ldrh r0, [r4, 0x20]
	adds r0, 0x8
	strh r0, [r4, 0x20]
	ldrh r1, [r4, 0x22]
	adds r1, 0x10
	movs r0, 0
	ldrsb r0, [r2, r0]
	adds r0, r1
	strh r0, [r4, 0x22]
	ldr r0, [r5, 0x1C]
	str r0, [r4, 0xC]
	ldrb r0, [r6, 0x6]
	cmp r0, 0xB
	bne _0805EF6A
	mov r0, r8
	adds r1, r7, 0
	bl SetPlayerAvatarObjectEventIdAndObjectId
	bl sub_80DB0C4
	strb r0, [r6, 0x1B]
_0805EF6A:
	ldr r1, [sp, 0x20]
	cmp r1, 0
	beq _0805EF76
	adds r0, r4, 0
	bl SetSubspriteTables
_0805EF76:
	ldrb r1, [r5, 0xC]
	lsls r1, 28
	lsrs r1, 24
	ldrb r2, [r4, 0x5]
	movs r0, 0xF
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0x5]
	adds r2, r4, 0
	adds r2, 0x3E
	ldrb r0, [r2]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r2]
	mov r0, r8
	strh r0, [r4, 0x2E]
	strb r7, [r6, 0x4]
	ldrb r0, [r6, 0x1]
	lsls r0, 27
	cmp r0, 0
	blt _0805EFBC
	ldrb r0, [r6, 0x6]
	cmp r0, 0xB
	beq _0805EFBC
	ldrb r0, [r6, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
_0805EFBC:
	adds r0, r6, 0
	bl sub_805EFF4
	ldrb r0, [r6, 0xB]
	lsrs r0, 4
	adds r1, r4, 0
	movs r2, 0x1
	bl SetObjectSubpriorityByZCoord
_0805EFCE:
	add sp, 0x24
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0805EFE0: .4byte gUnknown_2031DEC
_0805EFE4: .4byte gObjectEvents
_0805EFE8: .4byte 0xffff0000
_0805EFEC: .4byte 0x0000ffff
_0805EFF0: .4byte gSprites
	thumb_func_end sub_805EE3C

	thumb_func_start sub_805EFF4
sub_805EFF4: @ 805EFF4
	push {lr}
	ldrb r2, [r0]
	movs r3, 0x3
	negs r3, r3
	adds r1, r3, 0
	ands r1, r2
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0]
	ldrb r2, [r0, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r2
	ands r1, r3
	movs r2, 0x5
	negs r2, r2
	ands r1, r2
	subs r2, 0x4
	ands r1, r2
	subs r2, 0x8
	ands r1, r2
	subs r2, 0x10
	ands r1, r2
	strb r1, [r0, 0x2]
	bl ObjectEventClearAnim
	pop {r0}
	bx r0
	thumb_func_end sub_805EFF4

	thumb_func_start SetPlayerAvatarObjectEventIdAndObjectId
SetPlayerAvatarObjectEventIdAndObjectId: @ 805F02C
	push {r4,r5,lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r5, _0805F058 @ =gPlayerAvatar
	strb r0, [r5, 0x5]
	strb r1, [r5, 0x4]
	ldr r1, _0805F05C @ =gObjectEvents
	lsls r4, r0, 3
	adds r4, r0
	lsls r4, 2
	adds r4, r1
	ldrb r0, [r4, 0x5]
	bl sub_805C824
	strb r0, [r5, 0x7]
	ldrb r0, [r4, 0x5]
	movs r1, 0x20
	bl SetPlayerAvatarExtraStateTransition
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0805F058: .4byte gPlayerAvatar
_0805F05C: .4byte gObjectEvents
	thumb_func_end SetPlayerAvatarObjectEventIdAndObjectId

	thumb_func_start ObjectEventSetGraphicsId
ObjectEventSetGraphicsId: @ 805F060
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x4
	adds r6, r0, 0
	lsls r1, 24
	lsrs r1, 24
	str r1, [sp]
	adds r0, r1, 0
	bl GetObjectEventGraphicsInfo
	adds r5, r0, 0
	ldrb r1, [r6, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805F1CC @ =gSprites
	adds r4, r0, r1
	ldrb r1, [r5, 0xC]
	movs r0, 0xF
	mov r8, r0
	ands r0, r1
	cmp r0, 0
	bne _0805F09E
	ldrh r0, [r5, 0x2]
	lsls r1, 28
	lsrs r1, 28
	bl pal_patch_for_npc
_0805F09E:
	ldrb r1, [r5, 0xC]
	mov r0, r8
	ands r0, r1
	cmp r0, 0xA
	bne _0805F0B2
	ldrh r0, [r5, 0x2]
	lsls r1, 28
	lsrs r1, 28
	bl npc_load_two_palettes__and_record
_0805F0B2:
	ldr r0, [r4, 0xC]
	ldrh r0, [r0, 0x4]
	lsrs r0, 5
	lsls r0, 24
	lsrs r0, 24
	mov r10, r0
	adds r7, r4, 0
	adds r7, 0x3F
	ldrb r1, [r7]
	movs r2, 0x40
	mov r9, r2
	mov r0, r9
	ands r0, r1
	cmp r0, 0
	bne _0805F0D6
	adds r0, r4, 0
	bl sub_80075C0
_0805F0D6:
	ldr r0, [r5, 0x10]
	ldrb r2, [r0, 0x1]
	lsrs r2, 6
	lsls r2, 6
	ldrb r3, [r4, 0x1]
	movs r1, 0x3F
	adds r0, r1, 0
	ands r0, r3
	orrs r0, r2
	strb r0, [r4, 0x1]
	ldr r0, [r5, 0x10]
	ldrb r0, [r0, 0x3]
	lsrs r0, 6
	lsls r0, 6
	ldrb r2, [r4, 0x3]
	ands r1, r2
	orrs r1, r0
	strb r1, [r4, 0x3]
	ldr r3, [r5, 0x1C]
	str r3, [r4, 0xC]
	ldr r0, [r5, 0x18]
	str r0, [r4, 0x8]
	ldr r0, [r5, 0x14]
	str r0, [r4, 0x18]
	ldrb r1, [r5, 0xC]
	lsls r1, 28
	lsrs r1, 24
	ldrb r2, [r4, 0x5]
	mov r0, r8
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0x5]
	ldrb r1, [r7]
	mov r0, r9
	ands r0, r1
	cmp r0, 0
	bne _0805F152
	ldrh r0, [r3, 0x4]
	lsrs r0, 5
	lsls r0, 24
	lsrs r0, 24
	bl AllocSpriteTiles
	lsls r0, 16
	asrs r2, r0, 16
	movs r0, 0x1
	negs r0, r0
	cmp r2, r0
	bne _0805F142
	mov r0, r10
	bl AllocSpriteTiles
	lsls r0, 16
	asrs r2, r0, 16
_0805F142:
	ldr r1, _0805F1D0 @ =0x000003ff
	adds r0, r1, 0
	ands r2, r0
	ldrh r1, [r4, 0x4]
	ldr r0, _0805F1D4 @ =0xfffffc00
	ands r0, r1
	orrs r0, r2
	strh r0, [r4, 0x4]
_0805F152:
	ldrb r1, [r5, 0xC]
	lsls r1, 25
	lsrs r1, 31
	lsls r1, 4
	ldrb r2, [r6, 0x1]
	movs r0, 0x11
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r6, 0x1]
	mov r2, sp
	ldrb r2, [r2]
	strb r2, [r6, 0x5]
	movs r1, 0x10
	ldrsh r0, [r6, r1]
	movs r2, 0x12
	ldrsh r1, [r6, r2]
	adds r2, r4, 0
	adds r2, 0x20
	adds r3, r4, 0
	adds r3, 0x22
	bl sub_8063B1C
	ldrh r0, [r5, 0x8]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r1, r4, 0
	adds r1, 0x28
	strb r0, [r1]
	ldrh r0, [r5, 0xA]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r2, r4, 0
	adds r2, 0x29
	strb r0, [r2]
	ldrh r0, [r4, 0x20]
	adds r0, 0x8
	strh r0, [r4, 0x20]
	ldrh r1, [r4, 0x22]
	adds r1, 0x10
	movs r0, 0
	ldrsb r0, [r2, r0]
	adds r0, r1
	strh r0, [r4, 0x22]
	ldrb r0, [r6, 0x1]
	lsrs r0, 7
	cmp r0, 0
	beq _0805F1BA
	bl CameraObjectReset1
_0805F1BA:
	add sp, 0x4
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0805F1CC: .4byte gSprites
_0805F1D0: .4byte 0x000003ff
_0805F1D4: .4byte 0xfffffc00
	thumb_func_end ObjectEventSetGraphicsId

	thumb_func_start ObjectEventSetGraphicsIdByLocalIdAndMap
ObjectEventSetGraphicsIdByLocalIdAndMap: @ 805F1D8
	push {r4,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r4, r3, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805F20C
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805F214 @ =gObjectEvents
	adds r0, r1
	adds r1, r4, 0
	bl ObjectEventSetGraphicsId
_0805F20C:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805F214: .4byte gObjectEvents
	thumb_func_end ObjectEventSetGraphicsIdByLocalIdAndMap

	thumb_func_start ObjectEventTurn
ObjectEventTurn: @ 805F218
	push {r4-r6,lr}
	adds r6, r0, 0
	lsls r1, 24
	lsrs r1, 24
	bl ObjectEventSetDirection
	ldrb r0, [r6, 0x1]
	lsls r0, 27
	cmp r0, 0
	blt _0805F25E
	ldrb r0, [r6, 0x4]
	lsls r4, r0, 4
	adds r4, r0
	lsls r4, 2
	ldr r5, _0805F264 @ =gSprites
	adds r4, r5
	ldrb r0, [r6, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
	ldrb r1, [r6, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r5
	movs r1, 0
	bl SeekSpriteAnim
_0805F25E:
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_0805F264: .4byte gSprites
	thumb_func_end ObjectEventTurn

	thumb_func_start ObjectEventTurnByLocalIdAndMap
ObjectEventTurnByLocalIdAndMap: @ 805F268
	push {r4,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r4, r3, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805F29C
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805F2A4 @ =gObjectEvents
	adds r0, r1
	adds r1, r4, 0
	bl ObjectEventTurn
_0805F29C:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805F2A4: .4byte gObjectEvents
	thumb_func_end ObjectEventTurnByLocalIdAndMap

	thumb_func_start PlayerObjectTurn
PlayerObjectTurn: @ 805F2A8
	push {lr}
	lsls r1, 24
	lsrs r1, 24
	ldrb r2, [r0, 0x5]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0805F2C4 @ =gObjectEvents
	adds r0, r2
	bl ObjectEventTurn
	pop {r0}
	bx r0
	.align 2, 0
_0805F2C4: .4byte gObjectEvents
	thumb_func_end PlayerObjectTurn

	thumb_func_start GetObjectEventGraphicsInfo
GetObjectEventGraphicsInfo: @ 805F2C8
	push {lr}
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0xEF
	bls _0805F2E0
	adds r0, r1, 0
	adds r0, 0x10
	lsls r0, 24
	lsrs r0, 24
	bl VarGetObjectEventGraphicsId
	adds r1, r0, 0
_0805F2E0:
	cmp r1, 0x97
	bls _0805F2E6
	movs r1, 0x10
_0805F2E6:
	ldr r0, _0805F2F4 @ =gObjectEventGraphicsInfoPointers
	lsls r1, 2
	adds r1, r0
	ldr r0, [r1]
	pop {r1}
	bx r1
	.align 2, 0
_0805F2F4: .4byte gObjectEventGraphicsInfoPointers
	thumb_func_end GetObjectEventGraphicsInfo

	thumb_func_start ObjectEventHandleDynamicGraphicsId
ObjectEventHandleDynamicGraphicsId: @ 805F2F8
	push {r4,lr}
	adds r4, r0, 0
	ldrb r0, [r4, 0x5]
	cmp r0, 0xEF
	bls _0805F30E
	adds r0, 0x10
	lsls r0, 24
	lsrs r0, 24
	bl VarGetObjectEventGraphicsId
	strb r0, [r4, 0x5]
_0805F30E:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end ObjectEventHandleDynamicGraphicsId

	thumb_func_start npc_by_local_id_and_map_set_field_1_bit_x20
npc_by_local_id_and_map_set_field_1_bit_x20: @ 805F314
	push {r4,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r4, r3, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805F356
	ldr r2, _0805F360 @ =gObjectEvents
	mov r0, sp
	ldrb r0, [r0]
	lsls r1, r0, 3
	adds r1, r0
	lsls r1, 2
	adds r1, r2
	movs r0, 0x1
	adds r2, r4, 0
	ands r2, r0
	lsls r2, 5
	ldrb r3, [r1, 0x1]
	movs r0, 0x21
	negs r0, r0
	ands r0, r3
	orrs r0, r2
	strb r0, [r1, 0x1]
_0805F356:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805F360: .4byte gObjectEvents
	thumb_func_end npc_by_local_id_and_map_set_field_1_bit_x20

	thumb_func_start ObjectEventGetLocalIdAndMap
ObjectEventGetLocalIdAndMap: @ 805F364
	push {r4,lr}
	ldrb r4, [r0, 0x8]
	strb r4, [r1]
	ldrb r1, [r0, 0x9]
	strb r1, [r2]
	ldrb r0, [r0, 0xA]
	strb r0, [r3]
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end ObjectEventGetLocalIdAndMap

	thumb_func_start sub_805F378
sub_805F378: @ 805F378
	push {lr}
	lsls r0, 16
	asrs r0, 16
	lsls r1, 16
	asrs r1, 16
	bl GetObjectEventIdByXY
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x10
	beq _0805F3A0
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805F3A4 @ =gObjectEvents
	adds r0, r1
	ldrb r1, [r0]
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0]
_0805F3A0:
	pop {r0}
	bx r0
	.align 2, 0
_0805F3A4: .4byte gObjectEvents
	thumb_func_end sub_805F378

	thumb_func_start sub_805F3A8
sub_805F3A8: @ 805F3A8
	push {r4,lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r4, r3, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805F3EE
	mov r0, sp
	ldrb r0, [r0]
	lsls r2, r0, 3
	adds r2, r0
	lsls r2, 2
	ldr r0, _0805F3F8 @ =gObjectEvents
	adds r2, r0
	ldrb r1, [r2, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805F3FC @ =gSprites
	adds r0, r1
	ldrb r1, [r2, 0x3]
	movs r3, 0x4
	orrs r1, r3
	strb r1, [r2, 0x3]
	adds r0, 0x43
	strb r4, [r0]
_0805F3EE:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805F3F8: .4byte gObjectEvents
_0805F3FC: .4byte gSprites
	thumb_func_end sub_805F3A8

	thumb_func_start sub_805F400
sub_805F400: @ 805F400
	push {lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805F43C
	mov r0, sp
	ldrb r0, [r0]
	lsls r1, r0, 3
	adds r1, r0
	lsls r1, 2
	ldr r0, _0805F444 @ =gObjectEvents
	adds r1, r0
	ldrb r2, [r1, 0x3]
	movs r0, 0x5
	negs r0, r0
	ands r0, r2
	strb r0, [r1, 0x3]
	ldrb r0, [r1]
	movs r2, 0x4
	orrs r0, r2
	strb r0, [r1]
_0805F43C:
	add sp, 0x4
	pop {r0}
	bx r0
	.align 2, 0
_0805F444: .4byte gObjectEvents
	thumb_func_end sub_805F400

	thumb_func_start sub_805F448
sub_805F448: @ 805F448
	push {r4,r5,lr}
	sub sp, 0x4
	ldr r4, [sp, 0x10]
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 16
	lsrs r5, r3, 16
	lsls r4, 16
	lsrs r4, 16
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805F48C
	ldr r2, _0805F494 @ =gObjectEvents
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r1, [r0, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805F498 @ =gSprites
	adds r0, r1
	strh r5, [r0, 0x24]
	strh r4, [r0, 0x26]
_0805F48C:
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0805F494: .4byte gObjectEvents
_0805F498: .4byte gSprites
	thumb_func_end sub_805F448

	thumb_func_start gpu_pal_allocator_reset__manage_upper_four
gpu_pal_allocator_reset__manage_upper_four: @ 805F49C
	push {lr}
	bl FreeAllSpritePalettes
	ldr r1, _0805F4AC @ =gReservedSpritePaletteCount
	movs r0, 0xC
	strb r0, [r1]
	pop {r0}
	bx r0
	.align 2, 0
_0805F4AC: .4byte gReservedSpritePaletteCount
	thumb_func_end gpu_pal_allocator_reset__manage_upper_four

	thumb_func_start sub_805F4B0
sub_805F4B0: @ 805F4B0
	push {lr}
	lsls r0, 16
	lsrs r0, 16
	bl FindObjectEventPaletteIndexByTag
	lsls r0, 24
	lsrs r1, r0, 24
	ldr r0, _0805F4D4 @ =0x000011ff
	cmp r1, r0
	beq _0805F4CE
	lsls r0, r1, 3
	ldr r1, _0805F4D8 @ =gObjectEventSpritePalettes
	adds r0, r1
	bl sub_805F510
_0805F4CE:
	pop {r0}
	bx r0
	.align 2, 0
_0805F4D4: .4byte 0x000011ff
_0805F4D8: .4byte gObjectEventSpritePalettes
	thumb_func_end sub_805F4B0

	thumb_func_start sub_805F4DC
sub_805F4DC: @ 805F4DC
	push {r4-r6,lr}
	adds r5, r0, 0
	movs r4, 0
	ldrh r0, [r5]
	ldr r1, _0805F50C @ =0x000011ff
	cmp r0, r1
	beq _0805F506
	adds r6, r1, 0
_0805F4EC:
	lsls r0, r4, 1
	adds r0, r5
	ldrh r0, [r0]
	bl sub_805F4B0
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r0, r4, 1
	adds r0, r5
	ldrh r0, [r0]
	cmp r0, r6
	bne _0805F4EC
_0805F506:
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_0805F50C: .4byte 0x000011ff
	thumb_func_end sub_805F4DC

	thumb_func_start sub_805F510
sub_805F510: @ 805F510
	push {r4,lr}
	adds r4, r0, 0
	ldrh r0, [r4, 0x4]
	bl IndexOfSpritePaletteTag
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	bne _0805F52E
	adds r0, r4, 0
	bl LoadSpritePalette
	lsls r0, 24
	lsrs r0, 24
	b _0805F530
_0805F52E:
	movs r0, 0xFF
_0805F530:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_805F510

	thumb_func_start pal_patch_for_npc
pal_patch_for_npc: @ 805F538
	push {r4,lr}
	adds r4, r1, 0
	lsls r0, 16
	lsrs r0, 16
	lsls r4, 24
	lsrs r4, 24
	bl FindObjectEventPaletteIndexByTag
	lsls r0, 24
	ldr r1, _0805F570 @ =gObjectEventSpritePalettes
	lsrs r0, 21
	adds r0, r1
	ldr r0, [r0]
	lsls r1, r4, 20
	movs r2, 0x80
	lsls r2, 17
	adds r1, r2
	lsrs r1, 16
	movs r2, 0x20
	bl LoadPalette
	adds r0, r4, 0
	bl sub_8083598
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805F570: .4byte gObjectEventSpritePalettes
	thumb_func_end pal_patch_for_npc

	thumb_func_start pal_patch_for_npc_range
pal_patch_for_npc_range: @ 805F574
	push {r4-r6,lr}
	adds r5, r0, 0
	lsls r1, 24
	lsrs r4, r1, 24
	lsls r2, 24
	lsrs r6, r2, 24
	cmp r4, r6
	bcs _0805F598
_0805F584:
	ldrh r0, [r5]
	adds r1, r4, 0
	bl pal_patch_for_npc
	adds r5, 0x2
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, r6
	bcc _0805F584
_0805F598:
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end pal_patch_for_npc_range

	thumb_func_start FindObjectEventPaletteIndexByTag
FindObjectEventPaletteIndexByTag: @ 805F5A0
	push {r4-r6,lr}
	lsls r0, 16
	lsrs r5, r0, 16
	movs r2, 0
	ldr r0, _0805F5C8 @ =gObjectEventSpritePalettes
	ldrh r1, [r0, 0x4]
	ldr r3, _0805F5CC @ =0x000011ff
	adds r4, r0, 0
	cmp r1, r3
	beq _0805F5E0
	adds r6, r4, 0
	adds r1, r3, 0
_0805F5B8:
	lsls r0, r2, 3
	adds r0, r6
	ldrh r0, [r0, 0x4]
	cmp r0, r5
	bne _0805F5D0
	adds r0, r2, 0
	b _0805F5E2
	.align 2, 0
_0805F5C8: .4byte gObjectEventSpritePalettes
_0805F5CC: .4byte 0x000011ff
_0805F5D0:
	adds r0, r2, 0x1
	lsls r0, 24
	lsrs r2, r0, 24
	lsls r0, r2, 3
	adds r0, r4
	ldrh r0, [r0, 0x4]
	cmp r0, r1
	bne _0805F5B8
_0805F5E0:
	movs r0, 0xFF
_0805F5E2:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end FindObjectEventPaletteIndexByTag

	thumb_func_start npc_load_two_palettes__no_record
npc_load_two_palettes__no_record: @ 805F5E8
	push {r4-r6,lr}
	lsls r0, 16
	lsrs r4, r0, 16
	lsls r1, 24
	lsrs r5, r1, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl pal_patch_for_npc
	movs r3, 0
	ldr r1, _0805F630 @ =gUnknown_83A5208
	ldrh r0, [r1]
	ldr r2, _0805F634 @ =0x000011ff
	cmp r0, r2
	beq _0805F650
	ldr r0, _0805F638 @ =gUnknown_835B934
	adds r5, r0
	adds r6, r2, 0
_0805F60C:
	lsls r2, r3, 3
	adds r0, r2, r1
	ldrh r0, [r0]
	cmp r0, r4
	bne _0805F640
	adds r1, 0x4
	adds r1, r2, r1
	ldr r0, _0805F63C @ =gUnknown_2037098
	ldrb r0, [r0]
	ldr r1, [r1]
	lsls r0, 1
	adds r0, r1
	ldrh r0, [r0]
	ldrb r1, [r5]
	bl pal_patch_for_npc
	b _0805F650
	.align 2, 0
_0805F630: .4byte gUnknown_83A5208
_0805F634: .4byte 0x000011ff
_0805F638: .4byte gUnknown_835B934
_0805F63C: .4byte gUnknown_2037098
_0805F640:
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	lsls r0, r3, 3
	adds r0, r1
	ldrh r0, [r0]
	cmp r0, r6
	bne _0805F60C
_0805F650:
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end npc_load_two_palettes__no_record

	thumb_func_start npc_load_two_palettes__and_record
npc_load_two_palettes__and_record: @ 805F658
	push {r4-r6,lr}
	lsls r0, 16
	lsrs r4, r0, 16
	lsls r1, 24
	lsrs r5, r1, 24
	ldr r0, _0805F6A4 @ =gUnknown_203709A
	strh r4, [r0]
	adds r0, r4, 0
	adds r1, r5, 0
	bl pal_patch_for_npc
	movs r3, 0
	ldr r1, _0805F6A8 @ =gUnknown_83A5278
	ldrh r0, [r1]
	ldr r2, _0805F6AC @ =0x000011ff
	cmp r0, r2
	beq _0805F6C8
	ldr r0, _0805F6B0 @ =gUnknown_835B934
	adds r5, r0
	adds r6, r2, 0
_0805F680:
	lsls r2, r3, 3
	adds r0, r2, r1
	ldrh r0, [r0]
	cmp r0, r4
	bne _0805F6B8
	adds r1, 0x4
	adds r1, r2, r1
	ldr r0, _0805F6B4 @ =gUnknown_2037098
	ldrb r0, [r0]
	ldr r1, [r1]
	lsls r0, 1
	adds r0, r1
	ldrh r0, [r0]
	ldrb r1, [r5]
	bl pal_patch_for_npc
	b _0805F6C8
	.align 2, 0
_0805F6A4: .4byte gUnknown_203709A
_0805F6A8: .4byte gUnknown_83A5278
_0805F6AC: .4byte 0x000011ff
_0805F6B0: .4byte gUnknown_835B934
_0805F6B4: .4byte gUnknown_2037098
_0805F6B8:
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	lsls r0, r3, 3
	adds r0, r1
	ldrh r0, [r0]
	cmp r0, r6
	bne _0805F680
_0805F6C8:
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end npc_load_two_palettes__and_record

	thumb_func_start sub_805F6D0
sub_805F6D0: @ 805F6D0
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0805F6DC @ =gUnknown_835B934
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0805F6DC: .4byte gUnknown_835B934
	thumb_func_end sub_805F6D0

	thumb_func_start unref_sub_808EAC4
unref_sub_808EAC4: @ 805F6E0
	push {r4,lr}
	ldrh r3, [r0, 0x10]
	strh r3, [r0, 0x14]
	ldrh r4, [r0, 0x12]
	strh r4, [r0, 0x16]
	lsls r1, 16
	asrs r1, 16
	adds r1, r3
	strh r1, [r0, 0x10]
	lsls r2, 16
	asrs r2, 16
	adds r2, r4
	strh r2, [r0, 0x12]
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end unref_sub_808EAC4

	thumb_func_start npc_coords_shift
npc_coords_shift: @ 805F700
	ldrh r3, [r0, 0x10]
	strh r3, [r0, 0x14]
	ldrh r3, [r0, 0x12]
	strh r3, [r0, 0x16]
	strh r1, [r0, 0x10]
	strh r2, [r0, 0x12]
	bx lr
	thumb_func_end npc_coords_shift

	thumb_func_start npc_coords_set
npc_coords_set: @ 805F710
	lsls r1, 16
	lsrs r1, 16
	lsls r2, 16
	lsrs r2, 16
	strh r1, [r0, 0x14]
	strh r2, [r0, 0x16]
	strh r1, [r0, 0x10]
	strh r2, [r0, 0x12]
	bx lr
	thumb_func_end npc_coords_set

	thumb_func_start sub_805F724
sub_805F724: @ 805F724
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	adds r6, r0, 0
	adds r4, r1, 0
	adds r5, r2, 0
	lsls r4, 16
	lsrs r4, 16
	lsls r5, 16
	lsrs r5, 16
	ldrb r1, [r6, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805F7C0 @ =gSprites
	adds r7, r0, r1
	ldrb r0, [r6, 0x5]
	bl GetObjectEventGraphicsInfo
	mov r8, r0
	lsls r4, 16
	asrs r4, 16
	lsls r5, 16
	asrs r5, 16
	adds r0, r6, 0
	adds r1, r4, 0
	adds r2, r5, 0
	bl npc_coords_set
	movs r1, 0x10
	ldrsh r0, [r6, r1]
	movs r2, 0x12
	ldrsh r1, [r6, r2]
	adds r2, r7, 0
	adds r2, 0x20
	adds r3, r7, 0
	adds r3, 0x22
	bl sub_8063B1C
	mov r1, r8
	ldrh r0, [r1, 0x8]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r1, r7, 0
	adds r1, 0x28
	strb r0, [r1]
	mov r2, r8
	ldrh r0, [r2, 0xA]
	lsls r0, 16
	asrs r0, 17
	negs r0, r0
	adds r2, r7, 0
	adds r2, 0x29
	strb r0, [r2]
	ldrh r0, [r7, 0x20]
	adds r0, 0x8
	strh r0, [r7, 0x20]
	ldrh r1, [r7, 0x22]
	adds r1, 0x10
	movs r0, 0
	ldrsb r0, [r2, r0]
	adds r0, r1
	strh r0, [r7, 0x22]
	adds r0, r6, 0
	bl sub_805EFF4
	ldrb r0, [r6, 0x1]
	lsrs r0, 7
	cmp r0, 0
	beq _0805F7B6
	bl CameraObjectReset1
_0805F7B6:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_0805F7C0: .4byte gSprites
	thumb_func_end sub_805F724

	thumb_func_start sub_805F7C4
sub_805F7C4: @ 805F7C4
	push {r4,r5,lr}
	sub sp, 0x4
	ldr r4, [sp, 0x10]
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 16
	lsrs r5, r3, 16
	lsls r4, 16
	lsrs r4, 16
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805F80C
	lsls r1, r5, 16
	lsls r2, r4, 16
	mov r0, sp
	ldrb r3, [r0]
	lsls r0, r3, 3
	adds r0, r3
	lsls r0, 2
	ldr r3, _0805F814 @ =gObjectEvents
	adds r0, r3
	movs r3, 0xE0
	lsls r3, 11
	adds r1, r3
	asrs r1, 16
	adds r2, r3
	asrs r2, 16
	bl sub_805F724
_0805F80C:
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0805F814: .4byte gObjectEvents
	thumb_func_end sub_805F7C4

	thumb_func_start npc_coords_shift_still
npc_coords_shift_still: @ 805F818
	push {lr}
	movs r2, 0x10
	ldrsh r1, [r0, r2]
	movs r3, 0x12
	ldrsh r2, [r0, r3]
	bl npc_coords_shift
	pop {r0}
	bx r0
	thumb_func_end npc_coords_shift_still

	thumb_func_start UpdateObjectEventCoordsForCameraUpdate
UpdateObjectEventCoordsForCameraUpdate: @ 805F82C
	push {r4,r5,lr}
	ldr r2, _0805F88C @ =gCamera
	ldrb r1, [r2]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0805F884
	movs r3, 0
	ldr r5, _0805F890 @ =gObjectEvents
	movs r0, 0x4
	ldrsh r4, [r2, r0]
	movs r0, 0x8
	ldrsh r1, [r2, r0]
_0805F846:
	lsls r0, r3, 3
	adds r0, r3
	lsls r0, 2
	adds r2, r0, r5
	ldrb r0, [r2]
	lsls r0, 31
	cmp r0, 0
	beq _0805F87A
	ldrh r0, [r2, 0xC]
	subs r0, r4
	strh r0, [r2, 0xC]
	ldrh r0, [r2, 0xE]
	subs r0, r1
	strh r0, [r2, 0xE]
	ldrh r0, [r2, 0x10]
	subs r0, r4
	strh r0, [r2, 0x10]
	ldrh r0, [r2, 0x12]
	subs r0, r1
	strh r0, [r2, 0x12]
	ldrh r0, [r2, 0x14]
	subs r0, r4
	strh r0, [r2, 0x14]
	ldrh r0, [r2, 0x16]
	subs r0, r1
	strh r0, [r2, 0x16]
_0805F87A:
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, 0xF
	bls _0805F846
_0805F884:
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0805F88C: .4byte gCamera
_0805F890: .4byte gObjectEvents
	thumb_func_end UpdateObjectEventCoordsForCameraUpdate

	thumb_func_start GetObjectEventIdByXYZ
GetObjectEventIdByXYZ: @ 805F894
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	lsls r0, 16
	lsrs r7, r0, 16
	lsls r1, 16
	lsrs r6, r1, 16
	lsls r2, 24
	lsrs r5, r2, 24
	movs r4, 0
	ldr r0, _0805F8E0 @ =gObjectEvents
	mov r8, r0
_0805F8AC:
	lsls r0, r4, 3
	adds r0, r4
	lsls r0, 2
	mov r2, r8
	adds r1, r0, r2
	ldrb r0, [r1]
	lsls r0, 31
	cmp r0, 0
	beq _0805F8E4
	movs r2, 0x10
	ldrsh r0, [r1, r2]
	cmp r0, r7
	bne _0805F8E4
	movs r2, 0x12
	ldrsh r0, [r1, r2]
	cmp r0, r6
	bne _0805F8E4
	adds r0, r1, 0
	adds r1, r5, 0
	bl ObjectEventDoesZCoordMatch
	lsls r0, 24
	cmp r0, 0
	beq _0805F8E4
	adds r0, r4, 0
	b _0805F8F0
	.align 2, 0
_0805F8E0: .4byte gObjectEvents
_0805F8E4:
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0xF
	bls _0805F8AC
	movs r0, 0x10
_0805F8F0:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetObjectEventIdByXYZ

	thumb_func_start ObjectEventDoesZCoordMatch
ObjectEventDoesZCoordMatch: @ 805F8FC
	push {lr}
	lsls r1, 24
	lsrs r1, 24
	ldrb r2, [r0, 0xB]
	movs r0, 0xF
	ands r0, r2
	cmp r0, 0
	beq _0805F91C
	cmp r1, 0
	beq _0805F91C
	lsls r0, r2, 28
	lsrs r0, 28
	cmp r0, r1
	beq _0805F91C
	movs r0, 0
	b _0805F91E
_0805F91C:
	movs r0, 0x1
_0805F91E:
	pop {r1}
	bx r1
	thumb_func_end ObjectEventDoesZCoordMatch

	thumb_func_start UpdateObjectEventsForCameraUpdate
UpdateObjectEventsForCameraUpdate: @ 805F924
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r4, 16
	lsrs r4, 16
	lsls r5, 16
	lsrs r5, 16
	bl UpdateObjectEventCoordsForCameraUpdate
	lsls r4, 16
	asrs r4, 16
	lsls r5, 16
	asrs r5, 16
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_805EC30
	bl RemoveObjectEventsOutsideView
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end UpdateObjectEventsForCameraUpdate

	thumb_func_start AddCameraObject
AddCameraObject: @ 805F950
	push {r4,lr}
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	ldr r0, _0805F98C @ =gUnknown_835B944
	movs r1, 0
	movs r2, 0
	movs r3, 0x4
	bl CreateSprite
	lsls r0, 24
	lsrs r0, 24
	ldr r2, _0805F990 @ =gSprites
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r2
	movs r2, 0x3E
	adds r2, r1
	mov r12, r2
	ldrb r2, [r2]
	movs r3, 0x4
	orrs r2, r3
	mov r3, r12
	strb r2, [r3]
	strh r4, [r1, 0x2E]
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0805F98C: .4byte gUnknown_835B944
_0805F990: .4byte gSprites
	thumb_func_end AddCameraObject

	thumb_func_start ObjectCB_CameraObject
ObjectCB_CameraObject: @ 805F994
	push {r4,r5,lr}
	sub sp, 0xC
	mov r2, sp
	ldr r1, _0805F9B8 @ =gUnknown_835B95C
	ldm r1!, {r3-r5}
	stm r2!, {r3-r5}
	movs r2, 0x30
	ldrsh r1, [r0, r2]
	lsls r1, 2
	add r1, sp
	ldr r1, [r1]
	bl _call_via_r1
	add sp, 0xC
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0805F9B8: .4byte gUnknown_835B95C
	thumb_func_end ObjectCB_CameraObject

	thumb_func_start CameraObject_0
CameraObject_0: @ 805F9BC
	push {lr}
	ldr r3, _0805F9F4 @ =gSprites
	movs r1, 0x2E
	ldrsh r2, [r0, r1]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r3
	ldrh r1, [r1, 0x20]
	strh r1, [r0, 0x20]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r3
	ldrh r1, [r1, 0x22]
	strh r1, [r0, 0x22]
	adds r3, r0, 0
	adds r3, 0x3E
	ldrb r1, [r3]
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r3]
	movs r1, 0x1
	strh r1, [r0, 0x30]
	bl CameraObject_1
	pop {r0}
	bx r0
	.align 2, 0
_0805F9F4: .4byte gSprites
	thumb_func_end CameraObject_0

	thumb_func_start CameraObject_1
CameraObject_1: @ 805F9F8
	push {r4,r5,lr}
	ldr r3, _0805FA2C @ =gSprites
	movs r1, 0x2E
	ldrsh r2, [r0, r1]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r3
	ldrh r3, [r1, 0x22]
	ldrh r2, [r0, 0x20]
	ldrh r4, [r1, 0x20]
	movs r5, 0x20
	ldrsh r1, [r1, r5]
	subs r1, r2
	strh r1, [r0, 0x32]
	ldrh r2, [r0, 0x22]
	lsls r1, r3, 16
	asrs r1, 16
	subs r1, r2
	strh r1, [r0, 0x34]
	strh r4, [r0, 0x20]
	strh r3, [r0, 0x22]
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_0805FA2C: .4byte gSprites
	thumb_func_end CameraObject_1

	thumb_func_start CameraObject_2
CameraObject_2: @ 805FA30
	push {r4,lr}
	ldr r4, _0805FA5C @ =gSprites
	movs r1, 0x2E
	ldrsh r2, [r0, r1]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r4
	ldrh r1, [r1, 0x20]
	movs r3, 0
	strh r1, [r0, 0x20]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r4
	ldrh r1, [r1, 0x22]
	strh r1, [r0, 0x22]
	strh r3, [r0, 0x32]
	strh r3, [r0, 0x34]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805FA5C: .4byte gSprites
	thumb_func_end CameraObject_2

	thumb_func_start FindCameraObject
FindCameraObject: @ 805FA60
	push {r4,r5,lr}
	movs r3, 0
	ldr r4, _0805FA8C @ =gSprites
	adds r5, r4, 0
	adds r5, 0x1C
_0805FA6A:
	lsls r0, r3, 4
	adds r0, r3
	lsls r1, r0, 2
	adds r2, r1, r4
	adds r0, r2, 0
	adds r0, 0x3E
	ldrb r0, [r0]
	lsls r0, 31
	cmp r0, 0
	beq _0805FA94
	adds r0, r1, r5
	ldr r1, [r0]
	ldr r0, _0805FA90 @ =ObjectCB_CameraObject
	cmp r1, r0
	bne _0805FA94
	adds r0, r2, 0
	b _0805FAA0
	.align 2, 0
_0805FA8C: .4byte gSprites
_0805FA90: .4byte ObjectCB_CameraObject
_0805FA94:
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	cmp r3, 0x3F
	bls _0805FA6A
	movs r0, 0
_0805FAA0:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end FindCameraObject

	thumb_func_start CameraObjectReset1
CameraObjectReset1: @ 805FAA8
	push {lr}
	bl FindCameraObject
	adds r2, r0, 0
	cmp r2, 0
	beq _0805FAC0
	movs r0, 0
	strh r0, [r2, 0x30]
	ldr r1, [r2, 0x1C]
	adds r0, r2, 0
	bl _call_via_r1
_0805FAC0:
	pop {r0}
	bx r0
	thumb_func_end CameraObjectReset1

	thumb_func_start CameraObjectSetFollowedObjectId
CameraObjectSetFollowedObjectId: @ 805FAC4
	push {r4,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	bl FindCameraObject
	cmp r0, 0
	beq _0805FAD8
	strh r4, [r0, 0x2E]
	bl CameraObjectReset1
_0805FAD8:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end CameraObjectSetFollowedObjectId

	thumb_func_start CameraObjectGetFollowedObjectId
CameraObjectGetFollowedObjectId: @ 805FAE0
	push {lr}
	bl FindCameraObject
	cmp r0, 0
	beq _0805FAF2
	ldrh r0, [r0, 0x2E]
	lsls r0, 24
	lsrs r0, 24
	b _0805FAF4
_0805FAF2:
	movs r0, 0x40
_0805FAF4:
	pop {r1}
	bx r1
	thumb_func_end CameraObjectGetFollowedObjectId

	thumb_func_start CameraObjectReset2
CameraObjectReset2: @ 805FAF8
	push {lr}
	bl FindCameraObject
	movs r1, 0x2
	strh r1, [r0, 0x30]
	pop {r0}
	bx r0
	thumb_func_end CameraObjectReset2

	thumb_func_start CopySprite
CopySprite: @ 805FB08
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	mov r12, r0
	lsls r1, 16
	lsrs r1, 16
	mov r8, r1
	lsls r2, 16
	lsrs r6, r2, 16
	lsls r3, 24
	lsrs r7, r3, 24
	movs r5, 0
	ldr r1, _0805FB50 @ =gSprites
_0805FB22:
	lsls r0, r5, 4
	adds r0, r5
	lsls r0, 2
	adds r4, r0, r1
	adds r0, r4, 0
	adds r0, 0x3E
	ldrb r0, [r0]
	lsls r0, 31
	cmp r0, 0
	bne _0805FB54
	adds r0, r4, 0
	mov r1, r12
	movs r2, 0x44
	bl memcpy
	mov r0, r8
	strh r0, [r4, 0x20]
	strh r6, [r4, 0x22]
	adds r0, r4, 0
	adds r0, 0x43
	strb r7, [r0]
	b _0805FB5E
	.align 2, 0
_0805FB50: .4byte gSprites
_0805FB54:
	adds r0, r5, 0x1
	lsls r0, 24
	lsrs r5, r0, 24
	cmp r5, 0x3F
	bls _0805FB22
_0805FB5E:
	adds r0, r5, 0
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end CopySprite

	thumb_func_start obj_unfreeze
obj_unfreeze: @ 805FB6C
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	mov r12, r0
	lsls r1, 16
	lsrs r1, 16
	mov r8, r1
	lsls r2, 16
	lsrs r6, r2, 16
	lsls r3, 24
	lsrs r7, r3, 24
	movs r5, 0x3F
	ldr r3, _0805FBC0 @ =gSprites
	movs r2, 0x1
	negs r2, r2
_0805FB8A:
	lsls r0, r5, 16
	asrs r1, r0, 16
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r4, r0, r3
	adds r0, r4, 0
	adds r0, 0x3E
	ldrb r0, [r0]
	lsls r0, 31
	cmp r0, 0
	bne _0805FBC4
	adds r0, r4, 0
	mov r1, r12
	movs r2, 0x44
	bl memcpy
	mov r0, r8
	strh r0, [r4, 0x20]
	strh r6, [r4, 0x22]
	adds r0, r4, 0
	adds r0, 0x43
	strb r7, [r0]
	lsls r0, r5, 24
	lsrs r0, 24
	b _0805FBD2
	.align 2, 0
_0805FBC0: .4byte gSprites
_0805FBC4:
	subs r0, r1, 0x1
	lsls r0, 16
	lsrs r5, r0, 16
	asrs r0, 16
	cmp r0, r2
	bgt _0805FB8A
	movs r0, 0x40
_0805FBD2:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end obj_unfreeze

	thumb_func_start ObjectEventSetDirection
ObjectEventSetDirection: @ 805FBDC
	push {r4,lr}
	adds r3, r0, 0
	lsls r1, 24
	lsrs r2, r1, 24
	adds r4, r2, 0
	ldrb r0, [r3, 0x18]
	lsls r0, 28
	lsrs r0, 28
	adds r1, r3, 0
	adds r1, 0x20
	strb r0, [r1]
	ldrb r0, [r3, 0x1]
	lsls r0, 30
	cmp r0, 0
	blt _0805FC0C
	movs r0, 0xF
	adds r1, r2, 0
	ands r1, r0
	ldrb r2, [r3, 0x18]
	movs r0, 0x10
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r3, 0x18]
_0805FC0C:
	lsls r2, r4, 4
	ldrb r1, [r3, 0x18]
	movs r0, 0xF
	ands r0, r1
	orrs r0, r2
	strb r0, [r3, 0x18]
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end ObjectEventSetDirection

	thumb_func_start GetObjectEventScriptPointerByLocalIdAndMap
GetObjectEventScriptPointerByLocalIdAndMap: @ 805FC20
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	bl GetObjectEventTemplateByLocalIdAndMap
	ldr r0, [r0, 0x10]
	pop {r1}
	bx r1
	thumb_func_end GetObjectEventScriptPointerByLocalIdAndMap

	thumb_func_start GetObjectEventScriptPointerByObjectEventId
GetObjectEventScriptPointerByObjectEventId: @ 805FC38
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0805FC58 @ =gObjectEvents
	lsls r2, r0, 3
	adds r2, r0
	lsls r2, 2
	adds r2, r1
	ldrb r0, [r2, 0x8]
	ldrb r1, [r2, 0x9]
	ldrb r2, [r2, 0xA]
	bl GetObjectEventScriptPointerByLocalIdAndMap
	pop {r1}
	bx r1
	.align 2, 0
_0805FC58: .4byte gObjectEvents
	thumb_func_end GetObjectEventScriptPointerByObjectEventId

	thumb_func_start GetObjectEventFlagIdByLocalIdAndMap
GetObjectEventFlagIdByLocalIdAndMap: @ 805FC5C
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	bl GetObjectEventTemplateByLocalIdAndMap
	ldrh r0, [r0, 0x14]
	pop {r1}
	bx r1
	thumb_func_end GetObjectEventFlagIdByLocalIdAndMap

	thumb_func_start GetObjectEventFlagIdByObjectEventId
GetObjectEventFlagIdByObjectEventId: @ 805FC74
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0805FC98 @ =gObjectEvents
	lsls r2, r0, 3
	adds r2, r0
	lsls r2, 2
	adds r2, r1
	ldrb r0, [r2, 0x8]
	ldrb r1, [r2, 0x9]
	ldrb r2, [r2, 0xA]
	bl GetObjectEventFlagIdByLocalIdAndMap
	lsls r0, 16
	lsrs r0, 16
	pop {r1}
	bx r1
	.align 2, 0
_0805FC98: .4byte gObjectEvents
	thumb_func_end GetObjectEventFlagIdByObjectEventId

	thumb_func_start sub_805FC9C
sub_805FC9C: @ 805FC9C
	push {lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805FCD0
	ldr r2, _0805FCCC @ =gObjectEvents
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x7]
	b _0805FCD2
	.align 2, 0
_0805FCCC: .4byte gObjectEvents
_0805FCD0:
	movs r0, 0xFF
_0805FCD2:
	add sp, 0x4
	pop {r1}
	bx r1
	thumb_func_end sub_805FC9C

	thumb_func_start sub_805FCD8
sub_805FCD8: @ 805FCD8
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	bl GetObjectEventTemplateByLocalIdAndMap
	ldrh r0, [r0, 0xC]
	pop {r1}
	bx r1
	thumb_func_end sub_805FCD8

	thumb_func_start sub_805FCF0
sub_805FCF0: @ 805FCF0
	lsls r0, 24
	lsrs r0, 24
	ldr r2, _0805FD04 @ =gObjectEvents
	lsls r1, r0, 3
	adds r1, r0
	lsls r1, 2
	adds r1, r2
	ldrb r0, [r1, 0x7]
	bx lr
	.align 2, 0
_0805FD04: .4byte gObjectEvents
	thumb_func_end sub_805FCF0

	thumb_func_start sub_805FD08
sub_805FD08: @ 805FD08
	push {lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805FD3C
	ldr r2, _0805FD38 @ =gObjectEvents
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x1D]
	b _0805FD3E
	.align 2, 0
_0805FD38: .4byte gObjectEvents
_0805FD3C:
	movs r0, 0xFF
_0805FD3E:
	add sp, 0x4
	pop {r1}
	bx r1
	thumb_func_end sub_805FD08

	thumb_func_start ObjectEventGetBerryTreeId
ObjectEventGetBerryTreeId: @ 805FD44
	lsls r0, 24
	lsrs r0, 24
	ldr r2, _0805FD58 @ =gObjectEvents
	lsls r1, r0, 3
	adds r1, r0
	lsls r1, 2
	adds r1, r2
	ldrb r0, [r1, 0x1D]
	bx lr
	.align 2, 0
_0805FD58: .4byte gObjectEvents
	thumb_func_end ObjectEventGetBerryTreeId

	thumb_func_start GetObjectEventTemplateByLocalIdAndMap
GetObjectEventTemplateByLocalIdAndMap: @ 805FD5C
	push {r4,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r1, 24
	lsrs r3, r1, 24
	lsls r2, 24
	lsrs r2, 24
	ldr r0, _0805FD8C @ =gSaveBlock1Ptr
	ldr r1, [r0]
	movs r0, 0x5
	ldrsb r0, [r1, r0]
	cmp r0, r3
	bne _0805FD94
	movs r0, 0x4
	ldrsb r0, [r1, r0]
	cmp r0, r2
	bne _0805FD94
	movs r0, 0x8E
	lsls r0, 4
	adds r1, r0
	ldr r0, _0805FD90 @ =gMapHeader
	ldr r0, [r0, 0x4]
	b _0805FDA0
	.align 2, 0
_0805FD8C: .4byte gSaveBlock1Ptr
_0805FD90: .4byte gMapHeader
_0805FD94:
	adds r0, r2, 0
	adds r1, r3, 0
	bl Overworld_GetMapHeaderByGroupAndId
	ldr r0, [r0, 0x4]
	ldr r1, [r0, 0x4]
_0805FDA0:
	ldrb r2, [r0]
	adds r0, r4, 0
	bl FindObjectEventTemplateInArrayByLocalId
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end GetObjectEventTemplateByLocalIdAndMap

	thumb_func_start FindObjectEventTemplateInArrayByLocalId
FindObjectEventTemplateInArrayByLocalId: @ 805FDB0
	push {r4,r5,lr}
	adds r5, r1, 0
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r2, 24
	lsrs r2, 24
	movs r1, 0
	cmp r1, r2
	bcs _0805FDDE
_0805FDC2:
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 3
	adds r3, r0, r5
	ldrb r0, [r3]
	cmp r0, r4
	bne _0805FDD4
	adds r0, r3, 0
	b _0805FDE0
_0805FDD4:
	adds r0, r1, 0x1
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, r2
	bcc _0805FDC2
_0805FDDE:
	movs r0, 0
_0805FDE0:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end FindObjectEventTemplateInArrayByLocalId

	thumb_func_start sub_805FDE8
sub_805FDE8: @ 805FDE8
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	adds r4, r0, 0
	ldrb r0, [r4, 0x9]
	ldr r1, _0805FE0C @ =gSaveBlock1Ptr
	ldr r2, [r1]
	movs r1, 0x5
	ldrsb r1, [r2, r1]
	cmp r0, r1
	bne _0805FE50
	ldrb r1, [r4, 0xA]
	movs r0, 0x4
	ldrsb r0, [r2, r0]
	cmp r1, r0
	beq _0805FE18
	b _0805FE50
	.align 2, 0
_0805FE0C: .4byte gSaveBlock1Ptr
_0805FE10:
	mov r1, r8
	adds r0, r5, r1
	adds r0, r3, r0
	b _0805FE52
_0805FE18:
	movs r6, 0
	adds r3, r2, 0
	movs r0, 0x8E
	lsls r0, 4
	mov r8, r0
	ldrb r0, [r4, 0x8]
	mov r12, r0
	mov r0, r8
	adds r2, r3, r0
	movs r5, 0
	adds r7, r1, 0
_0805FE2E:
	ldrb r1, [r2]
	cmp r12, r1
	bne _0805FE46
	ldrb r1, [r4, 0x9]
	movs r0, 0x5
	ldrsb r0, [r3, r0]
	cmp r1, r0
	bne _0805FE46
	movs r0, 0x4
	ldrsb r0, [r3, r0]
	cmp r7, r0
	beq _0805FE10
_0805FE46:
	adds r2, 0x18
	adds r5, 0x18
	adds r6, 0x1
	cmp r6, 0x3F
	ble _0805FE2E
_0805FE50:
	movs r0, 0
_0805FE52:
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_805FDE8

	thumb_func_start sub_805FE5C
sub_805FE5C: @ 805FE5C
	push {r4,lr}
	adds r4, r0, 0
	bl sub_805FDE8
	adds r1, r0, 0
	cmp r1, 0
	beq _0805FE76
	ldrh r0, [r4, 0x10]
	subs r0, 0x7
	strh r0, [r1, 0x4]
	ldrh r0, [r4, 0x12]
	subs r0, 0x7
	strh r0, [r1, 0x6]
_0805FE76:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_805FE5C

	thumb_func_start sub_805FE7C
sub_805FE7C: @ 805FE7C
	push {r4,lr}
	lsls r1, 24
	lsrs r4, r1, 24
	bl sub_805FDE8
	cmp r0, 0
	beq _0805FE8C
	strb r4, [r0, 0x9]
_0805FE8C:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_805FE7C

	thumb_func_start sub_805FE94
sub_805FE94: @ 805FE94
	push {lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0805FEC2
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, _0805FEC8 @ =gObjectEvents
	adds r0, r1
	bl sub_805FE5C
_0805FEC2:
	add sp, 0x4
	pop {r0}
	bx r0
	.align 2, 0
_0805FEC8: .4byte gObjectEvents
	thumb_func_end sub_805FE94

	thumb_func_start npc_paltag_set_load
npc_paltag_set_load: @ 805FECC
	push {r4,lr}
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 24
	bl gpu_pal_allocator_reset__manage_upper_four
	ldr r1, _0805FF04 @ =gUnknown_203709A
	ldr r2, _0805FF08 @ =0x000011ff
	adds r0, r2, 0
	strh r0, [r1]
	ldr r2, _0805FF0C @ =gUnknown_2037098
	strb r4, [r2]
	cmp r4, 0x1
	bne _0805FF18
	ldr r1, _0805FF10 @ =gUnknown_83A5330
	ldrb r0, [r2]
	lsls r0, 2
	adds r0, r1
	ldr r0, [r0]
	movs r1, 0
	movs r2, 0x6
	bl pal_patch_for_npc_range
	ldr r1, _0805FF14 @ =gReservedSpritePaletteCount
	movs r0, 0x8
	strb r0, [r1]
	b _0805FF2A
	.align 2, 0
_0805FF04: .4byte gUnknown_203709A
_0805FF08: .4byte 0x000011ff
_0805FF0C: .4byte gUnknown_2037098
_0805FF10: .4byte gUnknown_83A5330
_0805FF14: .4byte gReservedSpritePaletteCount
_0805FF18:
	ldr r0, _0805FF30 @ =gUnknown_83A5330
	ldrb r1, [r2]
	lsls r1, 2
	adds r1, r0
	ldr r0, [r1]
	movs r1, 0
	movs r2, 0xA
	bl pal_patch_for_npc_range
_0805FF2A:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_0805FF30: .4byte gUnknown_83A5330
	thumb_func_end npc_paltag_set_load

	thumb_func_start npc_paltag_by_palslot
npc_paltag_by_palslot: @ 805FF34
	push {r4-r6,lr}
	lsls r0, 24
	lsrs r2, r0, 24
	cmp r2, 0x9
	bhi _0805FF70
	ldr r1, _0805FF50 @ =gUnknown_83A5330
	ldr r0, _0805FF54 @ =gUnknown_2037098
	ldrb r0, [r0]
	lsls r0, 2
	adds r0, r1
	ldr r1, [r0]
	lsls r0, r2, 1
	b _0805FF64
	.align 2, 0
_0805FF50: .4byte gUnknown_83A5330
_0805FF54: .4byte gUnknown_2037098
_0805FF58:
	adds r1, r4, 0x4
	adds r1, r2, r1
	ldr r0, _0805FF6C @ =gUnknown_2037098
	ldrb r0, [r0]
	ldr r1, [r1]
	lsls r0, 1
_0805FF64:
	adds r0, r1
	ldrh r0, [r0]
	b _0805FFA2
	.align 2, 0
_0805FF6C: .4byte gUnknown_2037098
_0805FF70:
	movs r3, 0
	ldr r0, _0805FFA8 @ =gUnknown_83A5278
	ldrh r1, [r0]
	ldr r2, _0805FFAC @ =0x000011ff
	adds r4, r0, 0
	cmp r1, r2
	beq _0805FFA0
	adds r6, r4, 0
	ldr r0, _0805FFB0 @ =gUnknown_203709A
	ldrh r1, [r0]
	adds r5, r2, 0
_0805FF86:
	lsls r2, r3, 3
	adds r0, r2, r6
	ldrh r0, [r0]
	cmp r0, r1
	beq _0805FF58
	adds r0, r3, 0x1
	lsls r0, 24
	lsrs r3, r0, 24
	lsls r0, r3, 3
	adds r0, r4
	ldrh r0, [r0]
	cmp r0, r5
	bne _0805FF86
_0805FFA0:
	ldr r0, _0805FFAC @ =0x000011ff
_0805FFA2:
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_0805FFA8: .4byte gUnknown_83A5278
_0805FFAC: .4byte 0x000011ff
_0805FFB0: .4byte gUnknown_203709A
	thumb_func_end npc_paltag_by_palslot

	thumb_func_start sub_805FFB4
sub_805FFB4: @ 805FFB4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0805FFD0 @ =gObjectEvents
	adds r0, r2
	ldr r2, _0805FFD4 @ =sub_805FFD8
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0805FFD0: .4byte gObjectEvents
_0805FFD4: .4byte sub_805FFD8
	thumb_func_end sub_805FFB4

	thumb_func_start sub_805FFD8
sub_805FFD8: @ 805FFD8
	movs r0, 0
	bx lr
	thumb_func_end sub_805FFD8

	thumb_func_start sub_805FFDC
sub_805FFDC: @ 805FFDC
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0805FFF8 @ =gObjectEvents
	adds r0, r2
	ldr r2, _0805FFFC @ =sub_8060000
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0805FFF8: .4byte gObjectEvents
_0805FFFC: .4byte sub_8060000
	thumb_func_end sub_805FFDC

	thumb_func_start sub_8060000
sub_8060000: @ 8060000
	push {r4,lr}
	ldr r3, _0806001C @ =gUnknown_83A6018
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806001C: .4byte gUnknown_83A6018
	thumb_func_end sub_8060000

	thumb_func_start sub_8060020
sub_8060020: @ 8060020
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0806003C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08060040 @ =sub_8060044
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0806003C: .4byte gObjectEvents
_08060040: .4byte sub_8060044
	thumb_func_end sub_8060020

	thumb_func_start sub_8060044
sub_8060044: @ 8060044
	push {r4,lr}
	ldr r3, _08060060 @ =gUnknown_83A6034
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08060060: .4byte gUnknown_83A6034
	thumb_func_end sub_8060044

	thumb_func_start sub_8060064
sub_8060064: @ 8060064
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060064

	thumb_func_start sub_8060078
sub_8060078: @ 8060078
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060078

	thumb_func_start sub_80600A4
sub_80600A4: @ 80600A4
	push {r4-r6,lr}
	adds r6, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _080600D8
	ldr r5, _080600D4 @ =gUnknown_83A6000
	bl Random
	movs r4, 0x3
	adds r1, r4, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r5
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r6, 0
	bl SetObjectEventStepTimer
	strh r4, [r6, 0x30]
	movs r0, 0x1
	b _080600DA
	.align 2, 0
_080600D4: .4byte gUnknown_83A6000
_080600D8:
	movs r0, 0
_080600DA:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_80600A4

	thumb_func_start sub_80600E0
sub_80600E0: @ 80600E0
	push {r4,lr}
	adds r4, r1, 0
	adds r0, r4, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _080600F4
	movs r0, 0
	b _080600FA
_080600F4:
	movs r0, 0x4
	strh r0, [r4, 0x30]
	movs r0, 0x1
_080600FA:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80600E0

	thumb_func_start sub_8060100
sub_8060100: @ 8060100
	push {r4-r6,lr}
	sub sp, 0x4
	adds r5, r0, 0
	adds r6, r1, 0
	ldr r1, _08060148 @ =gUnknown_83A6050
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	bl Random
	movs r1, 0x3
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r4, [r0]
	adds r0, r5, 0
	adds r1, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x5
	strh r0, [r6, 0x30]
	adds r0, r5, 0
	adds r1, r4, 0
	bl npc_block_way__next_tile
	lsls r0, 24
	cmp r0, 0
	beq _0806013E
	movs r0, 0x1
	strh r0, [r6, 0x30]
_0806013E:
	movs r0, 0x1
	add sp, 0x4
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_08060148: .4byte gUnknown_83A6050
	thumb_func_end sub_8060100

	thumb_func_start sub_806014C
sub_806014C: @ 806014C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl sub_8063F84
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x6
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806014C

	thumb_func_start sub_806017C
sub_806017C: @ 806017C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl sub_8063F2C
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x6
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806017C

	thumb_func_start sub_80601AC
sub_80601AC: @ 80601AC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _080601CA
	ldrb r0, [r4]
	movs r1, 0x3
	negs r1, r1
	ands r1, r0
	strb r1, [r4]
	movs r0, 0x1
	strh r0, [r5, 0x30]
_080601CA:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80601AC

	thumb_func_start ObjectEventIsTrainerAndCloseToPlayer
ObjectEventIsTrainerAndCloseToPlayer: @ 80601D4
	push {r4-r7,lr}
	sub sp, 0x4
	adds r5, r0, 0
	movs r0, 0x80
	bl TestPlayerAvatarFlags
	lsls r0, 24
	cmp r0, 0
	beq _08060240
	ldrb r0, [r5, 0x7]
	cmp r0, 0x1
	beq _080601F0
	cmp r0, 0x3
	bne _08060240
_080601F0:
	mov r7, sp
	adds r7, 0x2
	mov r0, sp
	adds r1, r7, 0
	bl PlayerGetDestCoords
	ldrh r2, [r5, 0x10]
	ldrh r4, [r5, 0x12]
	ldrb r1, [r5, 0x1D]
	subs r3, r2, r1
	subs r0, r4, r1
	lsls r0, 16
	lsrs r5, r0, 16
	adds r2, r1, r2
	lsls r2, 16
	lsrs r2, 16
	adds r1, r4
	lsls r1, 16
	lsrs r6, r1, 16
	mov r0, sp
	lsls r3, 16
	asrs r3, 16
	movs r1, 0
	ldrsh r4, [r0, r1]
	cmp r3, r4
	bgt _08060240
	lsls r0, r2, 16
	asrs r0, 16
	cmp r0, r4
	blt _08060240
	lsls r0, r5, 16
	asrs r0, 16
	movs r2, 0
	ldrsh r1, [r7, r2]
	cmp r0, r1
	bgt _08060240
	lsls r0, r6, 16
	asrs r0, 16
	cmp r0, r1
	bge _08060244
_08060240:
	movs r0, 0
	b _08060246
_08060244:
	movs r0, 0x1
_08060246:
	add sp, 0x4
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end ObjectEventIsTrainerAndCloseToPlayer

	thumb_func_start GetRegularRunningPastFacingDirection
GetRegularRunningPastFacingDirection: @ 8060250
	push {r4,lr}
	lsls r0, 16
	lsrs r4, r0, 16
	lsls r1, 16
	lsrs r0, r1, 16
	lsls r2, 16
	lsls r3, 16
	cmp r2, r3
	ble _0806026E
	movs r2, 0x4
	lsls r0, r4, 16
	cmp r0, 0
	bge _08060278
	movs r2, 0x3
	b _08060278
_0806026E:
	movs r2, 0x1
	lsls r0, 16
	cmp r0, 0
	bge _08060278
	movs r2, 0x2
_08060278:
	adds r0, r2, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end GetRegularRunningPastFacingDirection

	thumb_func_start GetNorthSouthRunningPastFacingDirection
GetNorthSouthRunningPastFacingDirection: @ 8060280
	push {lr}
	movs r0, 0x1
	lsls r1, 16
	cmp r1, 0
	bge _0806028C
	movs r0, 0x2
_0806028C:
	pop {r1}
	bx r1
	thumb_func_end GetNorthSouthRunningPastFacingDirection

	thumb_func_start GetEastWestRunningPastFacingDirection
GetEastWestRunningPastFacingDirection: @ 8060290
	push {lr}
	movs r1, 0x4
	lsls r0, 16
	cmp r0, 0
	bge _0806029C
	movs r1, 0x3
_0806029C:
	adds r0, r1, 0
	pop {r1}
	bx r1
	thumb_func_end GetEastWestRunningPastFacingDirection

	thumb_func_start GetNorthEastRunningPastFacingDirection
GetNorthEastRunningPastFacingDirection: @ 80602A4
	push {r4-r7,lr}
	lsls r0, 16
	asrs r4, r0, 16
	lsls r1, 16
	asrs r5, r1, 16
	lsls r2, 16
	asrs r6, r2, 16
	lsls r3, 16
	asrs r7, r3, 16
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetRegularRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _080602E0
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetEastWestRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x4
	bne _080602FA
	b _080602F8
_080602E0:
	cmp r0, 0x4
	bne _080602FA
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetNorthSouthRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _080602FA
_080602F8:
	movs r0, 0x2
_080602FA:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetNorthEastRunningPastFacingDirection

	thumb_func_start GetNorthWestRunningPastFacingDirection
GetNorthWestRunningPastFacingDirection: @ 8060300
	push {r4-r7,lr}
	lsls r0, 16
	asrs r4, r0, 16
	lsls r1, 16
	asrs r5, r1, 16
	lsls r2, 16
	asrs r6, r2, 16
	lsls r3, 16
	asrs r7, r3, 16
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetRegularRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _0806033C
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetEastWestRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	bne _08060356
	b _08060354
_0806033C:
	cmp r0, 0x3
	bne _08060356
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetNorthSouthRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _08060356
_08060354:
	movs r0, 0x2
_08060356:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetNorthWestRunningPastFacingDirection

	thumb_func_start GetSouthEastRunningPastFacingDirection
GetSouthEastRunningPastFacingDirection: @ 806035C
	push {r4-r7,lr}
	lsls r0, 16
	asrs r4, r0, 16
	lsls r1, 16
	asrs r5, r1, 16
	lsls r2, 16
	asrs r6, r2, 16
	lsls r3, 16
	asrs r7, r3, 16
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetRegularRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x2
	bne _08060398
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetEastWestRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x4
	bne _080603B2
	b _080603B0
_08060398:
	cmp r0, 0x4
	bne _080603B2
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetNorthSouthRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x2
	bne _080603B2
_080603B0:
	movs r0, 0x1
_080603B2:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetSouthEastRunningPastFacingDirection

	thumb_func_start GetSouthWestRunningPastFacingDirection
GetSouthWestRunningPastFacingDirection: @ 80603B8
	push {r4-r7,lr}
	lsls r0, 16
	asrs r4, r0, 16
	lsls r1, 16
	asrs r5, r1, 16
	lsls r2, 16
	asrs r6, r2, 16
	lsls r3, 16
	asrs r7, r3, 16
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetRegularRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x2
	bne _080603F4
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetEastWestRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	bne _0806040E
	b _0806040C
_080603F4:
	cmp r0, 0x3
	bne _0806040E
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	adds r3, r7, 0
	bl GetNorthSouthRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x2
	bne _0806040E
_0806040C:
	movs r0, 0x1
_0806040E:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetSouthWestRunningPastFacingDirection

	thumb_func_start GetNonEastRunningPastFacingDirection
GetNonEastRunningPastFacingDirection: @ 8060414
	push {r4-r7,lr}
	lsls r0, 16
	asrs r7, r0, 16
	lsls r1, 16
	asrs r6, r1, 16
	lsls r2, 16
	asrs r5, r2, 16
	lsls r3, 16
	asrs r4, r3, 16
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl GetRegularRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x4
	bne _0806044A
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl GetNorthSouthRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
_0806044A:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetNonEastRunningPastFacingDirection

	thumb_func_start GetNonWestRunningPastFacingDirection
GetNonWestRunningPastFacingDirection: @ 8060450
	push {r4-r7,lr}
	lsls r0, 16
	asrs r7, r0, 16
	lsls r1, 16
	asrs r6, r1, 16
	lsls r2, 16
	asrs r5, r2, 16
	lsls r3, 16
	asrs r4, r3, 16
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl GetRegularRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x3
	bne _08060486
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl GetNorthSouthRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
_08060486:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetNonWestRunningPastFacingDirection

	thumb_func_start GetNonSouthRunningPastFacingDirection
GetNonSouthRunningPastFacingDirection: @ 806048C
	push {r4-r7,lr}
	lsls r0, 16
	asrs r7, r0, 16
	lsls r1, 16
	asrs r6, r1, 16
	lsls r2, 16
	asrs r5, r2, 16
	lsls r3, 16
	asrs r4, r3, 16
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl GetRegularRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _080604C2
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl GetEastWestRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
_080604C2:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetNonSouthRunningPastFacingDirection

	thumb_func_start GetNonNorthRunningPastFacingDirection
GetNonNorthRunningPastFacingDirection: @ 80604C8
	push {r4-r7,lr}
	lsls r0, 16
	asrs r7, r0, 16
	lsls r1, 16
	asrs r6, r1, 16
	lsls r2, 16
	asrs r5, r2, 16
	lsls r3, 16
	asrs r4, r3, 16
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl GetRegularRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x2
	bne _080604FE
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	adds r3, r4, 0
	bl GetEastWestRunningPastFacingDirection
	lsls r0, 24
	lsrs r0, 24
_080604FE:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end GetNonNorthRunningPastFacingDirection

	thumb_func_start GetRunningPastFacingDirection
GetRunningPastFacingDirection: @ 8060504
	push {r4-r6,lr}
	sub sp, 0x4
	adds r4, r0, 0
	lsls r1, 24
	lsrs r6, r1, 24
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	bne _0806051C
	movs r0, 0
	b _08060580
_0806051C:
	mov r5, sp
	adds r5, 0x2
	mov r0, sp
	adds r1, r5, 0
	bl PlayerGetDestCoords
	mov r2, sp
	mov r0, sp
	ldrh r0, [r0]
	ldrh r1, [r4, 0x10]
	subs r0, r1
	strh r0, [r2]
	ldrh r0, [r5]
	ldrh r1, [r4, 0x12]
	subs r0, r1
	strh r0, [r5]
	mov r0, sp
	ldrh r3, [r5]
	ldrh r2, [r0]
	movs r1, 0
	ldrsh r0, [r0, r1]
	cmp r0, 0
	bge _08060550
	negs r0, r0
	lsls r0, 16
	lsrs r2, r0, 16
_08060550:
	lsls r0, r3, 16
	asrs r0, 16
	cmp r0, 0
	bge _0806055E
	negs r0, r0
	lsls r0, 16
	lsrs r3, r0, 16
_0806055E:
	ldr r0, _08060588 @ =gUnknown_83A6054
	lsls r4, r6, 2
	adds r4, r0
	mov r0, sp
	movs r6, 0
	ldrsh r0, [r0, r6]
	movs r6, 0
	ldrsh r1, [r5, r6]
	lsls r2, 16
	asrs r2, 16
	lsls r3, 16
	asrs r3, 16
	ldr r4, [r4]
	bl _call_via_r4
	lsls r0, 24
	lsrs r0, 24
_08060580:
	add sp, 0x4
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_08060588: .4byte gUnknown_83A6054
	thumb_func_end GetRunningPastFacingDirection

	thumb_func_start sub_806058C
sub_806058C: @ 806058C
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080605A8 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080605AC @ =sub_80605B0
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080605A8: .4byte gObjectEvents
_080605AC: .4byte sub_80605B0
	thumb_func_end sub_806058C

	thumb_func_start sub_80605B0
sub_80605B0: @ 80605B0
	push {r4,lr}
	ldr r3, _080605CC @ =gUnknown_83A6080
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080605CC: .4byte gUnknown_83A6080
	thumb_func_end sub_80605B0

	thumb_func_start sub_80605D0
sub_80605D0: @ 80605D0
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80605D0

	thumb_func_start sub_80605E4
sub_80605E4: @ 80605E4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80605E4

	thumb_func_start sub_8060610
sub_8060610: @ 8060610
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08060646
	ldr r4, _08060650 @ =gUnknown_83A6000
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_08060646:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08060650: .4byte gUnknown_83A6000
	thumb_func_end sub_8060610

	thumb_func_start sub_8060654
sub_8060654: @ 8060654
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _08060672
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _0806067A
_08060672:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _0806067C
_0806067A:
	movs r0, 0
_0806067C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060654

	thumb_func_start sub_8060684
sub_8060684: @ 8060684
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080606C8 @ =gUnknown_83A6050
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r0, r4, 0
	movs r1, 0
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _080606B4
	bl Random
	movs r1, 0x3
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_080606B4:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080606C8: .4byte gUnknown_83A6050
	thumb_func_end sub_8060684

	thumb_func_start sub_80606CC
sub_80606CC: @ 80606CC
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080606E8 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080606EC @ =sub_80606F0
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080606E8: .4byte gObjectEvents
_080606EC: .4byte sub_80606F0
	thumb_func_end sub_80606CC

	thumb_func_start sub_80606F0
sub_80606F0: @ 80606F0
	push {r4,lr}
	ldr r3, _0806070C @ =gUnknown_83A6094
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806070C: .4byte gUnknown_83A6094
	thumb_func_end sub_80606F0

	thumb_func_start sub_8060710
sub_8060710: @ 8060710
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060710

	thumb_func_start sub_8060724
sub_8060724: @ 8060724
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060724

	thumb_func_start sub_8060750
sub_8060750: @ 8060750
	push {r4-r6,lr}
	adds r6, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08060784
	ldr r5, _08060780 @ =gUnknown_83A6000
	bl Random
	movs r4, 0x3
	adds r1, r4, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r5
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r6, 0
	bl SetObjectEventStepTimer
	strh r4, [r6, 0x30]
	movs r0, 0x1
	b _08060786
	.align 2, 0
_08060780: .4byte gUnknown_83A6000
_08060784:
	movs r0, 0
_08060786:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_8060750

	thumb_func_start sub_806078C
sub_806078C: @ 806078C
	push {r4,lr}
	adds r4, r1, 0
	adds r0, r4, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _080607A0
	movs r0, 0
	b _080607A6
_080607A0:
	movs r0, 0x4
	strh r0, [r4, 0x30]
	movs r0, 0x1
_080607A6:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806078C

	thumb_func_start sub_80607AC
sub_80607AC: @ 80607AC
	push {r4-r7,lr}
	sub sp, 0x4
	adds r5, r0, 0
	adds r6, r1, 0
	ldr r1, _080607F4 @ =gUnknown_83A60B0
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	bl Random
	movs r7, 0x1
	adds r1, r7, 0
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r4, [r0]
	adds r0, r5, 0
	adds r1, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x5
	strh r0, [r6, 0x30]
	adds r0, r5, 0
	adds r1, r4, 0
	bl npc_block_way__next_tile
	lsls r0, 24
	cmp r0, 0
	beq _080607EA
	strh r7, [r6, 0x30]
_080607EA:
	movs r0, 0x1
	add sp, 0x4
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_080607F4: .4byte gUnknown_83A60B0
	thumb_func_end sub_80607AC

	thumb_func_start sub_80607F8
sub_80607F8: @ 80607F8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl sub_8063F84
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x6
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80607F8

	thumb_func_start sub_8060828
sub_8060828: @ 8060828
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08060846
	ldrb r0, [r4]
	movs r1, 0x3
	negs r1, r1
	ands r1, r0
	strb r1, [r4]
	movs r0, 0x1
	strh r0, [r5, 0x30]
_08060846:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060828

	thumb_func_start sub_8060850
sub_8060850: @ 8060850
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0806086C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08060870 @ =sub_8060874
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0806086C: .4byte gObjectEvents
_08060870: .4byte sub_8060874
	thumb_func_end sub_8060850

	thumb_func_start sub_8060874
sub_8060874: @ 8060874
	push {r4,lr}
	ldr r3, _08060890 @ =gUnknown_83A60B4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08060890: .4byte gUnknown_83A60B4
	thumb_func_end sub_8060874

	thumb_func_start sub_8060894
sub_8060894: @ 8060894
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060894

	thumb_func_start sub_80608A8
sub_80608A8: @ 80608A8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80608A8

	thumb_func_start sub_80608D4
sub_80608D4: @ 80608D4
	push {r4-r6,lr}
	adds r6, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08060908
	ldr r5, _08060904 @ =gUnknown_83A6000
	bl Random
	movs r4, 0x3
	adds r1, r4, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r5
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r6, 0
	bl SetObjectEventStepTimer
	strh r4, [r6, 0x30]
	movs r0, 0x1
	b _0806090A
	.align 2, 0
_08060904: .4byte gUnknown_83A6000
_08060908:
	movs r0, 0
_0806090A:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_80608D4

	thumb_func_start sub_8060910
sub_8060910: @ 8060910
	push {r4,lr}
	adds r4, r1, 0
	adds r0, r4, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _08060924
	movs r0, 0
	b _0806092A
_08060924:
	movs r0, 0x4
	strh r0, [r4, 0x30]
	movs r0, 0x1
_0806092A:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060910

	thumb_func_start sub_8060930
sub_8060930: @ 8060930
	push {r4-r7,lr}
	sub sp, 0x4
	adds r5, r0, 0
	adds r6, r1, 0
	ldr r1, _08060978 @ =gUnknown_83A60D0
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	bl Random
	movs r7, 0x1
	adds r1, r7, 0
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r4, [r0]
	adds r0, r5, 0
	adds r1, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x5
	strh r0, [r6, 0x30]
	adds r0, r5, 0
	adds r1, r4, 0
	bl npc_block_way__next_tile
	lsls r0, 24
	cmp r0, 0
	beq _0806096E
	strh r7, [r6, 0x30]
_0806096E:
	movs r0, 0x1
	add sp, 0x4
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08060978: .4byte gUnknown_83A60D0
	thumb_func_end sub_8060930

	thumb_func_start sub_806097C
sub_806097C: @ 806097C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl sub_8063F84
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x6
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806097C

	thumb_func_start sub_80609AC
sub_80609AC: @ 80609AC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _080609CA
	ldrb r0, [r4]
	movs r1, 0x3
	negs r1, r1
	ands r1, r0
	strb r1, [r4]
	movs r0, 0x1
	strh r0, [r5, 0x30]
_080609CA:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80609AC

	thumb_func_start sub_80609D4
sub_80609D4: @ 80609D4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080609F0 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080609F4 @ =sub_80609F8
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080609F0: .4byte gObjectEvents
_080609F4: .4byte sub_80609F8
	thumb_func_end sub_80609D4

	thumb_func_start sub_80609F8
sub_80609F8: @ 80609F8
	push {r4,lr}
	ldr r3, _08060A14 @ =gUnknown_83A60D4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08060A14: .4byte gUnknown_83A60D4
	thumb_func_end sub_80609F8

	thumb_func_start sub_8060A18
sub_8060A18: @ 8060A18
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl npc_reset
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r5, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060A18

	thumb_func_start sub_8060A44
sub_8060A44: @ 8060A44
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	bne _08060A56
	movs r0, 0
	b _08060A5C
_08060A56:
	movs r0, 0x2
	strh r0, [r4, 0x30]
	movs r0, 0x1
_08060A5C:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060A44

	thumb_func_start sub_8060A64
sub_8060A64: @ 8060A64
	ldrb r2, [r0]
	movs r1, 0x3
	negs r1, r1
	ands r1, r2
	strb r1, [r0]
	movs r0, 0
	bx lr
	thumb_func_end sub_8060A64

	thumb_func_start sub_8060A74
sub_8060A74: @ 8060A74
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08060A90 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08060A94 @ =sub_8060A98
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08060A90: .4byte gObjectEvents
_08060A94: .4byte sub_8060A98
	thumb_func_end sub_8060A74

	thumb_func_start sub_8060A98
sub_8060A98: @ 8060A98
	push {r4,lr}
	ldr r3, _08060AB4 @ =gUnknown_83A60E0
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08060AB4: .4byte gUnknown_83A60E0
	thumb_func_end sub_8060A98

	thumb_func_start sub_8060AB8
sub_8060AB8: @ 8060AB8
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060AB8

	thumb_func_start sub_8060ACC
sub_8060ACC: @ 8060ACC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060ACC

	thumb_func_start sub_8060AF8
sub_8060AF8: @ 8060AF8
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08060B2E
	ldr r4, _08060B38 @ =gUnknown_83A6000
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_08060B2E:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08060B38: .4byte gUnknown_83A6000
	thumb_func_end sub_8060AF8

	thumb_func_start sub_8060B3C
sub_8060B3C: @ 8060B3C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _08060B5A
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _08060B62
_08060B5A:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _08060B64
_08060B62:
	movs r0, 0
_08060B64:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060B3C

	thumb_func_start sub_8060B6C
sub_8060B6C: @ 8060B6C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08060BB0 @ =gUnknown_83A60B0
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x1
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _08060B9C
	bl Random
	movs r1, 0x1
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_08060B9C:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08060BB0: .4byte gUnknown_83A60B0
	thumb_func_end sub_8060B6C

	thumb_func_start sub_8060BB4
sub_8060BB4: @ 8060BB4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08060BD0 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08060BD4 @ =sub_8060BD8
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08060BD0: .4byte gObjectEvents
_08060BD4: .4byte sub_8060BD8
	thumb_func_end sub_8060BB4

	thumb_func_start sub_8060BD8
sub_8060BD8: @ 8060BD8
	push {r4,lr}
	ldr r3, _08060BF4 @ =gUnknown_83A60F4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08060BF4: .4byte gUnknown_83A60F4
	thumb_func_end sub_8060BD8

	thumb_func_start sub_8060BF8
sub_8060BF8: @ 8060BF8
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060BF8

	thumb_func_start sub_8060C0C
sub_8060C0C: @ 8060C0C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060C0C

	thumb_func_start sub_8060C38
sub_8060C38: @ 8060C38
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08060C6E
	ldr r4, _08060C78 @ =gUnknown_83A6000
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_08060C6E:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08060C78: .4byte gUnknown_83A6000
	thumb_func_end sub_8060C38

	thumb_func_start sub_8060C7C
sub_8060C7C: @ 8060C7C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _08060C9A
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _08060CA2
_08060C9A:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _08060CA4
_08060CA2:
	movs r0, 0
_08060CA4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060C7C

	thumb_func_start sub_8060CAC
sub_8060CAC: @ 8060CAC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08060CF0 @ =gUnknown_83A60D0
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x2
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _08060CDC
	bl Random
	movs r1, 0x1
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_08060CDC:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08060CF0: .4byte gUnknown_83A60D0
	thumb_func_end sub_8060CAC

	thumb_func_start sub_8060CF4
sub_8060CF4: @ 8060CF4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08060D10 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08060D14 @ =sub_8060D18
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08060D10: .4byte gObjectEvents
_08060D14: .4byte sub_8060D18
	thumb_func_end sub_8060CF4

	thumb_func_start sub_8060D18
sub_8060D18: @ 8060D18
	push {r4,lr}
	ldr r3, _08060D34 @ =gUnknown_83A6108
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08060D34: .4byte gUnknown_83A6108
	thumb_func_end sub_8060D18

	thumb_func_start sub_8060D38
sub_8060D38: @ 8060D38
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060D38

	thumb_func_start sub_8060D4C
sub_8060D4C: @ 8060D4C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060D4C

	thumb_func_start sub_8060D78
sub_8060D78: @ 8060D78
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08060DAE
	ldr r4, _08060DB8 @ =gUnknown_83A6010
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_08060DAE:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08060DB8: .4byte gUnknown_83A6010
	thumb_func_end sub_8060D78

	thumb_func_start sub_8060DBC
sub_8060DBC: @ 8060DBC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _08060DDA
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _08060DE2
_08060DDA:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _08060DE4
_08060DE2:
	movs r0, 0
_08060DE4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060DBC

	thumb_func_start sub_8060DEC
sub_8060DEC: @ 8060DEC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08060E30 @ =gUnknown_83A611C
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x3
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _08060E1C
	bl Random
	movs r1, 0x1
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_08060E1C:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08060E30: .4byte gUnknown_83A611C
	thumb_func_end sub_8060DEC

	thumb_func_start sub_8060E34
sub_8060E34: @ 8060E34
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08060E50 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08060E54 @ =sub_8060E58
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08060E50: .4byte gObjectEvents
_08060E54: .4byte sub_8060E58
	thumb_func_end sub_8060E34

	thumb_func_start sub_8060E58
sub_8060E58: @ 8060E58
	push {r4,lr}
	ldr r3, _08060E74 @ =gUnknown_83A6120
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08060E74: .4byte gUnknown_83A6120
	thumb_func_end sub_8060E58

	thumb_func_start sub_8060E78
sub_8060E78: @ 8060E78
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060E78

	thumb_func_start sub_8060E8C
sub_8060E8C: @ 8060E8C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060E8C

	thumb_func_start sub_8060EB8
sub_8060EB8: @ 8060EB8
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08060EEE
	ldr r4, _08060EF8 @ =gUnknown_83A6010
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_08060EEE:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08060EF8: .4byte gUnknown_83A6010
	thumb_func_end sub_8060EB8

	thumb_func_start sub_8060EFC
sub_8060EFC: @ 8060EFC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _08060F1A
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _08060F22
_08060F1A:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _08060F24
_08060F22:
	movs r0, 0
_08060F24:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060EFC

	thumb_func_start sub_8060F2C
sub_8060F2C: @ 8060F2C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08060F70 @ =gUnknown_83A6134
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x4
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _08060F5C
	bl Random
	movs r1, 0x1
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_08060F5C:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08060F70: .4byte gUnknown_83A6134
	thumb_func_end sub_8060F2C

	thumb_func_start sub_8060F74
sub_8060F74: @ 8060F74
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08060F90 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08060F94 @ =sub_8060F98
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08060F90: .4byte gObjectEvents
_08060F94: .4byte sub_8060F98
	thumb_func_end sub_8060F74

	thumb_func_start sub_8060F98
sub_8060F98: @ 8060F98
	push {r4,lr}
	ldr r3, _08060FB4 @ =gUnknown_83A6138
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08060FB4: .4byte gUnknown_83A6138
	thumb_func_end sub_8060F98

	thumb_func_start sub_8060FB8
sub_8060FB8: @ 8060FB8
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8060FB8

	thumb_func_start sub_8060FCC
sub_8060FCC: @ 8060FCC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8060FCC

	thumb_func_start sub_8060FF8
sub_8060FF8: @ 8060FF8
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _0806102E
	ldr r4, _08061038 @ =gUnknown_83A6010
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_0806102E:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08061038: .4byte gUnknown_83A6010
	thumb_func_end sub_8060FF8

	thumb_func_start sub_806103C
sub_806103C: @ 806103C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _0806105A
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _08061062
_0806105A:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _08061064
_08061062:
	movs r0, 0
_08061064:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806103C

	thumb_func_start sub_806106C
sub_806106C: @ 806106C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080610B0 @ =gUnknown_83A614C
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x5
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _0806109C
	bl Random
	movs r1, 0x1
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_0806109C:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080610B0: .4byte gUnknown_83A614C
	thumb_func_end sub_806106C

	thumb_func_start sub_80610B4
sub_80610B4: @ 80610B4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080610D0 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080610D4 @ =sub_80610D8
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080610D0: .4byte gObjectEvents
_080610D4: .4byte sub_80610D8
	thumb_func_end sub_80610B4

	thumb_func_start sub_80610D8
sub_80610D8: @ 80610D8
	push {r4,lr}
	ldr r3, _080610F4 @ =gUnknown_83A6150
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080610F4: .4byte gUnknown_83A6150
	thumb_func_end sub_80610D8

	thumb_func_start sub_80610F8
sub_80610F8: @ 80610F8
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80610F8

	thumb_func_start sub_806110C
sub_806110C: @ 806110C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806110C

	thumb_func_start sub_8061138
sub_8061138: @ 8061138
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _0806116E
	ldr r4, _08061178 @ =gUnknown_83A6010
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_0806116E:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08061178: .4byte gUnknown_83A6010
	thumb_func_end sub_8061138

	thumb_func_start sub_806117C
sub_806117C: @ 806117C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _0806119A
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _080611A2
_0806119A:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _080611A4
_080611A2:
	movs r0, 0
_080611A4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806117C

	thumb_func_start sub_80611AC
sub_80611AC: @ 80611AC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080611F0 @ =gUnknown_83A6164
	mov r0, sp
	movs r2, 0x2
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x6
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _080611DC
	bl Random
	movs r1, 0x1
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_080611DC:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080611F0: .4byte gUnknown_83A6164
	thumb_func_end sub_80611AC

	thumb_func_start sub_80611F4
sub_80611F4: @ 80611F4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061210 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061214 @ =sub_8061218
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061210: .4byte gObjectEvents
_08061214: .4byte sub_8061218
	thumb_func_end sub_80611F4

	thumb_func_start sub_8061218
sub_8061218: @ 8061218
	push {r4,lr}
	ldr r3, _08061234 @ =gUnknown_83A6168
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061234: .4byte gUnknown_83A6168
	thumb_func_end sub_8061218

	thumb_func_start sub_8061238
sub_8061238: @ 8061238
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8061238

	thumb_func_start sub_806124C
sub_806124C: @ 806124C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806124C

	thumb_func_start sub_8061278
sub_8061278: @ 8061278
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _080612AE
	ldr r4, _080612B8 @ =gUnknown_83A6010
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_080612AE:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_080612B8: .4byte gUnknown_83A6010
	thumb_func_end sub_8061278

	thumb_func_start sub_80612BC
sub_80612BC: @ 80612BC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _080612DA
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _080612E2
_080612DA:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _080612E4
_080612E2:
	movs r0, 0
_080612E4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80612BC

	thumb_func_start sub_80612EC
sub_80612EC: @ 80612EC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061330 @ =gUnknown_83A617C
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x7
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _0806131C
	bl Random
	movs r1, 0x3
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_0806131C:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061330: .4byte gUnknown_83A617C
	thumb_func_end sub_80612EC

	thumb_func_start sub_8061334
sub_8061334: @ 8061334
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061350 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061354 @ =sub_8061358
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061350: .4byte gObjectEvents
_08061354: .4byte sub_8061358
	thumb_func_end sub_8061334

	thumb_func_start sub_8061358
sub_8061358: @ 8061358
	push {r4,lr}
	ldr r3, _08061374 @ =gUnknown_83A6180
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061374: .4byte gUnknown_83A6180
	thumb_func_end sub_8061358

	thumb_func_start sub_8061378
sub_8061378: @ 8061378
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8061378

	thumb_func_start sub_806138C
sub_806138C: @ 806138C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806138C

	thumb_func_start sub_80613B8
sub_80613B8: @ 80613B8
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _080613EE
	ldr r4, _080613F8 @ =gUnknown_83A6010
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_080613EE:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_080613F8: .4byte gUnknown_83A6010
	thumb_func_end sub_80613B8

	thumb_func_start sub_80613FC
sub_80613FC: @ 80613FC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _0806141A
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _08061422
_0806141A:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _08061424
_08061422:
	movs r0, 0
_08061424:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80613FC

	thumb_func_start sub_806142C
sub_806142C: @ 806142C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061470 @ =gUnknown_83A6194
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x8
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _0806145C
	bl Random
	movs r1, 0x3
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_0806145C:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061470: .4byte gUnknown_83A6194
	thumb_func_end sub_806142C

	thumb_func_start sub_8061474
sub_8061474: @ 8061474
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061490 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061494 @ =sub_8061498
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061490: .4byte gObjectEvents
_08061494: .4byte sub_8061498
	thumb_func_end sub_8061474

	thumb_func_start sub_8061498
sub_8061498: @ 8061498
	push {r4,lr}
	ldr r3, _080614B4 @ =gUnknown_83A6198
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080614B4: .4byte gUnknown_83A6198
	thumb_func_end sub_8061498

	thumb_func_start sub_80614B8
sub_80614B8: @ 80614B8
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80614B8

	thumb_func_start sub_80614CC
sub_80614CC: @ 80614CC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80614CC

	thumb_func_start sub_80614F8
sub_80614F8: @ 80614F8
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _0806152E
	ldr r4, _08061538 @ =gUnknown_83A6010
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_0806152E:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08061538: .4byte gUnknown_83A6010
	thumb_func_end sub_80614F8

	thumb_func_start sub_806153C
sub_806153C: @ 806153C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _0806155A
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _08061562
_0806155A:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _08061564
_08061562:
	movs r0, 0
_08061564:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806153C

	thumb_func_start sub_806156C
sub_806156C: @ 806156C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080615B0 @ =gUnknown_83A61AC
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r0, r4, 0
	movs r1, 0x9
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _0806159C
	bl Random
	movs r1, 0x3
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_0806159C:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080615B0: .4byte gUnknown_83A61AC
	thumb_func_end sub_806156C

	thumb_func_start sub_80615B4
sub_80615B4: @ 80615B4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080615D0 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080615D4 @ =sub_80615D8
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080615D0: .4byte gObjectEvents
_080615D4: .4byte sub_80615D8
	thumb_func_end sub_80615B4

	thumb_func_start sub_80615D8
sub_80615D8: @ 80615D8
	push {r4,lr}
	ldr r3, _080615F4 @ =gUnknown_83A61B0
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080615F4: .4byte gUnknown_83A61B0
	thumb_func_end sub_80615D8

	thumb_func_start sub_80615F8
sub_80615F8: @ 80615F8
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80615F8

	thumb_func_start sub_806160C
sub_806160C: @ 806160C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806160C

	thumb_func_start sub_8061638
sub_8061638: @ 8061638
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _0806166E
	ldr r4, _08061678 @ =gUnknown_83A6010
	bl Random
	movs r5, 0x3
	adds r1, r5, 0
	ands r1, r0
	lsls r1, 1
	adds r1, r4
	movs r0, 0
	ldrsh r1, [r1, r0]
	adds r0, r7, 0
	bl SetObjectEventStepTimer
	ldrb r1, [r6]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r6]
	strh r5, [r7, 0x30]
_0806166E:
	movs r0, 0
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08061678: .4byte gUnknown_83A6010
	thumb_func_end sub_8061638

	thumb_func_start sub_806167C
sub_806167C: @ 806167C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _0806169A
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _080616A2
_0806169A:
	movs r0, 0x4
	strh r0, [r5, 0x30]
	movs r0, 0x1
	b _080616A4
_080616A2:
	movs r0, 0
_080616A4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806167C

	thumb_func_start sub_80616AC
sub_80616AC: @ 80616AC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080616F0 @ =gUnknown_83A61C4
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r0, r4, 0
	movs r1, 0xA
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _080616DC
	bl Random
	movs r1, 0x3
	ands r1, r0
	mov r2, sp
	adds r0, r2, r1
	ldrb r1, [r0]
_080616DC:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x30]
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080616F0: .4byte gUnknown_83A61C4
	thumb_func_end sub_80616AC

	thumb_func_start sub_80616F4
sub_80616F4: @ 80616F4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061710 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061714 @ =sub_8061718
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061710: .4byte gObjectEvents
_08061714: .4byte sub_8061718
	thumb_func_end sub_80616F4

	thumb_func_start sub_8061718
sub_8061718: @ 8061718
	push {r4,lr}
	ldr r3, _08061734 @ =gUnknown_83A61C8
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061734: .4byte gUnknown_83A61C8
	thumb_func_end sub_8061718

	thumb_func_start sub_8061738
sub_8061738: @ 8061738
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl npc_reset
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r5, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8061738

	thumb_func_start sub_8061764
sub_8061764: @ 8061764
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _0806177E
	adds r0, r4, 0
	movs r1, 0x30
	bl SetObjectEventStepTimer
	movs r0, 0x2
	strh r0, [r4, 0x30]
_0806177E:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8061764

	thumb_func_start sub_8061788
sub_8061788: @ 8061788
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _080617A6
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _080617AA
_080617A6:
	movs r0, 0x3
	strh r0, [r5, 0x30]
_080617AA:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8061788

	thumb_func_start sub_80617B4
sub_80617B4: @ 80617B4
	push {r4,r5,lr}
	sub sp, 0x8
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080617F4 @ =gUnknown_83A61D8
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	adds r0, r4, 0
	movs r1, 0
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _080617E0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	add r0, sp
	ldrb r1, [r0]
_080617E0:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0
	strh r0, [r5, 0x30]
	movs r0, 0x1
	add sp, 0x8
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080617F4: .4byte gUnknown_83A61D8
	thumb_func_end sub_80617B4

	thumb_func_start sub_80617F8
sub_80617F8: @ 80617F8
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061814 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061818 @ =sub_806181C
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061814: .4byte gObjectEvents
_08061818: .4byte sub_806181C
	thumb_func_end sub_80617F8

	thumb_func_start sub_806181C
sub_806181C: @ 806181C
	push {r4,lr}
	ldr r3, _08061838 @ =gUnknown_83A61E0
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061838: .4byte gUnknown_83A61E0
	thumb_func_end sub_806181C

	thumb_func_start sub_806183C
sub_806183C: @ 806183C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl npc_reset
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r5, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806183C

	thumb_func_start sub_8061868
sub_8061868: @ 8061868
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08061882
	adds r0, r4, 0
	movs r1, 0x30
	bl SetObjectEventStepTimer
	movs r0, 0x2
	strh r0, [r4, 0x30]
_08061882:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8061868

	thumb_func_start sub_806188C
sub_806188C: @ 806188C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	bne _080618AA
	adds r0, r4, 0
	bl ObjectEventIsTrainerAndCloseToPlayer
	lsls r0, 24
	cmp r0, 0
	beq _080618AE
_080618AA:
	movs r0, 0x3
	strh r0, [r5, 0x30]
_080618AE:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806188C

	thumb_func_start sub_80618B8
sub_80618B8: @ 80618B8
	push {r4,r5,lr}
	sub sp, 0x8
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080618F8 @ =gUnknown_83A61F0
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	adds r0, r4, 0
	movs r1, 0
	bl GetRunningPastFacingDirection
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0
	bne _080618E4
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	add r0, sp
	ldrb r1, [r0]
_080618E4:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0
	strh r0, [r5, 0x30]
	movs r0, 0x1
	add sp, 0x8
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080618F8: .4byte gUnknown_83A61F0
	thumb_func_end sub_80618B8

	thumb_func_start sub_80618FC
sub_80618FC: @ 80618FC
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061918 @ =gObjectEvents
	adds r0, r2
	ldr r2, _0806191C @ =sub_8061920
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061918: .4byte gObjectEvents
_0806191C: .4byte sub_8061920
	thumb_func_end sub_80618FC

	thumb_func_start sub_8061920
sub_8061920: @ 8061920
	push {r4,lr}
	ldr r3, _0806193C @ =gUnknown_83A61F8
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806193C: .4byte gUnknown_83A61F8
	thumb_func_end sub_8061920

	thumb_func_start sub_8061940
sub_8061940: @ 8061940
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8061940

	thumb_func_start sub_8061954
sub_8061954: @ 8061954
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r0, _08061988 @ =gInitialMovementTypeFacingDirections
	ldrb r1, [r4, 0x6]
	adds r1, r0
	ldrb r1, [r1]
	adds r0, r4, 0
	adds r0, 0x21
	ldrb r0, [r0]
	cmp r0, 0
	beq _08061976
	adds r0, r1, 0
	bl GetOppositeDirection
	lsls r0, 24
	lsrs r1, r0, 24
_08061976:
	adds r0, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061988: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end sub_8061954

	thumb_func_start sub_806198C
sub_806198C: @ 806198C
	push {r4-r7,lr}
	adds r4, r0, 0
	adds r7, r1, 0
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0
	beq _080619BC
	ldr r1, [r4, 0xC]
	ldr r0, [r4, 0x10]
	cmp r1, r0
	bne _080619BC
	movs r0, 0
	strb r0, [r2]
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl GetOppositeDirection
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl ObjectEventSetDirection
_080619BC:
	ldrb r1, [r4, 0x18]
	lsrs r1, 4
	adds r0, r4, 0
	bl npc_block_way__next_tile
	lsls r0, 24
	lsrs r5, r0, 24
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl sub_8063F84
	lsls r0, 24
	lsrs r6, r0, 24
	cmp r5, 0x1
	bne _08061A12
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r0, [r1]
	adds r0, 0x1
	strb r0, [r1]
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl GetOppositeDirection
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl ObjectEventSetDirection
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl sub_8063F84
	lsls r0, 24
	lsrs r6, r0, 24
	ldrb r1, [r4, 0x18]
	lsrs r1, 4
	adds r0, r4, 0
	bl npc_block_way__next_tile
	lsls r0, 24
	lsrs r5, r0, 24
_08061A12:
	cmp r5, 0
	beq _08061A24
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl GetStepInPlaceDelay16AnimId
	lsls r0, 24
	lsrs r6, r0, 24
_08061A24:
	adds r0, r4, 0
	adds r1, r7, 0
	adds r2, r6, 0
	bl sub_80645C8
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x3
	strh r0, [r7, 0x30]
	movs r0, 0x1
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_806198C

	thumb_func_start sub_8061A44
sub_8061A44: @ 8061A44
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08061A62
	ldrb r0, [r4]
	movs r1, 0x3
	negs r1, r1
	ands r1, r0
	strb r1, [r4]
	movs r0, 0x1
	strh r0, [r5, 0x30]
_08061A62:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8061A44

	thumb_func_start sub_8061A6C
sub_8061A6C: @ 8061A6C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_reset
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8061A6C

	thumb_func_start MoveObjectEventInNextDirectionInSequence
MoveObjectEventInNextDirectionInSequence: @ 8061A80
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	adds r4, r0, 0
	mov r8, r1
	adds r7, r2, 0
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x3
	bne _08061AA2
	ldr r1, [r4, 0xC]
	ldr r0, [r4, 0x10]
	cmp r1, r0
	bne _08061AA2
	movs r0, 0
	strb r0, [r2]
_08061AA2:
	adds r5, r4, 0
	adds r5, 0x21
	ldrb r0, [r5]
	adds r0, r7, r0
	ldrb r1, [r0]
	adds r0, r4, 0
	bl ObjectEventSetDirection
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl sub_8063F84
	lsls r0, 24
	lsrs r6, r0, 24
	ldrb r1, [r4, 0x18]
	lsrs r1, 4
	adds r0, r4, 0
	bl npc_block_way__next_tile
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _08061AFC
	ldrb r0, [r5]
	adds r0, 0x1
	strb r0, [r5]
	ldrb r0, [r5]
	adds r0, r7, r0
	ldrb r1, [r0]
	adds r0, r4, 0
	bl ObjectEventSetDirection
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl sub_8063F84
	lsls r0, 24
	lsrs r6, r0, 24
	ldrb r1, [r4, 0x18]
	lsrs r1, 4
	adds r0, r4, 0
	bl npc_block_way__next_tile
	lsls r0, 24
	lsrs r0, 24
_08061AFC:
	cmp r0, 0
	beq _08061B0E
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl GetStepInPlaceDelay16AnimId
	lsls r0, 24
	lsrs r6, r0, 24
_08061B0E:
	adds r0, r4, 0
	mov r1, r8
	adds r2, r6, 0
	bl sub_80645C8
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	mov r1, r8
	strh r0, [r1, 0x30]
	movs r0, 0x1
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end MoveObjectEventInNextDirectionInSequence

	thumb_func_start sub_8061B34
sub_8061B34: @ 8061B34
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08061B52
	ldrb r0, [r4]
	movs r1, 0x3
	negs r1, r1
	ands r1, r0
	strb r1, [r4]
	movs r0, 0x1
	strh r0, [r5, 0x30]
_08061B52:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8061B34

	thumb_func_start sub_8061B5C
sub_8061B5C: @ 8061B5C
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061B78 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061B7C @ =sub_8061B80
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061B78: .4byte gObjectEvents
_08061B7C: .4byte sub_8061B80
	thumb_func_end sub_8061B5C

	thumb_func_start sub_8061B80
sub_8061B80: @ 8061B80
	push {r4,lr}
	ldr r3, _08061B9C @ =gUnknown_83A6208
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061B9C: .4byte gUnknown_83A6208
	thumb_func_end sub_8061B80

	thumb_func_start sub_8061BA0
sub_8061BA0: @ 8061BA0
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061BE4 @ =gUnknown_83A6214
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08061BCC
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08061BCC
	movs r0, 0x3
	strb r0, [r2]
_08061BCC:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061BE4: .4byte gUnknown_83A6214
	thumb_func_end sub_8061BA0

	thumb_func_start sub_8061BE8
sub_8061BE8: @ 8061BE8
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061C04 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061C08 @ =sub_8061C0C
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061C04: .4byte gObjectEvents
_08061C08: .4byte sub_8061C0C
	thumb_func_end sub_8061BE8

	thumb_func_start sub_8061C0C
sub_8061C0C: @ 8061C0C
	push {r4,lr}
	ldr r3, _08061C28 @ =gUnknown_83A6218
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061C28: .4byte gUnknown_83A6218
	thumb_func_end sub_8061C0C

	thumb_func_start sub_8061C2C
sub_8061C2C: @ 8061C2C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061C70 @ =gUnknown_83A6224
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _08061C58
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08061C58
	movs r0, 0x2
	strb r0, [r2]
_08061C58:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061C70: .4byte gUnknown_83A6224
	thumb_func_end sub_8061C2C

	thumb_func_start sub_8061C74
sub_8061C74: @ 8061C74
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061C90 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061C94 @ =sub_8061C98
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061C90: .4byte gObjectEvents
_08061C94: .4byte sub_8061C98
	thumb_func_end sub_8061C74

	thumb_func_start sub_8061C98
sub_8061C98: @ 8061C98
	push {r4,lr}
	ldr r3, _08061CB4 @ =gUnknown_83A6228
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061CB4: .4byte gUnknown_83A6228
	thumb_func_end sub_8061C98

	thumb_func_start sub_8061CB8
sub_8061CB8: @ 8061CB8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061CFC @ =gUnknown_83A6234
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _08061CE4
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08061CE4
	movs r0, 0x2
	strb r0, [r2]
_08061CE4:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061CFC: .4byte gUnknown_83A6234
	thumb_func_end sub_8061CB8

	thumb_func_start sub_8061D00
sub_8061D00: @ 8061D00
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061D1C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061D20 @ =sub_8061D24
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061D1C: .4byte gObjectEvents
_08061D20: .4byte sub_8061D24
	thumb_func_end sub_8061D00

	thumb_func_start sub_8061D24
sub_8061D24: @ 8061D24
	push {r4,lr}
	ldr r3, _08061D40 @ =gUnknown_83A6238
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061D40: .4byte gUnknown_83A6238
	thumb_func_end sub_8061D24

	thumb_func_start sub_8061D44
sub_8061D44: @ 8061D44
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061D88 @ =gUnknown_83A6244
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08061D70
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08061D70
	movs r0, 0x3
	strb r0, [r2]
_08061D70:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061D88: .4byte gUnknown_83A6244
	thumb_func_end sub_8061D44

	thumb_func_start sub_8061D8C
sub_8061D8C: @ 8061D8C
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061DA8 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061DAC @ =sub_8061DB0
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061DA8: .4byte gObjectEvents
_08061DAC: .4byte sub_8061DB0
	thumb_func_end sub_8061D8C

	thumb_func_start sub_8061DB0
sub_8061DB0: @ 8061DB0
	push {r4,lr}
	ldr r3, _08061DCC @ =gUnknown_83A6248
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061DCC: .4byte gUnknown_83A6248
	thumb_func_end sub_8061DB0

	thumb_func_start sub_8061DD0
sub_8061DD0: @ 8061DD0
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061E14 @ =gUnknown_83A6254
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08061DFC
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08061DFC
	movs r0, 0x3
	strb r0, [r2]
_08061DFC:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061E14: .4byte gUnknown_83A6254
	thumb_func_end sub_8061DD0

	thumb_func_start sub_8061E18
sub_8061E18: @ 8061E18
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061E34 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061E38 @ =sub_8061E3C
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061E34: .4byte gObjectEvents
_08061E38: .4byte sub_8061E3C
	thumb_func_end sub_8061E18

	thumb_func_start sub_8061E3C
sub_8061E3C: @ 8061E3C
	push {r4,lr}
	ldr r3, _08061E58 @ =gUnknown_83A6258
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061E58: .4byte gUnknown_83A6258
	thumb_func_end sub_8061E3C

	thumb_func_start sub_8061E5C
sub_8061E5C: @ 8061E5C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061EA0 @ =gUnknown_83A6264
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _08061E88
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08061E88
	movs r0, 0x2
	strb r0, [r2]
_08061E88:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061EA0: .4byte gUnknown_83A6264
	thumb_func_end sub_8061E5C

	thumb_func_start sub_8061EA4
sub_8061EA4: @ 8061EA4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061EC0 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061EC4 @ =sub_8061EC8
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061EC0: .4byte gObjectEvents
_08061EC4: .4byte sub_8061EC8
	thumb_func_end sub_8061EA4

	thumb_func_start sub_8061EC8
sub_8061EC8: @ 8061EC8
	push {r4,lr}
	ldr r3, _08061EE4 @ =gUnknown_83A6268
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061EE4: .4byte gUnknown_83A6268
	thumb_func_end sub_8061EC8

	thumb_func_start sub_8061EE8
sub_8061EE8: @ 8061EE8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061F2C @ =gUnknown_83A6050
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _08061F14
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08061F14
	movs r0, 0x2
	strb r0, [r2]
_08061F14:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061F2C: .4byte gUnknown_83A6050
	thumb_func_end sub_8061EE8

	thumb_func_start sub_8061F30
sub_8061F30: @ 8061F30
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061F4C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061F50 @ =sub_8061F54
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061F4C: .4byte gObjectEvents
_08061F50: .4byte sub_8061F54
	thumb_func_end sub_8061F30

	thumb_func_start sub_8061F54
sub_8061F54: @ 8061F54
	push {r4,lr}
	ldr r3, _08061F70 @ =gUnknown_83A6274
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061F70: .4byte gUnknown_83A6274
	thumb_func_end sub_8061F54

	thumb_func_start sub_8061F74
sub_8061F74: @ 8061F74
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08061FB8 @ =gUnknown_83A6280
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08061FA0
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08061FA0
	movs r0, 0x3
	strb r0, [r2]
_08061FA0:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08061FB8: .4byte gUnknown_83A6280
	thumb_func_end sub_8061F74

	thumb_func_start sub_8061FBC
sub_8061FBC: @ 8061FBC
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08061FD8 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08061FDC @ =sub_8061FE0
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08061FD8: .4byte gObjectEvents
_08061FDC: .4byte sub_8061FE0
	thumb_func_end sub_8061FBC

	thumb_func_start sub_8061FE0
sub_8061FE0: @ 8061FE0
	push {r4,lr}
	ldr r3, _08061FFC @ =gUnknown_83A6284
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08061FFC: .4byte gUnknown_83A6284
	thumb_func_end sub_8061FE0

	thumb_func_start sub_8062000
sub_8062000: @ 8062000
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08062044 @ =gUnknown_83A6290
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _0806202C
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _0806202C
	movs r0, 0x3
	strb r0, [r2]
_0806202C:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062044: .4byte gUnknown_83A6290
	thumb_func_end sub_8062000

	thumb_func_start sub_8062048
sub_8062048: @ 8062048
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062064 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08062068 @ =sub_806206C
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062064: .4byte gObjectEvents
_08062068: .4byte sub_806206C
	thumb_func_end sub_8062048

	thumb_func_start sub_806206C
sub_806206C: @ 806206C
	push {r4,lr}
	ldr r3, _08062088 @ =gUnknown_83A6294
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08062088: .4byte gUnknown_83A6294
	thumb_func_end sub_806206C

	thumb_func_start sub_806208C
sub_806208C: @ 806208C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080620D0 @ =gUnknown_83A62A0
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _080620B8
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _080620B8
	movs r0, 0x2
	strb r0, [r2]
_080620B8:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080620D0: .4byte gUnknown_83A62A0
	thumb_func_end sub_806208C

	thumb_func_start sub_80620D4
sub_80620D4: @ 80620D4
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080620F0 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080620F4 @ =sub_80620F8
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080620F0: .4byte gObjectEvents
_080620F4: .4byte sub_80620F8
	thumb_func_end sub_80620D4

	thumb_func_start sub_80620F8
sub_80620F8: @ 80620F8
	push {r4,lr}
	ldr r3, _08062114 @ =gUnknown_83A62A4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08062114: .4byte gUnknown_83A62A4
	thumb_func_end sub_80620F8

	thumb_func_start sub_8062118
sub_8062118: @ 8062118
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _0806215C @ =gUnknown_83A62B0
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _08062144
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08062144
	movs r0, 0x2
	strb r0, [r2]
_08062144:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_0806215C: .4byte gUnknown_83A62B0
	thumb_func_end sub_8062118

	thumb_func_start sub_8062160
sub_8062160: @ 8062160
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0806217C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08062180 @ =sub_8062184
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0806217C: .4byte gObjectEvents
_08062180: .4byte sub_8062184
	thumb_func_end sub_8062160

	thumb_func_start sub_8062184
sub_8062184: @ 8062184
	push {r4,lr}
	ldr r3, _080621A0 @ =gUnknown_83A62B4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080621A0: .4byte gUnknown_83A62B4
	thumb_func_end sub_8062184

	thumb_func_start sub_80621A4
sub_80621A4: @ 80621A4
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080621E8 @ =gUnknown_83A62C0
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _080621D0
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _080621D0
	movs r0, 0x3
	strb r0, [r2]
_080621D0:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080621E8: .4byte gUnknown_83A62C0
	thumb_func_end sub_80621A4

	thumb_func_start sub_80621EC
sub_80621EC: @ 80621EC
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062208 @ =gObjectEvents
	adds r0, r2
	ldr r2, _0806220C @ =sub_8062210
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062208: .4byte gObjectEvents
_0806220C: .4byte sub_8062210
	thumb_func_end sub_80621EC

	thumb_func_start sub_8062210
sub_8062210: @ 8062210
	push {r4,lr}
	ldr r3, _0806222C @ =gUnknown_83A62C4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806222C: .4byte gUnknown_83A62C4
	thumb_func_end sub_8062210

	thumb_func_start sub_8062230
sub_8062230: @ 8062230
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08062274 @ =gUnknown_83A62D0
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _0806225C
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _0806225C
	movs r0, 0x3
	strb r0, [r2]
_0806225C:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062274: .4byte gUnknown_83A62D0
	thumb_func_end sub_8062230

	thumb_func_start sub_8062278
sub_8062278: @ 8062278
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062294 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08062298 @ =sub_806229C
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062294: .4byte gObjectEvents
_08062298: .4byte sub_806229C
	thumb_func_end sub_8062278

	thumb_func_start sub_806229C
sub_806229C: @ 806229C
	push {r4,lr}
	ldr r3, _080622B8 @ =gUnknown_83A62D4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080622B8: .4byte gUnknown_83A62D4
	thumb_func_end sub_806229C

	thumb_func_start sub_80622BC
sub_80622BC: @ 80622BC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08062300 @ =gUnknown_83A62E0
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _080622E8
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _080622E8
	movs r0, 0x2
	strb r0, [r2]
_080622E8:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062300: .4byte gUnknown_83A62E0
	thumb_func_end sub_80622BC

	thumb_func_start sub_8062304
sub_8062304: @ 8062304
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062320 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08062324 @ =sub_8062328
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062320: .4byte gObjectEvents
_08062324: .4byte sub_8062328
	thumb_func_end sub_8062304

	thumb_func_start sub_8062328
sub_8062328: @ 8062328
	push {r4,lr}
	ldr r3, _08062344 @ =gUnknown_83A62E4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08062344: .4byte gUnknown_83A62E4
	thumb_func_end sub_8062328

	thumb_func_start sub_8062348
sub_8062348: @ 8062348
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _0806238C @ =gUnknown_83A62F0
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x1
	bne _08062374
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08062374
	movs r0, 0x2
	strb r0, [r2]
_08062374:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_0806238C: .4byte gUnknown_83A62F0
	thumb_func_end sub_8062348

	thumb_func_start sub_8062390
sub_8062390: @ 8062390
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080623AC @ =gObjectEvents
	adds r0, r2
	ldr r2, _080623B0 @ =sub_80623B4
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080623AC: .4byte gObjectEvents
_080623B0: .4byte sub_80623B4
	thumb_func_end sub_8062390

	thumb_func_start sub_80623B4
sub_80623B4: @ 80623B4
	push {r4,lr}
	ldr r3, _080623D0 @ =gUnknown_83A62F4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080623D0: .4byte gUnknown_83A62F4
	thumb_func_end sub_80623B4

	thumb_func_start sub_80623D4
sub_80623D4: @ 80623D4
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08062418 @ =gUnknown_83A6300
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08062400
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08062400
	movs r0, 0x3
	strb r0, [r2]
_08062400:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062418: .4byte gUnknown_83A6300
	thumb_func_end sub_80623D4

	thumb_func_start sub_806241C
sub_806241C: @ 806241C
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062438 @ =gObjectEvents
	adds r0, r2
	ldr r2, _0806243C @ =sub_8062440
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062438: .4byte gObjectEvents
_0806243C: .4byte sub_8062440
	thumb_func_end sub_806241C

	thumb_func_start sub_8062440
sub_8062440: @ 8062440
	push {r4,lr}
	ldr r3, _0806245C @ =gUnknown_83A6304
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806245C: .4byte gUnknown_83A6304
	thumb_func_end sub_8062440

	thumb_func_start sub_8062460
sub_8062460: @ 8062460
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080624A4 @ =gUnknown_83A6310
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _0806248C
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _0806248C
	movs r0, 0x3
	strb r0, [r2]
_0806248C:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080624A4: .4byte gUnknown_83A6310
	thumb_func_end sub_8062460

	thumb_func_start sub_80624A8
sub_80624A8: @ 80624A8
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080624C4 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080624C8 @ =sub_80624CC
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080624C4: .4byte gObjectEvents
_080624C8: .4byte sub_80624CC
	thumb_func_end sub_80624A8

	thumb_func_start sub_80624CC
sub_80624CC: @ 80624CC
	push {r4,lr}
	ldr r3, _080624E8 @ =gUnknown_83A6314
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080624E8: .4byte gUnknown_83A6314
	thumb_func_end sub_80624CC

	thumb_func_start sub_80624EC
sub_80624EC: @ 80624EC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08062530 @ =gUnknown_83A6320
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08062518
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08062518
	movs r0, 0x3
	strb r0, [r2]
_08062518:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062530: .4byte gUnknown_83A6320
	thumb_func_end sub_80624EC

	thumb_func_start sub_8062534
sub_8062534: @ 8062534
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062550 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08062554 @ =sub_8062558
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062550: .4byte gObjectEvents
_08062554: .4byte sub_8062558
	thumb_func_end sub_8062534

	thumb_func_start sub_8062558
sub_8062558: @ 8062558
	push {r4,lr}
	ldr r3, _08062574 @ =gUnknown_83A6324
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08062574: .4byte gUnknown_83A6324
	thumb_func_end sub_8062558

	thumb_func_start sub_8062578
sub_8062578: @ 8062578
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080625BC @ =gUnknown_83A6330
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _080625A4
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _080625A4
	movs r0, 0x3
	strb r0, [r2]
_080625A4:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080625BC: .4byte gUnknown_83A6330
	thumb_func_end sub_8062578

	thumb_func_start sub_80625C0
sub_80625C0: @ 80625C0
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080625DC @ =gObjectEvents
	adds r0, r2
	ldr r2, _080625E0 @ =sub_80625E4
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080625DC: .4byte gObjectEvents
_080625E0: .4byte sub_80625E4
	thumb_func_end sub_80625C0

	thumb_func_start sub_80625E4
sub_80625E4: @ 80625E4
	push {r4,lr}
	ldr r3, _08062600 @ =gUnknown_83A6334
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08062600: .4byte gUnknown_83A6334
	thumb_func_end sub_80625E4

	thumb_func_start sub_8062604
sub_8062604: @ 8062604
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08062648 @ =gUnknown_83A6340
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08062630
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08062630
	movs r0, 0x3
	strb r0, [r2]
_08062630:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062648: .4byte gUnknown_83A6340
	thumb_func_end sub_8062604

	thumb_func_start sub_806264C
sub_806264C: @ 806264C
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062668 @ =gObjectEvents
	adds r0, r2
	ldr r2, _0806266C @ =sub_8062670
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062668: .4byte gObjectEvents
_0806266C: .4byte sub_8062670
	thumb_func_end sub_806264C

	thumb_func_start sub_8062670
sub_8062670: @ 8062670
	push {r4,lr}
	ldr r3, _0806268C @ =gUnknown_83A6344
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806268C: .4byte gUnknown_83A6344
	thumb_func_end sub_8062670

	thumb_func_start sub_8062690
sub_8062690: @ 8062690
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080626D4 @ =gUnknown_83A6350
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _080626BC
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _080626BC
	movs r0, 0x3
	strb r0, [r2]
_080626BC:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080626D4: .4byte gUnknown_83A6350
	thumb_func_end sub_8062690

	thumb_func_start sub_80626D8
sub_80626D8: @ 80626D8
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080626F4 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080626F8 @ =sub_80626FC
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080626F4: .4byte gObjectEvents
_080626F8: .4byte sub_80626FC
	thumb_func_end sub_80626D8

	thumb_func_start sub_80626FC
sub_80626FC: @ 80626FC
	push {r4,lr}
	ldr r3, _08062718 @ =gUnknown_83A6354
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08062718: .4byte gUnknown_83A6354
	thumb_func_end sub_80626FC

	thumb_func_start sub_806271C
sub_806271C: @ 806271C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08062760 @ =gUnknown_83A6360
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08062748
	movs r0, 0xE
	ldrsh r1, [r4, r0]
	movs r3, 0x12
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08062748
	movs r0, 0x3
	strb r0, [r2]
_08062748:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062760: .4byte gUnknown_83A6360
	thumb_func_end sub_806271C

	thumb_func_start sub_8062764
sub_8062764: @ 8062764
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062780 @ =gObjectEvents
	adds r0, r2
	ldr r2, _08062784 @ =sub_8062788
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062780: .4byte gObjectEvents
_08062784: .4byte sub_8062788
	thumb_func_end sub_8062764

	thumb_func_start sub_8062788
sub_8062788: @ 8062788
	push {r4,lr}
	ldr r3, _080627A4 @ =gUnknown_83A6364
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080627A4: .4byte gUnknown_83A6364
	thumb_func_end sub_8062788

	thumb_func_start sub_80627A8
sub_80627A8: @ 80627A8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080627EC @ =gUnknown_83A6370
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _080627D4
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _080627D4
	movs r0, 0x3
	strb r0, [r2]
_080627D4:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080627EC: .4byte gUnknown_83A6370
	thumb_func_end sub_80627A8

	thumb_func_start sub_80627F0
sub_80627F0: @ 80627F0
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0806280C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08062810 @ =sub_8062814
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0806280C: .4byte gObjectEvents
_08062810: .4byte sub_8062814
	thumb_func_end sub_80627F0

	thumb_func_start sub_8062814
sub_8062814: @ 8062814
	push {r4,lr}
	ldr r3, _08062830 @ =gUnknown_83A6374
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08062830: .4byte gUnknown_83A6374
	thumb_func_end sub_8062814

	thumb_func_start sub_8062834
sub_8062834: @ 8062834
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _08062878 @ =gUnknown_83A6380
	mov r0, sp
	movs r2, 0x4
	bl memcpy
	adds r2, r4, 0
	adds r2, 0x21
	ldrb r0, [r2]
	cmp r0, 0x2
	bne _08062860
	movs r0, 0xC
	ldrsh r1, [r4, r0]
	movs r3, 0x10
	ldrsh r0, [r4, r3]
	cmp r1, r0
	bne _08062860
	movs r0, 0x3
	strb r0, [r2]
_08062860:
	adds r0, r4, 0
	adds r1, r5, 0
	mov r2, sp
	bl MoveObjectEventInNextDirectionInSequence
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062878: .4byte gUnknown_83A6380
	thumb_func_end sub_8062834

	thumb_func_start sub_806287C
sub_806287C: @ 806287C
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062898 @ =gObjectEvents
	adds r0, r2
	ldr r2, _0806289C @ =sub_80628A0
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062898: .4byte gObjectEvents
_0806289C: .4byte sub_80628A0
	thumb_func_end sub_806287C

	thumb_func_start sub_80628A0
sub_80628A0: @ 80628A0
	push {r4,lr}
	ldr r3, _080628BC @ =gUnknown_83A6384
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080628BC: .4byte gUnknown_83A6384
	thumb_func_end sub_80628A0

	thumb_func_start mss_npc_reset_oampriv3_1_unk2_unk3
mss_npc_reset_oampriv3_1_unk2_unk3: @ 80628C0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl npc_reset
	adds r4, 0x21
	ldrb r0, [r4]
	cmp r0, 0
	bne _080628D8
	bl GetPlayerFacingDirection
	strb r0, [r4]
_080628D8:
	movs r0, 0x1
	strh r0, [r5, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end mss_npc_reset_oampriv3_1_unk2_unk3

	thumb_func_start sub_80628E4
sub_80628E4: @ 80628E4
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	ldr r2, _08062908 @ =gObjectEvents
	ldr r3, _0806290C @ =gPlayerAvatar
	ldrb r1, [r3, 0x5]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x1C]
	cmp r0, 0xFF
	beq _08062904
	ldrb r0, [r3, 0x3]
	cmp r0, 0x2
	bne _08062910
_08062904:
	movs r0, 0
	b _08062938
	.align 2, 0
_08062908: .4byte gObjectEvents
_0806290C: .4byte gPlayerAvatar
_08062910:
	ldr r5, _08062940 @ =gUnknown_83A6390
	bl player_get_x22
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 22
	adds r4, r5
	bl player_get_direction_upper_nybble
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	ldr r4, [r4]
	adds r0, r6, 0
	adds r1, r7, 0
	movs r3, 0
	bl _call_via_r4
	lsls r0, 24
	lsrs r0, 24
_08062938:
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08062940: .4byte gUnknown_83A6390
	thumb_func_end sub_80628E4

	thumb_func_start sub_8062944
sub_8062944: @ 8062944
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08062962
	ldrb r0, [r4]
	movs r1, 0x3
	negs r1, r1
	ands r1, r0
	strb r1, [r4]
	movs r0, 0x1
	strh r0, [r5, 0x30]
_08062962:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8062944

	thumb_func_start sub_806296C
sub_806296C: @ 806296C
	movs r0, 0
	bx lr
	thumb_func_end sub_806296C

	thumb_func_start sub_8062970
sub_8062970: @ 8062970
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	ldr r1, _080629B4 @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r1, [r1]
	bl state_to_direction
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_080629B4: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end sub_8062970

	thumb_func_start sub_80629B8
sub_80629B8: @ 80629B8
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	adds r4, r0, 0
	adds r7, r1, 0
	mov r8, r3
	lsls r2, 24
	lsrs r6, r2, 24
	ldr r1, _08062A6C @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r1, [r1]
	adds r2, r6, 0
	bl state_to_direction
	adds r6, r0, 0
	mov r5, sp
	adds r5, 0x2
	adds r0, r4, 0
	adds r1, r6, 0
	mov r2, sp
	adds r3, r5, 0
	bl ObjectEventMoveDestCoords
	adds r0, r6, 0
	bl sub_8063F84
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r5, r0]
	adds r0, r4, 0
	adds r3, r6, 0
	bl npc_block_way
	lsls r0, 24
	cmp r0, 0
	bne _08062A3E
	mov r1, r8
	cmp r1, 0
	beq _08062A52
	mov r0, sp
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r2, 0
	ldrsh r1, [r5, r2]
	bl MapGridGetMetatileBehaviorAt
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r8
	lsls r0, 24
	cmp r0, 0
	bne _08062A52
_08062A3E:
	adds r0, r6, 0
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
_08062A52:
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	strh r0, [r7, 0x30]
	movs r0, 0x1
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08062A6C: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end sub_80629B8

	thumb_func_start sub_8062A70
sub_8062A70: @ 8062A70
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	adds r4, r0, 0
	adds r7, r1, 0
	mov r8, r3
	lsls r2, 24
	lsrs r6, r2, 24
	ldr r1, _08062B24 @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r1, [r1]
	adds r2, r6, 0
	bl state_to_direction
	adds r6, r0, 0
	mov r5, sp
	adds r5, 0x2
	adds r0, r4, 0
	adds r1, r6, 0
	mov r2, sp
	adds r3, r5, 0
	bl ObjectEventMoveDestCoords
	adds r0, r6, 0
	bl sub_8063FB0
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r5, r0]
	adds r0, r4, 0
	adds r3, r6, 0
	bl npc_block_way
	lsls r0, 24
	cmp r0, 0
	bne _08062AF6
	mov r1, r8
	cmp r1, 0
	beq _08062B0A
	mov r0, sp
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r2, 0
	ldrsh r1, [r5, r2]
	bl MapGridGetMetatileBehaviorAt
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r8
	lsls r0, 24
	cmp r0, 0
	bne _08062B0A
_08062AF6:
	adds r0, r6, 0
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
_08062B0A:
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	strh r0, [r7, 0x30]
	movs r0, 0x1
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08062B24: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end sub_8062A70

	thumb_func_start sub_8062B28
sub_8062B28: @ 8062B28
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	adds r4, r0, 0
	adds r7, r1, 0
	mov r8, r3
	lsls r2, 24
	lsrs r6, r2, 24
	ldr r1, _08062BDC @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r1, [r1]
	adds r2, r6, 0
	bl state_to_direction
	adds r6, r0, 0
	mov r5, sp
	adds r5, 0x2
	adds r0, r4, 0
	adds r1, r6, 0
	mov r2, sp
	adds r3, r5, 0
	bl ObjectEventMoveDestCoords
	adds r0, r6, 0
	bl sub_8064034
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r5, r0]
	adds r0, r4, 0
	adds r3, r6, 0
	bl npc_block_way
	lsls r0, 24
	cmp r0, 0
	bne _08062BAE
	mov r1, r8
	cmp r1, 0
	beq _08062BC2
	mov r0, sp
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r2, 0
	ldrsh r1, [r5, r2]
	bl MapGridGetMetatileBehaviorAt
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r8
	lsls r0, 24
	cmp r0, 0
	bne _08062BC2
_08062BAE:
	adds r0, r6, 0
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
_08062BC2:
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	strh r0, [r7, 0x30]
	movs r0, 0x1
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08062BDC: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end sub_8062B28

	thumb_func_start sub_8062BE0
sub_8062BE0: @ 8062BE0
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	adds r4, r0, 0
	adds r7, r1, 0
	mov r8, r3
	lsls r2, 24
	lsrs r6, r2, 24
	ldr r1, _08062C94 @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r1, [r1]
	adds r2, r6, 0
	bl state_to_direction
	adds r6, r0, 0
	mov r5, sp
	adds r5, 0x2
	adds r0, r4, 0
	adds r1, r6, 0
	mov r2, sp
	adds r3, r5, 0
	bl ObjectEventMoveDestCoords
	adds r0, r6, 0
	bl sub_8064060
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r5, r0]
	adds r0, r4, 0
	adds r3, r6, 0
	bl npc_block_way
	lsls r0, 24
	cmp r0, 0
	bne _08062C66
	mov r1, r8
	cmp r1, 0
	beq _08062C7A
	mov r0, sp
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r2, 0
	ldrsh r1, [r5, r2]
	bl MapGridGetMetatileBehaviorAt
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r8
	lsls r0, 24
	cmp r0, 0
	bne _08062C7A
_08062C66:
	adds r0, r6, 0
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
_08062C7A:
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	strh r0, [r7, 0x30]
	movs r0, 0x1
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08062C94: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end sub_8062BE0

	thumb_func_start cph_IM_DIFFERENT
cph_IM_DIFFERENT: @ 8062C98
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	ldr r1, _08062CDC @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r1, [r1]
	bl state_to_direction
	bl sub_806413C
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	strh r0, [r5, 0x30]
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08062CDC: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end cph_IM_DIFFERENT

	thumb_func_start sub_8062CE0
sub_8062CE0: @ 8062CE0
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x4
	adds r4, r0, 0
	adds r7, r1, 0
	mov r8, r3
	lsls r2, 24
	lsrs r6, r2, 24
	ldr r1, _08062D94 @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r1, [r1]
	adds r2, r6, 0
	bl state_to_direction
	adds r6, r0, 0
	mov r5, sp
	adds r5, 0x2
	adds r0, r4, 0
	adds r1, r6, 0
	mov r2, sp
	adds r3, r5, 0
	bl ObjectEventMoveDestCoords
	adds r0, r6, 0
	bl sub_8064194
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r5, r0]
	adds r0, r4, 0
	adds r3, r6, 0
	bl npc_block_way
	lsls r0, 24
	cmp r0, 0
	bne _08062D66
	mov r1, r8
	cmp r1, 0
	beq _08062D7A
	mov r0, sp
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r2, 0
	ldrsh r1, [r5, r2]
	bl MapGridGetMetatileBehaviorAt
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r8
	lsls r0, 24
	cmp r0, 0
	bne _08062D7A
_08062D66:
	adds r0, r6, 0
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
_08062D7A:
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	strh r0, [r7, 0x30]
	movs r0, 0x1
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08062D94: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end sub_8062CE0

	thumb_func_start oac_hopping
oac_hopping: @ 8062D98
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x8
	adds r4, r0, 0
	adds r7, r1, 0
	mov r8, r3
	lsls r2, 24
	lsrs r6, r2, 24
	ldr r1, _08062E5C @ =gInitialMovementTypeFacingDirections
	ldrb r0, [r4, 0x6]
	adds r0, r1
	ldrb r0, [r0]
	adds r1, r4, 0
	adds r1, 0x21
	ldrb r1, [r1]
	adds r2, r6, 0
	bl state_to_direction
	adds r6, r0, 0
	ldrh r1, [r4, 0x10]
	add r0, sp, 0x4
	strh r1, [r0]
	ldrh r0, [r4, 0x12]
	mov r5, sp
	adds r5, 0x6
	strh r0, [r5]
	movs r0, 0x2
	str r0, [sp]
	adds r0, r6, 0
	add r1, sp, 0x4
	adds r2, r5, 0
	movs r3, 0x2
	bl sub_8063A6C
	adds r0, r6, 0
	bl GetJumpLedgeAnimId
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
	add r0, sp, 0x4
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r5, r0]
	adds r0, r4, 0
	adds r3, r6, 0
	bl npc_block_way
	lsls r0, 24
	cmp r0, 0
	bne _08062E2C
	mov r1, r8
	cmp r1, 0
	beq _08062E40
	add r0, sp, 0x4
	movs r2, 0
	ldrsh r0, [r0, r2]
	movs r2, 0
	ldrsh r1, [r5, r2]
	bl MapGridGetMetatileBehaviorAt
	lsls r0, 24
	lsrs r0, 24
	bl _call_via_r8
	lsls r0, 24
	cmp r0, 0
	bne _08062E40
_08062E2C:
	adds r0, r6, 0
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r7, 0
	bl sub_80645C8
_08062E40:
	ldrb r0, [r4]
	movs r1, 0x2
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x2
	strh r0, [r7, 0x30]
	movs r0, 0x1
	add sp, 0x8
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08062E5C: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end oac_hopping

	thumb_func_start sub_8062E60
sub_8062E60: @ 8062E60
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _08062E7C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08062E80 @ =sub_8062E84
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_08062E7C: .4byte gObjectEvents
_08062E80: .4byte sub_8062E84
	thumb_func_end sub_8062E60

	thumb_func_start sub_8062E84
sub_8062E84: @ 8062E84
	push {r4,lr}
	ldr r3, _08062EA0 @ =gUnknown_83A63BC
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08062EA0: .4byte gUnknown_83A63BC
	thumb_func_end sub_8062E84

	thumb_func_start mss_08062EA4
mss_08062EA4: @ 8062EA4
	push {r4-r7,lr}
	adds r6, r0, 0
	adds r7, r1, 0
	ldr r2, _08062EC8 @ =gObjectEvents
	ldr r3, _08062ECC @ =gPlayerAvatar
	ldrb r1, [r3, 0x5]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x1C]
	cmp r0, 0xFF
	beq _08062EC4
	ldrb r0, [r3, 0x3]
	cmp r0, 0x2
	bne _08062ED0
_08062EC4:
	movs r0, 0
	b _08062EF8
	.align 2, 0
_08062EC8: .4byte gObjectEvents
_08062ECC: .4byte gPlayerAvatar
_08062ED0:
	ldr r5, _08062F00 @ =gUnknown_83A6390
	bl player_get_x22
	adds r4, r0, 0
	lsls r4, 24
	lsrs r4, 22
	adds r4, r5
	bl player_get_direction_upper_nybble
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	ldr r3, _08062F04 @ =MetatileBehavior_IsTallGrass
	ldr r4, [r4]
	adds r0, r6, 0
	adds r1, r7, 0
	bl _call_via_r4
	lsls r0, 24
	lsrs r0, 24
_08062EF8:
	pop {r4-r7}
	pop {r1}
	bx r1
	.align 2, 0
_08062F00: .4byte gUnknown_83A6390
_08062F04: .4byte MetatileBehavior_IsTallGrass
	thumb_func_end mss_08062EA4

	thumb_func_start ObjectEventCB_TreeDisguise
ObjectEventCB_TreeDisguise: @ 8062F08
	push {r4-r6,lr}
	adds r5, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r5, r1]
	lsls r1, r0, 3
	adds r1, r0
	lsls r1, 2
	ldr r0, _08062F6C @ =gObjectEvents
	adds r4, r1, r0
	adds r6, r4, 0
	adds r6, 0x21
	ldrb r0, [r6]
	cmp r0, 0
	beq _08062F30
	cmp r0, 0x1
	bne _08062F50
	movs r1, 0x3C
	ldrsh r0, [r5, r1]
	cmp r0, 0
	bne _08062F50
_08062F30:
	ldr r1, _08062F70 @ =gFieldEffectArguments
	adds r2, r1, 0x4
	adds r3, r1, 0
	adds r3, 0x8
	adds r0, r4, 0
	bl ObjectEventGetLocalIdAndMap
	movs r0, 0x1C
	bl FieldEffectStart
	strb r0, [r4, 0x1A]
	movs r0, 0x1
	strb r0, [r6]
	ldrh r0, [r5, 0x3C]
	adds r0, 0x1
	strh r0, [r5, 0x3C]
_08062F50:
	movs r0, 0x2E
	ldrsh r1, [r5, r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, _08062F6C @ =gObjectEvents
	adds r0, r1
	ldr r2, _08062F74 @ =sub_8062F78
	adds r1, r5, 0
	bl ObjectEventStep
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_08062F6C: .4byte gObjectEvents
_08062F70: .4byte gFieldEffectArguments
_08062F74: .4byte sub_8062F78
	thumb_func_end ObjectEventCB_TreeDisguise

	thumb_func_start sub_8062F78
sub_8062F78: @ 8062F78
	push {lr}
	bl npc_reset
	movs r0, 0
	pop {r1}
	bx r1
	thumb_func_end sub_8062F78

	thumb_func_start ObjectEventCB_MountainDisguise
ObjectEventCB_MountainDisguise: @ 8062F84
	push {r4-r6,lr}
	adds r5, r0, 0
	movs r1, 0x2E
	ldrsh r0, [r5, r1]
	lsls r1, r0, 3
	adds r1, r0
	lsls r1, 2
	ldr r0, _08062FE8 @ =gObjectEvents
	adds r4, r1, r0
	adds r6, r4, 0
	adds r6, 0x21
	ldrb r0, [r6]
	cmp r0, 0
	beq _08062FAC
	cmp r0, 0x1
	bne _08062FCC
	movs r1, 0x3C
	ldrsh r0, [r5, r1]
	cmp r0, 0
	bne _08062FCC
_08062FAC:
	ldr r1, _08062FEC @ =gFieldEffectArguments
	adds r2, r1, 0x4
	adds r3, r1, 0
	adds r3, 0x8
	adds r0, r4, 0
	bl ObjectEventGetLocalIdAndMap
	movs r0, 0x1D
	bl FieldEffectStart
	strb r0, [r4, 0x1A]
	movs r0, 0x1
	strb r0, [r6]
	ldrh r0, [r5, 0x3C]
	adds r0, 0x1
	strh r0, [r5, 0x3C]
_08062FCC:
	movs r0, 0x2E
	ldrsh r1, [r5, r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, _08062FE8 @ =gObjectEvents
	adds r0, r1
	ldr r2, _08062FF0 @ =sub_8062F78
	adds r1, r5, 0
	bl ObjectEventStep
	pop {r4-r6}
	pop {r0}
	bx r0
	.align 2, 0
_08062FE8: .4byte gObjectEvents
_08062FEC: .4byte gFieldEffectArguments
_08062FF0: .4byte sub_8062F78
	thumb_func_end ObjectEventCB_MountainDisguise

	thumb_func_start ObjectEventCB_Hidden1
ObjectEventCB_Hidden1: @ 8062FF4
	push {r4,lr}
	adds r3, r0, 0
	movs r1, 0x3C
	ldrsh r0, [r3, r1]
	ldr r4, _08063050 @ =gObjectEvents
	cmp r0, 0
	bne _08063034
	movs r0, 0x2E
	ldrsh r1, [r3, r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	ldrb r1, [r0, 0x3]
	movs r2, 0x4
	orrs r1, r2
	strb r1, [r0, 0x3]
	adds r2, r3, 0
	adds r2, 0x42
	ldrb r1, [r2]
	movs r0, 0x3F
	ands r0, r1
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r2]
	ldrb r0, [r3, 0x5]
	movs r1, 0xC
	orrs r0, r1
	strb r0, [r3, 0x5]
	ldrh r0, [r3, 0x3C]
	adds r0, 0x1
	strh r0, [r3, 0x3C]
_08063034:
	movs r0, 0x2E
	ldrsh r1, [r3, r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	ldr r2, _08063054 @ =sub_8063058
	adds r1, r3, 0
	bl ObjectEventStep
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08063050: .4byte gObjectEvents
_08063054: .4byte sub_8063058
	thumb_func_end ObjectEventCB_Hidden1

	thumb_func_start sub_8063058
sub_8063058: @ 8063058
	push {r4,lr}
	ldr r3, _08063074 @ =gUnknown_83A63C8
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063074: .4byte gUnknown_83A63C8
	thumb_func_end sub_8063058

	thumb_func_start sub_8063078
sub_8063078: @ 8063078
	push {lr}
	bl npc_reset
	movs r0, 0
	pop {r1}
	bx r1
	thumb_func_end sub_8063078

	thumb_func_start sub_8063084
sub_8063084: @ 8063084
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08063096
	movs r0, 0
	strh r0, [r4, 0x30]
_08063096:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8063084

	thumb_func_start sub_80630A0
sub_80630A0: @ 80630A0
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080630BC @ =gObjectEvents
	adds r0, r2
	ldr r2, _080630C0 @ =sub_80630C4
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080630BC: .4byte gObjectEvents
_080630C0: .4byte sub_80630C4
	thumb_func_end sub_80630A0

	thumb_func_start sub_80630C4
sub_80630C4: @ 80630C4
	push {r4,lr}
	ldr r3, _080630E0 @ =gUnknown_83A63CC
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080630E0: .4byte gUnknown_83A63CC
	thumb_func_end sub_80630C4

	thumb_func_start sub_80630E4
sub_80630E4: @ 80630E4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl npc_reset
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl GetStepInPlaceDelay16AnimId
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r5, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80630E4

	thumb_func_start sub_8063110
sub_8063110: @ 8063110
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0806312C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08063130 @ =sub_8063134
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0806312C: .4byte gObjectEvents
_08063130: .4byte sub_8063134
	thumb_func_end sub_8063110

	thumb_func_start sub_8063134
sub_8063134: @ 8063134
	push {r4,lr}
	ldr r3, _08063150 @ =gUnknown_83A63D4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063150: .4byte gUnknown_83A63D4
	thumb_func_end sub_8063134

	thumb_func_start sub_8063154
sub_8063154: @ 8063154
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl npc_reset
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8064270
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r5, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8063154

	thumb_func_start sub_8063180
sub_8063180: @ 8063180
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0806319C @ =gObjectEvents
	adds r0, r2
	ldr r2, _080631A0 @ =sub_80631A4
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0806319C: .4byte gObjectEvents
_080631A0: .4byte sub_80631A4
	thumb_func_end sub_8063180

	thumb_func_start sub_80631A4
sub_80631A4: @ 80631A4
	push {r4,lr}
	ldr r3, _080631C0 @ =gUnknown_83A63DC
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080631C0: .4byte gUnknown_83A63DC
	thumb_func_end sub_80631A4

	thumb_func_start sub_80631C4
sub_80631C4: @ 80631C4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl npc_reset
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl GetStepInPlaceDelay4AnimId
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r5, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80631C4

	thumb_func_start sub_80631F0
sub_80631F0: @ 80631F0
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _0806320C @ =gObjectEvents
	adds r0, r2
	ldr r2, _08063210 @ =sub_8063214
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_0806320C: .4byte gObjectEvents
_08063210: .4byte sub_8063214
	thumb_func_end sub_80631F0

	thumb_func_start sub_8063214
sub_8063214: @ 8063214
	push {r4,lr}
	ldr r3, _08063230 @ =gUnknown_83A63E4
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063230: .4byte gUnknown_83A63E4
	thumb_func_end sub_8063214

	thumb_func_start sub_8063234
sub_8063234: @ 8063234
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl npc_reset
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063EB8
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80645C8
	ldrb r0, [r4, 0x1]
	movs r1, 0x20
	orrs r0, r1
	strb r0, [r4, 0x1]
	movs r0, 0x1
	strh r0, [r5, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8063234

	thumb_func_start sub_8063268
sub_8063268: @ 8063268
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	bne _0806327A
	movs r0, 0
	b _08063280
_0806327A:
	movs r0, 0x2
	strh r0, [r4, 0x30]
	movs r0, 0x1
_08063280:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8063268

	thumb_func_start sub_8063288
sub_8063288: @ 8063288
	ldrb r2, [r0]
	movs r1, 0x3
	negs r1, r1
	ands r1, r2
	strb r1, [r0]
	movs r0, 0
	bx lr
	thumb_func_end sub_8063288

	thumb_func_start sub_8063298
sub_8063298: @ 8063298
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080632B4 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080632B8 @ =sub_8063304
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080632B4: .4byte gObjectEvents
_080632B8: .4byte sub_8063304
	thumb_func_end sub_8063298

	thumb_func_start sub_80632BC
sub_80632BC: @ 80632BC
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080632D8 @ =gObjectEvents
	adds r0, r2
	ldr r2, _080632DC @ =sub_8063324
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080632D8: .4byte gObjectEvents
_080632DC: .4byte sub_8063324
	thumb_func_end sub_80632BC

	thumb_func_start sub_80632E0
sub_80632E0: @ 80632E0
	push {lr}
	adds r1, r0, 0
	movs r0, 0x2E
	ldrsh r2, [r1, r0]
	lsls r0, r2, 3
	adds r0, r2
	lsls r0, 2
	ldr r2, _080632FC @ =gObjectEvents
	adds r0, r2
	ldr r2, _08063300 @ =sub_8063344
	bl ObjectEventStep
	pop {r0}
	bx r0
	.align 2, 0
_080632FC: .4byte gObjectEvents
_08063300: .4byte sub_8063344
	thumb_func_end sub_80632E0

	thumb_func_start sub_8063304
sub_8063304: @ 8063304
	push {r4,lr}
	ldr r3, _08063320 @ =gUnknown_83A63F0
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063320: .4byte gUnknown_83A63F0
	thumb_func_end sub_8063304

	thumb_func_start sub_8063324
sub_8063324: @ 8063324
	push {r4,lr}
	ldr r3, _08063340 @ =gUnknown_83A63FC
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063340: .4byte gUnknown_83A63FC
	thumb_func_end sub_8063324

	thumb_func_start sub_8063344
sub_8063344: @ 8063344
	push {r4,lr}
	ldr r3, _08063360 @ =gUnknown_83A6404
	movs r4, 0x30
	ldrsh r2, [r1, r4]
	lsls r2, 2
	adds r2, r3
	ldr r2, [r2]
	bl _call_via_r2
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063360: .4byte gUnknown_83A6404
	thumb_func_end sub_8063344

	thumb_func_start sub_8063364
sub_8063364: @ 8063364
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	bl npc_reset
	adds r0, r5, 0
	adds r1, r4, 0
	movs r2, 0x98
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r4, 0x30]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8063364

	thumb_func_start sub_8063384
sub_8063384: @ 8063384
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	bne _08063396
	movs r0, 0
	b _0806339C
_08063396:
	movs r0, 0x2
	strh r0, [r4, 0x30]
	movs r0, 0x1
_0806339C:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8063384

	thumb_func_start sub_80633A4
sub_80633A4: @ 80633A4
	ldrb r2, [r0]
	movs r1, 0x3
	negs r1, r1
	ands r1, r2
	strb r1, [r0]
	movs r0, 0
	bx lr
	thumb_func_end sub_80633A4

	thumb_func_start sub_80633B4
sub_80633B4: @ 80633B4
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	bl npc_reset
	adds r0, r5, 0
	adds r1, r4, 0
	movs r2, 0x99
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r4, 0x30]
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80633B4

	thumb_func_start sub_80633D4
sub_80633D4: @ 80633D4
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	bl npc_reset
	adds r0, r5, 0
	adds r1, r4, 0
	movs r2, 0x9A
	bl sub_80645C8
	movs r0, 0x1
	strh r0, [r4, 0x30]
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80633D4

	thumb_func_start sub_80633F4
sub_80633F4: @ 80633F4
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064588
	lsls r0, 24
	cmp r0, 0
	beq _08063406
	movs r0, 0
	strh r0, [r4, 0x30]
_08063406:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80633F4

	thumb_func_start npc_reset
npc_reset: @ 8063410
	ldrb r3, [r0]
	movs r2, 0x3
	negs r2, r2
	ands r2, r3
	movs r3, 0x41
	negs r3, r3
	ands r2, r3
	movs r3, 0x7F
	ands r2, r3
	strb r2, [r0]
	movs r2, 0xFF
	strb r2, [r0, 0x1C]
	movs r0, 0
	strh r0, [r1, 0x30]
	bx lr
	thumb_func_end npc_reset

	thumb_func_start ObjectEventDirectionToImageAnimId
ObjectEventDirectionToImageAnimId: @ 8063430
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806343C @ =gUnknown_83A640C
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806343C: .4byte gUnknown_83A640C
	thumb_func_end ObjectEventDirectionToImageAnimId

	thumb_func_start get_go_image_anim_num
get_go_image_anim_num: @ 8063440
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806344C @ =gUnknown_83A6415
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806344C: .4byte gUnknown_83A6415
	thumb_func_end get_go_image_anim_num

	thumb_func_start get_go_fast_image_anim_num
get_go_fast_image_anim_num: @ 8063450
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806345C @ =gUnknown_83A641E
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806345C: .4byte gUnknown_83A641E
	thumb_func_end get_go_fast_image_anim_num

	thumb_func_start get_go_faster_image_anim_num
get_go_faster_image_anim_num: @ 8063460
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806346C @ =gUnknown_83A6427
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806346C: .4byte gUnknown_83A6427
	thumb_func_end get_go_faster_image_anim_num

	thumb_func_start sub_8063470
sub_8063470: @ 8063470
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806347C @ =gUnknown_83A6430
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806347C: .4byte gUnknown_83A6430
	thumb_func_end sub_8063470

	thumb_func_start sub_8063480
sub_8063480: @ 8063480
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806348C @ =gUnknown_83A6439
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806348C: .4byte gUnknown_83A6439
	thumb_func_end sub_8063480

	thumb_func_start sub_8063490
sub_8063490: @ 8063490
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806349C @ =gUnknown_83A6442
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806349C: .4byte gUnknown_83A6442
	thumb_func_end sub_8063490

	thumb_func_start sub_80634A0
sub_80634A0: @ 80634A0
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _080634AC @ =gUnknown_83A644B
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_080634AC: .4byte gUnknown_83A644B
	thumb_func_end sub_80634A0

	thumb_func_start sub_80634B0
sub_80634B0: @ 80634B0
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _080634BC @ =gUnknown_83A6454
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_080634BC: .4byte gUnknown_83A6454
	thumb_func_end sub_80634B0

	thumb_func_start sub_80634C0
sub_80634C0: @ 80634C0
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _080634CC @ =gUnknown_83A645D
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_080634CC: .4byte gUnknown_83A645D
	thumb_func_end sub_80634C0

	thumb_func_start sub_80634D0
sub_80634D0: @ 80634D0
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _080634DC @ =gUnknown_83A6466
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_080634DC: .4byte gUnknown_83A6466
	thumb_func_end sub_80634D0

	thumb_func_start sub_80634E0
sub_80634E0: @ 80634E0
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _080634EC @ =gUnknown_83A646F
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_080634EC: .4byte gUnknown_83A646F
	thumb_func_end sub_80634E0

	thumb_func_start sub_80634F0
sub_80634F0: @ 80634F0
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _080634FC @ =gUnknown_83A6478
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_080634FC: .4byte gUnknown_83A6478
	thumb_func_end sub_80634F0

	thumb_func_start sub_8063500
sub_8063500: @ 8063500
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806350C @ =gUnknown_83A6481
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806350C: .4byte gUnknown_83A6481
	thumb_func_end sub_8063500

	thumb_func_start sub_8063510
sub_8063510: @ 8063510
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806351C @ =gUnknown_83A648A
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806351C: .4byte gUnknown_83A648A
	thumb_func_end sub_8063510

	thumb_func_start get_run_image_anim_num
get_run_image_anim_num: @ 8063520
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _0806352C @ =gUnknown_83A6493
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_0806352C: .4byte gUnknown_83A6493
	thumb_func_end get_run_image_anim_num

	thumb_func_start sub_8063530
sub_8063530: @ 8063530
	push {lr}
	adds r2, r0, 0
	ldr r1, _08063538 @ =gUnknown_83A3698
	b _08063548
	.align 2, 0
_08063538: .4byte gUnknown_83A3698
_0806353C:
	ldr r0, [r1]
	cmp r0, r2
	bne _08063546
	adds r0, r1, 0
	b _08063550
_08063546:
	adds r1, 0x8
_08063548:
	ldr r0, [r1]
	cmp r0, 0
	bne _0806353C
	movs r0, 0
_08063550:
	pop {r1}
	bx r1
	thumb_func_end sub_8063530

	thumb_func_start npc_apply_anim_looping
npc_apply_anim_looping: @ 8063554
	push {r4,lr}
	adds r4, r1, 0
	lsls r2, 24
	lsrs r2, 24
	ldrb r0, [r0, 0x1]
	lsls r0, 27
	cmp r0, 0
	blt _08063596
	adds r0, r4, 0
	adds r0, 0x2A
	strb r2, [r0]
	ldr r0, [r4, 0x8]
	bl sub_8063530
	adds r1, r4, 0
	adds r1, 0x2B
	cmp r0, 0
	beq _0806358E
	ldrb r2, [r1]
	ldrb r3, [r0, 0x4]
	cmp r2, r3
	bne _08063584
	ldrb r0, [r0, 0x7]
	b _0806358C
_08063584:
	ldrb r3, [r0, 0x5]
	cmp r2, r3
	bne _0806358E
	ldrb r0, [r0, 0x6]
_0806358C:
	strb r0, [r1]
_0806358E:
	ldrb r1, [r1]
	adds r0, r4, 0
	bl SeekSpriteAnim
_08063596:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end npc_apply_anim_looping

	thumb_func_start obj_npc_animation_step
obj_npc_animation_step: @ 806359C
	push {r4,lr}
	adds r4, r1, 0
	lsls r2, 24
	lsrs r2, 24
	ldrb r0, [r0, 0x1]
	lsls r0, 27
	cmp r0, 0
	blt _080635D4
	adds r0, r4, 0
	adds r0, 0x2A
	strb r2, [r0]
	ldr r0, [r4, 0x8]
	bl sub_8063530
	adds r2, r0, 0
	cmp r2, 0
	beq _080635D4
	ldrb r1, [r2, 0x5]
	adds r0, r4, 0
	adds r0, 0x2B
	ldrb r0, [r0]
	ldrb r3, [r2, 0x4]
	cmp r0, r3
	bhi _080635CE
	ldrb r1, [r2, 0x4]
_080635CE:
	adds r0, r4, 0
	bl SeekSpriteAnim
_080635D4:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end obj_npc_animation_step

	thumb_func_start sub_80635DC
sub_80635DC: @ 80635DC
	push {lr}
	lsls r1, 16
	lsrs r1, 16
	lsls r3, 16
	lsrs r3, 16
	lsls r0, 16
	asrs r0, 16
	lsls r2, 16
	asrs r2, 16
	cmp r0, r2
	ble _080635F6
	movs r0, 0x3
	b _0806360C
_080635F6:
	cmp r0, r2
	bge _080635FE
	movs r0, 0x4
	b _0806360C
_080635FE:
	lsls r1, 16
	lsls r0, r3, 16
	cmp r1, r0
	bgt _0806360A
	movs r0, 0x1
	b _0806360C
_0806360A:
	movs r0, 0x2
_0806360C:
	pop {r1}
	bx r1
	thumb_func_end sub_80635DC

	thumb_func_start SetTrainerMovementType
SetTrainerMovementType: @ 8063610
	push {r4,lr}
	mov r12, r0
	lsls r1, 24
	lsrs r1, 24
	movs r3, 0
	strb r1, [r0, 0x6]
	adds r0, 0x21
	strb r3, [r0]
	adds r0, 0x1
	strb r3, [r0]
	ldr r4, _08063654 @ =gSprites
	mov r0, r12
	ldrb r2, [r0, 0x4]
	lsls r0, r2, 4
	adds r0, r2
	lsls r0, 2
	adds r2, r4, 0
	adds r2, 0x1C
	adds r0, r2
	ldr r2, _08063658 @ =gMovementTypeCallbacks
	lsls r1, 2
	adds r1, r2
	ldr r1, [r1]
	str r1, [r0]
	mov r0, r12
	ldrb r1, [r0, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r4
	strh r3, [r0, 0x30]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08063654: .4byte gSprites
_08063658: .4byte gMovementTypeCallbacks
	thumb_func_end SetTrainerMovementType

	thumb_func_start GetTrainerFacingDirectionMovementType
GetTrainerFacingDirectionMovementType: @ 806365C
	lsls r0, 24
	lsrs r0, 24
	ldr r1, _08063668 @ =gUnknown_83A649C
	adds r0, r1
	ldrb r0, [r0]
	bx lr
	.align 2, 0
_08063668: .4byte gUnknown_83A649C
	thumb_func_end GetTrainerFacingDirectionMovementType

	thumb_func_start npc_block_way__next_tile
npc_block_way__next_tile: @ 806366C
	push {r4-r6,lr}
	sub sp, 0x4
	adds r6, r0, 0
	lsls r5, r1, 24
	lsrs r5, 24
	ldrh r1, [r6, 0x10]
	mov r0, sp
	strh r1, [r0]
	ldrh r0, [r6, 0x12]
	mov r4, sp
	adds r4, 0x2
	strh r0, [r4]
	adds r0, r5, 0
	mov r1, sp
	adds r2, r4, 0
	bl MoveCoords
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r4, r0]
	adds r0, r6, 0
	adds r3, r5, 0
	bl npc_block_way
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end npc_block_way__next_tile

	thumb_func_start npc_block_way
npc_block_way: @ 80636AC
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	adds r6, r0, 0
	lsls r1, 16
	lsls r2, 16
	lsls r3, 24
	lsrs r7, r3, 24
	mov r8, r7
	lsrs r0, r1, 16
	mov r9, r0
	asrs r5, r1, 16
	lsrs r0, r2, 16
	mov r10, r0
	asrs r4, r2, 16
	adds r0, r6, 0
	adds r1, r5, 0
	adds r2, r4, 0
	bl IsCoordOutsideObjectEventMovementRect
	lsls r0, 24
	cmp r0, 0
	beq _080636E2
	movs r0, 0x1
	b _08063762
_080636E2:
	adds r0, r5, 0
	adds r1, r4, 0
	bl MapGridIsImpassableAt
	lsls r0, 24
	cmp r0, 0
	bne _08063724
	adds r0, r5, 0
	adds r1, r4, 0
	bl GetMapBorderIdAt
	movs r1, 0x1
	negs r1, r1
	cmp r0, r1
	beq _08063724
	adds r0, r6, 0
	adds r1, r5, 0
	adds r2, r4, 0
	adds r3, r7, 0
	bl IsMetatileDirectionallyImpassable
	lsls r0, 24
	cmp r0, 0
	bne _08063724
	ldrb r0, [r6, 0x1]
	lsrs r0, 7
	cmp r0, 0
	beq _08063728
	mov r0, r8
	bl CanCameraMoveInDirection
	cmp r0, 0
	bne _08063728
_08063724:
	movs r0, 0x2
	b _08063762
_08063728:
	ldrb r0, [r6, 0xB]
	lsls r0, 28
	lsrs r0, 28
	mov r2, r9
	lsls r1, r2, 16
	asrs r5, r1, 16
	mov r2, r10
	lsls r1, r2, 16
	asrs r4, r1, 16
	adds r1, r5, 0
	adds r2, r4, 0
	bl IsZCoordMismatchAt
	lsls r0, 24
	cmp r0, 0
	beq _0806374C
	movs r0, 0x3
	b _08063762
_0806374C:
	adds r0, r6, 0
	adds r1, r5, 0
	adds r2, r4, 0
	bl CheckForCollisionBetweenObjectEvents
	lsls r0, 24
	cmp r0, 0
	bne _08063760
	movs r0, 0
	b _08063762
_08063760:
	movs r0, 0x4
_08063762:
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end npc_block_way

	thumb_func_start sub_8063770
sub_8063770: @ 8063770
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	adds r7, r0, 0
	lsls r1, 16
	lsls r2, 16
	lsls r3, 24
	lsrs r3, 24
	mov r8, r3
	lsrs r0, r1, 16
	mov r9, r0
	asrs r6, r1, 16
	lsrs r0, r2, 16
	mov r10, r0
	asrs r5, r2, 16
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	bl IsCoordOutsideObjectEventMovementRect
	lsls r0, 24
	lsrs r0, 24
	negs r1, r0
	orrs r1, r0
	lsrs r4, r1, 31
	adds r0, r6, 0
	adds r1, r5, 0
	bl MapGridIsImpassableAt
	lsls r0, 24
	cmp r0, 0
	bne _080637E8
	adds r0, r6, 0
	adds r1, r5, 0
	bl GetMapBorderIdAt
	movs r1, 0x1
	negs r1, r1
	cmp r0, r1
	beq _080637E8
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	mov r3, r8
	bl IsMetatileDirectionallyImpassable
	lsls r0, 24
	cmp r0, 0
	bne _080637E8
	ldrb r0, [r7, 0x1]
	lsrs r0, 7
	cmp r0, 0
	beq _080637EC
	mov r0, r8
	bl CanCameraMoveInDirection
	cmp r0, 0
	bne _080637EC
_080637E8:
	movs r0, 0x2
	orrs r4, r0
_080637EC:
	ldrb r0, [r7, 0xB]
	lsls r0, 28
	lsrs r0, 28
	mov r2, r9
	lsls r1, r2, 16
	asrs r6, r1, 16
	mov r2, r10
	lsls r1, r2, 16
	asrs r5, r1, 16
	adds r1, r6, 0
	adds r2, r5, 0
	bl IsZCoordMismatchAt
	lsls r0, 24
	cmp r0, 0
	beq _08063814
	movs r0, 0x4
	orrs r4, r0
	lsls r0, r4, 24
	lsrs r4, r0, 24
_08063814:
	adds r0, r7, 0
	adds r1, r6, 0
	adds r2, r5, 0
	bl CheckForCollisionBetweenObjectEvents
	lsls r0, 24
	cmp r0, 0
	beq _0806382C
	movs r0, 0x8
	orrs r4, r0
	lsls r0, r4, 24
	lsrs r4, r0, 24
_0806382C:
	adds r0, r4, 0
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_8063770

	thumb_func_start IsCoordOutsideObjectEventMovementRect
IsCoordOutsideObjectEventMovementRect: @ 806383C
	push {r4,r5,lr}
	adds r4, r0, 0
	lsls r1, 16
	lsrs r3, r1, 16
	lsls r2, 16
	lsrs r5, r2, 16
	ldrb r1, [r4, 0x19]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0
	beq _08063874
	lsls r1, 28
	lsrs r2, r1, 28
	ldrh r0, [r4, 0xC]
	subs r2, r0, r2
	lsrs r1, 28
	adds r0, r1
	lsls r0, 16
	lsrs r1, r0, 16
	lsls r2, 16
	lsls r0, r3, 16
	asrs r3, r0, 16
	cmp r2, r0
	bgt _080638A0
	lsls r0, r1, 16
	asrs r0, 16
	cmp r0, r3
	blt _080638A0
_08063874:
	ldrb r1, [r4, 0x19]
	movs r0, 0xF0
	ands r0, r1
	cmp r0, 0
	beq _080638A4
	lsls r1, 24
	lsrs r2, r1, 28
	ldrh r0, [r4, 0xE]
	subs r2, r0, r2
	lsrs r1, 28
	adds r0, r1
	lsls r0, 16
	lsrs r1, r0, 16
	lsls r2, 16
	lsls r0, r5, 16
	asrs r3, r0, 16
	cmp r2, r0
	bgt _080638A0
	lsls r0, r1, 16
	asrs r0, 16
	cmp r0, r3
	bge _080638A4
_080638A0:
	movs r0, 0x1
	b _080638A6
_080638A4:
	movs r0, 0
_080638A6:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end IsCoordOutsideObjectEventMovementRect

	thumb_func_start IsMetatileDirectionallyImpassable
IsMetatileDirectionallyImpassable: @ 80638AC
	push {r4-r7,lr}
	lsls r1, 16
	lsrs r6, r1, 16
	lsls r2, 16
	lsrs r7, r2, 16
	lsls r3, 24
	ldr r1, _080638F4 @ =gUnknown_83A64A8
	lsrs r3, 22
	subs r5, r3, 0x4
	adds r1, r5, r1
	ldrb r0, [r0, 0x1E]
	ldr r1, [r1]
	bl _call_via_r1
	lsls r0, 24
	cmp r0, 0
	bne _080638EE
	ldr r4, _080638F8 @ =gUnknown_83A64B8
	adds r4, r5, r4
	lsls r0, r6, 16
	asrs r0, 16
	lsls r1, r7, 16
	asrs r1, 16
	bl MapGridGetMetatileBehaviorAt
	lsls r0, 24
	lsrs r0, 24
	ldr r1, [r4]
	bl _call_via_r1
	lsls r0, 24
	cmp r0, 0
	beq _080638FC
_080638EE:
	movs r0, 0x1
	b _080638FE
	.align 2, 0
_080638F4: .4byte gUnknown_83A64A8
_080638F8: .4byte gUnknown_83A64B8
_080638FC:
	movs r0, 0
_080638FE:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end IsMetatileDirectionallyImpassable

	thumb_func_start CheckForCollisionBetweenObjectEvents
CheckForCollisionBetweenObjectEvents: @ 8063904
	push {r4-r7,lr}
	adds r6, r0, 0
	lsls r1, 16
	lsrs r7, r1, 16
	movs r4, 0
	lsls r2, 16
	asrs r5, r2, 16
_08063912:
	lsls r0, r4, 3
	adds r0, r4
	lsls r0, 2
	ldr r1, _08063968 @ =gObjectEvents
	adds r2, r0, r1
	ldrb r0, [r2]
	lsls r0, 31
	cmp r0, 0
	beq _0806396C
	cmp r2, r6
	beq _0806396C
	movs r0, 0x10
	ldrsh r1, [r2, r0]
	lsls r0, r7, 16
	asrs r3, r0, 16
	cmp r1, r3
	bne _0806393C
	movs r1, 0x12
	ldrsh r0, [r2, r1]
	cmp r0, r5
	beq _0806394C
_0806393C:
	movs r1, 0x14
	ldrsh r0, [r2, r1]
	cmp r0, r3
	bne _0806396C
	movs r1, 0x16
	ldrsh r0, [r2, r1]
	cmp r0, r5
	bne _0806396C
_0806394C:
	ldrb r0, [r6, 0xB]
	lsls r0, 28
	lsrs r0, 28
	ldrb r1, [r2, 0xB]
	lsls r1, 28
	lsrs r1, 28
	bl AreZCoordsCompatible
	lsls r0, 24
	cmp r0, 0
	beq _0806396C
	movs r0, 0x1
	b _08063978
	.align 2, 0
_08063968: .4byte gObjectEvents
_0806396C:
	adds r0, r4, 0x1
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0xF
	bls _08063912
	movs r0, 0
_08063978:
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end CheckForCollisionBetweenObjectEvents

	thumb_func_start IsBerryTreeSparkling
IsBerryTreeSparkling: @ 8063980
	push {lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _080639CC
	ldr r3, _080639C4 @ =gSprites
	ldr r2, _080639C8 @ =gObjectEvents
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r1, [r0, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	ldrh r1, [r0, 0x3C]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _080639CC
	movs r0, 0x1
	b _080639CE
	.align 2, 0
_080639C4: .4byte gSprites
_080639C8: .4byte gObjectEvents
_080639CC:
	movs r0, 0
_080639CE:
	add sp, 0x4
	pop {r1}
	bx r1
	thumb_func_end IsBerryTreeSparkling

	thumb_func_start sub_80639D4
sub_80639D4: @ 80639D4
	push {lr}
	sub sp, 0x4
	lsls r0, 24
	lsrs r0, 24
	lsls r1, 24
	lsrs r1, 24
	lsls r2, 24
	lsrs r2, 24
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _08063A12
	ldr r3, _08063A18 @ =gSprites
	ldr r2, _08063A1C @ =gObjectEvents
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x4]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	adds r1, r3
	ldrh r2, [r1, 0x3C]
	movs r0, 0x4
	orrs r0, r2
	strh r0, [r1, 0x3C]
_08063A12:
	add sp, 0x4
	pop {r0}
	bx r0
	.align 2, 0
_08063A18: .4byte gSprites
_08063A1C: .4byte gObjectEvents
	thumb_func_end sub_80639D4

	thumb_func_start MoveCoords
MoveCoords: @ 8063A20
	push {r4,lr}
	lsls r0, 24
	ldr r3, _08063A40 @ =gUnknown_83A64C8
	lsrs r0, 22
	adds r0, r3
	ldrh r3, [r0]
	ldrh r4, [r1]
	adds r3, r4
	strh r3, [r1]
	ldrh r0, [r0, 0x2]
	ldrh r1, [r2]
	adds r0, r1
	strh r0, [r2]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08063A40: .4byte gUnknown_83A64C8
	thumb_func_end MoveCoords

	thumb_func_start sub_8063A44
sub_8063A44: @ 8063A44
	push {r4,lr}
	lsls r0, 24
	ldr r3, _08063A68 @ =gUnknown_83A64C8
	lsrs r0, 22
	adds r0, r3
	ldrh r3, [r0]
	lsls r3, 4
	ldrh r4, [r1]
	adds r3, r4
	strh r3, [r1]
	ldrh r0, [r0, 0x2]
	lsls r0, 4
	ldrh r1, [r2]
	adds r0, r1
	strh r0, [r2]
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08063A68: .4byte gUnknown_83A64C8
	thumb_func_end sub_8063A44

	thumb_func_start sub_8063A6C
sub_8063A6C: @ 8063A6C
	push {r4-r7,lr}
	adds r4, r1, 0
	ldr r1, [sp, 0x14]
	lsls r0, 24
	lsls r3, 16
	lsrs r3, 16
	adds r7, r3, 0
	lsls r1, 16
	lsrs r6, r1, 16
	mov r12, r6
	ldr r1, _08063AD0 @ =gUnknown_83A64C8
	lsrs r0, 22
	adds r5, r0, r1
	movs r0, 0
	ldrsh r1, [r5, r0]
	cmp r1, 0
	ble _08063A98
	lsls r0, r3, 16
	asrs r0, 16
	ldrh r3, [r4]
	adds r0, r3
	strh r0, [r4]
_08063A98:
	cmp r1, 0
	bge _08063AA6
	ldrh r1, [r4]
	lsls r0, r7, 16
	asrs r0, 16
	subs r1, r0
	strh r1, [r4]
_08063AA6:
	movs r0, 0x2
	ldrsh r1, [r5, r0]
	cmp r1, 0
	ble _08063AB8
	lsls r0, r6, 16
	asrs r0, 16
	ldrh r3, [r2]
	adds r0, r3
	strh r0, [r2]
_08063AB8:
	cmp r1, 0
	bge _08063AC8
	ldrh r1, [r2]
	mov r3, r12
	lsls r0, r3, 16
	asrs r0, 16
	subs r1, r0
	strh r1, [r2]
_08063AC8:
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_08063AD0: .4byte gUnknown_83A64C8
	thumb_func_end sub_8063A6C

	thumb_func_start sub_8063AD4
sub_8063AD4: @ 8063AD4
	push {r4,r5,lr}
	ldr r5, _08063B10 @ =gSaveBlock1Ptr
	ldr r4, [r5]
	ldrh r4, [r4]
	lsls r0, 16
	asrs r0, 16
	subs r0, r4
	lsls r0, 4
	strh r0, [r2]
	ldr r0, [r5]
	ldrh r0, [r0, 0x2]
	lsls r1, 16
	asrs r1, 16
	subs r1, r0
	lsls r1, 4
	strh r1, [r3]
	ldr r1, _08063B14 @ =gUnknown_300506C
	ldrh r0, [r2]
	ldrh r1, [r1]
	subs r0, r1
	strh r0, [r2]
	ldr r1, _08063B18 @ =gUnknown_3005068
	ldrh r0, [r3]
	ldrh r1, [r1]
	subs r0, r1
	strh r0, [r3]
	pop {r4,r5}
	pop {r0}
	bx r0
	.align 2, 0
_08063B10: .4byte gSaveBlock1Ptr
_08063B14: .4byte gUnknown_300506C
_08063B18: .4byte gUnknown_3005068
	thumb_func_end sub_8063AD4

	thumb_func_start sub_8063B1C
sub_8063B1C: @ 8063B1C
	push {r4-r7,lr}
	adds r7, r2, 0
	mov r12, r3
	lsls r0, 16
	lsrs r5, r0, 16
	lsls r1, 16
	lsrs r6, r1, 16
	ldr r0, _08063BB0 @ =gUnknown_300506C
	ldrh r0, [r0]
	negs r0, r0
	ldr r1, _08063BB4 @ =gUnknown_3005050
	ldr r2, [r1, 0x10]
	subs r0, r2
	lsls r0, 16
	lsrs r3, r0, 16
	ldr r0, _08063BB8 @ =gUnknown_3005068
	ldrh r0, [r0]
	negs r0, r0
	ldr r1, [r1, 0x14]
	subs r0, r1
	lsls r0, 16
	lsrs r4, r0, 16
	cmp r2, 0
	ble _08063B56
	lsls r0, r3, 16
	movs r3, 0x80
	lsls r3, 13
	adds r0, r3
	lsrs r3, r0, 16
_08063B56:
	cmp r2, 0
	bge _08063B62
	lsls r0, r3, 16
	ldr r2, _08063BBC @ =0xfff00000
	adds r0, r2
	lsrs r3, r0, 16
_08063B62:
	cmp r1, 0
	ble _08063B70
	lsls r0, r4, 16
	movs r2, 0x80
	lsls r2, 13
	adds r0, r2
	lsrs r4, r0, 16
_08063B70:
	cmp r1, 0
	bge _08063B7C
	lsls r0, r4, 16
	ldr r1, _08063BBC @ =0xfff00000
	adds r0, r1
	lsrs r4, r0, 16
_08063B7C:
	ldr r2, _08063BC0 @ =gSaveBlock1Ptr
	ldr r0, [r2]
	ldrh r1, [r0]
	lsls r0, r5, 16
	asrs r0, 16
	subs r0, r1
	lsls r0, 4
	lsls r1, r3, 16
	asrs r1, 16
	adds r1, r0
	strh r1, [r7]
	ldr r0, [r2]
	ldrh r1, [r0, 0x2]
	lsls r0, r6, 16
	asrs r0, 16
	subs r0, r1
	lsls r0, 4
	lsls r1, r4, 16
	asrs r1, 16
	adds r1, r0
	mov r2, r12
	strh r1, [r2]
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_08063BB0: .4byte gUnknown_300506C
_08063BB4: .4byte gUnknown_3005050
_08063BB8: .4byte gUnknown_3005068
_08063BBC: .4byte 0xfff00000
_08063BC0: .4byte gSaveBlock1Ptr
	thumb_func_end sub_8063B1C

	thumb_func_start sub_8063BC4
sub_8063BC4: @ 8063BC4
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	adds r6, r0, 0
	mov r8, r1
	adds r4, r2, 0
	adds r5, r3, 0
	lsls r4, 16
	lsrs r4, 16
	lsls r5, 16
	lsrs r5, 16
	movs r1, 0
	ldrsh r0, [r6, r1]
	mov r2, r8
	movs r3, 0
	ldrsh r1, [r2, r3]
	adds r2, r6, 0
	mov r3, r8
	bl sub_8063B1C
	lsls r4, 16
	asrs r4, 16
	ldrh r0, [r6]
	adds r4, r0
	strh r4, [r6]
	lsls r5, 16
	asrs r5, 16
	mov r1, r8
	ldrh r1, [r1]
	adds r5, r1
	mov r2, r8
	strh r5, [r2]
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8063BC4

	thumb_func_start GetObjectEventMovingCameraOffset
GetObjectEventMovingCameraOffset: @ 8063C10
	push {lr}
	adds r2, r0, 0
	movs r0, 0
	strh r0, [r2]
	strh r0, [r1]
	ldr r3, _08063C4C @ =gUnknown_3005050
	ldr r0, [r3, 0x10]
	cmp r0, 0
	ble _08063C26
	movs r0, 0x1
	strh r0, [r2]
_08063C26:
	ldr r0, [r3, 0x10]
	cmp r0, 0
	bge _08063C32
	ldrh r0, [r2]
	subs r0, 0x1
	strh r0, [r2]
_08063C32:
	ldr r2, [r3, 0x14]
	cmp r2, 0
	ble _08063C3E
	ldrh r0, [r1]
	adds r0, 0x1
	strh r0, [r1]
_08063C3E:
	cmp r2, 0
	bge _08063C48
	ldrh r0, [r1]
	subs r0, 0x1
	strh r0, [r1]
_08063C48:
	pop {r0}
	bx r0
	.align 2, 0
_08063C4C: .4byte gUnknown_3005050
	thumb_func_end GetObjectEventMovingCameraOffset

	thumb_func_start ObjectEventMoveDestCoords
ObjectEventMoveDestCoords: @ 8063C50
	push {r4,lr}
	lsls r1, 24
	lsrs r1, 24
	ldrh r4, [r0, 0x10]
	strh r4, [r2]
	ldrh r0, [r0, 0x12]
	strh r0, [r3]
	adds r0, r1, 0
	adds r1, r2, 0
	adds r2, r3, 0
	bl MoveCoords
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end ObjectEventMoveDestCoords

	thumb_func_start ObjectEventIsMovementOverridden
ObjectEventIsMovementOverridden: @ 8063C70
	push {lr}
	ldrb r1, [r0]
	movs r0, 0x42
	ands r0, r1
	cmp r0, 0
	bne _08063C80
	movs r0, 0
	b _08063C82
_08063C80:
	movs r0, 0x1
_08063C82:
	pop {r1}
	bx r1
	thumb_func_end ObjectEventIsMovementOverridden

	thumb_func_start ObjectEventIsSpecialAnimActive
ObjectEventIsSpecialAnimActive: @ 8063C88
	push {lr}
	adds r1, r0, 0
	ldrb r0, [r1]
	lsls r0, 25
	cmp r0, 0
	bge _08063C9E
	ldrb r0, [r1, 0x1C]
	cmp r0, 0xFF
	beq _08063C9E
	movs r0, 0x1
	b _08063CA0
_08063C9E:
	movs r0, 0
_08063CA0:
	pop {r1}
	bx r1
	thumb_func_end ObjectEventIsSpecialAnimActive

	thumb_func_start ObjectEventSetHeldMovement
ObjectEventSetHeldMovement: @ 8063CA4
	push {r4,r5,lr}
	adds r4, r0, 0
	lsls r1, 24
	lsrs r5, r1, 24
	bl sub_8112CAC
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _08063CC8
	adds r0, r4, 0
	bl ObjectEventIsMovementOverridden
	lsls r0, 24
	cmp r0, 0
	beq _08063CCE
	movs r0, 0x1
	b _08063CF4
_08063CC8:
	adds r0, r4, 0
	bl ObjectEventClearAnimIfSpecialAnimActive
_08063CCE:
	adds r0, r4, 0
	bl npc_sync_anim_pause_bits
	movs r3, 0
	strb r5, [r4, 0x1C]
	ldrb r0, [r4]
	movs r1, 0x40
	orrs r0, r1
	movs r1, 0x7F
	ands r0, r1
	strb r0, [r4]
	ldr r2, _08063CFC @ =gSprites
	ldrb r1, [r4, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	strh r3, [r0, 0x32]
	movs r0, 0
_08063CF4:
	pop {r4,r5}
	pop {r1}
	bx r1
	.align 2, 0
_08063CFC: .4byte gSprites
	thumb_func_end ObjectEventSetHeldMovement

	thumb_func_start ObjectEventForceSetSpecialAnim
ObjectEventForceSetSpecialAnim: @ 8063D00
	push {r4,r5,lr}
	adds r5, r0, 0
	lsls r4, r1, 24
	lsrs r4, 24
	bl ObjectEventClearAnimIfSpecialAnimActive
	adds r0, r5, 0
	adds r1, r4, 0
	bl ObjectEventSetHeldMovement
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end ObjectEventForceSetSpecialAnim

	thumb_func_start ObjectEventClearAnimIfSpecialAnimActive
ObjectEventClearAnimIfSpecialAnimActive: @ 8063D1C
	push {lr}
	adds r1, r0, 0
	ldrb r0, [r1]
	lsls r0, 25
	cmp r0, 0
	bge _08063D2E
	adds r0, r1, 0
	bl ObjectEventClearAnim
_08063D2E:
	pop {r0}
	bx r0
	thumb_func_end ObjectEventClearAnimIfSpecialAnimActive

	thumb_func_start ObjectEventClearAnim
ObjectEventClearAnim: @ 8063D34
	movs r1, 0xFF
	strb r1, [r0, 0x1C]
	ldrb r2, [r0]
	movs r1, 0x41
	negs r1, r1
	ands r1, r2
	movs r2, 0x7F
	ands r1, r2
	strb r1, [r0]
	ldr r3, _08063D64 @ =gSprites
	ldrb r2, [r0, 0x4]
	lsls r1, r2, 4
	adds r1, r2
	lsls r1, 2
	adds r1, r3
	movs r2, 0
	strh r2, [r1, 0x30]
	ldrb r1, [r0, 0x4]
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	adds r0, r3
	strh r2, [r0, 0x32]
	bx lr
	.align 2, 0
_08063D64: .4byte gSprites
	thumb_func_end ObjectEventClearAnim

	thumb_func_start ObjectEventCheckHeldMovementStatus
ObjectEventCheckHeldMovementStatus: @ 8063D68
	push {lr}
	ldrb r1, [r0]
	lsls r0, r1, 25
	cmp r0, 0
	blt _08063D76
	movs r0, 0x10
	b _08063D78
_08063D76:
	lsrs r0, r1, 7
_08063D78:
	pop {r1}
	bx r1
	thumb_func_end ObjectEventCheckHeldMovementStatus

	thumb_func_start ObjectEventClearHeldMovementIfFinished
ObjectEventClearHeldMovementIfFinished: @ 8063D7C
	push {r4,r5,lr}
	adds r5, r0, 0
	bl ObjectEventCheckHeldMovementStatus
	lsls r0, 24
	lsrs r4, r0, 24
	cmp r4, 0
	beq _08063D96
	cmp r4, 0x10
	beq _08063D96
	adds r0, r5, 0
	bl ObjectEventClearAnimIfSpecialAnimActive
_08063D96:
	adds r0, r4, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end ObjectEventClearHeldMovementIfFinished

	thumb_func_start ObjectEventGetSpecialAnim
ObjectEventGetSpecialAnim: @ 8063DA0
	push {lr}
	adds r1, r0, 0
	ldrb r0, [r1]
	lsls r0, 25
	cmp r0, 0
	blt _08063DB0
	movs r0, 0xFF
	b _08063DB2
_08063DB0:
	ldrb r0, [r1, 0x1C]
_08063DB2:
	pop {r1}
	bx r1
	thumb_func_end ObjectEventGetSpecialAnim

	thumb_func_start ObjectEventStep
ObjectEventStep: @ 8063DB8
	push {r4-r6,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r6, r2, 0
	bl DoGroundEffects_OnSpawn
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80679C8
	adds r0, r4, 0
	bl ObjectEventIsSpecialAnimActive
	lsls r0, 24
	cmp r0, 0
	beq _08063DE2
	adds r0, r4, 0
	adds r1, r5, 0
	bl ObjectEventExecSpecialAnim
	b _08063DF8
_08063DE2:
	ldrb r0, [r4, 0x1]
	lsls r0, 31
	cmp r0, 0
	bne _08063DF8
_08063DEA:
	adds r0, r4, 0
	adds r1, r5, 0
	bl _call_via_r6
	lsls r0, 24
	cmp r0, 0
	bne _08063DEA
_08063DF8:
	adds r0, r4, 0
	adds r1, r5, 0
	bl DoGroundEffects_OnBeginStep
	adds r0, r4, 0
	adds r1, r5, 0
	bl DoGroundEffects_OnFinishStep
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_obj_transfer_image_anim_pause_flag
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80679F8
	adds r0, r4, 0
	adds r1, r5, 0
	bl ObjectEventUpdateSubpriority
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end ObjectEventStep

	thumb_func_start sub_8063E28
sub_8063E28: @ 8063E28
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl DoGroundEffects_OnSpawn
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80679C8
	adds r0, r4, 0
	bl ObjectEventIsSpecialAnimActive
	lsls r0, 24
	cmp r0, 0
	beq _08063E5C
	adds r0, r5, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x4
	ands r0, r1
	cmp r0, 0
	bne _08063E5C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064544
_08063E5C:
	ldrb r0, [r4, 0x1E]
	bl MetatileBehavior_IsIce_2
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _08063E78
	ldrb r0, [r4, 0x1E]
	bl MetatileBehavior_IsUnknownMovement48
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bne _08063E80
_08063E78:
	ldrb r0, [r4, 0x1]
	movs r1, 0x4
	orrs r0, r1
	b _08063E88
_08063E80:
	ldrb r1, [r4, 0x1]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
_08063E88:
	strb r0, [r4, 0x1]
	adds r0, r4, 0
	adds r1, r5, 0
	bl DoGroundEffects_OnBeginStep
	adds r0, r4, 0
	adds r1, r5, 0
	bl DoGroundEffects_OnFinishStep
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_obj_transfer_image_anim_pause_flag
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80679F8
	adds r0, r4, 0
	adds r1, r5, 0
	bl ObjectEventUpdateSubpriority
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8063E28

	thumb_func_start sub_8063EB8
sub_8063EB8: @ 8063EB8
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08063EE0 @ =gUnknown_83A64EC
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08063ED0
	movs r4, 0
_08063ED0:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063EE0: .4byte gUnknown_83A64EC
	thumb_func_end sub_8063EB8

	thumb_func_start sub_8063EE4
sub_8063EE4: @ 8063EE4
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08063F0C @ =gUnknown_83A64F1
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08063EFC
	movs r4, 0
_08063EFC:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063F0C: .4byte gUnknown_83A64F1
	thumb_func_end sub_8063EE4

	thumb_func_start sub_8063F10
sub_8063F10: @ 8063F10
	push {lr}
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x4
	bls _08063F1C
	movs r1, 0
_08063F1C:
	ldr r0, _08063F28 @ =gUnknown_83A64F6
	adds r0, r1, r0
	ldrb r0, [r0]
	pop {r1}
	bx r1
	.align 2, 0
_08063F28: .4byte gUnknown_83A64F6
	thumb_func_end sub_8063F10

	thumb_func_start sub_8063F2C
sub_8063F2C: @ 8063F2C
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08063F54 @ =gUnknown_83A64FB
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08063F44
	movs r4, 0
_08063F44:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063F54: .4byte gUnknown_83A64FB
	thumb_func_end sub_8063F2C

	thumb_func_start sub_8063F58
sub_8063F58: @ 8063F58
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08063F80 @ =gUnknown_83A6500
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08063F70
	movs r4, 0
_08063F70:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063F80: .4byte gUnknown_83A6500
	thumb_func_end sub_8063F58

	thumb_func_start sub_8063F84
sub_8063F84: @ 8063F84
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08063FAC @ =gUnknown_83A6505
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08063F9C
	movs r4, 0
_08063F9C:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063FAC: .4byte gUnknown_83A6505
	thumb_func_end sub_8063F84

	thumb_func_start sub_8063FB0
sub_8063FB0: @ 8063FB0
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08063FD8 @ =gUnknown_83A650A
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08063FC8
	movs r4, 0
_08063FC8:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08063FD8: .4byte gUnknown_83A650A
	thumb_func_end sub_8063FB0

	thumb_func_start sub_8063FDC
sub_8063FDC: @ 8063FDC
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064004 @ =gUnknown_83A650F
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08063FF4
	movs r4, 0
_08063FF4:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064004: .4byte gUnknown_83A650F
	thumb_func_end sub_8063FDC

	thumb_func_start sub_8064008
sub_8064008: @ 8064008
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064030 @ =gUnknown_83A6514
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064020
	movs r4, 0
_08064020:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064030: .4byte gUnknown_83A6514
	thumb_func_end sub_8064008

	thumb_func_start sub_8064034
sub_8064034: @ 8064034
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _0806405C @ =gUnknown_83A6519
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _0806404C
	movs r4, 0
_0806404C:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806405C: .4byte gUnknown_83A6519
	thumb_func_end sub_8064034

	thumb_func_start sub_8064060
sub_8064060: @ 8064060
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064088 @ =gUnknown_83A651E
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064078
	movs r4, 0
_08064078:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064088: .4byte gUnknown_83A651E
	thumb_func_end sub_8064060

	thumb_func_start sub_806408C
sub_806408C: @ 806408C
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080640B4 @ =gUnknown_83A6523
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _080640A4
	movs r4, 0
_080640A4:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080640B4: .4byte gUnknown_83A6523
	thumb_func_end sub_806408C

	thumb_func_start sub_80640B8
sub_80640B8: @ 80640B8
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080640E0 @ =gUnknown_83A6528
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _080640D0
	movs r4, 0
_080640D0:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080640E0: .4byte gUnknown_83A6528
	thumb_func_end sub_80640B8

	thumb_func_start sub_80640E4
sub_80640E4: @ 80640E4
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _0806410C @ =gUnknown_83A652D
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _080640FC
	movs r4, 0
_080640FC:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806410C: .4byte gUnknown_83A652D
	thumb_func_end sub_80640E4

	thumb_func_start GetJumpLedgeAnimId
GetJumpLedgeAnimId: @ 8064110
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064138 @ =gUnknown_83A6532
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064128
	movs r4, 0
_08064128:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064138: .4byte gUnknown_83A6532
	thumb_func_end GetJumpLedgeAnimId

	thumb_func_start sub_806413C
sub_806413C: @ 806413C
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064164 @ =gUnknown_83A6537
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064154
	movs r4, 0
_08064154:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064164: .4byte gUnknown_83A6537
	thumb_func_end sub_806413C

	thumb_func_start sub_8064168
sub_8064168: @ 8064168
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064190 @ =gUnknown_83A653C
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064180
	movs r4, 0
_08064180:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064190: .4byte gUnknown_83A653C
	thumb_func_end sub_8064168

	thumb_func_start sub_8064194
sub_8064194: @ 8064194
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080641BC @ =gUnknown_83A6541
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _080641AC
	movs r4, 0
_080641AC:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080641BC: .4byte gUnknown_83A6541
	thumb_func_end sub_8064194

	thumb_func_start sub_80641C0
sub_80641C0: @ 80641C0
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080641E8 @ =gUnknown_83A6546
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _080641D8
	movs r4, 0
_080641D8:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080641E8: .4byte gUnknown_83A6546
	thumb_func_end sub_80641C0

	thumb_func_start sub_80641EC
sub_80641EC: @ 80641EC
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064214 @ =gUnknown_83A654B
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064204
	movs r4, 0
_08064204:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064214: .4byte gUnknown_83A654B
	thumb_func_end sub_80641EC

	thumb_func_start GetStepInPlaceDelay32AnimId
GetStepInPlaceDelay32AnimId: @ 8064218
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064240 @ =gUnknown_83A6550
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064230
	movs r4, 0
_08064230:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064240: .4byte gUnknown_83A6550
	thumb_func_end GetStepInPlaceDelay32AnimId

	thumb_func_start GetStepInPlaceDelay16AnimId
GetStepInPlaceDelay16AnimId: @ 8064244
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _0806426C @ =gUnknown_83A6555
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _0806425C
	movs r4, 0
_0806425C:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806426C: .4byte gUnknown_83A6555
	thumb_func_end GetStepInPlaceDelay16AnimId

	thumb_func_start sub_8064270
sub_8064270: @ 8064270
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064298 @ =gUnknown_83A655A
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064288
	movs r4, 0
_08064288:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064298: .4byte gUnknown_83A655A
	thumb_func_end sub_8064270

	thumb_func_start GetStepInPlaceDelay4AnimId
GetStepInPlaceDelay4AnimId: @ 806429C
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080642C4 @ =gUnknown_83A655F
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _080642B4
	movs r4, 0
_080642B4:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080642C4: .4byte gUnknown_83A655F
	thumb_func_end GetStepInPlaceDelay4AnimId

	thumb_func_start ObjectEventFaceOppositeDirection
ObjectEventFaceOppositeDirection: @ 80642C8
	push {r4,lr}
	adds r4, r0, 0
	lsls r0, r1, 24
	lsrs r0, 24
	bl GetOppositeDirection
	lsls r0, 24
	lsrs r0, 24
	bl sub_8063EB8
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl ObjectEventSetHeldMovement
	lsls r0, 24
	lsrs r0, 24
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end ObjectEventFaceOppositeDirection

	thumb_func_start sub_80642F4
sub_80642F4: @ 80642F4
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _0806431C @ =gUnknown_83A6564
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _0806430C
	movs r4, 0
_0806430C:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806431C: .4byte gUnknown_83A6564
	thumb_func_end sub_80642F4

	thumb_func_start sub_8064320
sub_8064320: @ 8064320
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064348 @ =gUnknown_83A6569
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064338
	movs r4, 0
_08064338:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064348: .4byte gUnknown_83A6569
	thumb_func_end sub_8064320

	thumb_func_start sub_806434C
sub_806434C: @ 806434C
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064374 @ =gUnknown_83A656E
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064364
	movs r4, 0
_08064364:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064374: .4byte gUnknown_83A656E
	thumb_func_end sub_806434C

	thumb_func_start sub_8064378
sub_8064378: @ 8064378
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080643A0 @ =gUnknown_83A6573
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064390
	movs r4, 0
_08064390:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080643A0: .4byte gUnknown_83A6573
	thumb_func_end sub_8064378

	thumb_func_start sub_80643A4
sub_80643A4: @ 80643A4
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080643CC @ =gUnknown_83A6578
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _080643BC
	movs r4, 0
_080643BC:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080643CC: .4byte gUnknown_83A6578
	thumb_func_end sub_80643A4

	thumb_func_start sub_80643D0
sub_80643D0: @ 80643D0
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080643F8 @ =gUnknown_83A657D
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _080643E8
	movs r4, 0
_080643E8:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080643F8: .4byte gUnknown_83A657D
	thumb_func_end sub_80643D0

	thumb_func_start sub_80643FC
sub_80643FC: @ 80643FC
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064424 @ =gUnknown_83A6582
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064414
	movs r4, 0
_08064414:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064424: .4byte gUnknown_83A6582
	thumb_func_end sub_80643FC

	thumb_func_start sub_8064428
sub_8064428: @ 8064428
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _08064450 @ =gUnknown_83A6587
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _08064440
	movs r4, 0
_08064440:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064450: .4byte gUnknown_83A6587
	thumb_func_end sub_8064428

	thumb_func_start sub_8064454
sub_8064454: @ 8064454
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _0806447C @ =gUnknown_83A658C
	mov r0, sp
	movs r2, 0x5
	bl memcpy
	cmp r4, 0x4
	bls _0806446C
	movs r4, 0
_0806446C:
	mov r1, sp
	adds r0, r1, r4
	ldrb r0, [r0]
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_0806447C: .4byte gUnknown_83A658C
	thumb_func_end sub_8064454

	thumb_func_start GetOppositeDirection
GetOppositeDirection: @ 8064480
	push {r4,lr}
	sub sp, 0x8
	lsls r0, 24
	lsrs r4, r0, 24
	ldr r1, _080644A4 @ =gUnknown_83A6591
	mov r0, sp
	movs r2, 0x8
	bl memcpy
	subs r1, r4, 0x1
	lsls r0, r1, 24
	lsrs r0, 24
	cmp r0, 0x7
	bhi _080644A8
	mov r2, sp
	adds r0, r2, r1
	ldrb r0, [r0]
	b _080644AA
	.align 2, 0
_080644A4: .4byte gUnknown_83A6591
_080644A8:
	adds r0, r4, 0
_080644AA:
	add sp, 0x8
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end GetOppositeDirection

	thumb_func_start zffu_offset_calc
zffu_offset_calc: @ 80644B4
	lsls r0, 24
	lsls r1, 24
	lsrs r1, 24
	ldr r2, _080644C8 @ =gUnknown_83A6599
	lsrs r0, 22
	subs r0, 0x5
	adds r1, r0
	adds r1, r2
	ldrb r0, [r1]
	bx lr
	.align 2, 0
_080644C8: .4byte gUnknown_83A6599
	thumb_func_end zffu_offset_calc

	thumb_func_start state_to_direction
state_to_direction: @ 80644CC
	push {r4,lr}
	lsls r0, 24
	lsrs r4, r0, 24
	lsls r1, 24
	lsrs r1, 24
	adds r0, r1, 0
	lsls r2, 24
	lsrs r2, 24
	cmp r1, 0
	beq _080644EC
	cmp r2, 0
	beq _080644EC
	cmp r1, 0x4
	bhi _080644EC
	cmp r2, 0x4
	bls _080644F0
_080644EC:
	movs r0, 0
	b _08064502
_080644F0:
	adds r1, r2, 0
	bl zffu_offset_calc
	ldr r2, _08064508 @ =gUnknown_83A65A9
	lsls r1, r4, 2
	subs r1, 0x5
	adds r0, r1
	adds r0, r2
	ldrb r0, [r0]
_08064502:
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08064508: .4byte gUnknown_83A65A9
	thumb_func_end state_to_direction

	thumb_func_start ObjectEventExecSpecialAnim
ObjectEventExecSpecialAnim: @ 806450C
	push {r4,lr}
	adds r4, r0, 0
	ldr r2, _08064540 @ =gUnknown_83A65BC
	ldrb r0, [r4, 0x1C]
	lsls r0, 2
	adds r0, r2
	movs r3, 0x32
	ldrsh r2, [r1, r3]
	ldr r0, [r0]
	lsls r2, 2
	adds r2, r0
	ldr r2, [r2]
	adds r0, r4, 0
	bl _call_via_r2
	lsls r0, 24
	cmp r0, 0
	beq _08064538
	ldrb r0, [r4]
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r4]
_08064538:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08064540: .4byte gUnknown_83A65BC
	thumb_func_end ObjectEventExecSpecialAnim

	thumb_func_start sub_8064544
sub_8064544: @ 8064544
	push {r4,lr}
	adds r4, r0, 0
	ldr r2, _08064584 @ =gUnknown_83A65BC
	ldrb r0, [r4, 0x1C]
	lsls r0, 2
	adds r0, r2
	movs r3, 0x32
	ldrsh r2, [r1, r3]
	ldr r0, [r0]
	lsls r2, 2
	adds r2, r0
	ldr r2, [r2]
	adds r0, r4, 0
	bl _call_via_r2
	lsls r0, 24
	cmp r0, 0
	beq _0806457C
	ldrb r0, [r4]
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r4]
	ldrb r0, [r4, 0x5]
	cmp r0, 0x61
	bne _0806457C
	adds r0, r4, 0
	bl sub_806DE28
_0806457C:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_08064584: .4byte gUnknown_83A65BC
	thumb_func_end sub_8064544

	thumb_func_start sub_8064588
sub_8064588: @ 8064588
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r1, _080645B4 @ =gUnknown_83A65BC
	ldrb r0, [r4, 0x1C]
	lsls r0, 2
	adds r0, r1
	movs r2, 0x32
	ldrsh r1, [r5, r2]
	ldr r0, [r0]
	lsls r1, 2
	adds r1, r0
	ldr r2, [r1]
	adds r0, r4, 0
	adds r1, r5, 0
	bl _call_via_r2
	lsls r0, 24
	cmp r0, 0
	bne _080645B8
	movs r0, 0
	b _080645C2
	.align 2, 0
_080645B4: .4byte gUnknown_83A65BC
_080645B8:
	movs r0, 0xFF
	strb r0, [r4, 0x1C]
	movs r0, 0
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080645C2:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064588

	thumb_func_start sub_80645C8
sub_80645C8: @ 80645C8
	push {r4,lr}
	adds r3, r0, 0
	lsls r2, 24
	lsrs r4, r2, 24
	movs r0, 0
	strb r4, [r3, 0x1C]
	strh r0, [r1, 0x32]
	ldr r0, _080645F0 @ =gUnknown_3005E88
	ldrb r0, [r0]
	cmp r0, 0x2
	bne _080645EA
	ldrb r0, [r3, 0x8]
	ldrb r1, [r3, 0x9]
	ldrb r2, [r3, 0xA]
	adds r3, r4, 0
	bl sub_81124EC
_080645EA:
	pop {r4}
	pop {r0}
	bx r0
	.align 2, 0
_080645F0: .4byte gUnknown_3005E88
	thumb_func_end sub_80645C8

	thumb_func_start an_look_any
an_look_any: @ 80645F4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r1, r2, 24
	lsrs r1, 24
	bl ObjectEventSetDirection
	adds r0, r4, 0
	bl npc_coords_shift_still
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl get_go_image_anim_num
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl obj_npc_animation_step
	adds r2, r5, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x1
	strh r0, [r5, 0x32]
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end an_look_any

	thumb_func_start sub_8064638
sub_8064638: @ 8064638
	push {lr}
	movs r2, 0x1
	bl an_look_any
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_8064638

	thumb_func_start sub_8064648
sub_8064648: @ 8064648
	push {lr}
	movs r2, 0x2
	bl an_look_any
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_8064648

	thumb_func_start sub_8064658
sub_8064658: @ 8064658
	push {lr}
	movs r2, 0x3
	bl an_look_any
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_8064658

	thumb_func_start sub_8064668
sub_8064668: @ 8064668
	push {lr}
	movs r2, 0x4
	bl an_look_any
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_8064668

	thumb_func_start sub_8064678
sub_8064678: @ 8064678
	push {r4-r6,lr}
	mov r6, r9
	mov r5, r8
	push {r5,r6}
	sub sp, 0x4
	mov r8, r0
	mov r9, r1
	adds r4, r2, 0
	adds r6, r3, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r6, 24
	lsrs r6, 24
	ldrh r1, [r0, 0x10]
	mov r0, sp
	strh r1, [r0]
	mov r1, r8
	ldrh r0, [r1, 0x12]
	mov r5, sp
	adds r5, 0x2
	strh r0, [r5]
	mov r0, r8
	adds r1, r4, 0
	bl ObjectEventSetDirection
	adds r0, r4, 0
	mov r1, sp
	adds r2, r5, 0
	bl MoveCoords
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r5, r0]
	mov r0, r8
	bl npc_coords_shift
	mov r0, r9
	adds r1, r4, 0
	adds r2, r6, 0
	bl oamt_npc_ministep_reset
	mov r2, r9
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	mov r1, r8
	ldrb r0, [r1]
	movs r1, 0x4
	orrs r0, r1
	mov r2, r8
	strb r0, [r2]
	movs r0, 0x1
	mov r1, r9
	strh r0, [r1, 0x32]
	add sp, 0x4
	pop {r3,r4}
	mov r8, r3
	mov r9, r4
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8064678

	thumb_func_start do_go_anim
do_go_anim: @ 80646FC
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x14
	adds r5, r0, 0
	mov r8, r1
	adds r4, r3, 0
	lsls r2, 24
	lsrs r2, 24
	lsls r4, 24
	lsrs r4, 24
	mov r1, sp
	ldr r0, _08064754 @ =gUnknown_83A6884
	ldm r0!, {r3,r6,r7}
	stm r1!, {r3,r6,r7}
	ldm r0!, {r3,r6}
	stm r1!, {r3,r6}
	adds r0, r5, 0
	mov r1, r8
	adds r3, r4, 0
	bl sub_8064678
	lsls r4, 2
	mov r7, sp
	adds r1, r7, r4
	ldrb r0, [r5, 0x18]
	lsls r0, 28
	lsrs r0, 28
	ldr r1, [r1]
	bl _call_via_r1
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r5, 0
	mov r1, r8
	bl npc_apply_anim_looping
	add sp, 0x14
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_08064754: .4byte gUnknown_83A6884
	thumb_func_end do_go_anim

	thumb_func_start do_run_anim
do_run_anim: @ 8064758
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	movs r3, 0x1
	bl sub_8064678
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl get_run_image_anim_num
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_apply_anim_looping
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end do_run_anim

	thumb_func_start npc_obj_ministep_stop_on_arrival
npc_obj_ministep_stop_on_arrival: @ 8064788
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl obj_npc_ministep
	lsls r0, 24
	cmp r0, 0
	bne _0806479E
	movs r0, 0
	b _080647BA
_0806479E:
	adds r0, r4, 0
	bl npc_coords_shift_still
	ldrb r0, [r4]
	movs r1, 0x8
	orrs r0, r1
	strb r0, [r4]
	adds r2, r5, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x1
_080647BA:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end npc_obj_ministep_stop_on_arrival

	thumb_func_start sub_80647C0
sub_80647C0: @ 80647C0
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	sub sp, 0x4
	adds r6, r0, 0
	mov r8, r1
	lsls r5, r2, 24
	lsrs r5, 24
	ldrh r1, [r6, 0x10]
	mov r0, sp
	strh r1, [r0]
	ldrh r0, [r6, 0x12]
	mov r4, sp
	adds r4, 0x2
	strh r0, [r4]
	adds r0, r6, 0
	adds r1, r5, 0
	bl ObjectEventSetDirection
	adds r0, r5, 0
	mov r1, sp
	adds r2, r4, 0
	bl MoveCoords
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r4, r0]
	adds r0, r6, 0
	bl npc_coords_shift
	mov r0, r8
	adds r1, r5, 0
	bl sub_8068BBC
	mov r2, r8
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldrb r0, [r6]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r6]
	movs r0, 0x1
	mov r1, r8
	strh r0, [r1, 0x32]
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_80647C0

	thumb_func_start sub_8064830
sub_8064830: @ 8064830
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	bl sub_80647C0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl get_go_image_anim_num
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_apply_anim_looping
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8064830

	thumb_func_start an_walk_any_2
an_walk_any_2: @ 806485C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl sub_8068BCC
	lsls r0, 24
	cmp r0, 0
	bne _08064872
	movs r0, 0
	b _0806488E
_08064872:
	adds r0, r4, 0
	bl npc_coords_shift_still
	ldrb r0, [r4]
	movs r1, 0x8
	orrs r0, r1
	strb r0, [r4]
	adds r2, r5, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x1
_0806488E:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end an_walk_any_2

	thumb_func_start sub_8064894
sub_8064894: @ 8064894
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	sub sp, 0x4
	adds r6, r0, 0
	mov r8, r1
	lsls r5, r2, 24
	lsrs r5, 24
	ldrh r1, [r6, 0x10]
	mov r0, sp
	strh r1, [r0]
	ldrh r0, [r6, 0x12]
	mov r4, sp
	adds r4, 0x2
	strh r0, [r4]
	adds r0, r6, 0
	adds r1, r5, 0
	bl ObjectEventSetDirection
	adds r0, r5, 0
	mov r1, sp
	adds r2, r4, 0
	bl MoveCoords
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r4, r0]
	adds r0, r6, 0
	bl npc_coords_shift
	mov r0, r8
	adds r1, r5, 0
	bl sub_8068C58
	mov r2, r8
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldrb r0, [r6]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r6]
	movs r0, 0x1
	mov r1, r8
	strh r0, [r1, 0x32]
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8064894

	thumb_func_start sub_8064904
sub_8064904: @ 8064904
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	bl sub_8064894
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl get_go_image_anim_num
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_apply_anim_looping
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8064904

	thumb_func_start sub_8064930
sub_8064930: @ 8064930
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl sub_8068C68
	lsls r0, 24
	cmp r0, 0
	bne _08064946
	movs r0, 0
	b _08064962
_08064946:
	adds r0, r4, 0
	bl npc_coords_shift_still
	ldrb r0, [r4]
	movs r1, 0x8
	orrs r0, r1
	strb r0, [r4]
	adds r2, r5, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x1
_08064962:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064930

	thumb_func_start sub_8064968
sub_8064968: @ 8064968
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	bl sub_8064904
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064988
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064968

	thumb_func_start sub_8064988
sub_8064988: @ 8064988
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064930
	lsls r0, 24
	cmp r0, 0
	bne _0806499A
	movs r0, 0
	b _080649A0
_0806499A:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080649A0:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064988

	thumb_func_start sub_80649A8
sub_80649A8: @ 80649A8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	bl sub_8064904
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80649C8
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80649A8

	thumb_func_start sub_80649C8
sub_80649C8: @ 80649C8
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064930
	lsls r0, 24
	cmp r0, 0
	bne _080649DA
	movs r0, 0
	b _080649E0
_080649DA:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080649E0:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80649C8

	thumb_func_start sub_80649E8
sub_80649E8: @ 80649E8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	bl sub_8064904
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064A08
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80649E8

	thumb_func_start sub_8064A08
sub_8064A08: @ 8064A08
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064930
	lsls r0, 24
	cmp r0, 0
	bne _08064A1A
	movs r0, 0
	b _08064A20
_08064A1A:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064A20:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064A08

	thumb_func_start sub_8064A28
sub_8064A28: @ 8064A28
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	bl sub_8064904
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064A48
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064A28

	thumb_func_start sub_8064A48
sub_8064A48: @ 8064A48
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064930
	lsls r0, 24
	cmp r0, 0
	bne _08064A5A
	movs r0, 0
	b _08064A60
_08064A5A:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064A60:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064A48

	thumb_func_start sub_8064A68
sub_8064A68: @ 8064A68
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	bl sub_8064830
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064A88
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064A68

	thumb_func_start sub_8064A88
sub_8064A88: @ 8064A88
	push {r4,lr}
	adds r4, r1, 0
	bl an_walk_any_2
	lsls r0, 24
	cmp r0, 0
	bne _08064A9A
	movs r0, 0
	b _08064AA0
_08064A9A:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064AA0:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064A88

	thumb_func_start sub_8064AA8
sub_8064AA8: @ 8064AA8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	bl sub_8064830
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064AC8
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064AA8

	thumb_func_start sub_8064AC8
sub_8064AC8: @ 8064AC8
	push {r4,lr}
	adds r4, r1, 0
	bl an_walk_any_2
	lsls r0, 24
	cmp r0, 0
	bne _08064ADA
	movs r0, 0
	b _08064AE0
_08064ADA:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064AE0:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064AC8

	thumb_func_start sub_8064AE8
sub_8064AE8: @ 8064AE8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	bl sub_8064830
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064B08
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064AE8

	thumb_func_start sub_8064B08
sub_8064B08: @ 8064B08
	push {r4,lr}
	adds r4, r1, 0
	bl an_walk_any_2
	lsls r0, 24
	cmp r0, 0
	bne _08064B1A
	movs r0, 0
	b _08064B20
_08064B1A:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064B20:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064B08

	thumb_func_start sub_8064B28
sub_8064B28: @ 8064B28
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	bl sub_8064830
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064B48
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064B28

	thumb_func_start sub_8064B48
sub_8064B48: @ 8064B48
	push {r4,lr}
	adds r4, r1, 0
	bl an_walk_any_2
	lsls r0, 24
	cmp r0, 0
	bne _08064B5A
	movs r0, 0
	b _08064B60
_08064B5A:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064B60:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064B48

	thumb_func_start sub_8064B68
sub_8064B68: @ 8064B68
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	sub sp, 0x4
	adds r6, r0, 0
	mov r8, r1
	lsls r5, r2, 24
	lsrs r5, 24
	ldrh r1, [r6, 0x10]
	mov r0, sp
	strh r1, [r0]
	ldrh r0, [r6, 0x12]
	mov r4, sp
	adds r4, 0x2
	strh r0, [r4]
	adds r0, r6, 0
	adds r1, r5, 0
	bl ObjectEventSetDirection
	adds r0, r5, 0
	mov r1, sp
	adds r2, r4, 0
	bl MoveCoords
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r4, r0]
	adds r0, r6, 0
	bl npc_coords_shift
	mov r0, r8
	adds r1, r5, 0
	bl sub_8068C08
	mov r2, r8
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldrb r0, [r6]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r6]
	movs r0, 0x1
	mov r1, r8
	strh r0, [r1, 0x32]
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8064B68

	thumb_func_start sub_8064BD8
sub_8064BD8: @ 8064BD8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	bl sub_8064B68
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl get_go_image_anim_num
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_apply_anim_looping
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8064BD8

	thumb_func_start sub_8064C04
sub_8064C04: @ 8064C04
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl sub_8068C18
	lsls r0, 24
	cmp r0, 0
	bne _08064C1A
	movs r0, 0
	b _08064C36
_08064C1A:
	adds r0, r4, 0
	bl npc_coords_shift_still
	ldrb r0, [r4]
	movs r1, 0x8
	orrs r0, r1
	strb r0, [r4]
	adds r2, r5, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x1
_08064C36:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064C04

	thumb_func_start sub_8064C3C
sub_8064C3C: @ 8064C3C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	bl sub_8064BD8
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064C5C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064C3C

	thumb_func_start sub_8064C5C
sub_8064C5C: @ 8064C5C
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064C04
	lsls r0, 24
	cmp r0, 0
	bne _08064C6E
	movs r0, 0
	b _08064C74
_08064C6E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064C74:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064C5C

	thumb_func_start sub_8064C7C
sub_8064C7C: @ 8064C7C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	bl sub_8064BD8
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064C9C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064C7C

	thumb_func_start sub_8064C9C
sub_8064C9C: @ 8064C9C
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064C04
	lsls r0, 24
	cmp r0, 0
	bne _08064CAE
	movs r0, 0
	b _08064CB4
_08064CAE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064CB4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064C9C

	thumb_func_start sub_8064CBC
sub_8064CBC: @ 8064CBC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	bl sub_8064BD8
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064CDC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064CBC

	thumb_func_start sub_8064CDC
sub_8064CDC: @ 8064CDC
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064C04
	lsls r0, 24
	cmp r0, 0
	bne _08064CEE
	movs r0, 0
	b _08064CF4
_08064CEE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064CF4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064CDC

	thumb_func_start sub_8064CFC
sub_8064CFC: @ 8064CFC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	bl sub_8064BD8
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064D1C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064CFC

	thumb_func_start sub_8064D1C
sub_8064D1C: @ 8064D1C
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8064C04
	lsls r0, 24
	cmp r0, 0
	bne _08064D2E
	movs r0, 0
	b _08064D34
_08064D2E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064D34:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064D1C

	thumb_func_start sub_8064D3C
sub_8064D3C: @ 8064D3C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	movs r3, 0
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064D5C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064D3C

	thumb_func_start sub_8064D5C
sub_8064D5C: @ 8064D5C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08064D6E
	movs r0, 0
	b _08064D74
_08064D6E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064D74:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064D5C

	thumb_func_start sub_8064D7C
sub_8064D7C: @ 8064D7C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	movs r3, 0
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064D9C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064D7C

	thumb_func_start sub_8064D9C
sub_8064D9C: @ 8064D9C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08064DAE
	movs r0, 0
	b _08064DB4
_08064DAE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064DB4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064D9C

	thumb_func_start sub_8064DBC
sub_8064DBC: @ 8064DBC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	movs r3, 0
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064DDC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064DBC

	thumb_func_start sub_8064DDC
sub_8064DDC: @ 8064DDC
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08064DEE
	movs r0, 0
	b _08064DF4
_08064DEE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064DF4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064DDC

	thumb_func_start sub_8064DFC
sub_8064DFC: @ 8064DFC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	movs r3, 0
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8064E1C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8064DFC

	thumb_func_start sub_8064E1C
sub_8064E1C: @ 8064E1C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08064E2E
	movs r0, 0
	b _08064E34
_08064E2E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08064E34:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8064E1C

	thumb_func_start sub_8064E3C
sub_8064E3C: @ 8064E3C
	push {r4-r7,lr}
	mov r7, r10
	mov r6, r9
	mov r5, r8
	push {r5-r7}
	sub sp, 0x10
	adds r7, r0, 0
	mov r10, r1
	adds r4, r2, 0
	mov r8, r3
	ldr r0, [sp, 0x30]
	lsls r4, 24
	lsrs r4, 24
	mov r1, r8
	lsls r1, 24
	lsrs r1, 24
	mov r8, r1
	lsls r0, 24
	lsrs r0, 24
	mov r9, r0
	ldr r1, _08064EF4 @ =gUnknown_83A6958
	add r0, sp, 0x4
	movs r2, 0x6
	bl memcpy
	add r5, sp, 0xC
	movs r0, 0
	strh r0, [r5]
	mov r6, sp
	adds r6, 0xE
	strh r0, [r6]
	adds r0, r7, 0
	adds r1, r4, 0
	bl ObjectEventSetDirection
	mov r1, r8
	lsls r0, r1, 1
	add r0, sp
	adds r0, 0x4
	movs r1, 0
	ldrsh r3, [r0, r1]
	str r3, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	adds r2, r6, 0
	bl sub_8063A6C
	ldrh r1, [r5]
	ldrh r0, [r7, 0x10]
	adds r1, r0
	lsls r1, 16
	asrs r1, 16
	ldrh r2, [r6]
	ldrh r0, [r7, 0x12]
	adds r2, r0
	lsls r2, 16
	asrs r2, 16
	adds r0, r7, 0
	bl npc_coords_shift
	mov r0, r10
	adds r1, r4, 0
	mov r2, r8
	mov r3, r9
	bl sub_8068D1C
	movs r0, 0x1
	mov r1, r10
	strh r0, [r1, 0x32]
	movs r0, 0x2C
	add r10, r0
	mov r0, r10
	ldrb r1, [r0]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	mov r1, r10
	strb r0, [r1]
	ldrb r0, [r7]
	movs r1, 0x4
	orrs r0, r1
	movs r1, 0x10
	orrs r0, r1
	strb r0, [r7]
	add sp, 0x10
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	mov r10, r5
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_08064EF4: .4byte gUnknown_83A6958
	thumb_func_end sub_8064E3C

	thumb_func_start maybe_shadow_1
maybe_shadow_1: @ 8064EF8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	ldr r0, [sp, 0x10]
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r3, 24
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	adds r0, r4, 0
	bl sub_8064E3C
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl get_go_image_anim_num
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_apply_anim_looping
	adds r0, r4, 0
	bl DoShadowFieldEffect
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end maybe_shadow_1

	thumb_func_start sub_8064F3C
sub_8064F3C: @ 8064F3C
	push {r4-r7,lr}
	mov r7, r8
	push {r7}
	sub sp, 0x10
	adds r6, r0, 0
	adds r7, r1, 0
	adds r4, r2, 0
	ldr r1, _08064FC8 @ =gUnknown_83A695E
	add r0, sp, 0x4
	movs r2, 0x6
	bl memcpy
	adds r0, r7, 0
	bl _call_via_r4
	lsls r0, 24
	lsrs r0, 24
	mov r8, r0
	cmp r0, 0x1
	bne _08064FCC
	movs r1, 0x36
	ldrsh r0, [r7, r1]
	lsls r0, 1
	add r0, sp
	adds r0, 0x4
	movs r2, 0
	ldrsh r0, [r0, r2]
	cmp r0, 0
	beq _08064FCC
	add r4, sp, 0xC
	movs r0, 0
	strh r0, [r4]
	mov r5, sp
	adds r5, 0xE
	strh r0, [r5]
	ldrb r0, [r6, 0x18]
	lsrs r0, 4
	movs r2, 0x36
	ldrsh r1, [r7, r2]
	lsls r1, 1
	add r1, sp
	adds r1, 0x4
	movs r2, 0
	ldrsh r3, [r1, r2]
	str r3, [sp]
	adds r1, r4, 0
	adds r2, r5, 0
	bl sub_8063A6C
	ldrh r1, [r4]
	ldrh r0, [r6, 0x10]
	adds r1, r0
	lsls r1, 16
	asrs r1, 16
	ldrh r2, [r5]
	ldrh r0, [r6, 0x12]
	adds r2, r0
	lsls r2, 16
	asrs r2, 16
	adds r0, r6, 0
	bl npc_coords_shift
	ldrb r0, [r6]
	movs r1, 0x4
	orrs r0, r1
	movs r1, 0x10
	orrs r0, r1
	strb r0, [r6]
	b _08064FF0
	.align 2, 0
_08064FC8: .4byte gUnknown_83A695E
_08064FCC:
	mov r1, r8
	cmp r1, 0xFF
	bne _08064FF0
	adds r0, r6, 0
	bl npc_coords_shift_still
	ldrb r0, [r6]
	movs r1, 0x8
	orrs r0, r1
	movs r1, 0x20
	orrs r0, r1
	strb r0, [r6]
	adds r2, r7, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
_08064FF0:
	mov r0, r8
	add sp, 0x10
	pop {r3}
	mov r8, r3
	pop {r4-r7}
	pop {r1}
	bx r1
	thumb_func_end sub_8064F3C

	thumb_func_start sub_8065000
sub_8065000: @ 8065000
	push {lr}
	ldr r2, _08065010 @ =sub_8068D3C
	bl sub_8064F3C
	lsls r0, 24
	lsrs r0, 24
	pop {r1}
	bx r1
	.align 2, 0
_08065010: .4byte sub_8068D3C
	thumb_func_end sub_8065000

	thumb_func_start sub_8065014
sub_8065014: @ 8065014
	push {lr}
	ldr r2, _08065024 @ =sub_8068DC4
	bl sub_8064F3C
	lsls r0, 24
	lsrs r0, 24
	pop {r1}
	bx r1
	.align 2, 0
_08065024: .4byte sub_8068DC4
	thumb_func_end sub_8065014

	thumb_func_start sub_8065028
sub_8065028: @ 8065028
	push {lr}
	bl sub_8065000
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	beq _0806503A
	movs r0, 0
	b _0806503C
_0806503A:
	movs r0, 0x1
_0806503C:
	pop {r1}
	bx r1
	thumb_func_end sub_8065028

	thumb_func_start sub_8065040
sub_8065040: @ 8065040
	push {lr}
	bl sub_8065014
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0xFF
	beq _08065052
	movs r0, 0
	b _08065054
_08065052:
	movs r0, 0x1
_08065054:
	pop {r1}
	bx r1
	thumb_func_end sub_8065040

	thumb_func_start sub_8065058
sub_8065058: @ 8065058
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065000
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	beq _08065072
	cmp r0, 0xFF
	bne _0806509E
	movs r0, 0x1
	b _080650A0
_08065072:
	ldrb r0, [r4, 0x18]
	lsrs r0, 4
	bl GetOppositeDirection
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl ObjectEventSetDirection
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl get_go_image_anim_num
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl obj_npc_animation_step
_0806509E:
	movs r0, 0
_080650A0:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065058

	thumb_func_start sub_80650A8
sub_80650A8: @ 80650A8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x1
	movs r3, 0x2
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80650D4
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80650A8

	thumb_func_start sub_80650D4
sub_80650D4: @ 80650D4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080650E8
	movs r0, 0
	b _080650F8
_080650E8:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080650F8:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80650D4

	thumb_func_start sub_8065100
sub_8065100: @ 8065100
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x2
	movs r3, 0x2
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806512C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065100

	thumb_func_start sub_806512C
sub_806512C: @ 806512C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08065140
	movs r0, 0
	b _08065150
_08065140:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08065150:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806512C

	thumb_func_start sub_8065158
sub_8065158: @ 8065158
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x3
	movs r3, 0x2
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065184
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065158

	thumb_func_start sub_8065184
sub_8065184: @ 8065184
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08065198
	movs r0, 0
	b _080651A8
_08065198:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080651A8:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065184

	thumb_func_start sub_80651B0
sub_80651B0: @ 80651B0
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x4
	movs r3, 0x2
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80651DC
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80651B0

	thumb_func_start sub_80651DC
sub_80651DC: @ 80651DC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080651F0
	movs r0, 0
	b _08065200
_080651F0:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08065200:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80651DC

	thumb_func_start sub_8065208
sub_8065208: @ 8065208
	movs r2, 0x1
	strh r2, [r0, 0x32]
	strh r1, [r0, 0x34]
	bx lr
	thumb_func_end sub_8065208

	thumb_func_start sub_8065210
sub_8065210: @ 8065210
	push {lr}
	ldrh r0, [r1, 0x34]
	subs r0, 0x1
	strh r0, [r1, 0x34]
	lsls r0, 16
	cmp r0, 0
	beq _08065222
	movs r0, 0
	b _08065228
_08065222:
	movs r0, 0x2
	strh r0, [r1, 0x32]
	movs r0, 0x1
_08065228:
	pop {r1}
	bx r1
	thumb_func_end sub_8065210

	thumb_func_start sub_806522C
sub_806522C: @ 806522C
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x1
	bl sub_8065208
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_8065210
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806522C

	thumb_func_start sub_806524C
sub_806524C: @ 806524C
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x2
	bl sub_8065208
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_8065210
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806524C

	thumb_func_start sub_806526C
sub_806526C: @ 806526C
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x4
	bl sub_8065208
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_8065210
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806526C

	thumb_func_start sub_806528C
sub_806528C: @ 806528C
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x8
	bl sub_8065208
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_8065210
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806528C

	thumb_func_start sub_80652AC
sub_80652AC: @ 80652AC
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x10
	bl sub_8065208
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_8065210
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80652AC

	thumb_func_start sub_80652CC
sub_80652CC: @ 80652CC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	movs r3, 0x1
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80652EC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80652CC

	thumb_func_start sub_80652EC
sub_80652EC: @ 80652EC
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _080652FE
	movs r0, 0
	b _08065304
_080652FE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065304:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80652EC

	thumb_func_start sub_806530C
sub_806530C: @ 806530C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	movs r3, 0x1
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806532C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806530C

	thumb_func_start sub_806532C
sub_806532C: @ 806532C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _0806533E
	movs r0, 0
	b _08065344
_0806533E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065344:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806532C

	thumb_func_start sub_806534C
sub_806534C: @ 806534C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	movs r3, 0x1
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806536C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806534C

	thumb_func_start sub_806536C
sub_806536C: @ 806536C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _0806537E
	movs r0, 0
	b _08065384
_0806537E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065384:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806536C

	thumb_func_start sub_806538C
sub_806538C: @ 806538C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	movs r3, 0x1
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80653AC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806538C

	thumb_func_start sub_80653AC
sub_80653AC: @ 80653AC
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _080653BE
	movs r0, 0
	b _080653C4
_080653BE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080653C4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80653AC

	thumb_func_start sub_80653CC
sub_80653CC: @ 80653CC
	push {r4,lr}
	adds r4, r0, 0
	adds r0, r1, 0
	bl obj_npc_ministep
	lsls r0, 24
	cmp r0, 0
	bne _080653E0
	movs r0, 0
	b _080653F0
_080653E0:
	adds r0, r4, 0
	bl npc_coords_shift_still
	ldrb r0, [r4]
	movs r1, 0x8
	orrs r0, r1
	strb r0, [r4]
	movs r0, 0x1
_080653F0:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80653CC

	thumb_func_start sub_80653F8
sub_80653F8: @ 80653F8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r1, [r4, 0x18]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0x1
	beq _0806541A
	movs r0, 0x1
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r5, 0
	bl StartSpriteAnim
_0806541A:
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	movs r3, 0x1
	bl sub_8064678
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065438
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80653F8

	thumb_func_start sub_8065438
sub_8065438: @ 8065438
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl AnimateSprite
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80653CC
	lsls r0, 24
	cmp r0, 0
	bne _08065456
	movs r0, 0
	b _0806545C
_08065456:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_0806545C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065438

	thumb_func_start sub_8065464
sub_8065464: @ 8065464
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r1, [r4, 0x18]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0x2
	beq _08065486
	movs r0, 0x2
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r5, 0
	bl StartSpriteAnim
_08065486:
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	movs r3, 0x1
	bl sub_8064678
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80654A4
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065464

	thumb_func_start sub_80654A4
sub_80654A4: @ 80654A4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl AnimateSprite
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80653CC
	lsls r0, 24
	cmp r0, 0
	bne _080654C2
	movs r0, 0
	b _080654C8
_080654C2:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080654C8:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80654A4

	thumb_func_start sub_80654D0
sub_80654D0: @ 80654D0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r1, [r4, 0x18]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0x3
	beq _080654F2
	movs r0, 0x3
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r5, 0
	bl StartSpriteAnim
_080654F2:
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	movs r3, 0x1
	bl sub_8064678
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065510
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80654D0

	thumb_func_start sub_8065510
sub_8065510: @ 8065510
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl AnimateSprite
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80653CC
	lsls r0, 24
	cmp r0, 0
	bne _0806552E
	movs r0, 0
	b _08065534
_0806552E:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08065534:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065510

	thumb_func_start sub_806553C
sub_806553C: @ 806553C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r1, [r4, 0x18]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0x4
	beq _0806555E
	movs r0, 0x4
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r5, 0
	bl StartSpriteAnim
_0806555E:
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	movs r3, 0x1
	bl sub_8064678
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806557C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806553C

	thumb_func_start sub_806557C
sub_806557C: @ 806557C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl AnimateSprite
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80653CC
	lsls r0, 24
	cmp r0, 0
	bne _0806559A
	movs r0, 0
	b _080655A0
_0806559A:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080655A0:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806557C

	thumb_func_start sub_80655A8
sub_80655A8: @ 80655A8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r1, r2, 24
	lsrs r1, 24
	bl ObjectEventSetDirection
	adds r0, r4, 0
	bl npc_coords_shift_still
	adds r2, r5, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	movs r0, 0x1
	strh r0, [r5, 0x32]
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_80655A8

	thumb_func_start sub_80655D4
sub_80655D4: @ 80655D4
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	ldrb r1, [r5, 0x18]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0x1
	beq _080655F6
	movs r0, 0x1
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
_080655F6:
	adds r0, r4, 0
	bl AnimateSprite
	adds r0, r5, 0
	adds r1, r4, 0
	movs r2, 0x1
	bl sub_80655A8
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80655D4

	thumb_func_start sub_8065610
sub_8065610: @ 8065610
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	ldrb r1, [r5, 0x18]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0x2
	beq _08065632
	movs r0, 0x2
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
_08065632:
	adds r0, r4, 0
	bl AnimateSprite
	adds r0, r5, 0
	adds r1, r4, 0
	movs r2, 0x2
	bl sub_80655A8
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065610

	thumb_func_start sub_806564C
sub_806564C: @ 806564C
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	ldrb r1, [r5, 0x18]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0x3
	beq _0806566E
	movs r0, 0x3
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
_0806566E:
	adds r0, r4, 0
	bl AnimateSprite
	adds r0, r5, 0
	adds r1, r4, 0
	movs r2, 0x3
	bl sub_80655A8
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806564C

	thumb_func_start sub_8065688
sub_8065688: @ 8065688
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	ldrb r1, [r5, 0x18]
	movs r0, 0xF
	ands r0, r1
	cmp r0, 0x4
	beq _080656AA
	movs r0, 0x4
	bl ObjectEventDirectionToImageAnimId
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
_080656AA:
	adds r0, r4, 0
	bl AnimateSprite
	adds r0, r5, 0
	adds r1, r4, 0
	movs r2, 0x4
	bl sub_80655A8
	movs r0, 0x1
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065688

	thumb_func_start sub_80656C4
sub_80656C4: @ 80656C4
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	mov r8, r0
	adds r6, r1, 0
	adds r1, r2, 0
	adds r4, r3, 0
	ldr r5, [sp, 0x14]
	lsls r1, 24
	lsrs r1, 24
	lsls r4, 24
	lsrs r4, 24
	lsls r5, 16
	lsrs r5, 16
	bl ObjectEventSetDirection
	mov r0, r8
	adds r1, r6, 0
	adds r2, r4, 0
	bl npc_apply_anim_looping
	adds r2, r6, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	movs r0, 0x1
	strh r0, [r6, 0x32]
	strh r5, [r6, 0x34]
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_80656C4

	thumb_func_start sub_806570C
sub_806570C: @ 806570C
	push {lr}
	ldrh r0, [r1, 0x34]
	subs r0, 0x1
	strh r0, [r1, 0x34]
	lsls r0, 16
	cmp r0, 0
	beq _0806571E
	movs r0, 0
	b _08065730
_0806571E:
	movs r0, 0x2
	strh r0, [r1, 0x32]
	adds r2, r1, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x1
_08065730:
	pop {r1}
	bx r1
	thumb_func_end sub_806570C

	thumb_func_start sub_8065734
sub_8065734: @ 8065734
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	ldrh r1, [r4, 0x34]
	movs r0, 0x1
	ands r0, r1
	cmp r0, 0
	beq _0806575E
	adds r3, r4, 0
	adds r3, 0x2C
	ldrb r2, [r3]
	lsls r1, r2, 26
	lsrs r1, 26
	adds r1, 0x1
	movs r0, 0x3F
	ands r1, r0
	movs r0, 0x40
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r3]
_0806575E:
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065734

	thumb_func_start sub_8065770
sub_8065770: @ 8065770
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	bl get_go_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x20
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065734
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065770

	thumb_func_start sub_80657A8
sub_80657A8: @ 80657A8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	bl get_go_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x20
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065734
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80657A8

	thumb_func_start sub_80657E0
sub_80657E0: @ 80657E0
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x3
	bl get_go_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x20
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065734
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80657E0

	thumb_func_start sub_8065818
sub_8065818: @ 8065818
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x4
	bl get_go_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x20
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065734
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065818

	thumb_func_start sub_8065850
sub_8065850: @ 8065850
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	bl get_go_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x10
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065850

	thumb_func_start sub_8065888
sub_8065888: @ 8065888
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	bl get_go_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x10
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065888

	thumb_func_start sub_80658C0
sub_80658C0: @ 80658C0
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x3
	bl get_go_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x10
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80658C0

	thumb_func_start sub_80658F8
sub_80658F8: @ 80658F8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x4
	bl get_go_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x10
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80658F8

	thumb_func_start sub_8065930
sub_8065930: @ 8065930
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	bl get_go_fast_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x8
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065930

	thumb_func_start sub_8065968
sub_8065968: @ 8065968
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	bl get_go_fast_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x8
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065968

	thumb_func_start sub_80659A0
sub_80659A0: @ 80659A0
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x3
	bl get_go_fast_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x8
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80659A0

	thumb_func_start sub_80659D8
sub_80659D8: @ 80659D8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x4
	bl get_go_fast_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x8
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80659D8

	thumb_func_start sub_8065A10
sub_8065A10: @ 8065A10
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	bl get_go_faster_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x4
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065A10

	thumb_func_start sub_8065A48
sub_8065A48: @ 8065A48
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	bl get_go_faster_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x4
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065A48

	thumb_func_start sub_8065A80
sub_8065A80: @ 8065A80
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x3
	bl get_go_faster_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x4
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065A80

	thumb_func_start sub_8065AB8
sub_8065AB8: @ 8065AB8
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x4
	bl get_go_faster_image_anim_num
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x4
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065AB8

	thumb_func_start sub_8065AF0
sub_8065AF0: @ 8065AF0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	movs r3, 0x2
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065B10
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065AF0

	thumb_func_start sub_8065B10
sub_8065B10: @ 8065B10
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065B22
	movs r0, 0
	b _08065B28
_08065B22:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065B28:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065B10

	thumb_func_start sub_8065B30
sub_8065B30: @ 8065B30
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	movs r3, 0x2
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065B50
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065B30

	thumb_func_start sub_8065B50
sub_8065B50: @ 8065B50
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065B62
	movs r0, 0
	b _08065B68
_08065B62:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065B68:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065B50

	thumb_func_start sub_8065B70
sub_8065B70: @ 8065B70
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	movs r3, 0x2
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065B90
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065B70

	thumb_func_start sub_8065B90
sub_8065B90: @ 8065B90
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065BA2
	movs r0, 0
	b _08065BA8
_08065BA2:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065BA8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065B90

	thumb_func_start sub_8065BB0
sub_8065BB0: @ 8065BB0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	movs r3, 0x2
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065BD0
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065BB0

	thumb_func_start sub_8065BD0
sub_8065BD0: @ 8065BD0
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065BE2
	movs r0, 0
	b _08065BE8
_08065BE2:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065BE8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065BD0

	thumb_func_start sub_8065BF0
sub_8065BF0: @ 8065BF0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	movs r3, 0x3
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065C10
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065BF0

	thumb_func_start sub_8065C10
sub_8065C10: @ 8065C10
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065C22
	movs r0, 0
	b _08065C28
_08065C22:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065C28:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065C10

	thumb_func_start sub_8065C30
sub_8065C30: @ 8065C30
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	movs r3, 0x3
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065C50
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065C30

	thumb_func_start sub_8065C50
sub_8065C50: @ 8065C50
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065C62
	movs r0, 0
	b _08065C68
_08065C62:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065C68:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065C50

	thumb_func_start sub_8065C70
sub_8065C70: @ 8065C70
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	movs r3, 0x3
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065C90
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065C70

	thumb_func_start sub_8065C90
sub_8065C90: @ 8065C90
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065CA2
	movs r0, 0
	b _08065CA8
_08065CA2:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065CA8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065C90

	thumb_func_start sub_8065CB0
sub_8065CB0: @ 8065CB0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	movs r3, 0x3
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065CD0
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065CB0

	thumb_func_start sub_8065CD0
sub_8065CD0: @ 8065CD0
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065CE2
	movs r0, 0
	b _08065CE8
_08065CE2:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065CE8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065CD0

	thumb_func_start sub_8065CF0
sub_8065CF0: @ 8065CF0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	movs r3, 0x4
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065D10
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065CF0

	thumb_func_start sub_8065D10
sub_8065D10: @ 8065D10
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065D22
	movs r0, 0
	b _08065D28
_08065D22:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065D28:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065D10

	thumb_func_start sub_8065D30
sub_8065D30: @ 8065D30
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	movs r3, 0x4
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065D50
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065D30

	thumb_func_start sub_8065D50
sub_8065D50: @ 8065D50
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065D62
	movs r0, 0
	b _08065D68
_08065D62:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065D68:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065D50

	thumb_func_start sub_8065D70
sub_8065D70: @ 8065D70
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	movs r3, 0x4
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065D90
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065D70

	thumb_func_start sub_8065D90
sub_8065D90: @ 8065D90
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065DA2
	movs r0, 0
	b _08065DA8
_08065DA2:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065DA8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065D90

	thumb_func_start sub_8065DB0
sub_8065DB0: @ 8065DB0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	movs r3, 0x4
	bl do_go_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065DD0
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065DB0

	thumb_func_start sub_8065DD0
sub_8065DD0: @ 8065DD0
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065DE2
	movs r0, 0
	b _08065DE8
_08065DE2:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065DE8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065DD0

	thumb_func_start do_run_south_anim
do_run_south_anim: @ 8065DF0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	bl do_run_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065E10
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end do_run_south_anim

	thumb_func_start sub_8065E10
sub_8065E10: @ 8065E10
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065E22
	movs r0, 0
	b _08065E28
_08065E22:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065E28:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065E10

	thumb_func_start do_run_north_anim
do_run_north_anim: @ 8065E30
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	bl do_run_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065E50
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end do_run_north_anim

	thumb_func_start sub_8065E50
sub_8065E50: @ 8065E50
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065E62
	movs r0, 0
	b _08065E68
_08065E62:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065E68:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065E50

	thumb_func_start do_run_west_anim
do_run_west_anim: @ 8065E70
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	bl do_run_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065E90
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end do_run_west_anim

	thumb_func_start sub_8065E90
sub_8065E90: @ 8065E90
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065EA2
	movs r0, 0
	b _08065EA8
_08065EA2:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065EA8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065E90

	thumb_func_start do_run_east_anim
do_run_east_anim: @ 8065EB0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	bl do_run_anim
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065ED0
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end do_run_east_anim

	thumb_func_start sub_8065ED0
sub_8065ED0: @ 8065ED0
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08065EE2
	movs r0, 0
	b _08065EE8
_08065EE2:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065EE8:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065ED0

	thumb_func_start sub_8065EF0
sub_8065EF0: @ 8065EF0
	push {r4-r6,lr}
	mov r6, r8
	push {r6}
	sub sp, 0x4
	adds r6, r0, 0
	mov r8, r1
	lsls r5, r2, 24
	lsrs r5, 24
	ldrh r1, [r6, 0x10]
	mov r0, sp
	strh r1, [r0]
	ldrh r0, [r6, 0x12]
	mov r4, sp
	adds r4, 0x2
	strh r0, [r4]
	adds r0, r6, 0
	adds r1, r5, 0
	bl ObjectEventSetDirection
	adds r0, r5, 0
	mov r1, sp
	adds r2, r4, 0
	bl MoveCoords
	mov r0, sp
	movs r2, 0
	ldrsh r1, [r0, r2]
	movs r0, 0
	ldrsh r2, [r4, r0]
	adds r0, r6, 0
	bl npc_coords_shift
	mov r0, r8
	adds r1, r5, 0
	bl sub_8068CA4
	mov r2, r8
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldrb r0, [r6]
	movs r1, 0x4
	orrs r0, r1
	strb r0, [r6]
	movs r0, 0x1
	mov r1, r8
	strh r0, [r1, 0x32]
	add sp, 0x4
	pop {r3}
	mov r8, r3
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8065EF0

	thumb_func_start sub_8065F60
sub_8065F60: @ 8065F60
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	bl sub_8065EF0
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl get_run_image_anim_num
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_apply_anim_looping
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8065F60

	thumb_func_start sub_8065F8C
sub_8065F8C: @ 8065F8C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	adds r0, r5, 0
	bl sub_8068CB4
	lsls r0, 24
	cmp r0, 0
	bne _08065FA2
	movs r0, 0
	b _08065FBE
_08065FA2:
	adds r0, r4, 0
	bl npc_coords_shift_still
	ldrb r0, [r4]
	movs r1, 0x8
	orrs r0, r1
	strb r0, [r4]
	adds r2, r5, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x1
_08065FBE:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065F8C

	thumb_func_start sub_8065FC4
sub_8065FC4: @ 8065FC4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	bl sub_8065F60
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8065FE4
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8065FC4

	thumb_func_start sub_8065FE4
sub_8065FE4: @ 8065FE4
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8065F8C
	lsls r0, 24
	cmp r0, 0
	bne _08065FF6
	movs r0, 0
	b _08065FFC
_08065FF6:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08065FFC:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8065FE4

	thumb_func_start sub_8066004
sub_8066004: @ 8066004
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	bl sub_8065F60
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066024
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066004

	thumb_func_start sub_8066024
sub_8066024: @ 8066024
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8065F8C
	lsls r0, 24
	cmp r0, 0
	bne _08066036
	movs r0, 0
	b _0806603C
_08066036:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_0806603C:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066024

	thumb_func_start sub_8066044
sub_8066044: @ 8066044
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	bl sub_8065F60
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066064
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066044

	thumb_func_start sub_8066064
sub_8066064: @ 8066064
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8065F8C
	lsls r0, 24
	cmp r0, 0
	bne _08066076
	movs r0, 0
	b _0806607C
_08066076:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_0806607C:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066064

	thumb_func_start sub_8066084
sub_8066084: @ 8066084
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	bl sub_8065F60
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80660A4
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066084

	thumb_func_start sub_80660A4
sub_80660A4: @ 80660A4
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8065F8C
	lsls r0, 24
	cmp r0, 0
	bne _080660B6
	movs r0, 0
	b _080660BC
_080660B6:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080660BC:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80660A4

	thumb_func_start npc_set_direction_and_anim__an_proceed
npc_set_direction_and_anim__an_proceed: @ 80660C4
	push {r4-r6,lr}
	adds r6, r0, 0
	adds r5, r1, 0
	adds r4, r2, 0
	adds r1, r3, 0
	lsls r4, 24
	lsrs r4, 24
	lsls r1, 24
	lsrs r1, 24
	adds r0, r5, 0
	movs r2, 0
	bl obj_anim_image_set_and_seek
	adds r0, r6, 0
	adds r1, r4, 0
	bl ObjectEventSetDirection
	movs r0, 0x1
	strh r0, [r5, 0x32]
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end npc_set_direction_and_anim__an_proceed

	thumb_func_start sub_80660F0
sub_80660F0: @ 80660F0
	push {lr}
	ldrb r2, [r0, 0x18]
	lsrs r2, 4
	adds r3, r1, 0
	adds r3, 0x2A
	ldrb r3, [r3]
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r1}
	bx r1
	thumb_func_end sub_80660F0

	thumb_func_start sub_8066108
sub_8066108: @ 8066108
	push {r4,lr}
	adds r4, r1, 0
	adds r0, r4, 0
	bl sub_8068E9C
	lsls r0, 24
	cmp r0, 0
	bne _0806611C
	movs r0, 0
	b _08066122
_0806611C:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08066122:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066108

	thumb_func_start sub_8066128
sub_8066128: @ 8066128
	push {r4,r5,lr}
	sub sp, 0x4
	adds r5, r1, 0
	lsls r4, r2, 24
	lsrs r4, 24
	movs r1, 0
	str r1, [sp]
	adds r1, r5, 0
	adds r2, r4, 0
	movs r3, 0x1
	bl sub_8064E3C
	adds r0, r4, 0
	bl sub_8063480
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r5, 0
	bl StartSpriteAnim
	add sp, 0x4
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_8066128

	thumb_func_start sub_806615C
sub_806615C: @ 806615C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	bl sub_8066128
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806617C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806615C

	thumb_func_start sub_806617C
sub_806617C: @ 806617C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065040
	lsls r0, 24
	cmp r0, 0
	bne _08066190
	movs r0, 0
	b _0806619E
_08066190:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	ldrb r1, [r4]
	subs r0, 0x23
	ands r0, r1
	strb r0, [r4]
	movs r0, 0x1
_0806619E:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806617C

	thumb_func_start sub_80661A4
sub_80661A4: @ 80661A4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	bl sub_8066128
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80661C4
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80661A4

	thumb_func_start sub_80661C4
sub_80661C4: @ 80661C4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065040
	lsls r0, 24
	cmp r0, 0
	bne _080661D8
	movs r0, 0
	b _080661E6
_080661D8:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	ldrb r1, [r4]
	subs r0, 0x23
	ands r0, r1
	strb r0, [r4]
	movs r0, 0x1
_080661E6:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80661C4

	thumb_func_start sub_80661EC
sub_80661EC: @ 80661EC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	bl sub_8066128
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806620C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80661EC

	thumb_func_start sub_806620C
sub_806620C: @ 806620C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065040
	lsls r0, 24
	cmp r0, 0
	bne _08066220
	movs r0, 0
	b _0806622E
_08066220:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	ldrb r1, [r4]
	subs r0, 0x23
	ands r0, r1
	strb r0, [r4]
	movs r0, 0x1
_0806622E:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806620C

	thumb_func_start sub_8066234
sub_8066234: @ 8066234
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	bl sub_8066128
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066254
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066234

	thumb_func_start sub_8066254
sub_8066254: @ 8066254
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065040
	lsls r0, 24
	cmp r0, 0
	bne _08066268
	movs r0, 0
	b _08066276
_08066268:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	ldrb r1, [r4]
	subs r0, 0x23
	ands r0, r1
	strb r0, [r4]
	movs r0, 0x1
_08066276:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066254

	thumb_func_start sub_806627C
sub_806627C: @ 806627C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	bl sub_8066128
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806629C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806627C

	thumb_func_start sub_806629C
sub_806629C: @ 806629C
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8065040
	lsls r0, 24
	cmp r0, 0
	bne _080662AE
	movs r0, 0
	b _080662B4
_080662AE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080662B4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806629C

	thumb_func_start sub_80662BC
sub_80662BC: @ 80662BC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	bl sub_8066128
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80662DC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80662BC

	thumb_func_start sub_80662DC
sub_80662DC: @ 80662DC
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8065040
	lsls r0, 24
	cmp r0, 0
	bne _080662EE
	movs r0, 0
	b _080662F4
_080662EE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080662F4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80662DC

	thumb_func_start sub_80662FC
sub_80662FC: @ 80662FC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	bl sub_8066128
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806631C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80662FC

	thumb_func_start sub_806631C
sub_806631C: @ 806631C
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8065040
	lsls r0, 24
	cmp r0, 0
	bne _0806632E
	movs r0, 0
	b _08066334
_0806632E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08066334:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806631C

	thumb_func_start sub_806633C
sub_806633C: @ 806633C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	bl sub_8066128
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806635C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806633C

	thumb_func_start sub_806635C
sub_806635C: @ 806635C
	push {r4,lr}
	adds r4, r1, 0
	bl sub_8065040
	lsls r0, 24
	cmp r0, 0
	bne _0806636E
	movs r0, 0
	b _08066374
_0806636E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08066374:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806635C

	thumb_func_start sub_806637C
sub_806637C: @ 806637C
	push {r4-r6,lr}
	sub sp, 0x4
	adds r5, r0, 0
	adds r6, r1, 0
	movs r0, 0xFF
	movs r1, 0
	movs r2, 0
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _080663C6
	movs r1, 0x10
	ldrsh r0, [r5, r1]
	movs r2, 0x12
	ldrsh r1, [r5, r2]
	ldr r4, _080663D4 @ =gObjectEvents
	mov r2, sp
	ldrb r2, [r2]
	lsls r3, r2, 3
	adds r3, r2
	lsls r3, 2
	adds r3, r4
	movs r4, 0x10
	ldrsh r2, [r3, r4]
	movs r4, 0x12
	ldrsh r3, [r3, r4]
	bl sub_80635DC
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r5, 0
	adds r1, r6, 0
	bl an_look_any
_080663C6:
	movs r0, 0x1
	strh r0, [r6, 0x32]
	add sp, 0x4
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_080663D4: .4byte gObjectEvents
	thumb_func_end sub_806637C

	thumb_func_start sub_80663D8
sub_80663D8: @ 80663D8
	push {r4-r6,lr}
	sub sp, 0x4
	adds r5, r0, 0
	adds r6, r1, 0
	movs r0, 0xFF
	movs r1, 0
	movs r2, 0
	mov r3, sp
	bl TryGetObjectEventIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _0806642A
	movs r1, 0x10
	ldrsh r0, [r5, r1]
	movs r2, 0x12
	ldrsh r1, [r5, r2]
	ldr r4, _08066438 @ =gObjectEvents
	mov r2, sp
	ldrb r2, [r2]
	lsls r3, r2, 3
	adds r3, r2
	lsls r3, 2
	adds r3, r4
	movs r4, 0x10
	ldrsh r2, [r3, r4]
	movs r4, 0x12
	ldrsh r3, [r3, r4]
	bl sub_80635DC
	lsls r0, 24
	lsrs r0, 24
	bl GetOppositeDirection
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r5, 0
	adds r1, r6, 0
	bl an_look_any
_0806642A:
	movs r0, 0x1
	strh r0, [r6, 0x32]
	add sp, 0x4
	pop {r4-r6}
	pop {r1}
	bx r1
	.align 2, 0
_08066438: .4byte gObjectEvents
	thumb_func_end sub_80663D8

	thumb_func_start sub_806643C
sub_806643C: @ 806643C
	ldrb r2, [r0, 0x1]
	movs r3, 0x2
	orrs r2, r3
	strb r2, [r0, 0x1]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_806643C

	thumb_func_start sub_806644C
sub_806644C: @ 806644C
	ldrb r3, [r0, 0x1]
	movs r2, 0x3
	negs r2, r2
	ands r2, r3
	strb r2, [r0, 0x1]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_806644C

	thumb_func_start sub_806645C
sub_806645C: @ 806645C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x1
	movs r3, 0x1
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066488
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806645C

	thumb_func_start sub_8066488
sub_8066488: @ 8066488
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _0806649C
	movs r0, 0
	b _080664AC
_0806649C:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080664AC:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066488

	thumb_func_start sub_80664B4
sub_80664B4: @ 80664B4
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x2
	movs r3, 0x1
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80664E0
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80664B4

	thumb_func_start sub_80664E0
sub_80664E0: @ 80664E0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080664F4
	movs r0, 0
	b _08066504
_080664F4:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08066504:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80664E0

	thumb_func_start sub_806650C
sub_806650C: @ 806650C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x3
	movs r3, 0x1
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066538
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806650C

	thumb_func_start sub_8066538
sub_8066538: @ 8066538
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _0806654C
	movs r0, 0
	b _0806655C
_0806654C:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_0806655C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066538

	thumb_func_start sub_8066564
sub_8066564: @ 8066564
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x4
	movs r3, 0x1
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066590
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066564

	thumb_func_start sub_8066590
sub_8066590: @ 8066590
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080665A4
	movs r0, 0
	b _080665B4
_080665A4:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080665B4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066590

	thumb_func_start sub_80665BC
sub_80665BC: @ 80665BC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x1
	movs r3, 0
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80665E8
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80665BC

	thumb_func_start sub_80665E8
sub_80665E8: @ 80665E8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080665FC
	movs r0, 0
	b _0806660C
_080665FC:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_0806660C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80665E8

	thumb_func_start sub_8066614
sub_8066614: @ 8066614
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x2
	movs r3, 0
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066640
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066614

	thumb_func_start sub_8066640
sub_8066640: @ 8066640
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08066654
	movs r0, 0
	b _08066664
_08066654:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08066664:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066640

	thumb_func_start sub_806666C
sub_806666C: @ 806666C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x3
	movs r3, 0
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066698
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806666C

	thumb_func_start sub_8066698
sub_8066698: @ 8066698
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080666AC
	movs r0, 0
	b _080666BC
_080666AC:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080666BC:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066698

	thumb_func_start sub_80666C4
sub_80666C4: @ 80666C4
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x4
	movs r3, 0
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80666F0
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80666C4

	thumb_func_start sub_80666F0
sub_80666F0: @ 80666F0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08066704
	movs r0, 0
	b _08066714
_08066704:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08066714:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80666F0

	thumb_func_start sub_806671C
sub_806671C: @ 806671C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x1
	movs r3, 0
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066748
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806671C

	thumb_func_start sub_8066748
sub_8066748: @ 8066748
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065058
	lsls r0, 24
	cmp r0, 0
	bne _0806675C
	movs r0, 0
	b _0806676C
_0806675C:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_0806676C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066748

	thumb_func_start sub_8066774
sub_8066774: @ 8066774
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x2
	movs r3, 0
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80667A0
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066774

	thumb_func_start sub_80667A0
sub_80667A0: @ 80667A0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065058
	lsls r0, 24
	cmp r0, 0
	bne _080667B4
	movs r0, 0
	b _080667C4
_080667B4:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080667C4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80667A0

	thumb_func_start sub_80667CC
sub_80667CC: @ 80667CC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x3
	movs r3, 0
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80667F8
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80667CC

	thumb_func_start sub_80667F8
sub_80667F8: @ 80667F8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065058
	lsls r0, 24
	cmp r0, 0
	bne _0806680C
	movs r0, 0
	b _0806681C
_0806680C:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_0806681C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80667F8

	thumb_func_start sub_8066824
sub_8066824: @ 8066824
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x4
	movs r3, 0
	bl maybe_shadow_1
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066850
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066824

	thumb_func_start sub_8066850
sub_8066850: @ 8066850
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065058
	lsls r0, 24
	cmp r0, 0
	bne _08066864
	movs r0, 0
	b _08066874
_08066864:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08066874:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066850

	thumb_func_start sub_806687C
sub_806687C: @ 806687C
	push {lr}
	ldr r3, _08066890 @ =gInitialMovementTypeFacingDirections
	ldrb r2, [r0, 0x6]
	adds r2, r3
	ldrb r2, [r2]
	bl an_look_any
	movs r0, 0x1
	pop {r1}
	bx r1
	.align 2, 0
_08066890: .4byte gInitialMovementTypeFacingDirections
	thumb_func_end sub_806687C

	thumb_func_start sub_8066894
sub_8066894: @ 8066894
	push {lr}
	movs r2, 0x1
	movs r3, 0x14
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r1}
	bx r1
	thumb_func_end sub_8066894

	thumb_func_start sub_80668A4
sub_80668A4: @ 80668A4
	ldrb r3, [r0, 0x3]
	movs r2, 0x3
	negs r2, r2
	ands r2, r3
	strb r2, [r0, 0x3]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_80668A4

	thumb_func_start sub_80668B4
sub_80668B4: @ 80668B4
	ldrb r2, [r0, 0x3]
	movs r3, 0x2
	orrs r2, r3
	strb r2, [r0, 0x3]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_80668B4

	thumb_func_start sub_80668C4
sub_80668C4: @ 80668C4
	ldrb r2, [r0, 0x1]
	movs r3, 0x10
	orrs r2, r3
	strb r2, [r0, 0x1]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_80668C4

	thumb_func_start sub_80668D4
sub_80668D4: @ 80668D4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x5]
	bl GetObjectEventGraphicsInfo
	ldrb r1, [r0, 0xC]
	lsls r1, 25
	lsrs r1, 31
	lsls r1, 4
	ldrb r2, [r4, 0x1]
	movs r0, 0x11
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0x1]
	movs r0, 0x1
	strh r0, [r5, 0x32]
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80668D4

	thumb_func_start sub_8066900
sub_8066900: @ 8066900
	ldrb r2, [r0, 0x1]
	movs r3, 0x20
	orrs r2, r3
	strb r2, [r0, 0x1]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_8066900

	thumb_func_start sub_8066910
sub_8066910: @ 8066910
	ldrb r3, [r0, 0x1]
	movs r2, 0x21
	negs r2, r2
	ands r2, r3
	strb r2, [r0, 0x1]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_8066910

	thumb_func_start do_exclamation_mark_bubble_1
do_exclamation_mark_bubble_1: @ 8066920
	push {r4,lr}
	adds r4, r1, 0
	ldr r1, _08066940 @ =gFieldEffectArguments
	adds r2, r1, 0x4
	adds r3, r1, 0
	adds r3, 0x8
	bl ObjectEventGetLocalIdAndMap
	movs r0, 0
	bl FieldEffectStart
	movs r0, 0x1
	strh r0, [r4, 0x32]
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08066940: .4byte gFieldEffectArguments
	thumb_func_end do_exclamation_mark_bubble_1

	thumb_func_start do_exclamation_mark_bubble_2
do_exclamation_mark_bubble_2: @ 8066944
	push {r4,lr}
	adds r4, r1, 0
	ldr r1, _08066964 @ =gFieldEffectArguments
	adds r2, r1, 0x4
	adds r3, r1, 0
	adds r3, 0x8
	bl ObjectEventGetLocalIdAndMap
	movs r0, 0x21
	bl FieldEffectStart
	movs r0, 0x1
	strh r0, [r4, 0x32]
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08066964: .4byte gFieldEffectArguments
	thumb_func_end do_exclamation_mark_bubble_2

	thumb_func_start do_heart_bubble
do_heart_bubble: @ 8066968
	push {r4,lr}
	adds r4, r1, 0
	ldr r1, _08066988 @ =gFieldEffectArguments
	adds r2, r1, 0x4
	adds r3, r1, 0
	adds r3, 0x8
	bl ObjectEventGetLocalIdAndMap
	movs r0, 0x2E
	bl FieldEffectStart
	movs r0, 0x1
	strh r0, [r4, 0x32]
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_08066988: .4byte gFieldEffectArguments
	thumb_func_end do_heart_bubble

	thumb_func_start sub_806698C
sub_806698C: @ 806698C
	push {r4,lr}
	adds r4, r1, 0
	ldr r1, _080669AC @ =gFieldEffectArguments
	adds r2, r1, 0x4
	adds r3, r1, 0
	adds r3, 0x8
	bl ObjectEventGetLocalIdAndMap
	movs r0, 0x42
	bl FieldEffectStart
	movs r0, 0x1
	strh r0, [r4, 0x32]
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080669AC: .4byte gFieldEffectArguments
	thumb_func_end sub_806698C

	thumb_func_start sub_80669B0
sub_80669B0: @ 80669B0
	push {r4,lr}
	adds r4, r1, 0
	ldr r1, _080669D0 @ =gFieldEffectArguments
	adds r2, r1, 0x4
	adds r3, r1, 0
	adds r3, 0x8
	bl ObjectEventGetLocalIdAndMap
	movs r0, 0x40
	bl FieldEffectStart
	movs r0, 0x1
	strh r0, [r4, 0x32]
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080669D0: .4byte gFieldEffectArguments
	thumb_func_end sub_80669B0

	thumb_func_start sub_80669D4
sub_80669D4: @ 80669D4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r0, [r4, 0x6]
	cmp r0, 0x3F
	bne _080669EA
	adds r0, r4, 0
	bl sub_80824EC
	movs r0, 0
	b _08066A12
_080669EA:
	subs r0, 0x39
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bhi _08066A0C
	adds r0, r4, 0
	bl sub_80DCBB8
	movs r0, 0x1
	strh r0, [r5, 0x32]
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066A18
	lsls r0, 24
	lsrs r0, 24
	b _08066A12
_08066A0C:
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08066A12:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80669D4

	thumb_func_start sub_8066A18
sub_8066A18: @ 8066A18
	push {r4,lr}
	adds r4, r1, 0
	bl sub_80DCBE0
	lsls r0, 24
	cmp r0, 0
	bne _08066A2A
	movs r0, 0
	b _08066A30
_08066A2A:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08066A30:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066A18

	thumb_func_start sub_8066A38
sub_8066A38: @ 8066A38
	push {r4,lr}
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x1
	movs r2, 0
	bl obj_anim_image_set_and_seek
	movs r0, 0x1
	strh r0, [r4, 0x32]
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066A38

	thumb_func_start sub_8066A54
sub_8066A54: @ 8066A54
	push {r4,lr}
	adds r4, r1, 0
	adds r0, r4, 0
	bl sub_8068E9C
	lsls r0, 24
	cmp r0, 0
	beq _08066A70
	adds r0, r4, 0
	movs r1, 0x20
	bl SetObjectEventStepTimer
	movs r0, 0x2
	strh r0, [r4, 0x32]
_08066A70:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066A54

	thumb_func_start sub_8066A78
sub_8066A78: @ 8066A78
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r2, [r4, 0x1]
	lsls r1, r2, 26
	lsrs r1, 31
	movs r0, 0x1
	eors r1, r0
	lsls r1, 5
	subs r0, 0x22
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0x1]
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	beq _08066AAA
	ldrb r0, [r4, 0x1]
	movs r1, 0x20
	orrs r0, r1
	strb r0, [r4, 0x1]
	movs r0, 0x3
	strh r0, [r5, 0x32]
_08066AAA:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066A78

	thumb_func_start sub_8066AB4
sub_8066AB4: @ 8066AB4
	push {r4,lr}
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x1
	movs r2, 0
	bl obj_anim_image_set_and_seek
	movs r0, 0x1
	strh r0, [r4, 0x32]
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066AB4

	thumb_func_start sub_8066AD0
sub_8066AD0: @ 8066AD0
	push {r4,lr}
	adds r4, r1, 0
	adds r0, r4, 0
	bl sub_8068E9C
	lsls r0, 24
	cmp r0, 0
	beq _08066AEC
	adds r0, r4, 0
	movs r1, 0x20
	bl SetObjectEventStepTimer
	movs r0, 0x2
	strh r0, [r4, 0x32]
_08066AEC:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066AD0

	thumb_func_start sub_8066AF4
sub_8066AF4: @ 8066AF4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	ldrb r2, [r4, 0x1]
	lsls r1, r2, 26
	lsrs r1, 31
	movs r0, 0x1
	eors r1, r0
	lsls r1, 5
	subs r0, 0x22
	ands r0, r2
	orrs r0, r1
	strb r0, [r4, 0x1]
	adds r0, r5, 0
	bl RunObjectEventStepTimer
	lsls r0, 24
	cmp r0, 0
	beq _08066B26
	ldrb r0, [r4, 0x1]
	movs r1, 0x20
	orrs r0, r1
	strb r0, [r4, 0x1]
	movs r0, 0x3
	strh r0, [r5, 0x32]
_08066B26:
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066AF4

	thumb_func_start sub_8066B30
sub_8066B30: @ 8066B30
	ldrb r2, [r0, 0x3]
	movs r3, 0x4
	orrs r2, r3
	strb r2, [r0, 0x3]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_8066B30

	thumb_func_start sub_8066B40
sub_8066B40: @ 8066B40
	ldrb r3, [r0, 0x3]
	movs r2, 0x5
	negs r2, r2
	ands r2, r3
	strb r2, [r0, 0x3]
	movs r0, 0x1
	strh r0, [r1, 0x32]
	bx lr
	thumb_func_end sub_8066B40

	thumb_func_start sub_8066B50
sub_8066B50: @ 8066B50
	push {r4,lr}
	adds r4, r1, 0
	ldrb r0, [r4, 0x1]
	movs r1, 0x3
	orrs r0, r1
	strb r0, [r4, 0x1]
	adds r0, r4, 0
	bl InitSpriteAffineAnim
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r2]
	adds r4, 0x42
	ldrb r1, [r4]
	movs r0, 0x3F
	ands r0, r1
	strb r0, [r4]
	movs r0, 0x1
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066B50

	thumb_func_start sub_8066B80
sub_8066B80: @ 8066B80
	push {r4,lr}
	adds r4, r1, 0
	ldrb r0, [r4, 0x3]
	lsls r0, 26
	lsrs r0, 27
	bl FreeOamMatrix
	ldrb r0, [r4, 0x1]
	movs r1, 0x4
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x1]
	lsrs r1, 6
	ldrb r2, [r4, 0x3]
	lsrs r2, 6
	movs r3, 0
	adds r0, r4, 0
	bl CalcCenterToCornerVec
	movs r0, 0x1
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066B80

	thumb_func_start sub_8066BB0
sub_8066BB0: @ 8066BB0
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	movs r2, 0x1
	bl sub_8064830
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x7F
	ands r0, r1
	strb r0, [r2]
	adds r0, r4, 0
	movs r1, 0
	bl StartSpriteAffineAnimIfDifferent
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_8066BE4
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066BB0

	thumb_func_start sub_8066BE4
sub_8066BE4: @ 8066BE4
	push {r4,lr}
	adds r4, r1, 0
	bl an_walk_any_2
	lsls r0, 24
	cmp r0, 0
	bne _08066BF6
	movs r0, 0
	b _08066C08
_08066BF6:
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08066C08:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066BE4

	thumb_func_start sub_8066C10
sub_8066C10: @ 8066C10
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	movs r2, 0x1
	bl sub_8064830
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x7F
	ands r0, r1
	strb r0, [r2]
	adds r0, r4, 0
	movs r1, 0x1
	bl ChangeSpriteAffineAnimIfDifferent
	adds r0, r5, 0
	adds r1, r4, 0
	bl sub_8066C44
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066C10

	thumb_func_start sub_8066C44
sub_8066C44: @ 8066C44
	push {r4,lr}
	adds r4, r1, 0
	bl an_walk_any_2
	lsls r0, 24
	cmp r0, 0
	bne _08066C56
	movs r0, 0
	b _08066C68
_08066C56:
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x80
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08066C68:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8066C44

	thumb_func_start sub_8066C70
sub_8066C70: @ 8066C70
	push {r4-r6,lr}
	adds r5, r0, 0
	adds r6, r1, 0
	lsls r4, r2, 24
	lsrs r4, 24
	adds r1, r4, 0
	bl ObjectEventSetDirection
	adds r0, r5, 0
	bl npc_coords_shift_still
	adds r0, r4, 0
	bl sub_80634E0
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r5, 0
	adds r1, r6, 0
	bl obj_npc_animation_step
	adds r2, r6, 0
	adds r2, 0x2C
	ldrb r0, [r2]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r2]
	movs r0, 0x1
	strh r0, [r6, 0x32]
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8066C70

	thumb_func_start sub_8066CB0
sub_8066CB0: @ 8066CB0
	push {lr}
	movs r2, 0x1
	bl sub_8066C70
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_8066CB0

	thumb_func_start sub_8066CC0
sub_8066CC0: @ 8066CC0
	push {lr}
	movs r2, 0x2
	bl sub_8066C70
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_8066CC0

	thumb_func_start sub_8066CD0
sub_8066CD0: @ 8066CD0
	push {lr}
	movs r2, 0x3
	bl sub_8066C70
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_8066CD0

	thumb_func_start sub_8066CE0
sub_8066CE0: @ 8066CE0
	push {lr}
	movs r2, 0x4
	bl sub_8066C70
	movs r0, 0x1
	pop {r1}
	bx r1
	thumb_func_end sub_8066CE0

	thumb_func_start sub_8066CF0
sub_8066CF0: @ 8066CF0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	bl sub_8063490
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066CF0

	thumb_func_start sub_8066D14
sub_8066D14: @ 8066D14
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	bl sub_8063490
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066D14

	thumb_func_start sub_8066D38
sub_8066D38: @ 8066D38
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x3
	bl sub_8063490
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066D38

	thumb_func_start sub_8066D5C
sub_8066D5C: @ 8066D5C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x4
	bl sub_8063490
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066D5C

	thumb_func_start sub_8066D80
sub_8066D80: @ 8066D80
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	bl sub_80634B0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066D80

	thumb_func_start sub_8066DA4
sub_8066DA4: @ 8066DA4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	bl sub_80634B0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066DA4

	thumb_func_start sub_8066DC8
sub_8066DC8: @ 8066DC8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x3
	bl sub_80634B0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066DC8

	thumb_func_start sub_8066DEC
sub_8066DEC: @ 8066DEC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x4
	bl sub_80634B0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066DEC

	thumb_func_start sub_8066E10
sub_8066E10: @ 8066E10
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	bl sub_80634D0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066E10

	thumb_func_start sub_8066E34
sub_8066E34: @ 8066E34
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	bl sub_80634D0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066E34

	thumb_func_start sub_8066E58
sub_8066E58: @ 8066E58
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x3
	bl sub_80634D0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066E58

	thumb_func_start sub_8066E7C
sub_8066E7C: @ 8066E7C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x4
	bl sub_80634D0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	bl npc_set_direction_and_anim__an_proceed
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066E7C

	thumb_func_start sub_8066EA0
sub_8066EA0: @ 8066EA0
	push {r4-r6,lr}
	sub sp, 0x4
	adds r6, r0, 0
	adds r5, r1, 0
	adds r4, r2, 0
	ldr r0, [sp, 0x14]
	lsls r4, 24
	lsrs r4, 24
	lsls r3, 24
	lsrs r3, 24
	lsls r0, 24
	lsrs r0, 24
	str r0, [sp]
	adds r0, r6, 0
	adds r2, r4, 0
	bl sub_8064E3C
	adds r0, r4, 0
	bl sub_8063490
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r5, 0
	bl StartSpriteAnimIfDifferent
	adds r0, r6, 0
	bl DoShadowFieldEffect
	add sp, 0x4
	pop {r4-r6}
	pop {r0}
	bx r0
	thumb_func_end sub_8066EA0

	thumb_func_start sub_8066EE4
sub_8066EE4: @ 8066EE4
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x1
	movs r3, 0
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066F10
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066EE4

	thumb_func_start sub_8066F10
sub_8066F10: @ 8066F10
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08066F24
	movs r0, 0
	b _08066F34
_08066F24:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08066F34:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066F10

	thumb_func_start sub_8066F3C
sub_8066F3C: @ 8066F3C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x2
	movs r3, 0
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066F68
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066F3C

	thumb_func_start sub_8066F68
sub_8066F68: @ 8066F68
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08066F7C
	movs r0, 0
	b _08066F8C
_08066F7C:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08066F8C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066F68

	thumb_func_start sub_8066F94
sub_8066F94: @ 8066F94
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x3
	movs r3, 0
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8066FC0
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066F94

	thumb_func_start sub_8066FC0
sub_8066FC0: @ 8066FC0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08066FD4
	movs r0, 0
	b _08066FE4
_08066FD4:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08066FE4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066FC0

	thumb_func_start sub_8066FEC
sub_8066FEC: @ 8066FEC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x4
	movs r3, 0
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8067018
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8066FEC

	thumb_func_start sub_8067018
sub_8067018: @ 8067018
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _0806702C
	movs r0, 0
	b _0806703C
_0806702C:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_0806703C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067018

	thumb_func_start sub_8067044
sub_8067044: @ 8067044
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x1
	movs r3, 0x1
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8067070
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067044

	thumb_func_start sub_8067070
sub_8067070: @ 8067070
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08067084
	movs r0, 0
	b _08067094
_08067084:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08067094:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067070

	thumb_func_start sub_806709C
sub_806709C: @ 806709C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x2
	movs r3, 0x1
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80670C8
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806709C

	thumb_func_start sub_80670C8
sub_80670C8: @ 80670C8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080670DC
	movs r0, 0
	b _080670EC
_080670DC:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080670EC:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80670C8

	thumb_func_start sub_80670F4
sub_80670F4: @ 80670F4
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x3
	movs r3, 0x1
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8067120
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80670F4

	thumb_func_start sub_8067120
sub_8067120: @ 8067120
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08067134
	movs r0, 0
	b _08067144
_08067134:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_08067144:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067120

	thumb_func_start sub_806714C
sub_806714C: @ 806714C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x4
	movs r3, 0x1
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8067178
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806714C

	thumb_func_start sub_8067178
sub_8067178: @ 8067178
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _0806718C
	movs r0, 0
	b _0806719C
_0806718C:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_0806719C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067178

	thumb_func_start sub_80671A4
sub_80671A4: @ 80671A4
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x1
	movs r3, 0x2
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80671D0
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80671A4

	thumb_func_start sub_80671D0
sub_80671D0: @ 80671D0
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080671E4
	movs r0, 0
	b _080671F4
_080671E4:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080671F4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80671D0

	thumb_func_start sub_80671FC
sub_80671FC: @ 80671FC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x2
	movs r3, 0x2
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8067228
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80671FC

	thumb_func_start sub_8067228
sub_8067228: @ 8067228
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _0806723C
	movs r0, 0
	b _0806724C
_0806723C:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_0806724C:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067228

	thumb_func_start sub_8067254
sub_8067254: @ 8067254
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x3
	movs r3, 0x2
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8067280
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067254

	thumb_func_start sub_8067280
sub_8067280: @ 8067280
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _08067294
	movs r0, 0
	b _080672A4
_08067294:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080672A4:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067280

	thumb_func_start sub_80672AC
sub_80672AC: @ 80672AC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0
	str r0, [sp]
	adds r0, r4, 0
	movs r2, 0x4
	movs r3, 0x2
	bl sub_8066EA0
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80672D8
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80672AC

	thumb_func_start sub_80672D8
sub_80672D8: @ 80672D8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8065028
	lsls r0, 24
	cmp r0, 0
	bne _080672EC
	movs r0, 0
	b _080672FC
_080672EC:
	ldrb r0, [r4, 0x2]
	movs r1, 0x41
	negs r1, r1
	ands r1, r0
	strb r1, [r4, 0x2]
	movs r0, 0x2
	strh r0, [r5, 0x32]
	movs r0, 0x1
_080672FC:
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80672D8

	thumb_func_start sub_8067304
sub_8067304: @ 8067304
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x1
	bl sub_80634E0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x8
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x1
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067304

	thumb_func_start sub_806733C
sub_806733C: @ 806733C
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x2
	bl sub_80634E0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x8
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x2
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806733C

	thumb_func_start sub_8067374
sub_8067374: @ 8067374
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x3
	bl sub_80634E0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x8
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x3
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067374

	thumb_func_start sub_80673AC
sub_80673AC: @ 80673AC
	push {r4,r5,lr}
	sub sp, 0x4
	adds r4, r0, 0
	adds r5, r1, 0
	movs r0, 0x4
	bl sub_80634E0
	adds r3, r0, 0
	lsls r3, 24
	lsrs r3, 24
	movs r0, 0x8
	str r0, [sp]
	adds r0, r4, 0
	adds r1, r5, 0
	movs r2, 0x4
	bl sub_80656C4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806570C
	lsls r0, 24
	lsrs r0, 24
	add sp, 0x4
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80673AC

	thumb_func_start sub_80673E4
sub_80673E4: @ 80673E4
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r3, 24
	bl sub_8064678
	ldrb r0, [r5, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_8063490
	adds r1, r0, 0
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl StartSpriteAnim
	adds r0, r4, 0
	movs r1, 0
	bl SeekSpriteAnim
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_80673E4

	thumb_func_start sub_806741C
sub_806741C: @ 806741C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	movs r3, 0x1
	bl sub_80673E4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806743C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806741C

	thumb_func_start sub_806743C
sub_806743C: @ 806743C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _0806744E
	movs r0, 0
	b _08067454
_0806744E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08067454:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806743C

	thumb_func_start sub_806745C
sub_806745C: @ 806745C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	movs r3, 0x1
	bl sub_80673E4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806747C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806745C

	thumb_func_start sub_806747C
sub_806747C: @ 806747C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _0806748E
	movs r0, 0
	b _08067494
_0806748E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08067494:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806747C

	thumb_func_start sub_806749C
sub_806749C: @ 806749C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	movs r3, 0x1
	bl sub_80673E4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80674BC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806749C

	thumb_func_start sub_80674BC
sub_80674BC: @ 80674BC
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _080674CE
	movs r0, 0
	b _080674D4
_080674CE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080674D4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80674BC

	thumb_func_start sub_80674DC
sub_80674DC: @ 80674DC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	movs r3, 0x1
	bl sub_80673E4
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80674FC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80674DC

	thumb_func_start sub_80674FC
sub_80674FC: @ 80674FC
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _0806750E
	movs r0, 0
	b _08067514
_0806750E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08067514:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80674FC

	thumb_func_start sub_806751C
sub_806751C: @ 806751C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r3, 24
	bl sub_8064678
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_80634E0
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_apply_anim_looping
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_806751C

	thumb_func_start sub_806754C
sub_806754C: @ 806754C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	movs r3, 0x1
	bl sub_806751C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806756C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806754C

	thumb_func_start sub_806756C
sub_806756C: @ 806756C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _0806757E
	movs r0, 0
	b _08067584
_0806757E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08067584:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806756C

	thumb_func_start sub_806758C
sub_806758C: @ 806758C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	movs r3, 0x1
	bl sub_806751C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80675AC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806758C

	thumb_func_start sub_80675AC
sub_80675AC: @ 80675AC
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _080675BE
	movs r0, 0
	b _080675C4
_080675BE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080675C4:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80675AC

	thumb_func_start sub_80675CC
sub_80675CC: @ 80675CC
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	movs r3, 0x1
	bl sub_806751C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80675EC
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80675CC

	thumb_func_start sub_80675EC
sub_80675EC: @ 80675EC
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _080675FE
	movs r0, 0
	b _08067604
_080675FE:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08067604:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80675EC

	thumb_func_start sub_806760C
sub_806760C: @ 806760C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	movs r3, 0x1
	bl sub_806751C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_806762C
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_806760C

	thumb_func_start sub_806762C
sub_806762C: @ 806762C
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _0806763E
	movs r0, 0
	b _08067644
_0806763E:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_08067644:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_806762C

	thumb_func_start sub_806764C
sub_806764C: @ 806764C
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	lsls r2, 24
	lsrs r2, 24
	lsls r3, 24
	lsrs r3, 24
	bl sub_8064678
	ldrb r0, [r4, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl sub_80634C0
	adds r2, r0, 0
	lsls r2, 24
	lsrs r2, 24
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_apply_anim_looping
	adds r0, r5, 0
	movs r1, 0
	bl SeekSpriteAnim
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_806764C

	thumb_func_start sub_8067684
sub_8067684: @ 8067684
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x1
	movs r3, 0x1
	bl sub_806764C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80676A4
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067684

	thumb_func_start sub_80676A4
sub_80676A4: @ 80676A4
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _080676B6
	movs r0, 0
	b _080676BC
_080676B6:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080676BC:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80676A4

	thumb_func_start sub_80676C4
sub_80676C4: @ 80676C4
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x2
	movs r3, 0x1
	bl sub_806764C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_80676E4
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80676C4

	thumb_func_start sub_80676E4
sub_80676E4: @ 80676E4
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _080676F6
	movs r0, 0
	b _080676FC
_080676F6:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_080676FC:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_80676E4

	thumb_func_start sub_8067704
sub_8067704: @ 8067704
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x3
	movs r3, 0x1
	bl sub_806764C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8067724
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067704

	thumb_func_start sub_8067724
sub_8067724: @ 8067724
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08067736
	movs r0, 0
	b _0806773C
_08067736:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_0806773C:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8067724

	thumb_func_start sub_8067744
sub_8067744: @ 8067744
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	movs r2, 0x4
	movs r3, 0x1
	bl sub_806764C
	adds r0, r4, 0
	adds r1, r5, 0
	bl sub_8067764
	lsls r0, 24
	lsrs r0, 24
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067744

	thumb_func_start sub_8067764
sub_8067764: @ 8067764
	push {r4,lr}
	adds r4, r1, 0
	bl npc_obj_ministep_stop_on_arrival
	lsls r0, 24
	cmp r0, 0
	bne _08067776
	movs r0, 0
	b _0806777C
_08067776:
	movs r0, 0x2
	strh r0, [r4, 0x32]
	movs r0, 0x1
_0806777C:
	pop {r4}
	pop {r1}
	bx r1
	thumb_func_end sub_8067764

	thumb_func_start sub_8067784
sub_8067784: @ 8067784
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x14
	bl StartSpriteAnim
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldrb r1, [r5, 0x1]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r5, 0x1]
	movs r1, 0
	movs r0, 0x1
	strh r0, [r4, 0x32]
	strh r1, [r4, 0x36]
	strh r1, [r4, 0x38]
	strh r1, [r4, 0x3A]
	strh r1, [r4, 0x3C]
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_8067784

	thumb_func_start sub_80677C0
sub_80677C0: @ 80677C0
	adds r1, 0x3F
	ldrb r0, [r1]
	lsls r0, 27
	lsrs r0, 31
	bx lr
	thumb_func_end sub_80677C0

	thumb_func_start sub_80677CC
sub_80677CC: @ 80677CC
	push {r4-r6,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	movs r0, 0x3C
	ldrsh r1, [r4, r0]
	cmp r1, 0x1
	beq _08067854
	cmp r1, 0x1
	bgt _080677E4
	cmp r1, 0
	beq _080677EA
	b _080678B6
_080677E4:
	cmp r1, 0x2
	beq _08067896
	b _080678B6
_080677EA:
	ldrh r0, [r4, 0x3A]
	adds r0, 0xA
	strh r0, [r4, 0x3A]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x7F
	ble _08067822
	strh r1, [r4, 0x3A]
	ldrh r0, [r4, 0x38]
	adds r0, 0x1
	strh r0, [r4, 0x38]
	strh r0, [r4, 0x3C]
	adds r0, r4, 0
	movs r1, 0
	bl StartSpriteAnim
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldrb r1, [r5, 0x1]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r5, 0x1]
_08067822:
	ldr r1, _08067850 @ =gSineTable
	movs r2, 0x3A
	ldrsh r0, [r4, r2]
	lsls r0, 1
	adds r0, r1
	movs r2, 0
	ldrsh r1, [r0, r2]
	lsls r0, r1, 1
	adds r0, r1
	asrs r0, 7
	negs r0, r0
	strh r0, [r4, 0x26]
	negs r1, r0
	orrs r1, r0
	lsrs r1, 31
	lsls r1, 1
	ldrb r2, [r5]
	movs r0, 0x3
	negs r0, r0
	ands r0, r2
	orrs r0, r1
	strb r0, [r5]
	b _080678B6
	.align 2, 0
_08067850: .4byte gSineTable
_08067854:
	ldrh r0, [r4, 0x36]
	adds r0, 0x1
	movs r6, 0
	strh r0, [r4, 0x36]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x10
	ble _0806788A
	strh r6, [r4, 0x36]
	adds r0, r4, 0
	movs r1, 0x14
	bl StartSpriteAnim
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldrb r1, [r5, 0x1]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r5, 0x1]
	strh r6, [r4, 0x3C]
	b _080678B6
_0806788A:
	ldrb r1, [r5]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r5]
	b _080678B6
_08067896:
	ldrb r1, [r5]
	movs r0, 0x3
	negs r0, r0
	ands r0, r1
	strb r0, [r5]
	ldrh r0, [r4, 0x36]
	adds r0, 0x1
	strh r0, [r4, 0x36]
	lsls r0, 16
	asrs r0, 16
	cmp r0, 0x50
	ble _080678B6
	movs r0, 0
	strh r0, [r4, 0x36]
	movs r0, 0x1
	b _080678B8
_080678B6:
	movs r0, 0
_080678B8:
	pop {r4-r6}
	pop {r1}
	bx r1
	thumb_func_end sub_80677CC

	thumb_func_start sub_80678C0
sub_80678C0: @ 80678C0
	push {r4,lr}
	ldrh r2, [r1, 0x3C]
	adds r2, 0x4
	movs r0, 0xFF
	ands r2, r0
	strh r2, [r1, 0x3C]
	ldr r3, _080678EC @ =gSineTable
	movs r4, 0x3C
	ldrsh r0, [r1, r4]
	lsls r0, 1
	adds r0, r3
	ldrh r0, [r0]
	lsls r0, 16
	asrs r0, 23
	strh r0, [r1, 0x24]
	movs r0, 0
	cmp r2, 0
	bne _080678E6
	movs r0, 0x1
_080678E6:
	pop {r4}
	pop {r1}
	bx r1
	.align 2, 0
_080678EC: .4byte gSineTable
	thumb_func_end sub_80678C0

	thumb_func_start sub_80678F0
sub_80678F0: @ 80678F0
	push {r4,r5,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	adds r0, r4, 0
	movs r1, 0x1C
	bl StartSpriteAnim
	adds r2, r4, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	ldrb r1, [r5, 0x1]
	movs r0, 0x5
	negs r0, r0
	ands r0, r1
	strb r0, [r5, 0x1]
	movs r0, 0x1
	strh r0, [r4, 0x32]
	movs r0, 0
	pop {r4,r5}
	pop {r1}
	bx r1
	thumb_func_end sub_80678F0

	thumb_func_start sub_8067924
sub_8067924: @ 8067924
	adds r1, 0x3F
	ldrb r0, [r1]
	lsls r0, 27
	lsrs r0, 31
	bx lr
	thumb_func_end sub_8067924

	thumb_func_start sub_8067930
sub_8067930: @ 8067930
	movs r0, 0x1
	bx lr
	thumb_func_end sub_8067930

	thumb_func_start sub_8067934
sub_8067934: @ 8067934
	adds r1, 0x2C
	ldrb r0, [r1]
	movs r2, 0x40
	orrs r0, r2
	strb r0, [r1]
	movs r0, 0x1
	bx lr
	thumb_func_end sub_8067934

	thumb_func_start sub_8067944
sub_8067944: @ 8067944
	movs r0, 0
	strh r0, [r1, 0x26]
	ldrh r0, [r1, 0x32]
	adds r0, 0x1
	strh r0, [r1, 0x32]
	movs r0, 0
	bx lr
	thumb_func_end sub_8067944

	thumb_func_start sub_8067954
sub_8067954: @ 8067954
	push {lr}
	adds r2, r1, 0
	ldrh r0, [r2, 0x26]
	subs r0, 0x8
	strh r0, [r2, 0x26]
	lsls r0, 16
	asrs r0, 16
	movs r1, 0xA0
	negs r1, r1
	cmp r0, r1
	bne _08067970
	ldrh r0, [r2, 0x32]
	adds r0, 0x1
	strh r0, [r2, 0x32]
_08067970:
	movs r0, 0
	pop {r1}
	bx r1
	thumb_func_end sub_8067954

	thumb_func_start sub_8067978
sub_8067978: @ 8067978
	ldr r0, _08067988 @ =0x0000ff60
	strh r0, [r1, 0x26]
	ldrh r0, [r1, 0x32]
	adds r0, 0x1
	strh r0, [r1, 0x32]
	movs r0, 0
	bx lr
	.align 2, 0
_08067988: .4byte 0x0000ff60
	thumb_func_end sub_8067978

	thumb_func_start sub_806798C
sub_806798C: @ 806798C
	push {lr}
	ldrh r0, [r1, 0x26]
	adds r0, 0x8
	strh r0, [r1, 0x26]
	lsls r0, 16
	cmp r0, 0
	bne _080679A0
	ldrh r0, [r1, 0x32]
	adds r0, 0x1
	strh r0, [r1, 0x32]
_080679A0:
	movs r0, 0
	pop {r1}
	bx r1
	thumb_func_end sub_806798C

	thumb_func_start sub_80679A8
sub_80679A8: @ 80679A8
	movs r0, 0x1
	bx lr
	thumb_func_end sub_80679A8

	thumb_func_start npc_obj_transfer_image_anim_pause_flag
npc_obj_transfer_image_anim_pause_flag: @ 80679AC
	push {lr}
	ldrb r0, [r0, 0x1]
	lsls r0, 29
	cmp r0, 0
	bge _080679C2
	adds r0, r1, 0
	adds r0, 0x2C
	ldrb r1, [r0]
	movs r2, 0x40
	orrs r1, r2
	strb r1, [r0]
_080679C2:
	pop {r0}
	bx r0
	thumb_func_end npc_obj_transfer_image_anim_pause_flag

	thumb_func_start sub_80679C8
sub_80679C8: @ 80679C8
	push {r4,lr}
	adds r4, r0, 0
	ldrb r3, [r4, 0x1]
	lsls r0, r3, 28
	cmp r0, 0
	bge _080679F0
	adds r2, r1, 0
	adds r2, 0x2C
	ldrb r1, [r2]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r2]
	movs r0, 0x5
	negs r0, r0
	ands r0, r3
	movs r1, 0x9
	negs r1, r1
	ands r0, r1
	strb r0, [r4, 0x1]
_080679F0:
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end sub_80679C8

	thumb_func_start sub_80679F8
sub_80679F8: @ 80679F8
	push {r4,r5,lr}
	adds r4, r0, 0
	adds r5, r1, 0
	bl sub_8067A10
	adds r0, r4, 0
	adds r1, r5, 0
	bl npc_update_obj_anim_flag
	pop {r4,r5}
	pop {r0}
	bx r0
	thumb_func_end sub_80679F8

	thumb_func_start sub_8067A10
sub_8067A10: @ 8067A10
	push {r4-r7,lr}
	adds r5, r0, 0
	adds r4, r1, 0
	ldrb r1, [r5, 0x1]
	movs r0, 0x41
	negs r0, r0
	ands r0, r1
	strb r0, [r5, 0x1]
	ldrb r0, [r5, 0x5]
	bl GetObjectEventGraphicsInfo
	adds r7, r0, 0
	adds r0, r4, 0
	adds r0, 0x3E
	ldrb r1, [r0]
	movs r0, 0x2
	ands r0, r1
	cmp r0, 0
	beq _08067A74
	ldrh r1, [r4, 0x24]
	ldrh r0, [r4, 0x20]
	adds r1, r0
	adds r0, r4, 0
	adds r0, 0x28
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	ldr r2, _08067A6C @ =gSpriteCoordOffsetX
	adds r0, r1
	ldrh r2, [r2]
	adds r0, r2
	lsls r0, 16
	lsrs r3, r0, 16
	ldrh r1, [r4, 0x26]
	ldrh r0, [r4, 0x22]
	adds r1, r0
	adds r0, r4, 0
	adds r0, 0x29
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	ldr r2, _08067A70 @ =gSpriteCoordOffsetY
	adds r0, r1
	ldrh r2, [r2]
	adds r0, r2
	b _08067A9C
	.align 2, 0
_08067A6C: .4byte gSpriteCoordOffsetX
_08067A70: .4byte gSpriteCoordOffsetY
_08067A74:
	ldrh r1, [r4, 0x24]
	ldrh r0, [r4, 0x20]
	adds r1, r0
	adds r0, r4, 0
	adds r0, 0x28
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	adds r0, r1
	lsls r0, 16
	lsrs r3, r0, 16
	ldrh r1, [r4, 0x26]
	ldrh r0, [r4, 0x22]
	adds r1, r0
	adds r0, r4, 0
	adds r0, 0x29
	ldrb r0, [r0]
	lsls r0, 24
	asrs r0, 24
	adds r0, r1
_08067A9C:
	lsls r0, 16
	lsrs r2, r0, 16
	ldrh r0, [r7, 0x8]
	adds r0, r3
	lsls r0, 16
	lsrs r6, r0, 16
	ldrh r0, [r7, 0xA]
	adds r0, r2
	lsls r0, 16
	lsrs r7, r0, 16
	ldr r0, _08067B00 @ =gSaveBlock1Ptr
	ldr r0, [r0]
	ldrh r1, [r0, 0x4]
	ldr r0, _08067B04 @ =0x00000401
	ldr r4, _08067B08 @ =0x0000fff0
	cmp r1, r0
	bne _08067AC6
	ldrb r0, [r5, 0x8]
	cmp r0, 0x1
	bne _08067AC6
	subs r4, 0x10
_08067AC6:
	lsls r0, r3, 16
	asrs r0, 16
	cmp r0, 0xFF
	bgt _08067AD6
	lsls r1, r6, 16
	lsls r0, r4, 16
	cmp r1, r0
	bge _08067ADE
_08067AD6:
	ldrb r0, [r5, 0x1]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r5, 0x1]
_08067ADE:
	lsls r0, r2, 16
	asrs r0, 16
	cmp r0, 0xAF
	bgt _08067AF2
	lsls r0, r7, 16
	asrs r0, 16
	movs r1, 0x10
	negs r1, r1
	cmp r0, r1
	bge _08067AFA
_08067AF2:
	ldrb r0, [r5, 0x1]
	movs r1, 0x40
	orrs r0, r1
	strb r0, [r5, 0x1]
_08067AFA:
	pop {r4-r7}
	pop {r0}
	bx r0
	.align 2, 0
_08067B00: .4byte gSaveBlock1Ptr
_08067B04: .4byte 0x00000401
_08067B08: .4byte 0x0000fff0
	thumb_func_end sub_8067A10

	thumb_func_start npc_update_obj_anim_flag
npc_update_obj_anim_flag: @ 8067B0C
	push {lr}
	adds r2, r1, 0
	adds r2, 0x3E
	ldrb r1, [r2]
	movs r3, 0x5
	negs r3, r3
	ands r3, r1
	strb r3, [r2]
	ldrb r1, [r0, 0x1]
	movs r0, 0x60
	ands r0, r1
	cmp r0, 0
	beq _08067B2E
	movs r1, 0x4
	adds r0, r3, 0
	orrs r0, r1
	strb r0, [r2]
_08067B2E:
	pop {r0}
	bx r0
	thumb_func_end npc_update_obj_anim_flag

	.align 2, 0 @ Don't pad with nop.
