pmd-sky/asm/overlay_29_02305C28.s
AnonymousRandomPerson 181ed60f6e Decomped HandleCurvedProjectileThrow
Decomped by @DizzyEggg
2025-07-20 19:46:18 -04:00

2738 lines
52 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_29_02305C28.inc"
.text
arm_func_start EndNegativeStatusConditionWrapper
EndNegativeStatusConditionWrapper: ; 0x02305C28
stmdb sp!, {r3, lr}
mov ip, #0
str ip, [sp]
bl EndNegativeStatusCondition
ldmia sp!, {r3, pc}
arm_func_end EndNegativeStatusConditionWrapper
arm_func_start TransferNegativeStatusCondition
TransferNegativeStatusCondition: ; 0x02305C3C
#ifdef JAPAN
#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET -1
#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2 -4
#else
#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET 0
#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2 0
#endif
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 MonsterHasNegativeStatus
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 TransferNegativeBlinkerClassStatus
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 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET]
cmp r0, #0
beq _02305D68
mov r0, sb
mov r1, r8
mov r2, #1
bl TryInflictPerishSongStatus
cmp r0, #0
ldrneb r1, [r6, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET]
orrne r0, r5, #0x11
andne r5, r0, #0xff
orreq r0, r5, #1
andeq r5, r0, #0xff
strneb r1, [r7, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET]
mov r0, #0
strb r0, [r6, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET]
_02305D68:
ldrb r0, [r6, #0xfe]
cmp r0, #0
beq _02305DAC
mov r0, sb
mov r1, r8
mov r2, #0
mov r3, #1
bl TryInflictExposedStatus
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 SafeguardIsActive
cmp r0, #0
bne _02305E08
mov r0, sb
mov r1, r8
mov r2, #0
bl IsProtectedFromNegativeStatus
cmp r0, #0
bne _02305E08
mov r2, #0
_02305DE0:
add r0, r6, r2
ldrb r0, [r0, #0x119 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2]
add r1, r7, r2
add r2, r2, #1
strb r0, [r1, #0x119 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2]
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 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2]
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 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2
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
#ifdef JAPAN
_02305F54: .word 0x00000A0C
_02305F58: .word 0x00000A0B
_02305F5C: .word 0x00000A0A
#else
_02305F54: .word 0x00000CCC
_02305F58: .word 0x00000CCB
_02305F5C: .word 0x00000CCA
#endif
arm_func_end TransferNegativeStatusCondition
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 SubInitMonster
mov ip, #0
#ifdef JAPAN
strb ip, [r5, #0x105]
strb ip, [r5, #0xfe]
add r3, r5, #0x120
#else
strb ip, [r5, #0x106]
strb ip, [r5, #0xfe]
add r3, r5, #0x124
#endif
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 EndSleepClassStatus
EndSleepClassStatus: ; 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
#ifdef JAPAN
rsb r2, r4, #0x9d0
#else
rsb r2, r4, #0xc90
#endif
bl LogMessageByIdWithPopupCheckUserTarget
cmp r6, #0
beq _02306164
ldr r0, _02306194 ; =ov10_022C45A8
ldr r3, _02306198 ; =0x0000024E
ldrsh r1, [r0]
mov r0, r8
mov r2, #8
bl ApplyDamageAndEffectsWrapper
b _02306164
_023060A8:
mov r0, sb
mov r1, r8
#ifdef JAPAN
mov r2, #0x9d0
#else
mov r2, #0xc90
#endif
mov r4, #1
bl LogMessageByIdWithPopupCheckUserTarget
ldrb r0, [sp, #0x20]
cmp r0, #0
beq _023060E8
ldr r0, _0230619C ; =ov10_022C45A0
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 EndNegativeStatusCondition
b _02306164
_02306118:
cmp r7, #0
beq _02306154
ldr r1, _023061A0 ; =ov10_022C4868
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
#ifdef JAPAN
#define END_SLEEP_CLASS_STATUS_OFFSET -0x2C0
#else
#define END_SLEEP_CLASS_STATUS_OFFSET 0
#endif
_0230618C: .word 0x00000C8D + END_SLEEP_CLASS_STATUS_OFFSET
_02306190: .word 0x00000C8E + END_SLEEP_CLASS_STATUS_OFFSET
_02306194: .word ov10_022C45A8
_02306198: .word 0x0000024E
_0230619C: .word ov10_022C45A0
_023061A0: .word ov10_022C4868
_023061A4: .word 0x00000C91 + END_SLEEP_CLASS_STATUS_OFFSET
arm_func_end EndSleepClassStatus
arm_func_start EndBurnClassStatus
EndBurnClassStatus: ; 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]
mov r1, r5
mov r2, r0
bl SubstitutePlaceholderStringTags
ldrb r0, [r4, #0xbf]
cmp r0, #5
addls pc, pc, r0, lsl #2
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
_02306238:
mov r1, #0
mov r0, r5
strb r1, [r4, #0xbf]
bl UpdateStatusIconFlags
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
#ifdef JAPAN
_0230624C: .word 0x000009DE
_02306250: .word 0x000009DC
_02306254: .word 0x000009DD
#else
_0230624C: .word 0x00000C9E
_02306250: .word 0x00000C9C
_02306254: .word 0x00000C9D
#endif
arm_func_end EndBurnClassStatus
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
#ifdef JAPAN
b _02306300 ; case 5
#else
b _0230631C ; case 5
#endif
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
#ifndef JAPAN
_0230631C:
cmp r6, #0
beq _02306398
ldr r2, _023063C8 ; =0x00000C9B
mov r0, r8
mov r1, r7
bl LogMessageByIdWithPopupCheckUserTarget
b _02306398
#endif
_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
#ifdef JAPAN
#define END_FROZEN_CLASS_STATUS_OFFSET -0x2C0
#else
#define END_FROZEN_CLASS_STATUS_OFFSET 0
#endif
_023063BC: .word 0x00000C9F + END_FROZEN_CLASS_STATUS_OFFSET
_023063C0: .word 0x00000C99 + END_FROZEN_CLASS_STATUS_OFFSET
_023063C4: .word 0x00000C9A + END_FROZEN_CLASS_STATUS_OFFSET
#ifndef JAPAN
_023063C8: .word 0x00000C9B
#endif
_023063CC: .word 0x00000C98 + END_FROZEN_CLASS_STATUS_OFFSET
_023063D0: .word 0x00000CBB + END_FROZEN_CLASS_STATUS_OFFSET
arm_func_end EndFrozenClassStatus
arm_func_start EndCringeClassStatus
EndCringeClassStatus: ; 0x023063D4
#ifdef JAPAN
#define END_CRINGE_CLASS_STATUS_OFFSET -0x2C0
#else
#define END_CRINGE_CLASS_STATUS_OFFSET 0
#endif
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 + END_CRINGE_CLASS_STATUS_OFFSET
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 + END_CRINGE_CLASS_STATUS_OFFSET
_023064E0: .word 0x00000CA4 + END_CRINGE_CLASS_STATUS_OFFSET
_023064E4: .word 0x00000CA7 + END_CRINGE_CLASS_STATUS_OFFSET
_023064E8: .word 0x00000CBD + END_CRINGE_CLASS_STATUS_OFFSET
_023064EC: .word 0x00000CB7 + END_CRINGE_CLASS_STATUS_OFFSET
_023064F0: .word 0x00000CBC + END_CRINGE_CLASS_STATUS_OFFSET
arm_func_end EndCringeClassStatus
arm_func_start EndReflectClassStatus
EndReflectClassStatus: ; 0x023064F4
#ifdef JAPAN
#define END_REFLECT_CLASS_STATUS_OFFSET -0x2C0
#else
#define END_REFLECT_CLASS_STATUS_OFFSET 0
#endif
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 + END_REFLECT_CLASS_STATUS_OFFSET
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 + END_REFLECT_CLASS_STATUS_OFFSET
_023066A0: .word 0x00000C8A + END_REFLECT_CLASS_STATUS_OFFSET
_023066A4: .word 0x00000C88 + END_REFLECT_CLASS_STATUS_OFFSET
_023066A8: .word 0x00000C89 + END_REFLECT_CLASS_STATUS_OFFSET
_023066AC: .word 0x00000C8B + END_REFLECT_CLASS_STATUS_OFFSET
_023066B0: .word 0x00000C8C + END_REFLECT_CLASS_STATUS_OFFSET
_023066B4: .word 0x00000CA6 + END_REFLECT_CLASS_STATUS_OFFSET
_023066B8: .word 0x00000CAE + END_REFLECT_CLASS_STATUS_OFFSET
_023066BC: .word 0x00000CB1 + END_REFLECT_CLASS_STATUS_OFFSET
_023066C0: .word 0x00000CB2 + END_REFLECT_CLASS_STATUS_OFFSET
_023066C4: .word 0x00000CB3 + END_REFLECT_CLASS_STATUS_OFFSET
_023066C8: .word 0x00000CB4 + END_REFLECT_CLASS_STATUS_OFFSET
_023066CC: .word 0x00000CB5 + END_REFLECT_CLASS_STATUS_OFFSET
_023066D0: .word 0x00000CBE + END_REFLECT_CLASS_STATUS_OFFSET
_023066D4: .word 0x00000CC1 + END_REFLECT_CLASS_STATUS_OFFSET
arm_func_end EndReflectClassStatus
arm_func_start TryRemoveSnatchedMonsterFromDungeonStruct
TryRemoveSnatchedMonsterFromDungeonStruct: ; 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 ; =DUNGEON_PTR
mov r2, #0
ldr r0, [r1]
add r0, r0, #0x19000
#ifdef JAPAN
str r2, [r0, #0x860]
ldr r0, [r1]
add r0, r0, #0x19000
str r2, [r0, #0x868]
#else
str r2, [r0, #0x904]
ldr r0, [r1]
add r0, r0, #0x19000
str r2, [r0, #0x90c]
#endif
ldmia sp!, {r4, pc}
.align 2, 0
_02306724: .word DUNGEON_PTR
arm_func_end TryRemoveSnatchedMonsterFromDungeonStruct
arm_func_start EndCurseClassStatus
EndCurseClassStatus: ; 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 TryRemoveSnatchedMonsterFromDungeonStruct
b _02306894
_023067D4:
mov r1, #0
mov r0, r7
strb r1, [r4, #0xd8]
bl GetIdleAnimationId
mov r1, r0
mov r0, r7
bl ov29_02304830
ldr r1, _023068B0 ; =DUNGEON_PTR
mov r0, #0
ldr r1, [r1]
cmp r6, #2
add r1, r1, #0x3000
#ifdef JAPAN
strb r0, [r1, #0xd94]
#else
strb r0, [r1, #0xe38]
#endif
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 ; =DUNGEON_PTR
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
#ifdef JAPAN
#define END_CURSE_CLASS_OFFSET -0x2C0
#else
#define END_CURSE_CLASS_OFFSET 0
#endif
_023068A8: .word 0x00000C95 + END_CURSE_CLASS_OFFSET
_023068AC: .word 0x00000C96 + END_CURSE_CLASS_OFFSET
_023068B0: .word DUNGEON_PTR
_023068B4: .word 0x00000CA5 + END_CURSE_CLASS_OFFSET
_023068B8: .word 0x00000CBF + END_CURSE_CLASS_OFFSET
_023068BC: .word 0x00000CC2 + END_CURSE_CLASS_OFFSET
_023068C0: .word 0x00000CC3 + END_CURSE_CLASS_OFFSET
arm_func_end EndCurseClassStatus
arm_func_start EndLeechSeedClassStatus
EndLeechSeedClassStatus: ; 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
#ifdef JAPAN
_02306948: .word 0x000009D4
_0230694C: .word 0x000009EF
#else
_02306948: .word 0x00000C94
_0230694C: .word 0x00000CAF
#endif
arm_func_end EndLeechSeedClassStatus
arm_func_start EndSureShotClassStatus
EndSureShotClassStatus: ; 0x02306950
#ifdef JAPAN
#define END_SURE_SHOT_CLASS_STATUS_OFFSET -0x2C0
#else
#define END_SURE_SHOT_CLASS_STATUS_OFFSET 0
#endif
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 + END_SURE_SHOT_CLASS_STATUS_OFFSET
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 + END_SURE_SHOT_CLASS_STATUS_OFFSET
_023069F8: .word 0x00000CA2 + END_SURE_SHOT_CLASS_STATUS_OFFSET
_023069FC: .word 0x00000CA3 + END_SURE_SHOT_CLASS_STATUS_OFFSET
arm_func_end EndSureShotClassStatus
arm_func_start EndInvisibleClassStatus
EndInvisibleClassStatus: ; 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 GetMonsterApparentId
strh r0, [r6, #4]
ldrsh r0, [r6, #4]
bl DungeonGetSpriteIndex
strh r0, [r8, #0xa8]
mov r0, r8
bl GetIdleAnimationId
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 EnsureCanStandCurrentTile
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
#ifdef JAPAN
#define END_INVISIBLE_CLASS_OFFSET -0x2C0
#else
#define END_INVISIBLE_CLASS_OFFSET 0
#endif
_02306B18: .word 0x00000CA8 + END_INVISIBLE_CLASS_OFFSET
_02306B1C: .word 0x00000CB8 + END_INVISIBLE_CLASS_OFFSET
_02306B20: .word 0x00000CB6 + END_INVISIBLE_CLASS_OFFSET
_02306B24: .word 0x00000CAC + END_INVISIBLE_CLASS_OFFSET
arm_func_end EndInvisibleClassStatus
arm_func_start EndBlinkerClassStatus
EndBlinkerClassStatus: ; 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 UpdateTrapsVisibility
bl UpdateMinimap
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
#ifdef JAPAN
#define END_BLINKER_CLASS_OFFSET -0x2C0
#else
#define END_BLINKER_CLASS_OFFSET 0
#endif
_02306BE8: .word 0x00000CA9 + END_BLINKER_CLASS_OFFSET
_02306BEC: .word 0x00000CAA + END_BLINKER_CLASS_OFFSET
_02306BF0: .word 0x00000CAB + END_BLINKER_CLASS_OFFSET
_02306BF4: .word 0x00000CAD + END_BLINKER_CLASS_OFFSET
arm_func_end EndBlinkerClassStatus
arm_func_start EndMuzzledStatus
EndMuzzledStatus: ; 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
#ifdef JAPAN
_02306C60: .word 0x000009F9
#else
_02306C60: .word 0x00000CB9
#endif
arm_func_end EndMuzzledStatus
arm_func_start EndMiracleEyeStatus
EndMiracleEyeStatus: ; 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
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
#ifdef JAPAN
_02306CCC: .word 0x00000A04
#else
_02306CCC: .word 0x00000CC4
#endif
arm_func_end EndMiracleEyeStatus
arm_func_start EndMagnetRiseStatus
EndMagnetRiseStatus: ; 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
#ifdef JAPAN
_02306D50: .word 0x00000A05
#else
_02306D50: .word 0x00000CC5
#endif
arm_func_end EndMagnetRiseStatus
arm_func_start ov29_02306D54
ov29_02306D54: ; 0x02306D54
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r8, #0
ldr r4, _02306DC8 ; =DUNGEON_PTR
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
#ifdef JAPAN
ldr r1, [r0, #0xad4]
#else
ldr r1, [r0, #0xb78]
#endif
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 EndMagnetRiseStatus
_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 DUNGEON_PTR
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 TryInflictTauntStatus
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 TryInflictEncoreStatus
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 TryInflictDecoyStatus
mov r5, r0
b _0230749C
_02307440:
mov r0, sb
mov r1, r8
mov r2, r4
mov r3, #1
bl TryInflictGastroAcidStatus
mov r5, r0
mov r4, #1
b _0230749C
_02307460:
mov r0, sb
mov r1, r8
mov r2, r4
mov r3, #1
bl TryInflictHealBlockStatus
mov r5, r0
mov r4, #1
b _0230749C
_02307480:
mov r0, sb
mov r1, r8
mov r2, r4
mov r3, #1
bl TryInflictEmbargoStatus
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 TryRemoveSnatchedMonsterFromDungeonStruct
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 EndCurseClassStatus
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 TryInflictDecoyStatus
orr r0, r6, #0x11
and r6, r0, #0xff
b _023076A0
_02307554:
cmp r5, #0
beq _023075AC
mov r0, sb
mov r1, r8
bl TryRemoveSnatchedMonsterFromDungeonStruct
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 ; =DUNGEON_PTR
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 EndCurseClassStatus
orr r0, r6, #1
and r6, r0, #0xff
b _023076A0
_023075D4:
cmp r5, #0
beq _02307614
mov r0, sb
mov r1, r8
bl TryRemoveSnatchedMonsterFromDungeonStruct
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 EndCurseClassStatus
orr r0, r6, #1
and r6, r0, #0xff
b _023076A0
_0230763C:
cmp r5, #0
beq _0230767C
mov r0, sb
mov r1, r8
bl TryRemoveSnatchedMonsterFromDungeonStruct
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 EndCurseClassStatus
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 DUNGEON_PTR
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 ; =DUNGEON_PTR
mov r0, #0
_02307794:
ldr r1, [r2]
add r1, r1, r0, lsl #2
add r1, r1, #0x12000
#ifdef JAPAN
ldr r1, [r1, #0xad4]
#else
ldr r1, [r1, #0xb78]
#endif
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 DUNGEON_PTR
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 TryInflictWhifferStatus
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 TransferNegativeBlinkerClassStatus
TransferNegativeBlinkerClassStatus: ; 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 TryInflictBlinkerStatus
mov sl, r0
mov r4, #1
b _023079C4
_02307994:
mov r0, sb
mov r1, r8
mov r2, #1
bl TryInflictCrossEyedStatus
mov sl, r0
mov r4, #1
b _023079C4
_023079B0:
mov r0, sb
mov r1, r8
bl TryInflictDropeyeStatus
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 UpdateTrapsVisibility
bl UpdateMinimap
_02307A24:
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end TransferNegativeBlinkerClassStatus
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 TryInflictMuzzledStatus
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 TryInflictMiracleEyeStatus
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 TryEndPetrifiedOrSleepStatus
TryEndPetrifiedOrSleepStatus: ; 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 EndSleepClassStatus
mov r3, #1
_02307C3C:
mov r0, r3
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end TryEndPetrifiedOrSleepStatus
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 EndFrozenStatus
EndFrozenStatus: ; 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
#ifdef JAPAN
_02307CDC: .word 0x000009DF
#else
_02307CDC: .word 0x00000C9F
#endif
arm_func_end EndFrozenStatus
arm_func_start ov29_02307CE0
ov29_02307CE0: ; 0x02307CE0
stmdb sp!, {r4, lr}
ldr r4, [r0, #0xb4]
mov r1, #0
bl TryRestoreRoostTyping
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 EndProtectStatus
EndProtectStatus: ; 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 EndReflectClassStatus
ldmia sp!, {r3, r4, r5, pc}
arm_func_end EndProtectStatus
arm_func_start TryRestoreRoostTyping
TryRestoreRoostTyping: ; 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
#ifdef JAPAN
_02307DBC: .word 0x00000A08
#else
_02307DBC: .word 0x00000CC8
#endif
arm_func_end TryRestoreRoostTyping
arm_func_start ov29_02307DC0
ov29_02307DC0: ; 0x02307DC0
#ifdef JAPAN
ldr r1, [r0, #0xb4]
mov r0, #0
strb r0, [r1, #0x103]
strb r0, [r1, #0x104]
#else
mov r1, #0
strb r1, [r0, #0x104]
strb r1, [r0, #0x105]
#endif
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 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, r4, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r6, [r0, #0xa94]
#else
ldr r6, [r0, #0xb38]
#endif
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 ; =DUNGEON_PTR
b _02307EBC
_02307E2C:
ldr r0, [fp]
add r0, r0, r5, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr sb, [r0, #0xa84]
#else
ldr sb, [r0, #0xb28]
#endif
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 DUNGEON_PTR
arm_func_end ov29_02307DD0