	.include "asm/macros.inc"
	.include "overlay_29_02305C28.inc"

	.text

	arm_func_start ov29_02305C28
ov29_02305C28: ; 0x02305C28
	stmdb sp!, {r3, lr}
	mov ip, #0
	str ip, [sp]
	bl ov29_023058C4
	ldmia sp!, {r3, pc}
	arm_func_end ov29_02305C28

	arm_func_start ov29_02305C3C
ov29_02305C3C: ; 0x02305C3C
	stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
	sub sp, sp, #0xb8
	mov sb, r0
	mov r8, r1
	bl EntityIsValid__02305C04
	cmp r0, #0
	beq _02305F4C
	mov r0, r8
	bl EntityIsValid__02305C04
	cmp r0, #0
	beq _02305F4C
	mov r5, #0
	mov r0, sb
	mov r1, r5
	ldr r6, [sb, #0xb4]
	ldr r7, [r8, #0xb4]
	bl ov29_02300634
	cmp r0, #0
	beq _02305D28
	mov r0, sb
	mov r1, r8
	bl ov29_02306DCC
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_02306F00
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_02307078
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_02307198
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_0230737C
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_023076C0
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_023077FC
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_023078EC
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_02307A2C
	orr r5, r5, r0
	mov r0, sb
	mov r1, r8
	bl ov29_02307B0C
	orr r5, r5, r0
_02305D28:
	ldrb r0, [r6, #0x106]
	cmp r0, #0
	beq _02305D68
	mov r0, sb
	mov r1, r8
	mov r2, #1
	bl ov29_0231662C
	cmp r0, #0
	ldrneb r1, [r6, #0x106]
	orrne r0, r5, #0x11
	andne r5, r0, #0xff
	orreq r0, r5, #1
	andeq r5, r0, #0xff
	strneb r1, [r7, #0x106]
	mov r0, #0
	strb r0, [r6, #0x106]
_02305D68:
	ldrb r0, [r6, #0xfe]
	cmp r0, #0
	beq _02305DAC
	mov r0, sb
	mov r1, r8
	mov r2, #0
	mov r3, #1
	bl ov29_023174C8
	cmp r0, #0
	ldrneb r1, [r6, #0xfe]
	orrne r0, r5, #0x11
	andne r5, r0, #0xff
	orreq r0, r5, #1
	andeq r5, r0, #0xff
	strneb r1, [r7, #0xfe]
	mov r0, #0
	strb r0, [r6, #0xfe]
_02305DAC:
	mov r0, sb
	mov r1, r8
	mov r2, #0
	bl ov29_02301940
	cmp r0, #0
	bne _02305E08
	mov r0, sb
	mov r1, r8
	mov r2, #0
	bl ov29_02302430
	cmp r0, #0
	bne _02305E08
	mov r2, #0
_02305DE0:
	add r0, r6, r2
	ldrb r0, [r0, #0x119]
	add r1, r7, r2
	add r2, r2, #1
	strb r0, [r1, #0x119]
	cmp r0, #0
	orrne r0, r5, #0x11
	andne r5, r0, #0xff
	cmp r2, #5
	blt _02305DE0
_02305E08:
	mov r0, sb
	bl CalcSpeedStageWrapper
	mov r2, #0
	mov r4, r0
	mov r1, r2
_02305E1C:
	add r0, r6, r2
	add r2, r2, #1
	strb r1, [r0, #0x119]
	cmp r2, #5
	blt _02305E1C
	mov r0, sb
	bl CalcSpeedStageWrapper
	cmp r4, r0
	orrne r0, r5, #1
	andne r5, r0, #0xff
	mov r0, #0
	add r6, r6, #0x124
	mov r3, r0
	mov r4, #1
_02305E54:
	ldrb r1, [r6, r0, lsl #3]
	add ip, r6, r0, lsl #3
	tst r1, #1
	movne r1, r4
	moveq r1, r3
	tst r1, #0xff
	beq _02305E88
	ldrh r1, [ip, #2]
	tst r1, #1
	orrne r2, r5, #1
	bicne r1, r1, #1
	strneh r1, [ip, #2]
	andne r5, r2, #0xff
_02305E88:
	add r0, r0, #1
	cmp r0, #4
	blt _02305E54
	mov r0, #0
	mov r1, sb
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r7, #0xd8]
	mov r2, #0
	cmp r0, #2
	mov r0, #1
	bne _02305ED0
	mov r1, r8
	strb r2, [r7, #0xd8]
	bl SubstitutePlaceholderStringTags
	mov r0, #2
	strb r0, [r7, #0xd8]
	b _02305ED8
_02305ED0:
	mov r1, r8
	bl SubstitutePlaceholderStringTags
_02305ED8:
	cmp r5, #0
	beq _02305EF4
	cmp r5, #1
	beq _02305F08
	cmp r5, #0x11
	beq _02305F24
	b _02305F3C
_02305EF4:
	ldr r2, _02305F54 ; =0x00000CCC
	add r1, sp, #0
	mov r0, sb
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02305F3C
_02305F08:
	mov r0, sb
	bl ov29_022E543C
	ldr r2, _02305F58 ; =0x00000CCB
	add r1, sp, #0
	mov r0, sb
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02305F3C
_02305F24:
	mov r0, sb
	bl ov29_022E543C
	ldr r2, _02305F5C ; =0x00000CCA
	add r1, sp, #0
	mov r0, sb
	bl LogMessageByIdWithPopupCheckUserTarget
_02305F3C:
	mov r0, sb
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
_02305F4C:
	add sp, sp, #0xb8
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
	.align 2, 0
_02305F54: .word 0x00000CCC
_02305F58: .word 0x00000CCB
_02305F5C: .word 0x00000CCA
	arm_func_end ov29_02305C3C

	arm_func_start ov29_02305F60
ov29_02305F60: ; 0x02305F60
	stmdb sp!, {r3, r4, r5, lr}
	mov r4, r1
	mov r0, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	ldr r5, [r4, #0xb4]
	mov r1, #0
	mov r0, r5
	bl ov29_022FDDC0
	mov ip, #0
	strb ip, [r5, #0x106]
	strb ip, [r5, #0xfe]
	add r3, r5, #0x124
	mov r1, ip
	mov r2, #1
_02305FA0:
	ldrb r0, [r3, ip, lsl #3]
	add lr, r3, ip, lsl #3
	add ip, ip, #1
	tst r0, #1
	movne r0, r2
	moveq r0, r1
	tst r0, #0xff
	ldrneh r0, [lr, #2]
	bicne r0, r0, #1
	strneh r0, [lr, #2]
	cmp ip, #4
	blt _02305FA0
	mov r0, r4
	bl UpdateStatusIconFlags
	ldmia sp!, {r3, r4, r5, pc}
	arm_func_end ov29_02305F60

	arm_func_start ov29_02305FDC
ov29_02305FDC: ; 0x02305FDC
	stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
	mov r8, r1
	mov sb, r0
	mov r0, r8
	mov r7, r2
	mov r6, r3
	mov r4, #0
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
	mov r0, r4
	ldr r5, [r8, #0xb4]
	mov r1, r8
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r5, #0xbd]
	cmp r0, #6
	addls pc, pc, r0, lsl #2
	b _02306164
_02306028: ; jump table
	b _02306164 ; case 0
	b _02306044 ; case 1
	b _0230605C ; case 2
	b _02306070 ; case 3
	b _02306118 ; case 4
	b _023060A8 ; case 5
	b _02306164 ; case 6
_02306044:
	ldr r2, _0230618C ; =0x00000C8D
	mov r0, sb
	mov r1, r8
	mov r4, #1
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02306164
_0230605C:
	ldr r2, _02306190 ; =0x00000C8E
	mov r0, sb
	mov r1, r8
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02306164
_02306070:
	mov r4, #1
	mov r0, sb
	mov r1, r8
	rsb r2, r4, #0xc90
	bl LogMessageByIdWithPopupCheckUserTarget
	cmp r6, #0
	beq _02306164
	ldr r0, _02306194 ; =0x022C45A8
	ldr r3, _02306198 ; =0x0000024E
	ldrsh r1, [r0]
	mov r0, r8
	mov r2, #8
	bl ov29_0230D11C
	b _02306164
_023060A8:
	mov r0, sb
	mov r1, r8
	mov r2, #0xc90
	mov r4, #1
	bl LogMessageByIdWithPopupCheckUserTarget
	ldrb r0, [sp, #0x20]
	cmp r0, #0
	beq _023060E8
	ldr r0, _0230619C ; =0x022C45A0
	mov r6, r4
	ldrsh r2, [r0]
	mov r0, sb
	mov r1, r8
	mov r3, #0
	str r6, [sp]
	bl TryIncreaseHp
_023060E8:
	ldrb r0, [sp, #0x20]
	mov r6, #0
	strb r6, [r5, #0xbd]
	cmp r0, #0
	beq _02306164
	mov r2, #1
	mov r0, sb
	mov r1, r8
	mov r3, r2
	str r6, [sp]
	bl ov29_023058C4
	b _02306164
_02306118:
	cmp r7, #0
	beq _02306154
	ldr r1, _023061A0 ; =0x022C4868
	mov r3, r4
	mov r0, r8
	mov r2, #1
	strb r3, [r5, #0xbd]
	bl CalcStatusDuration
	mov r2, r0
	mov r0, sb
	mov r1, r8
	add r2, r2, #1
	mov r3, #1
	bl TryInflictSleepStatus
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_02306154:
	ldr r2, _023061A4 ; =0x00000C91
	mov r0, sb
	mov r1, r8
	bl LogMessageByIdWithPopupCheckUserTarget
_02306164:
	mov r1, #0
	mov r0, r8
	strb r1, [r5, #0xbd]
	bl UpdateStatusIconFlags
	cmp r4, #0
	ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
	mov r0, r8
	mov r1, #8
	bl ov29_02304A48
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
	.align 2, 0
_0230618C: .word 0x00000C8D
_02306190: .word 0x00000C8E
_02306194: .word 0x022C45A8
_02306198: .word 0x0000024E
_0230619C: .word 0x022C45A0
_023061A0: .word 0x022C4868
_023061A4: .word 0x00000C91
	arm_func_end ov29_02305FDC

	arm_func_start ov29_023061A8
ov29_023061A8: ; 0x023061A8
	stmdb sp!, {r4, r5, r6, lr}
	mov r5, r1
	mov r6, r0
	mov r0, r5
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r4, r5, r6, pc}
	mov r0, #0
	ldr r4, [r5, #0xb4]
	arm_func_end ov29_023061A8

	arm_func_start ov29_023061CC
ov29_023061CC: ; 0x023061CC
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xbf]
	cmp r0, #5
	addls pc, pc, r0, lsl #2
	arm_func_end ov29_023061CC

	arm_func_start caseD_6
caseD_6: ; 0x023061E4
	b _02306238
_023061E8: ; jump table
	b _02306238 ; case 0
	b _02306228 ; case 1
	b _02306200 ; case 2
	b _02306200 ; case 3
	b _02306214 ; case 4
	b _02306238 ; case 5
_02306200:
	ldr r2, _0230624C ; =0x00000C9E
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02306238
_02306214:
	ldr r2, _02306250 ; =0x00000C9C
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02306238
_02306228:
	ldr r2, _02306254 ; =0x00000C9D
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
	arm_func_end caseD_6
_02306238:
	mov r1, #0
	mov r0, r5
	strb r1, [r4, #0xbf]
	bl UpdateStatusIconFlags
	ldmia sp!, {r4, r5, r6, pc}
	.align 2, 0
_0230624C: .word 0x00000C9E
_02306250: .word 0x00000C9C
_02306254: .word 0x00000C9D

	arm_func_start EndFrozenClassStatus
EndFrozenClassStatus: ; 0x02306258
	stmdb sp!, {r4, r5, r6, r7, r8, lr}
	mov r7, r1
	mov r8, r0
	mov r0, r7
	mov r6, r2
	mov r4, #0
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
	mov r0, r4
	ldr r5, [r7, #0xb4]
	mov r1, r7
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r5, #0xc4]
	cmp r0, #8
	addls pc, pc, r0, lsl #2
	b _02306398
_023062A0: ; jump table
	b _02306398 ; case 0
	b _023062C4 ; case 1
	b _02306300 ; case 2
	b _02306338 ; case 3
	b _0230635C ; case 4
	b _0230631C ; case 5
	b _02306380 ; case 6
	b _023062E4 ; case 7
	b _02306398 ; case 8
_023062C4:
	cmp r6, #0
	beq _023062DC
	ldr r2, _023063BC ; =0x00000C9F
	mov r0, r8
	mov r1, r7
	bl LogMessageByIdWithPopupCheckUserTarget
_023062DC:
	mov r4, #1
	b _02306398
_023062E4:
	cmp r6, #0
	beq _02306398
	ldr r2, _023063C0 ; =0x00000C99
	mov r0, r8
	mov r1, r7
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02306398
_02306300:
	cmp r6, #0
	beq _02306398
	ldr r2, _023063C4 ; =0x00000C9A
	mov r0, r8
	mov r1, r7
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02306398
_0230631C:
	cmp r6, #0
	beq _02306398
	ldr r2, _023063C8 ; =0x00000C9B
	mov r0, r8
	mov r1, r7
	bl LogMessageByIdWithPopupCheckUserTarget
	b _02306398
_02306338:
	cmp r6, #0
	beq _02306350
	ldr r2, _023063CC ; =0x00000C98
	mov r0, r8
	mov r1, r7
	bl LogMessageByIdWithPopupCheckUserTarget
_02306350:
	ldr r0, [r5, #0xb4]
	bl FreeOtherWrappedMonsters
	b _02306398
_0230635C:
	cmp r6, #0
	beq _02306374
	ldr r2, _023063CC ; =0x00000C98
	mov r0, r8
	mov r1, r7
	bl LogMessageByIdWithPopupCheckUserTarget
_02306374:
	ldr r0, [r5, #0xb4]
	bl FreeOtherWrappedMonsters
	b _02306398
_02306380:
	cmp r6, #0
	beq _02306398
	ldr r2, _023063D0 ; =0x00000CBB
	mov r0, r8
	mov r1, r7
	bl LogMessageByIdWithPopupCheckUserTarget
_02306398:
	mov r1, #0
	mov r0, r7
	strb r1, [r5, #0xc4]
	bl UpdateStatusIconFlags
	cmp r4, #0
	ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
	mov r0, r7
	bl ov29_022E6798
	ldmia sp!, {r4, r5, r6, r7, r8, pc}
	.align 2, 0
_023063BC: .word 0x00000C9F
_023063C0: .word 0x00000C99
_023063C4: .word 0x00000C9A
_023063C8: .word 0x00000C9B
_023063CC: .word 0x00000C98
_023063D0: .word 0x00000CBB
	arm_func_end EndFrozenClassStatus

	arm_func_start EndCringeClassStatus
EndCringeClassStatus: ; 0x023063D4
	stmdb sp!, {r4, r5, r6, lr}
	mov r5, r1
	mov r6, r0
	mov r0, r5
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r4, r5, r6, pc}
	mov r0, #0
	ldr r4, [r5, #0xb4]
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xd0]
	cmp r0, #8
	addls pc, pc, r0, lsl #2
	b _023064C0
_02306414: ; jump table
	b _023064C0 ; case 0
	b _023064B0 ; case 1
	b _02306438 ; case 2
	b _02306474 ; case 3
	b _0230644C ; case 4
	b _02306460 ; case 5
	b _0230649C ; case 6
	b _02306488 ; case 7
	b _023064C0 ; case 8
_02306438:
	ldr r2, _023064DC ; =0x00000C97
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
	b _023064C0
_0230644C:
	ldr r2, _023064E0 ; =0x00000CA4
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
	b _023064C0
_02306460:
	ldr r2, _023064E4 ; =0x00000CA7
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
	b _023064C0
_02306474:
	ldr r2, _023064E8 ; =0x00000CBD
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
	b _023064C0
_02306488:
	ldr r2, _023064EC ; =0x00000CB7
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
	b _023064C0
_0230649C:
	mov r0, r6
	mov r1, r5
	mov r2, #0xcb0
	bl LogMessageByIdWithPopupCheckUserTarget
	b _023064C0
_023064B0:
	ldr r2, _023064F0 ; =0x00000CBC
	mov r0, r6
	mov r1, r5
	bl LogMessageByIdWithPopupCheckUserTarget
_023064C0:
	mov r1, #0
	mov r0, r5
	strb r1, [r4, #0xd0]
	bl UpdateStatusIconFlags
	mov r0, r5
	bl CalcSpeedStageWrapper
	ldmia sp!, {r4, r5, r6, pc}
	.align 2, 0
_023064DC: .word 0x00000C97
_023064E0: .word 0x00000CA4
_023064E4: .word 0x00000CA7
_023064E8: .word 0x00000CBD
_023064EC: .word 0x00000CB7
_023064F0: .word 0x00000CBC
	arm_func_end EndCringeClassStatus

	arm_func_start ov29_023064F4
ov29_023064F4: ; 0x023064F4
	stmdb sp!, {r3, r4, r5, lr}
	mov r5, r1
	mov r0, r5
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r0, #0
	ldr r4, [r5, #0xb4]
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xd5]
	cmp r0, #0x12
	addls pc, pc, r0, lsl #2
	b _02306688
_02306530: ; jump table
	b _02306688 ; case 0
	b _0230657C ; case 1
	b _0230658C ; case 2
	b _0230659C ; case 3
	b _023065AC ; case 4
	b _023065BC ; case 5
	b _023065CC ; case 6
	b _023065DC ; case 7
	b _023065EC ; case 8
	b _023065FC ; case 9
	b _023065AC ; case 10
	b _0230660C ; case 11
	b _0230661C ; case 12
	b _0230663C ; case 13
	b _0230664C ; case 14
	b _0230665C ; case 15
	b _0230666C ; case 16
	b _0230667C ; case 17
	b _02306688 ; case 18
_0230657C:
	ldr r1, _0230669C ; =0x00000C87
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_0230658C:
	ldr r1, _023066A0 ; =0x00000C8A
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_0230659C:
	ldr r1, _023066A4 ; =0x00000C88
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_023065AC:
	ldr r1, _023066A8 ; =0x00000C89
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_023065BC:
	ldr r1, _023066AC ; =0x00000C8B
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_023065CC:
	ldr r1, _023066B0 ; =0x00000C8C
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_023065DC:
	ldr r1, _023066B4 ; =0x00000CA6
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_023065EC:
	ldr r1, _023066B8 ; =0x00000CAE
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_023065FC:
	ldr r1, _023066BC ; =0x00000CB1
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_0230660C:
	ldr r1, _023066C0 ; =0x00000CB2
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_0230661C:
	ldr r1, _023066C4 ; =0x00000CB3
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	mov r0, r5
	bl ov29_022E65F4
	mov r0, r5
	bl ov29_02307CE0
	b _02306688
_0230663C:
	ldr r1, _023066C8 ; =0x00000CB4
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_0230664C:
	ldr r1, _023066CC ; =0x00000CB5
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_0230665C:
	ldr r1, _023066D0 ; =0x00000CBE
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_0230666C:
	mov r0, r5
	mov r1, #0xcc0
	bl LogMessageByIdWithPopupCheckUser
	b _02306688
_0230667C:
	ldr r1, _023066D4 ; =0x00000CC1
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
_02306688:
	mov r1, #0
	mov r0, r5
	strb r1, [r4, #0xd5]
	bl UpdateStatusIconFlags
	ldmia sp!, {r3, r4, r5, pc}
	.align 2, 0
_0230669C: .word 0x00000C87
_023066A0: .word 0x00000C8A
_023066A4: .word 0x00000C88
_023066A8: .word 0x00000C89
_023066AC: .word 0x00000C8B
_023066B0: .word 0x00000C8C
_023066B4: .word 0x00000CA6
_023066B8: .word 0x00000CAE
_023066BC: .word 0x00000CB1
_023066C0: .word 0x00000CB2
_023066C4: .word 0x00000CB3
_023066C8: .word 0x00000CB4
_023066CC: .word 0x00000CB5
_023066D0: .word 0x00000CBE
_023066D4: .word 0x00000CC1
	arm_func_end ov29_023064F4

	arm_func_start ov29_023066D8
ov29_023066D8: ; 0x023066D8
	stmdb sp!, {r4, lr}
	mov r4, r1
	mov r0, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r4, pc}
	ldr r0, [r4, #0xb4]
	ldrb r0, [r0, #0xd8]
	cmp r0, #3
	ldmneia sp!, {r4, pc}
	ldr r1, _02306724 ; =0x02353538
	mov r2, #0
	ldr r0, [r1]
	add r0, r0, #0x19000
	str r2, [r0, #0x904]
	ldr r0, [r1]
	add r0, r0, #0x19000
	str r2, [r0, #0x90c]
	ldmia sp!, {r4, pc}
	.align 2, 0
_02306724: .word 0x02353538
	arm_func_end ov29_023066D8

	arm_func_start ov29_02306728
ov29_02306728: ; 0x02306728
	stmdb sp!, {r4, r5, r6, r7, r8, lr}
	mov r7, r1
	mov r8, r0
	mov r0, r7
	mov r6, r2
	mov r5, r3
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
	mov r0, #0
	ldr r4, [r7, #0xb4]
	mov r1, r7
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xd8]
	cmp r0, #7
	addls pc, pc, r0, lsl #2
	b _02306894
_02306770: ; jump table
	b _02306894 ; case 0
	b _02306790 ; case 1
	b _023067D4 ; case 2
	b _023067AC ; case 3
	b _02306830 ; case 4
	b _02306868 ; case 5
	b _02306880 ; case 6
	b _02306894 ; case 7
_02306790:
	cmp r6, #1
	cmpne r5, #0
	beq _02306894
	ldr r1, _023068A8 ; =0x00000C95
	mov r0, r7
	bl LogMessageByIdWithPopupCheckUser
	b _02306894
_023067AC:
	cmp r6, #3
	cmpne r5, #0
	beq _023067C4
	ldr r1, _023068AC ; =0x00000C96
	mov r0, r7
	bl LogMessageByIdWithPopupCheckUser
_023067C4:
	mov r0, r8
	mov r1, r7
	bl ov29_023066D8
	b _02306894
_023067D4:
	mov r1, #0
	mov r0, r7
	strb r1, [r4, #0xd8]
	bl GetSleepAnimationId
	mov r1, r0
	mov r0, r7
	bl ov29_02304830
	ldr r1, _023068B0 ; =0x02353538
	mov r0, #0
	ldr r1, [r1]
	cmp r6, #2
	add r1, r1, #0x3000
	strb r0, [r1, #0xe38]
	beq _02306894
	mov r1, r7
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	cmp r5, #0
	beq _02306894
	ldr r1, _023068B4 ; =0x00000CA5
	mov r0, r7
	bl LogMessageByIdWithPopupCheckUser
	b _02306894
_02306830:
	mov r1, #0
	mov r0, r7
	strb r1, [r4, #0xd8]
	bl ov29_022FB984
	cmp r5, #0
	beq _02306854
	ldr r1, _023068B8 ; =0x00000CBF
	mov r0, r7
	bl LogMessageByIdWithPopupCheckUser
_02306854:
	ldr r0, _023068B0 ; =0x02353538
	mov r1, #1
	ldr r0, [r0]
	strb r1, [r0, #0xe]
	b _02306894
_02306868:
	cmp r5, #0
	beq _02306894
	ldr r1, _023068BC ; =0x00000CC2
	mov r0, r7
	bl LogMessageByIdWithPopupCheckUser
	b _02306894
_02306880:
	cmp r5, #0
	beq _02306894
	ldr r1, _023068C0 ; =0x00000CC3
	mov r0, r7
	bl LogMessageByIdWithPopupCheckUser
_02306894:
	mov r1, #0
	mov r0, r7
	strb r1, [r4, #0xd8]
	bl UpdateStatusIconFlags
	ldmia sp!, {r4, r5, r6, r7, r8, pc}
	.align 2, 0
_023068A8: .word 0x00000C95
_023068AC: .word 0x00000C96
_023068B0: .word 0x02353538
_023068B4: .word 0x00000CA5
_023068B8: .word 0x00000CBF
_023068BC: .word 0x00000CC2
_023068C0: .word 0x00000CC3
	arm_func_end ov29_02306728

	arm_func_start ov29_023068C4
ov29_023068C4: ; 0x023068C4
	stmdb sp!, {r3, r4, r5, lr}
	mov r5, r1
	mov r0, r5
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r0, #0
	ldr r4, [r5, #0xb4]
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xe0]
	cmp r0, #3
	addls pc, pc, r0, lsl #2
	b _0230692C
_02306900: ; jump table
	b _0230692C ; case 0
	b _02306910 ; case 1
	b _02306920 ; case 2
	b _0230692C ; case 3
_02306910:
	ldr r1, _02306948 ; =0x00000C94
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _0230692C
_02306920:
	ldr r1, _0230694C ; =0x00000CAF
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
_0230692C:
	mov r1, #0
	mov r0, r5
	strb r1, [r4, #0xe0]
	mov r1, #0xff
	strb r1, [r4, #0xe8]
	bl UpdateStatusIconFlags
	ldmia sp!, {r3, r4, r5, pc}
	.align 2, 0
_02306948: .word 0x00000C94
_0230694C: .word 0x00000CAF
	arm_func_end ov29_023068C4

	arm_func_start ov29_02306950
ov29_02306950: ; 0x02306950
	stmdb sp!, {r3, r4, r5, lr}
	mov r5, r1
	mov r0, r5
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r0, #0
	ldr r4, [r5, #0xb4]
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xec]
	cmp r0, #5
	addls pc, pc, r0, lsl #2
	b _023069E0
_0230698C: ; jump table
	b _023069E0 ; case 0
	b _023069A4 ; case 1
	b _023069B4 ; case 2
	b _023069C4 ; case 3
	b _023069D4 ; case 4
	b _023069E0 ; case 5
_023069A4:
	mov r0, r5
	mov r1, #0xca0
	bl LogMessageByIdWithPopupCheckUser
	b _023069E0
_023069B4:
	ldr r1, _023069F4 ; =0x00000CA1
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _023069E0
_023069C4:
	ldr r1, _023069F8 ; =0x00000CA2
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _023069E0
_023069D4:
	ldr r1, _023069FC ; =0x00000CA3
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
_023069E0:
	mov r1, #0
	mov r0, r5
	strb r1, [r4, #0xec]
	bl UpdateStatusIconFlags
	ldmia sp!, {r3, r4, r5, pc}
	.align 2, 0
_023069F4: .word 0x00000CA1
_023069F8: .word 0x00000CA2
_023069FC: .word 0x00000CA3
	arm_func_end ov29_02306950

	arm_func_start ov29_02306A00
ov29_02306A00: ; 0x02306A00
	stmdb sp!, {r4, r5, r6, r7, r8, lr}
	mov r8, r1
	mov r4, #0
	mov r0, r8
	mov r7, r2
	mov r5, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
	mov r0, r4
	ldr r6, [r8, #0xb4]
	mov r1, r8
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r6, #0xef]
	cmp r0, #5
	addls pc, pc, r0, lsl #2
	b _02306ADC
_02306A48: ; jump table
	b _02306ADC ; case 0
	b _02306A60 ; case 1
	b _02306A84 ; case 2
	b _02306A74 ; case 3
	b _02306AC4 ; case 4
	b _02306ADC ; case 5
_02306A60:
	ldr r1, _02306B18 ; =0x00000CA8
	mov r0, r8
	mov r4, #1
	bl LogMessageByIdWithPopupCheckUser
	b _02306ADC
_02306A74:
	ldr r1, _02306B1C ; =0x00000CB8
	mov r0, r8
	bl LogMessageByIdWithPopupCheckUser
	b _02306ADC
_02306A84:
	ldrsh r1, [r6, #2]
	mov r0, r8
	bl ov29_022F9408
	strh r0, [r6, #4]
	ldrsh r0, [r6, #4]
	bl GetSpriteIndex__022F7388
	strh r0, [r8, #0xa8]
	mov r0, r8
	bl GetSleepAnimationId
	mov r1, r0
	mov r0, r8
	bl ov29_02304830
	ldr r1, _02306B20 ; =0x00000CB6
	mov r0, r8
	bl LogMessageByIdWithPopupCheckUser
	b _02306ADC
_02306AC4:
	cmp r7, #0
	bne _02306AD8
	ldr r1, _02306B24 ; =0x00000CAC
	mov r0, r8
	bl LogMessageByIdWithPopupCheckUser
_02306AD8:
	mov r5, #1
_02306ADC:
	mov r1, #0
	mov r0, r8
	strb r1, [r6, #0xef]
	bl UpdateStatusIconFlags
	cmp r4, #0
	beq _02306AFC
	mov r0, #1
	bl ov29_022F62CC
_02306AFC:
	cmp r7, #0
	ldmneia sp!, {r4, r5, r6, r7, r8, pc}
	cmp r5, #0
	ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
	mov r0, r8
	bl ov29_02321104
	ldmia sp!, {r4, r5, r6, r7, r8, pc}
	.align 2, 0
_02306B18: .word 0x00000CA8
_02306B1C: .word 0x00000CB8
_02306B20: .word 0x00000CB6
_02306B24: .word 0x00000CAC
	arm_func_end ov29_02306A00

	arm_func_start ov29_02306B28
ov29_02306B28: ; 0x02306B28
	stmdb sp!, {r3, r4, r5, lr}
	mov r5, r1
	mov r0, r5
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r0, #0
	ldr r4, [r5, #0xb4]
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xf1]
	cmp r0, #5
	addls pc, pc, r0, lsl #2
	b _02306BB8
_02306B64: ; jump table
	b _02306BB8 ; case 0
	b _02306B7C ; case 1
	b _02306B8C ; case 2
	b _02306B9C ; case 3
	b _02306BAC ; case 4
	b _02306BB8 ; case 5
_02306B7C:
	ldr r1, _02306BE8 ; =0x00000CA9
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306BB8
_02306B8C:
	ldr r1, _02306BEC ; =0x00000CAA
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306BB8
_02306B9C:
	ldr r1, _02306BF0 ; =0x00000CAB
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	b _02306BB8
_02306BAC:
	ldr r1, _02306BF4 ; =0x00000CAD
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
_02306BB8:
	mov r1, #0
	mov r0, r5
	strb r1, [r4, #0xf1]
	bl UpdateStatusIconFlags
	ldrb r0, [r4, #7]
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r0, #0x31
	bl AdvanceFrame
	bl ov29_02336F4C
	bl ov29_02339CE8
	ldmia sp!, {r3, r4, r5, pc}
	.align 2, 0
_02306BE8: .word 0x00000CA9
_02306BEC: .word 0x00000CAA
_02306BF0: .word 0x00000CAB
_02306BF4: .word 0x00000CAD
	arm_func_end ov29_02306B28

	arm_func_start ov29_02306BF8
ov29_02306BF8: ; 0x02306BF8
	stmdb sp!, {r3, r4, r5, lr}
	mov r5, r1
	mov r0, r5
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r0, #0
	ldr r4, [r5, #0xb4]
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xf3]
	cmp r0, #0
	beq _02306C4C
	cmp r0, #1
	beq _02306C40
	cmp r0, #2
	b _02306C4C
_02306C40:
	ldr r1, _02306C60 ; =0x00000CB9
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
_02306C4C:
	mov r1, #0
	mov r0, r5
	strb r1, [r4, #0xf3]
	bl UpdateStatusIconFlags
	ldmia sp!, {r3, r4, r5, pc}
	.align 2, 0
_02306C60: .word 0x00000CB9
	arm_func_end ov29_02306BF8

	arm_func_start ov29_02306C64
ov29_02306C64: ; 0x02306C64
	stmdb sp!, {r3, r4, r5, lr}
	mov r5, r1
	mov r0, r5
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r0, #0
	ldr r4, [r5, #0xb4]
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r4, #0xf5]
	cmp r0, #0
	beq _02306CB8
	arm_func_end ov29_02306C64

	arm_func_start ov29_02306C9C
ov29_02306C9C: ; 0x02306C9C
	cmp r0, #1
	beq _02306CAC
	cmp r0, #2
	b _02306CB8
_02306CAC:
	ldr r1, _02306CCC ; =0x00000CC4
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
_02306CB8:
	mov r1, #0
	mov r0, r5
	strb r1, [r4, #0xf5]
	bl UpdateStatusIconFlags
	ldmia sp!, {r3, r4, r5, pc}
	.align 2, 0
_02306CCC: .word 0x00000CC4
	arm_func_end ov29_02306C9C

	arm_func_start ov29_02306CD0
ov29_02306CD0: ; 0x02306CD0
	stmdb sp!, {r4, r5, r6, lr}
	mov r6, r1
	mov r0, r6
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r4, r5, r6, pc}
	mov r4, #0
	ldr r5, [r6, #0xb4]
	mov r0, r4
	mov r1, r6
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r5, #0xf7]
	cmp r0, #0
	beq _02306D2C
	cmp r0, #1
	beq _02306D1C
	cmp r0, #2
	b _02306D2C
_02306D1C:
	ldr r1, _02306D50 ; =0x00000CC5
	mov r0, r6
	bl LogMessageByIdWithPopupCheckUser
	mov r4, #1
_02306D2C:
	mov r1, #0
	mov r0, r6
	strb r1, [r5, #0xf7]
	bl UpdateStatusIconFlags
	cmp r4, #0
	ldmeqia sp!, {r4, r5, r6, pc}
	mov r0, r6
	bl ov29_02321134
	ldmia sp!, {r4, r5, r6, pc}
	.align 2, 0
_02306D50: .word 0x00000CC5
	arm_func_end ov29_02306CD0

	arm_func_start ov29_02306D54
ov29_02306D54: ; 0x02306D54
	stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
	mov r8, #0
	ldr r4, _02306DC8 ; =0x02353538
	mov sb, r0
	mov r5, r8
	mov r6, #1
	mov r7, r8
_02306D70:
	ldr r0, [r4]
	add r0, r0, r8, lsl #2
	add r0, r0, #0x12000
	ldr r1, [r0, #0xb78]
	cmp r1, #0
	moveq r0, r7
	beq _02306DA0
	ldr r0, [r1]
	cmp r0, #1
	moveq r0, r6
	movne r0, r5
	and r0, r0, #0xff
_02306DA0:
	cmp r0, #0
	beq _02306DB0
	mov r0, sb
	bl ov29_02306CD0
_02306DB0:
	add r0, r8, #1
	mov r0, r0, lsl #0x10
	mov r8, r0, asr #0x10
	cmp r8, #0x14
	blt _02306D70
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
	.align 2, 0
_02306DC8: .word 0x02353538
	arm_func_end ov29_02306D54

	arm_func_start ov29_02306DCC
ov29_02306DCC: ; 0x02306DCC
	stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
	sub sp, sp, #4
	mov r8, r1
	mov r4, #0
	mov sb, r0
	mov r0, r8
	mov sl, r4
	mov r5, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	mov r0, r4
	beq _02306EF8
	mov r1, sb
	mov r2, r0
	ldr r6, [sb, #0xb4]
	ldr r7, [r8, #0xb4]
	bl SubstitutePlaceholderStringTags
	mov r1, r8
	mov r0, #1
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r6, #0xbd]
	cmp r0, #0
	moveq r0, r4
	beq _02306EF8
	cmp r0, #6
	addls pc, pc, r0, lsl #2
	b _02306E9C
_02306E3C: ; jump table
	b _02306E9C ; case 0
	b _02306E58 ; case 1
	b _02306E9C ; case 2
	b _02306E58 ; case 3
	b _02306E58 ; case 4
	b _02306E7C ; case 5
	b _02306E9C ; case 6
_02306E58:
	mov r2, #1
	mov r0, sb
	mov r1, r8
	mov r3, r2
	str r4, [sp]
	bl ov29_02311C28
	mov sl, r0
	mov r4, #1
	b _02306E9C
_02306E7C:
	mov r2, r4
	mov r0, sb
	mov r1, r8
	mov r3, r2
	str r2, [sp]
	bl ov29_02311C28
	mov sl, r0
	mov r4, #1
_02306E9C:
	cmp sl, #0
	beq _02306EBC
	ldrb r1, [r6, #0xbd]
	orr r0, r5, #0x11
	and r5, r0, #0xff
	strb r1, [r7, #0xbd]
	ldrb r0, [r6, #0xbe]
	strb r0, [r7, #0xbe]
_02306EBC:
	cmp r4, #0
	orrne r1, r5, #1
	movne r0, #0
	strneb r0, [r6, #0xbd]
	andne r5, r1, #0xff
	cmp r4, #0
	beq _02306EE4
	mov r0, sb
	mov r1, #0x378
	bl ov29_02304A48
_02306EE4:
	mov r0, sb
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
	mov r0, r5
_02306EF8:
	add sp, sp, #4
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
	arm_func_end ov29_02306DCC

	arm_func_start ov29_02306F00
ov29_02306F00: ; 0x02306F00
	stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
	sub sp, sp, #4
	mov sl, #0
	mov sb, r0
	mov r8, r1
	mov r4, sl
	mov r5, sl
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, sl
	beq _02307070
	mov r0, r8
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, sl
	beq _02307070
	ldr r6, [sb, #0xb4]
	ldr r7, [r8, #0xb4]
	ldrb r0, [r6, #0xbf]
	cmp r0, #0
	mov r0, sl
	beq _02307070
	mov r1, sb
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	mov r1, r8
	mov r0, #1
	mov r2, sl
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r6, #0xbf]
	cmp r0, #5
	addls pc, pc, r0, lsl #2
	b _0230701C
_02306F84: ; jump table
	b _0230701C ; case 0
	b _02306FFC ; case 1
	b _02306F9C ; case 2
	b _02306FBC ; case 3
	b _02306FDC ; case 4
	b _0230701C ; case 5
_02306F9C:
	mov r0, sb
	mov r1, r8
	mov r2, sl
	mov r3, #1
	bl TryInflictPoisonedStatus
	mov sl, r0
	mov r4, #1
	b _0230701C
_02306FBC:
	mov r0, sb
	mov r1, r8
	mov r2, sl
	mov r3, #1
	bl TryInflictBadlyPoisonedStatus
	mov sl, r0
	mov r4, #1
	b _0230701C
_02306FDC:
	mov r0, sb
	mov r1, r8
	mov r2, sl
	mov r3, #1
	bl TryInflictParalysisStatus
	mov sl, r0
	mov r4, #1
	b _0230701C
_02306FFC:
	mov r2, sl
	mov r4, #1
	mov r0, sb
	mov r1, r8
	mov r3, r2
	str r4, [sp]
	bl TryInflictBurnStatus
	mov sl, r0
_0230701C:
	cmp sl, #0
	beq _02307048
	add r3, r6, #0xbf
	add r2, r7, #0xbf
	mov r1, #4
_02307030:
	ldrb r0, [r3], #1
	subs r1, r1, #1
	strb r0, [r2], #1
	bne _02307030
	orr r0, r5, #0x11
	and r5, r0, #0xff
_02307048:
	cmp r4, #0
	orrne r0, r5, #1
	movne r1, #0
	andne r5, r0, #0xff
	mov r0, sb
	strneb r1, [r6, #0xbf]
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
	mov r0, r5
_02307070:
	add sp, sp, #4
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
	arm_func_end ov29_02306F00

	arm_func_start ov29_02307078
ov29_02307078: ; 0x02307078
	stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
	mov r4, #0
	mov sb, r0
	mov r8, r1
	mov sl, r4
	mov r5, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r0, r8
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	ldr r6, [sb, #0xb4]
	ldr r7, [r8, #0xb4]
	ldrb r1, [r6, #0xc4]
	cmp r1, #3
	cmpne r1, #4
	beq _023070E0
	ldrb r0, [r7, #0xc4]
	add r0, r0, #0xfd
	and r0, r0, #0xff
	cmp r0, #1
	bhi _023070E8
_023070E0:
	mov r0, #0
	ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_023070E8:
	cmp r1, #7
	addls pc, pc, r1, lsl #2
	b _0230714C
_023070F4: ; jump table
	b _0230714C ; case 0
	b _0230714C ; case 1
	b _02307114 ; case 2
	b _0230714C ; case 3
	b _0230714C ; case 4
	b _0230714C ; case 5
	b _0230714C ; case 6
	b _02307130 ; case 7
_02307114:
	mov r0, sb
	mov r1, r8
	mov r2, #1
	bl TryInflictShadowHoldStatus
	mov sl, r0
	mov r4, #1
	b _0230714C
_02307130:
	mov r0, sb
	mov r1, r8
	mov r2, #0x7e
	mov r3, #1
	bl TryInflictConstrictionStatus
	mov sl, r0
	mov r4, #1
_0230714C:
	cmp sl, #0
	beq _0230716C
	add r0, r6, #0xc4
	add r7, r7, #0xc4
	ldmia r0, {r0, r1, r2}
	orr r3, r5, #0x11
	stmia r7, {r0, r1, r2}
	and r5, r3, #0xff
_0230716C:
	cmp r4, #0
	orrne r0, r5, #1
	movne r1, #0
	andne r5, r0, #0xff
	mov r0, sb
	strneb r1, [r6, #0xc4]
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
	mov r0, r5
	ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	arm_func_end ov29_02307078

	arm_func_start ov29_02307198
ov29_02307198: ; 0x02307198
	stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
	sub sp, sp, #8
	mov r4, #0
	mov sb, r0
	mov r8, r1
	mov sl, r4
	mov r5, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	beq _02307374
	mov r0, r8
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	beq _02307374
	ldr r6, [sb, #0xb4]
	ldr r7, [r8, #0xb4]
	ldrb r0, [r6, #0xd0]
	cmp r0, #0
	mov r0, r4
	beq _02307374
	mov r1, sb
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	mov r1, r8
	mov r0, #1
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r6, #0xd0]
	cmp r0, #8
	addls pc, pc, r0, lsl #2
	b _0230731C
_0230721C: ; jump table
	b _0230731C ; case 0
	b _02307300 ; case 1
	b _02307240 ; case 2
	b _0230729C ; case 3
	b _02307260 ; case 4
	b _02307280 ; case 5
	b _023072E4 ; case 6
	b _023072C4 ; case 7
	b _0230731C ; case 8
_02307240:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl TryInflictConfusedStatus
	mov sl, r0
	mov r4, #1
	b _0230731C
_02307260:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl TryInflictCoweringStatus
	mov sl, r0
	mov r4, #1
	b _0230731C
_02307280:
	mov r0, sb
	mov r1, r8
	mov r2, #1
	bl ov29_023163A8
	mov sl, r0
	mov r4, #1
	b _0230731C
_0230729C:
	mov r3, r4
	mov r0, sb
	mov r1, r8
	str r3, [sp]
	mov r2, #1
	str r2, [sp, #4]
	bl TryInflictPausedStatus
	mov sl, r0
	mov r4, #1
	b _0230731C
_023072C4:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl TryInflictInfatuatedStatus
	mov sl, r0
	mov r4, #1
	b _0230731C
_023072E4:
	mov r0, sb
	mov r1, r8
	mov r2, #1
	bl ov29_02316720
	mov sl, r0
	mov r4, #1
	b _0230731C
_02307300:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl TryInflictCringeStatus
	mov sl, r0
	mov r4, #1
_0230731C:
	cmp sl, #0
	beq _0230733C
	ldrb r1, [r6, #0xd0]
	orr r0, r5, #0x11
	and r5, r0, #0xff
	strb r1, [r7, #0xd0]
	ldrb r0, [r6, #0xd1]
	strb r0, [r7, #0xd1]
_0230733C:
	cmp r4, #0
	movne r0, #0
	orrne r1, r5, #1
	strneb r0, [r6, #0xd0]
	mov r0, sb
	andne r5, r1, #0xff
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
	mov r0, sb
	bl CalcSpeedStageWrapper
	mov r0, r8
	bl CalcSpeedStageWrapper
	mov r0, r5
_02307374:
	add sp, sp, #8
	ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	arm_func_end ov29_02307198

	arm_func_start ov29_0230737C
ov29_0230737C: ; 0x0230737C
	stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
	sub sp, sp, #4
	mov r4, #0
	mov sb, r0
	mov r8, r1
	mov r5, r4
	mov r6, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	beq _023076B4
	mov r0, r8
	bl EntityIsValid__02305C04
	cmp r0, #0
	mov r0, r4
	beq _023076B4
	mov r1, sb
	mov r2, r0
	ldr r7, [sb, #0xb4]
	ldr sl, [r8, #0xb4]
	bl SubstitutePlaceholderStringTags
	mov r1, r8
	mov r0, #1
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r7, #0xd8]
	cmp r0, #7
	addls pc, pc, r0, lsl #2
	b _0230749C
_023073F0: ; jump table
	b _0230749C ; case 0
	b _02307410 ; case 1
	b _0230741C ; case 2
	b _0230749C ; case 3
	b _02307440 ; case 4
	b _02307460 ; case 5
	b _02307480 ; case 6
	b _0230749C ; case 7
_02307410:
	mov r5, #1
	mov r4, r5
	b _0230749C
_0230741C:
	mov r2, r4
	mov r4, #1
	mov r0, sb
	mov r1, r8
	mov r3, r2
	str r4, [sp]
	bl ov29_02315E24
	mov r5, r0
	b _0230749C
_02307440:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl ov29_0231827C
	mov r5, r0
	mov r4, #1
	b _0230749C
_02307460:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl ov29_023185A8
	mov r5, r0
	mov r4, #1
	b _0230749C
_02307480:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl ov29_0231872C
	mov r5, r0
	mov r4, #1
_0230749C:
	ldrb r0, [r7, #0xd8]
	cmp r0, #6
	addls pc, pc, r0, lsl #2
	b _023076A0
_023074AC: ; jump table
	b _023076A0 ; case 0
	b _023074C8 ; case 1
	b _02307528 ; case 2
	b _023076A0 ; case 3
	b _02307554 ; case 4
	b _023075D4 ; case 5
	b _0230763C ; case 6
_023074C8:
	cmp r5, #0
	beq _02307500
	mov r0, sb
	mov r1, r8
	bl ov29_023066D8
	add r3, r7, #0xd8
	add r2, sl, #0xd8
	mov r1, #5
_023074E8:
	ldrb r0, [r3], #1
	subs r1, r1, #1
	strb r0, [r2], #1
	bne _023074E8
	orr r0, r6, #0x11
	and r6, r0, #0xff
_02307500:
	cmp r4, #0
	beq _023076A0
	mov r0, r8
	mov r1, sb
	mov r2, #1
	mov r3, #0
	bl ov29_02306728
	orr r0, r6, #1
	and r6, r0, #0xff
	b _023076A0
_02307528:
	cmp r5, #0
	beq _023076A0
	mov r3, #0
	mov r0, sb
	mov r1, r8
	mov r2, #1
	str r3, [sp]
	bl ov29_02315E24
	orr r0, r6, #0x11
	and r6, r0, #0xff
	b _023076A0
_02307554:
	cmp r5, #0
	beq _023075AC
	mov r0, sb
	mov r1, r8
	bl ov29_023066D8
	add r3, r7, #0xd8
	add r2, sl, #0xd8
	mov r1, #5
_02307574:
	ldrb r0, [r3], #1
	subs r1, r1, #1
	strb r0, [r2], #1
	bne _02307574
	ldr r1, _023076BC ; =0x02353538
	mov r0, r8
	ldr r1, [r1]
	mov r2, #1
	strb r2, [r1, #0xe]
	bl ov29_022FB984
	mov r0, r8
	bl UpdateStatusIconFlags
	orr r0, r6, #0x11
	and r6, r0, #0xff
_023075AC:
	cmp r4, #0
	beq _023076A0
	mov r0, r8
	mov r1, sb
	mov r2, #4
	mov r3, #0
	bl ov29_02306728
	orr r0, r6, #1
	and r6, r0, #0xff
	b _023076A0
_023075D4:
	cmp r5, #0
	beq _02307614
	mov r0, sb
	mov r1, r8
	bl ov29_023066D8
	add r3, r7, #0xd8
	add r2, sl, #0xd8
	mov r1, #5
_023075F4:
	ldrb r0, [r3], #1
	subs r1, r1, #1
	strb r0, [r2], #1
	bne _023075F4
	mov r0, r8
	bl UpdateStatusIconFlags
	orr r0, r6, #0x11
	and r6, r0, #0xff
_02307614:
	cmp r4, #0
	beq _023076A0
	mov r0, r8
	mov r1, sb
	mov r2, #5
	mov r3, #0
	bl ov29_02306728
	orr r0, r6, #1
	and r6, r0, #0xff
	b _023076A0
_0230763C:
	cmp r5, #0
	beq _0230767C
	mov r0, sb
	mov r1, r8
	bl ov29_023066D8
	add r3, r7, #0xd8
	add r2, sl, #0xd8
	mov r1, #5
_0230765C:
	ldrb r0, [r3], #1
	subs r1, r1, #1
	strb r0, [r2], #1
	bne _0230765C
	mov r0, r8
	bl UpdateStatusIconFlags
	orr r0, r6, #0x11
	and r6, r0, #0xff
_0230767C:
	cmp r4, #0
	beq _023076A0
	mov r0, r8
	mov r1, sb
	mov r2, #6
	mov r3, #0
	bl ov29_02306728
	orr r0, r6, #1
	and r6, r0, #0xff
_023076A0:
	mov r0, sb
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
	mov r0, r6
_023076B4:
	add sp, sp, #4
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
	.align 2, 0
_023076BC: .word 0x02353538
	arm_func_end ov29_0230737C

	arm_func_start ov29_023076C0
ov29_023076C0: ; 0x023076C0
	stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
	mov r4, #0
	mov sb, r0
	mov r8, r1
	mov sl, r4
	mov r5, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r0, r8
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	ldr r6, [sb, #0xb4]
	ldr r7, [r8, #0xb4]
	ldrb r0, [r6, #0xe0]
	cmp r0, #0
	mov r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r1, sb
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	mov r1, r8
	mov r0, #1
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r6, #0xe0]
	cmp r0, #3
	addls pc, pc, r0, lsl #2
	b _0230776C
_02307740: ; jump table
	b _0230776C ; case 0
	b _02307750 ; case 1
	b _0230776C ; case 2
	b _0230776C ; case 3
_02307750:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl TryInflictLeechSeedStatus
	mov sl, r0
	mov r4, #1
_0230776C:
	cmp sl, #0
	beq _023077CC
	add r0, r6, #0xe0
	add r3, r7, #0xe0
	ldmia r0, {r0, r1, r2}
	stmia r3, {r0, r1, r2}
	mov r0, #0xff
	strb r0, [r7, #0xe8]
	ldr r2, _023077F8 ; =0x02353538
	mov r0, #0
_02307794:
	ldr r1, [r2]
	add r1, r1, r0, lsl #2
	add r1, r1, #0x12000
	ldr r1, [r1, #0xb78]
	cmp sb, r1
	streqb r0, [r7, #0xe8]
	ldreq r1, [sb, #0xb4]
	add r0, r0, #1
	ldreq r1, [r1, #0xb0]
	streq r1, [r7, #0xe4]
	cmp r0, #0x14
	blt _02307794
	orr r0, r5, #0x11
	and r5, r0, #0xff
_023077CC:
	cmp r4, #0
	orrne r0, r5, #1
	movne r1, #0
	andne r5, r0, #0xff
	mov r0, sb
	strneb r1, [r6, #0xe0]
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
	mov r0, r5
	ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	.align 2, 0
_023077F8: .word 0x02353538
	arm_func_end ov29_023076C0

	arm_func_start ov29_023077FC
ov29_023077FC: ; 0x023077FC
	stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
	mov r4, #0
	mov sb, r0
	mov r8, r1
	mov sl, r4
	mov r5, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r0, r8
	bl EntityIsValid__02305C04
	cmp r0, #0
	mov r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r1, sb
	mov r2, r0
	ldr r6, [sb, #0xb4]
	ldr r7, [r8, #0xb4]
	bl SubstitutePlaceholderStringTags
	mov r1, r8
	mov r0, #1
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r6, #0xec]
	cmp r0, #5
	addls pc, pc, r0, lsl #2
	b _023078A0
_0230786C: ; jump table
	b _023078A0 ; case 0
	b _023078A0 ; case 1
	b _02307884 ; case 2
	b _023078A0 ; case 3
	b _023078A0 ; case 4
	b _023078A0 ; case 5
_02307884:
	mov r0, sb
	mov r1, r8
	mov r2, r4
	mov r3, #1
	bl ov29_02315C00
	mov sl, r0
	mov r4, #1
_023078A0:
	cmp sl, #0
	beq _023078C0
	ldrb r1, [r6, #0xec]
	orr r0, r5, #0x11
	and r5, r0, #0xff
	strb r1, [r7, #0xec]
	ldrb r0, [r6, #0xed]
	strb r0, [r7, #0xed]
_023078C0:
	cmp r4, #0
	orrne r0, r5, #1
	movne r1, #0
	andne r5, r0, #0xff
	mov r0, sb
	strneb r1, [r6, #0xec]
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
	mov r0, r5
	ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	arm_func_end ov29_023077FC

	arm_func_start ov29_023078EC
ov29_023078EC: ; 0x023078EC
	stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
	mov r4, #0
	mov sb, r0
	mov r8, r1
	mov sl, r4
	mov r5, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r0, r8
	bl EntityIsValid__02305C04
	cmp r0, #0
	mov r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r1, sb
	mov r2, r0
	ldr r6, [sb, #0xb4]
	ldr r7, [r8, #0xb4]
	bl SubstitutePlaceholderStringTags
	mov r1, r8
	mov r0, #1
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r6, #0xf1]
	cmp r0, #5
	addls pc, pc, r0, lsl #2
	b _023079C4
_0230795C: ; jump table
	b _023079C4 ; case 0
	b _02307974 ; case 1
	b _02307994 ; case 2
	b _023079C4 ; case 3
	b _023079B0 ; case 4
	b _023079C4 ; case 5
_02307974:
	mov r0, sb
	mov r1, r8
	mov r2, #1
	mov r3, r4
	bl ov29_023176CC
	mov sl, r0
	mov r4, #1
	b _023079C4
_02307994:
	mov r0, sb
	mov r1, r8
	mov r2, #1
	bl ov29_02317844
	mov sl, r0
	mov r4, #1
	b _023079C4
_023079B0:
	mov r0, sb
	mov r1, r8
	bl ov29_02317AF4
	mov sl, r0
	mov r4, #1
_023079C4:
	cmp sl, #0
	beq _023079E4
	ldrb r1, [r6, #0xf1]
	orr r0, r5, #0x11
	and r5, r0, #0xff
	strb r1, [r7, #0xf1]
	ldrb r0, [r6, #0xf2]
	strb r0, [r7, #0xf2]
_023079E4:
	cmp r4, #0
	orrne r0, r5, #1
	movne r1, #0
	andne r5, r0, #0xff
	mov r0, sb
	strneb r1, [r6, #0xf1]
	bl UpdateStatusIconFlags
	mov r0, r8
	bl UpdateStatusIconFlags
	ldrb r0, [r6, #7]
	cmp r0, #0
	beq _02307A24
	mov r0, #0x31
	bl AdvanceFrame
	bl ov29_02336F4C
	bl ov29_02339CE8
_02307A24:
	mov r0, r5
	ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	arm_func_end ov29_023078EC

	arm_func_start ov29_02307A2C
ov29_02307A2C: ; 0x02307A2C
	stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
	mov r4, #0
	mov sl, r0
	mov sb, r1
	mov r5, r4
	mov r6, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r0, sb
	bl EntityIsValid__02305C04
	cmp r0, #0
	mov r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r1, sl
	mov r2, r0
	ldr r7, [sl, #0xb4]
	ldr r8, [sb, #0xb4]
	bl SubstitutePlaceholderStringTags
	mov r1, sb
	mov r0, #1
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r7, #0xf3]
	cmp r0, #0
	beq _02307AC0
	cmp r0, #1
	beq _02307AA8
	cmp r0, #2
	b _02307AC0
_02307AA8:
	mov r0, sl
	mov r1, sb
	mov r2, #1
	bl ov29_02317124
	mov r5, r0
	mov r4, #1
_02307AC0:
	cmp r5, #0
	beq _02307AE0
	ldrb r1, [r7, #0xf3]
	orr r0, r6, #0x11
	and r6, r0, #0xff
	strb r1, [r8, #0xf3]
	ldrb r0, [r7, #0xf4]
	strb r0, [r8, #0xf4]
_02307AE0:
	cmp r4, #0
	orrne r0, r6, #1
	movne r1, #0
	andne r6, r0, #0xff
	mov r0, sl
	strneb r1, [r7, #0xf3]
	bl UpdateStatusIconFlags
	mov r0, sb
	bl UpdateStatusIconFlags
	mov r0, r6
	ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	arm_func_end ov29_02307A2C

	arm_func_start ov29_02307B0C
ov29_02307B0C: ; 0x02307B0C
	stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
	mov r4, #0
	mov sl, r0
	mov sb, r1
	mov r5, r4
	mov r6, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	moveq r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r0, sb
	bl EntityIsValid__02305C04
	cmp r0, #0
	mov r0, r4
	ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	mov r1, sl
	mov r2, r0
	ldr r7, [sl, #0xb4]
	ldr r8, [sb, #0xb4]
	bl SubstitutePlaceholderStringTags
	mov r1, sb
	mov r0, #1
	mov r2, r4
	bl SubstitutePlaceholderStringTags
	ldrb r0, [r7, #0xf5]
	cmp r0, #1
	bne _02307B90
	mov r0, sl
	mov r1, sb
	mov r2, #1
	bl ov29_02318850
	mov r5, r0
	mov r4, #1
_02307B90:
	cmp r5, #0
	beq _02307BB0
	ldrb r1, [r7, #0xf5]
	orr r0, r6, #0x11
	and r6, r0, #0xff
	strb r1, [r8, #0xf5]
	ldrb r0, [r7, #0xf6]
	strb r0, [r8, #0xf6]
_02307BB0:
	cmp r4, #0
	orrne r0, r6, #1
	movne r1, #0
	andne r6, r0, #0xff
	mov r0, sl
	strneb r1, [r7, #0xf5]
	bl UpdateStatusIconFlags
	mov r0, sb
	bl UpdateStatusIconFlags
	mov r0, r6
	ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
	arm_func_end ov29_02307B0C

	arm_func_start ov29_02307BDC
ov29_02307BDC: ; 0x02307BDC
	stmdb sp!, {r3, r4, r5, r6, lr}
	sub sp, sp, #4
	mov r5, r1
	ldr r4, [r5, #0xb4]
	mov r6, r0
	ldrb r2, [r4, #0xc4]
	mov r3, #0
	cmp r2, #6
	bne _02307C0C
	mov r2, #1
	bl EndFrozenClassStatus
	mov r3, #1
_02307C0C:
	ldrb r0, [r4, #0xbd]
	cmp r0, #1
	ldreqb r0, [r4, #0xbe]
	cmpeq r0, #0x7f
	bne _02307C3C
	mov r3, #1
	mov r0, r6
	mov r1, r5
	mov r2, #0
	str r3, [sp]
	bl ov29_02305FDC
	mov r3, #1
_02307C3C:
	mov r0, r3
	add sp, sp, #4
	ldmia sp!, {r3, r4, r5, r6, pc}
	arm_func_end ov29_02307BDC

	arm_func_start ov29_02307C48
ov29_02307C48: ; 0x02307C48
	stmdb sp!, {r4, lr}
	mov r4, r0
	ldr ip, [r4, #0xb4]
	mov r3, #0
	mov r1, #1
	strb r3, [ip, #0xbd]
	mov r2, r1
	strb r3, [ip, #0xbe]
	bl ov29_022FA1D8
	mov r0, r4
	bl UpdateStatusIconFlags
	ldmia sp!, {r4, pc}
	arm_func_end ov29_02307C48

	arm_func_start ov29_02307C78
ov29_02307C78: ; 0x02307C78
	stmdb sp!, {r3, r4, r5, lr}
	mov r4, r1
	mov r5, r0
	mov r0, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	ldr r3, [r4, #0xb4]
	ldrb r0, [r3, #0xc4]
	cmp r0, #1
	ldmneia sp!, {r3, r4, r5, pc}
	mov r0, #0
	strb r0, [r3, #0xc4]
	strb r0, [r3, #0xcc]
	mov r1, r4
	mov r2, r0
	strb r0, [r3, #0xcd]
	bl SubstitutePlaceholderStringTags
	ldr r2, _02307CDC ; =0x00000C9F
	mov r0, r5
	mov r1, r4
	bl LogMessageByIdWithPopupCheckUserTarget
	mov r0, r4
	bl UpdateStatusIconFlags
	ldmia sp!, {r3, r4, r5, pc}
	.align 2, 0
_02307CDC: .word 0x00000C9F
	arm_func_end ov29_02307C78

	arm_func_start ov29_02307CE0
ov29_02307CE0: ; 0x02307CE0
	stmdb sp!, {r4, lr}
	ldr r4, [r0, #0xb4]
	mov r1, #0
	bl ov29_02307D54
	mov r1, #0
	strb r1, [r4, #0xff]
	ldrsh r0, [r4, #2]
	bl GetType
	strb r0, [r4, #0x5e]
	ldrsh r0, [r4, #2]
	mov r1, #1
	bl GetType
	strb r0, [r4, #0x5f]
	ldmia sp!, {r4, pc}
	arm_func_end ov29_02307CE0

	arm_func_start ov29_02307D18
ov29_02307D18: ; 0x02307D18
	stmdb sp!, {r3, r4, r5, lr}
	mov r4, r1
	mov r5, r0
	mov r0, r4
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	ldr r0, [r4, #0xb4]
	ldrb r0, [r0, #0xd5]
	cmp r0, #7
	ldmneia sp!, {r3, r4, r5, pc}
	mov r0, r5
	mov r1, r4
	bl ov29_023064F4
	ldmia sp!, {r3, r4, r5, pc}
	arm_func_end ov29_02307D18

	arm_func_start ov29_02307D54
ov29_02307D54: ; 0x02307D54
	stmdb sp!, {r3, r4, r5, lr}
	mov r5, r0
	mov r4, r1
	bl EntityIsValid__02305C04
	cmp r0, #0
	ldrne r2, [r5, #0xb4]
	ldrneb r0, [r2, #0xa9]
	cmpne r0, #0
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r0, #0
	strb r0, [r2, #0xa9]
	ldrb r1, [r2, #0xaa]
	cmp r4, #0
	strb r1, [r2, #0x5e]
	ldrb r1, [r2, #0xab]
	strb r1, [r2, #0x5f]
	strb r0, [r2, #0xaa]
	strb r0, [r2, #0xab]
	ldmeqia sp!, {r3, r4, r5, pc}
	mov r1, r5
	mov r2, r0
	bl SubstitutePlaceholderStringTags
	ldr r1, _02307DBC ; =0x00000CC8
	mov r0, r5
	bl LogMessageByIdWithPopupCheckUser
	ldmia sp!, {r3, r4, r5, pc}
	.align 2, 0
_02307DBC: .word 0x00000CC8
	arm_func_end ov29_02307D54

	arm_func_start ov29_02307DC0
ov29_02307DC0: ; 0x02307DC0
	mov r1, #0
	strb r1, [r0, #0x104]
	strb r1, [r0, #0x105]
	bx lr
	arm_func_end ov29_02307DC0

	arm_func_start ov29_02307DD0
ov29_02307DD0: ; 0x02307DD0
	stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
	mov r4, #0
_02307DD8:
	ldr r0, _02307EF4 ; =0x02353538
	ldr r0, [r0]
	add r0, r0, r4, lsl #2
	add r0, r0, #0x12000
	ldr r6, [r0, #0xb38]
	mov r0, r6
	bl EntityIsValid__02307EF8
	cmp r0, #0
	beq _02307EE4
	ldr r1, [r6, #0xb4]
	ldrb r0, [r1, #0xbd]
	cmp r0, #1
	ldreqb r0, [r1, #0xbe]
	cmpeq r0, #0x7f
	bne _02307EE4
	mov r8, #0
	mov r7, r8
	mov r5, r8
	ldrb sl, [r6, #0x25]
	ldr fp, _02307EF4 ; =0x02353538
	b _02307EBC
_02307E2C:
	ldr r0, [fp]
	add r0, r0, r5, lsl #2
	add r0, r0, #0x12000
	ldr sb, [r0, #0xb28]
	mov r0, sb
	bl EntityIsValid__02307EF8
	cmp r0, #0
	beq _02307EB8
	mov r0, sb
	mov r1, #0x1f
	bl ItemIsActive__02307F1C
	cmp r0, #0
	bne _02307EB8
	ldrsh r1, [sb, #4]
	ldrsh r0, [r6, #4]
	sub r0, r1, r0
	bl Abs
	cmp r0, #1
	bgt _02307E94
	ldrsh r1, [sb, #6]
	ldrsh r0, [r6, #6]
	sub r0, r1, r0
	bl Abs
	cmp r0, #1
	movle r8, #1
	ble _02307EC4
_02307E94:
	mov r0, sb
	mov r1, #0x24
	bl ItemIsActive__02307F1C
	cmp r0, #0
	beq _02307EB8
	ldrb r0, [sb, #0x25]
	cmp sl, r0
	moveq r7, #1
	beq _02307EC4
_02307EB8:
	add r5, r5, #1
_02307EBC:
	cmp r5, #4
	blt _02307E2C
_02307EC4:
	cmp r7, #0
	bne _02307ED4
	cmp r8, #0
	movne r7, #1
_02307ED4:
	cmp r7, #0
	beq _02307EE4
	mov r0, r6
	bl ov29_02307C48
_02307EE4:
	add r4, r4, #1
	cmp r4, #0x10
	blt _02307DD8
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
	.align 2, 0
_02307EF4: .word 0x02353538
	arm_func_end ov29_02307DD0
