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

	.syntax unified

	.text

	thumb_func_start oei_exclamation_mark
oei_exclamation_mark: @ 80B4620
	push {lr}
	ldr r0, =gUnknown_085507B4
	movs r1, 0
	movs r2, 0
	movs r3, 0x53
	bl CreateSpriteAtEnd
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x40
	beq _080B4648
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	movs r1, 0
	movs r2, 0
	bl sub_80B46D8
_080B4648:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end oei_exclamation_mark

	thumb_func_start sub_80B4658
sub_80B4658: @ 80B4658
	push {lr}
	ldr r0, =gUnknown_085507B4
	movs r1, 0
	movs r2, 0
	movs r3, 0x52
	bl CreateSpriteAtEnd
	lsls r0, 24
	lsrs r1, r0, 24
	cmp r1, 0x40
	beq _080B4680
	lsls r0, r1, 4
	adds r0, r1
	lsls r0, 2
	ldr r1, =gSprites
	adds r0, r1
	movs r1, 0x21
	movs r2, 0x1
	bl sub_80B46D8
_080B4680:
	movs r0, 0
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80B4658

	thumb_func_start sub_80B4690
sub_80B4690: @ 80B4690
	push {r4,lr}
	ldr r0, =gUnknown_085507CC
	movs r1, 0
	movs r2, 0
	movs r3, 0x52
	bl CreateSpriteAtEnd
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x40
	beq _080B46C6
	lsls r4, r0, 4
	adds r4, r0
	lsls r4, 2
	ldr r0, =gSprites
	adds r4, r0
	adds r0, r4, 0
	movs r1, 0x2E
	movs r2, 0
	bl sub_80B46D8
	ldrb r1, [r4, 0x5]
	movs r0, 0xF
	ands r0, r1
	movs r1, 0x20
	orrs r0, r1
	strb r0, [r4, 0x5]
_080B46C6:
	movs r0, 0
	pop {r4}
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80B4690

	thumb_func_start sub_80B46D8
@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3)
sub_80B46D8: @ 80B46D8
	push {r4,lr}
	lsls r2, 24
	lsrs r2, 24
	ldrb r4, [r0, 0x5]
	movs r3, 0xD
	negs r3, r3
	ands r3, r4
	movs r4, 0x4
	orrs r3, r4
	strb r3, [r0, 0x5]
	movs r3, 0x3E
	adds r3, r0
	mov r12, r3
	ldrb r3, [r3]
	movs r4, 0x2
	orrs r3, r4
	mov r4, r12
	strb r3, [r4]
	ldr r4, =gFieldEffectSpawnParams
	ldr r3, [r4]
	strh r3, [r0, 0x2E]
	ldr r3, [r4, 0x4]
	strh r3, [r0, 0x30]
	ldr r3, [r4, 0x8]
	strh r3, [r0, 0x32]
	ldr r3, =0x0000fffb
	strh r3, [r0, 0x34]
	strh r1, [r0, 0x3C]
	adds r1, r2, 0
	bl StartSpriteAnim
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80B46D8

	thumb_func_start objc_exclamation_mark_probably
objc_exclamation_mark_probably: @ 80B4724
	push {r4,lr}
	sub sp, 0x4
	adds r4, r0, 0
	ldrh r0, [r4, 0x2E]
	lsls r0, 24
	lsrs r0, 24
	ldrh r1, [r4, 0x30]
	lsls r1, 24
	lsrs r1, 24
	ldrh r2, [r4, 0x32]
	lsls r2, 24
	lsrs r2, 24
	mov r3, sp
	bl TryGetFieldObjectIdByLocalIdAndMap
	lsls r0, 24
	cmp r0, 0
	bne _080B4756
	adds r0, r4, 0
	adds r0, 0x3F
	ldrb r1, [r0]
	movs r0, 0x10
	ands r0, r1
	cmp r0, 0
	beq _080B4764
_080B4756:
	ldrh r1, [r4, 0x3C]
	lsls r1, 24
	lsrs r1, 24
	adds r0, r4, 0
	bl FieldEffectStop
	b _080B47B2
_080B4764:
	ldr r2, =gMapObjects
	mov r0, sp
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r0, [r0, 0x4]
	lsls r1, r0, 4
	adds r1, r0
	lsls r1, 2
	ldr r0, =gSprites
	adds r1, r0
	ldrh r3, [r4, 0x34]
	ldrh r0, [r4, 0x36]
	adds r2, r3, r0
	strh r2, [r4, 0x36]
	ldrh r0, [r1, 0x20]
	strh r0, [r4, 0x20]
	ldrh r0, [r1, 0x22]
	subs r0, 0x10
	strh r0, [r4, 0x22]
	ldrh r0, [r1, 0x24]
	strh r0, [r4, 0x24]
	ldrh r0, [r1, 0x26]
	adds r0, r2
	strh r0, [r4, 0x26]
	lsls r2, 16
	asrs r2, 16
	cmp r2, 0
	beq _080B47B0
	adds r0, r3, 0x1
	strh r0, [r4, 0x34]
	b _080B47B2
	.pool
_080B47B0:
	strh r2, [r4, 0x34]
_080B47B2:
	add sp, 0x4
	pop {r4}
	pop {r0}
	bx r0
	thumb_func_end objc_exclamation_mark_probably

	thumb_func_start sub_80B47BC
sub_80B47BC: @ 80B47BC
	push {lr}
	ldr r0, =gUnknown_02038BFC
	ldrb r0, [r0]
	cmp r0, 0
	beq _080B47D4
	ldr r0, =gUnknown_03006090
	ldrb r0, [r0, 0xC]
	b _080B47D8
	.pool
_080B47D4:
	ldr r0, =gUnknown_03006090
	ldrb r0, [r0]
_080B47D8:
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80B47BC

	thumb_func_start sub_80B47E0
sub_80B47E0: @ 80B47E0
	push {lr}
	lsls r0, 24
	lsrs r0, 24
	cmp r0, 0x1
	bls _080B47EE
	movs r0, 0
	b _080B4800
_080B47EE:
	cmp r0, 0
	beq _080B47FC
	ldr r0, =gUnknown_03006090
	ldrb r0, [r0, 0xC]
	b _080B4800
	.pool
_080B47FC:
	ldr r0, =gUnknown_03006090
	ldrb r0, [r0]
_080B4800:
	pop {r1}
	bx r1
	.pool
	thumb_func_end sub_80B47E0

	thumb_func_start sub_80B4808
sub_80B4808: @ 80B4808
	push {lr}
	ldr r0, =gUnknown_030060AC
	ldrb r0, [r0]
	cmp r0, 0x1
	bne _080B4870
	ldr r2, =gUnknown_03006090
	ldr r0, =gUnknown_03006080
	ldrh r1, [r0]
	lsls r0, r1, 1
	adds r0, r1
	lsls r0, 2
	adds r0, r2
	ldrb r1, [r0]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, =gMapObjects
	adds r0, r1
	ldrb r0, [r0, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl GetOppositeDirection
	lsls r0, 24
	lsrs r0, 24
	bl GetFaceDirectionAnimId
	ldr r3, =gUnknown_03006084
	strb r0, [r3]
	movs r0, 0xFE
	strb r0, [r3, 0x1]
	ldr r0, =gSaveBlock1Ptr
	ldr r0, [r0]
	ldrb r1, [r0, 0x5]
	ldrb r2, [r0, 0x4]
	movs r0, 0xFF
	bl exec_movement
	b _080B489E
	.pool
_080B4870:
	ldr r0, =gPlayerAvatar
	ldrb r1, [r0, 0x5]
	lsls r0, r1, 3
	adds r0, r1
	lsls r0, 2
	ldr r1, =gMapObjects
	adds r0, r1
	ldrb r0, [r0, 0x18]
	lsls r0, 28
	lsrs r0, 28
	bl GetFaceDirectionAnimId
	ldr r3, =gUnknown_03006084
	strb r0, [r3]
	movs r0, 0xFE
	strb r0, [r3, 0x1]
	ldr r0, =gSaveBlock1Ptr
	ldr r0, [r0]
	ldrb r1, [r0, 0x5]
	ldrb r2, [r0, 0x4]
	movs r0, 0xFF
	bl exec_movement
_080B489E:
	movs r0, 0xFF
	bl sub_809BE48
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_80B4808

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