pokeheartgold/asm/overlay_12_0224E4FC.s
Adrienn Tindall 10ee7dc93f Some more documentation
ov12_02250370 BattleSystem_SetExperienceEarnFlags
ov12_02250360 BattleSystem_ClearExperienceEarnFlags
ov12_02255844 BattleSystem_GetHeldItemDamageBoost
ov12_0226340C BattleController_SetMoveEffect
2023-06-05 06:40:11 -05:00

21805 lines
388 KiB
ArmAsm

#include "constants/pokemon.h"
#include "constants/sndseq.h"
.include "asm/macros.inc"
.include "overlay_12_0224E4FC.inc"
.include "global.inc"
.text
thumb_func_start BattleSystem_GetBattleMon
BattleSystem_GetBattleMon: ; 0x0224E4FC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r7, r1, #0
str r2, [sp, #4]
add r1, r2, #0
add r2, r3, #0
str r0, [sp]
bl BattleSystem_GetPartyMon
ldr r1, [sp, #4]
mov r2, #0xc0
add r5, r1, #0
mov r1, #0xb5
lsl r1, r1, #6
add r1, r7, r1
mul r5, r2
str r1, [sp, #0x18]
mov r1, #5
mov r2, #0
add r4, r0, #0
bl GetMonData
ldr r1, [sp, #0x18]
mov r2, #0
strh r0, [r1, r5]
add r0, r4, #0
mov r1, #0xa5
bl GetMonData
ldr r1, _0224E8B4 ; =0x00002D42
add r2, r7, r5
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa6
mov r2, #0
bl GetMonData
ldr r1, _0224E8B8 ; =0x00002D44
add r2, r7, r5
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa7
mov r2, #0
bl GetMonData
ldr r1, _0224E8BC ; =0x00002D46
add r2, r7, r5
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa8
mov r2, #0
bl GetMonData
ldr r1, _0224E8C0 ; =0x00002D48
add r2, r7, r5
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa9
mov r2, #0
bl GetMonData
add r1, r7, r5
ldr r2, _0224E8C4 ; =0x00002D4A
str r1, [sp, #0xc]
strh r0, [r1, r2]
add r0, r1, #0
mov r6, #0
str r0, [sp, #0x14]
str r0, [sp, #0x10]
_0224E586:
add r1, r6, #0
add r0, r4, #0
add r1, #0x36
mov r2, #0
bl GetMonData
ldr r2, [sp, #0x14]
ldr r1, _0224E8C8 ; =0x00002D4C
strh r0, [r2, r1]
add r1, r6, #0
add r0, r4, #0
add r1, #0x3a
mov r2, #0
bl GetMonData
ldr r2, [sp, #0x10]
ldr r1, _0224E8CC ; =0x00002D6C
strb r0, [r2, r1]
add r1, r6, #0
add r0, r4, #0
add r1, #0x3e
mov r2, #0
bl GetMonData
ldr r2, [sp, #0x10]
ldr r1, _0224E8D0 ; =0x00002D70
add r6, r6, #1
strb r0, [r2, r1]
ldr r0, [sp, #0x14]
add r0, r0, #2
str r0, [sp, #0x14]
add r0, r2, #0
add r0, r0, #1
str r0, [sp, #0x10]
cmp r6, #4
blt _0224E586
add r0, r1, #0
sub r0, #0x1c
add r6, r7, r0
add r0, r4, #0
mov r1, #0x46
mov r2, #0
bl GetMonData
ldr r1, [r6, r5]
mov r2, #0x1f
bic r1, r2
mov r2, #0x1f
and r0, r2
orr r0, r1
str r0, [r6, r5]
add r0, r4, #0
mov r1, #0x47
mov r2, #0
bl GetMonData
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _0224E8D4 ; =0xFFFFFC1F
lsr r0, r0, #0x16
and r1, r2
orr r0, r1
str r0, [r6, r5]
add r0, r4, #0
mov r1, #0x48
mov r2, #0
bl GetMonData
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _0224E8D8 ; =0xFFFF83FF
lsr r0, r0, #0x11
and r1, r2
orr r0, r1
str r0, [r6, r5]
add r0, r4, #0
mov r1, #0x49
mov r2, #0
bl GetMonData
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _0224E8DC ; =0xFFF07FFF
lsr r0, r0, #0xc
and r1, r2
orr r0, r1
str r0, [r6, r5]
add r0, r4, #0
mov r1, #0x4a
mov r2, #0
bl GetMonData
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _0224E8E0 ; =0xFE0FFFFF
lsr r0, r0, #7
and r1, r2
orr r0, r1
str r0, [r6, r5]
add r0, r4, #0
mov r1, #0x4b
mov r2, #0
bl GetMonData
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _0224E8E4 ; =0xC1FFFFFF
lsr r0, r0, #2
and r1, r2
orr r0, r1
str r0, [r6, r5]
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
bl GetMonData
ldr r2, [r6, r5]
ldr r1, _0224E8E8 ; =0xBFFFFFFF
lsl r0, r0, #0x1f
and r1, r2
lsr r0, r0, #1
orr r0, r1
str r0, [r6, r5]
add r0, r4, #0
mov r1, #0x4d
mov r2, #0
bl GetMonData
ldr r2, [r6, r5]
ldr r1, _0224E8EC ; =0x7FFFFFFF
lsl r0, r0, #0x1f
and r1, r2
orr r0, r1
str r0, [r6, r5]
ldr r0, _0224E8F0 ; =0x0000213C
ldr r1, [r7, r0]
mov r0, #1
lsl r0, r0, #8
tst r0, r1
bne _0224E6B2
ldr r0, _0224E8F4 ; =0x00002D58
mov r2, #0
mov r1, #6
_0224E6A4:
ldr r3, [sp, #0xc]
add r2, r2, #1
strb r1, [r3, r0]
add r3, r3, #1
str r3, [sp, #0xc]
cmp r2, #8
blt _0224E6A4
_0224E6B2:
ldr r0, _0224E8F8 ; =0x00002D68
mov r1, #1
add r0, r7, r0
ldr r2, [r0, r5]
bic r2, r1
str r2, [r0, r5]
ldr r2, [r0, r5]
mov r1, #2
bic r2, r1
str r2, [r0, r5]
ldr r2, [r0, r5]
mov r1, #4
bic r2, r1
str r2, [r0, r5]
ldr r2, [r0, r5]
mov r1, #8
bic r2, r1
str r2, [r0, r5]
ldr r2, [r0, r5]
mov r1, #0x10
bic r2, r1
str r2, [r0, r5]
ldr r2, [r0, r5]
mov r1, #0x20
bic r2, r1
str r2, [r0, r5]
ldr r2, [r0, r5]
mov r1, #0x40
bic r2, r1
str r2, [r0, r5]
ldr r2, [r0, r5]
mov r1, #0x80
bic r2, r1
str r2, [r0, r5]
ldr r2, [r0, r5]
ldr r1, _0224E8FC ; =0xFFFFFEFF
and r1, r2
str r1, [r0, r5]
ldr r2, [r0, r5]
ldr r1, _0224E900 ; =0xFFFFFDFF
and r1, r2
str r1, [r0, r5]
ldr r2, [r0, r5]
ldr r1, _0224E904 ; =0xFFFFFBFF
and r1, r2
str r1, [r0, r5]
add r0, r4, #0
mov r1, #0xb1
mov r2, #0
bl GetMonData
ldr r1, _0224E908 ; =0x00002D64
add r2, r7, r5
strb r0, [r2, r1]
add r0, r4, #0
mov r1, #0xb2
mov r2, #0
bl GetMonData
ldr r1, _0224E90C ; =0x00002D65
add r2, r7, r5
strb r0, [r2, r1]
add r1, #0x59
add r0, r7, r1
str r0, [sp, #0x1c]
add r0, r4, #0
bl GetMonGender
ldr r1, [sp, #0x1c]
mov r2, #0xf
ldrb r1, [r1, r5]
bic r1, r2
mov r2, #0xf
and r0, r2
orr r1, r0
ldr r0, [sp, #0x1c]
strb r1, [r0, r5]
ldr r0, _0224E910 ; =0x00002D66
add r0, r7, r0
str r0, [sp, #0x20]
add r0, r4, #0
bl MonIsShiny
ldr r1, [sp, #0x20]
lsl r0, r0, #0x1f
ldrb r1, [r1, r5]
mov r2, #0x20
lsr r0, r0, #0x1a
bic r1, r2
orr r1, r0
ldr r0, [sp, #0x20]
strb r1, [r0, r5]
ldr r0, [sp]
bl BattleSys_GetBattleType
mov r1, #0x22
lsl r1, r1, #4
tst r0, r1
beq _0224E792
ldr r2, _0224E914 ; =0x00002D67
mov r0, #0
add r3, r7, r5
add r1, r2, #0
strb r0, [r3, r2]
add r2, #0x51
add r1, #0x45
add r2, r7, r2
str r0, [r3, r1]
add r1, r2, r5
str r1, [sp, #8]
strh r0, [r2, r5]
b _0224E7C6
_0224E792:
add r0, r4, #0
mov r1, #0xa
mov r2, #0
bl GetMonData
ldr r1, _0224E914 ; =0x00002D67
add r2, r7, r5
strb r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
bl GetMonData
ldr r1, _0224E918 ; =0x00002DAC
add r2, r7, r5
str r0, [r2, r1]
add r1, #0xc
add r6, r7, r1
add r0, r6, r5
str r0, [sp, #8]
add r0, r4, #0
mov r1, #6
mov r2, #0
bl GetMonData
strh r0, [r6, r5]
_0224E7C6:
ldr r0, [sp]
bl BattleSys_GetBattleType
mov r1, #0x22
lsl r1, r1, #4
tst r0, r1
beq _0224E7EE
ldr r0, [sp]
ldr r1, [sp, #4]
bl BattleSys_GetFieldSide
cmp r0, #0
bne _0224E7EE
ldr r0, [sp, #0x20]
ldrb r1, [r0, r5]
mov r0, #0x1f
bic r1, r0
ldr r0, [sp, #0x20]
strb r1, [r0, r5]
b _0224E80E
_0224E7EE:
add r0, r4, #0
mov r1, #0x70
mov r2, #0
bl GetMonData
ldr r1, [sp, #0x20]
mov r2, #0x1f
ldrb r1, [r1, r5]
lsl r0, r0, #0x18
bic r1, r2
lsr r2, r0, #0x18
mov r0, #0x1f
and r0, r2
orr r1, r0
ldr r0, [sp, #0x20]
strb r1, [r0, r5]
_0224E80E:
ldr r0, [sp, #4]
mov r1, #0xc0
add r6, r0, #0
mul r6, r1
add r0, r4, #0
mov r1, #0xa1
mov r2, #0
bl GetMonData
ldr r1, _0224E91C ; =0x00002D74
add r2, r7, r6
strb r0, [r2, r1]
add r0, r4, #0
mov r1, #9
mov r2, #0
bl GetMonData
ldr r1, _0224E920 ; =0x00002D75
add r2, r7, r6
strb r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa3
mov r2, #0
bl GetMonData
ldr r1, _0224E924 ; =0x00002D8C
add r2, r7, r6
str r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa4
mov r2, #0
bl GetMonData
ldr r1, _0224E928 ; =0x00002D90
add r2, r7, r6
str r0, [r2, r1]
add r0, r4, #0
mov r1, #8
mov r2, #0
bl GetMonData
ldr r1, _0224E92C ; =0x00002DA4
add r2, r7, r6
str r0, [r2, r1]
mov r1, #0
add r0, r4, #0
add r2, r1, #0
bl GetMonData
ldr r1, _0224E930 ; =0x00002DA8
add r2, r7, r6
str r0, [r2, r1]
add r0, r4, #0
mov r1, #7
mov r2, #0
bl GetMonData
ldr r1, _0224E934 ; =0x00002DB4
add r2, r7, r6
str r0, [r2, r1]
add r0, r4, #0
mov r1, #0x9d
mov r2, #0
bl GetMonData
ldr r1, [sp, #0x1c]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r0, r0, #0x1c
ldrb r1, [r1, r5]
mov r2, #0xf0
lsr r0, r0, #0x18
bic r1, r2
orr r1, r0
ldr r0, [sp, #0x1c]
strb r1, [r0, r5]
ldr r0, [sp]
add r1, r4, #0
bl ov12_0223AA88
ldr r1, _0224E938 ; =0x00002DBF
b _0224E93C
nop
_0224E8B4: .word 0x00002D42
_0224E8B8: .word 0x00002D44
_0224E8BC: .word 0x00002D46
_0224E8C0: .word 0x00002D48
_0224E8C4: .word 0x00002D4A
_0224E8C8: .word 0x00002D4C
_0224E8CC: .word 0x00002D6C
_0224E8D0: .word 0x00002D70
_0224E8D4: .word 0xFFFFFC1F
_0224E8D8: .word 0xFFFF83FF
_0224E8DC: .word 0xFFF07FFF
_0224E8E0: .word 0xFE0FFFFF
_0224E8E4: .word 0xC1FFFFFF
_0224E8E8: .word 0xBFFFFFFF
_0224E8EC: .word 0x7FFFFFFF
_0224E8F0: .word 0x0000213C
_0224E8F4: .word 0x00002D58
_0224E8F8: .word 0x00002D68
_0224E8FC: .word 0xFFFFFEFF
_0224E900: .word 0xFFFFFDFF
_0224E904: .word 0xFFFFFBFF
_0224E908: .word 0x00002D64
_0224E90C: .word 0x00002D65
_0224E910: .word 0x00002D66
_0224E914: .word 0x00002D67
_0224E918: .word 0x00002DAC
_0224E91C: .word 0x00002D74
_0224E920: .word 0x00002D75
_0224E924: .word 0x00002D8C
_0224E928: .word 0x00002D90
_0224E92C: .word 0x00002DA4
_0224E930: .word 0x00002DA8
_0224E934: .word 0x00002DB4
_0224E938: .word 0x00002DBF
_0224E93C:
add r2, r7, r6
strb r0, [r2, r1]
ldr r0, [sp, #0x20]
ldrb r0, [r0, r5]
lsl r0, r0, #0x1b
lsr r0, r0, #0x1b
bl SetDexBanksByGiratinaForme
mov r0, #5
bl ZknData_Create
mov r1, #0
mov r2, #5
str r0, [sp, #0x24]
bl ZknData_LoadAll
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x24]
ldrh r1, [r1, r5]
bl ZknData_GetWeight
ldr r1, _0224E9F8 ; =0x00002D60
add r2, r7, r6
str r0, [r2, r1]
ldr r0, [sp, #0x24]
bl ZknData_UnloadAll
ldr r0, [sp, #0x24]
bl ZknData_Delete
ldr r2, _0224E9FC ; =0x00002D76
add r0, r4, #0
add r2, r7, r2
mov r1, #0x75
add r2, r2, r6
bl GetMonData
ldr r2, _0224EA00 ; =0x00002D94
add r0, r4, #0
add r2, r7, r2
mov r1, #0x90
add r2, r2, r6
bl GetMonData
ldr r0, _0224EA04 ; =0x00002DBC
mov r2, #0
add r1, r7, r6
strb r2, [r1, r0]
add r0, r0, #1
strb r2, [r1, r0]
ldr r0, [sp]
ldr r1, [sp, #4]
bl BattleSys_GetFieldSide
add r4, r0, #0
ldr r0, [sp, #4]
add r1, r7, r0
ldr r0, _0224EA08 ; =0x0000219C
ldrb r0, [r1, r0]
bl MaskOfFlagNo
lsl r1, r4, #3
add r2, r7, r1
mov r1, #0x71
lsl r1, r1, #2
ldr r1, [r2, r1]
lsl r1, r1, #3
lsr r1, r1, #0x1a
tst r0, r1
beq _0224E9DE
ldr r0, [sp, #8]
mov r1, #0
strh r1, [r0]
ldr r0, _0224EA0C ; =0x00002DCC
add sp, #0x28
add r2, r7, r0
ldr r1, [r2, r5]
ldr r0, _0224EA10 ; =0xFFBFFFFF
and r0, r1
str r0, [r2, r5]
pop {r3, r4, r5, r6, r7, pc}
_0224E9DE:
ldr r0, [sp, #8]
ldrh r0, [r0]
cmp r0, #0
beq _0224E9F4
ldr r0, _0224EA0C ; =0x00002DCC
add r2, r7, r0
mov r0, #1
ldr r1, [r2, r5]
lsl r0, r0, #0x16
orr r0, r1
str r0, [r2, r5]
_0224E9F4:
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224E9F8: .word 0x00002D60
_0224E9FC: .word 0x00002D76
_0224EA00: .word 0x00002D94
_0224EA04: .word 0x00002DBC
_0224EA08: .word 0x0000219C
_0224EA0C: .word 0x00002DCC
_0224EA10: .word 0xFFBFFFFF
thumb_func_end BattleSystem_GetBattleMon
thumb_func_start BattleController_EmitRefreshMonData
BattleController_EmitRefreshMonData: ; 0x0224EA14
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r2, #0
str r1, [sp]
add r1, r5, #0
add r2, r3, #0
bl BattleSystem_GetPartyMon
mov r1, #0xc0
mul r1, r5
str r1, [sp, #4]
mov r1, #0xa5
mov r2, #0
add r6, r0, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB68 ; =0x00002D42
strh r0, [r2, r1]
add r0, r6, #0
mov r1, #0xa6
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB6C ; =0x00002D44
strh r0, [r2, r1]
add r0, r6, #0
mov r1, #0xa7
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB70 ; =0x00002D46
strh r0, [r2, r1]
add r0, r6, #0
mov r1, #0xa8
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB74 ; =0x00002D48
strh r0, [r2, r1]
add r0, r6, #0
mov r1, #0xa9
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB78 ; =0x00002D4A
strh r0, [r2, r1]
add r0, r6, #0
mov r1, #0xa1
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB7C ; =0x00002D74
strb r0, [r2, r1]
add r0, r6, #0
mov r1, #9
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB80 ; =0x00002D75
strb r0, [r2, r1]
add r0, r6, #0
mov r1, #0xa3
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB84 ; =0x00002D8C
str r0, [r2, r1]
add r0, r6, #0
mov r1, #0xa4
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB88 ; =0x00002D90
str r0, [r2, r1]
add r0, r1, #0
add r0, #0x20
ldr r2, [r2, r0]
mov r0, #2
lsl r0, r0, #0x14
tst r0, r2
bne _0224EB64
mov r0, #0xc0
mul r0, r5
ldr r2, [sp]
str r0, [sp, #8]
add r7, r2, r0
add r1, #0x3c
add r0, r2, #0
add r0, r0, r1
mov r4, #0
add r5, r7, #0
str r0, [sp, #0xc]
_0224EB02:
add r0, r4, #0
bl MaskOfFlagNo
ldr r2, [sp, #0xc]
ldr r1, [sp, #8]
ldr r1, [r2, r1]
lsl r1, r1, #0x1a
lsr r1, r1, #0x1c
tst r0, r1
bne _0224EB46
add r1, r4, #0
add r0, r6, #0
add r1, #0x36
mov r2, #0
bl GetMonData
ldr r1, _0224EB8C ; =0x00002D4C
mov r2, #0
strh r0, [r7, r1]
add r1, r4, #0
add r0, r6, #0
add r1, #0x3a
bl GetMonData
ldr r1, _0224EB90 ; =0x00002D6C
mov r2, #0
strb r0, [r5, r1]
add r1, r4, #0
add r0, r6, #0
add r1, #0x3e
bl GetMonData
ldr r1, _0224EB94 ; =0x00002D70
strb r0, [r5, r1]
_0224EB46:
add r4, r4, #1
add r7, r7, #2
add r5, r5, #1
cmp r4, #4
blt _0224EB02
add r0, r6, #0
mov r1, #8
mov r2, #0
bl GetMonData
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
ldr r1, _0224EB98 ; =0x00002DA4
str r0, [r2, r1]
_0224EB64:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224EB68: .word 0x00002D42
_0224EB6C: .word 0x00002D44
_0224EB70: .word 0x00002D46
_0224EB74: .word 0x00002D48
_0224EB78: .word 0x00002D4A
_0224EB7C: .word 0x00002D74
_0224EB80: .word 0x00002D75
_0224EB84: .word 0x00002D8C
_0224EB88: .word 0x00002D90
_0224EB8C: .word 0x00002D4C
_0224EB90: .word 0x00002D6C
_0224EB94: .word 0x00002D70
_0224EB98: .word 0x00002DA4
thumb_func_end BattleController_EmitRefreshMonData
thumb_func_start ReadBattleScriptFromNarc
ReadBattleScriptFromNarc: ; 0x0224EB9C
push {r4, r5, r6, lr}
add r4, r1, #0
add r6, r2, #0
add r5, r0, #0
add r0, r4, #0
add r1, r6, #0
bl GetNarcMemberSizeByIdPair
mov r1, #0x19
lsl r1, r1, #6
cmp r0, r1
blo _0224EBB8
bl GF_AssertFail
_0224EBB8:
add r0, r5, #0
add r0, #0xac
str r4, [r0]
add r0, r5, #0
add r0, #0xb0
str r6, [r0]
add r0, r5, #0
mov r1, #0
add r0, #0xb4
str r1, [r0]
mov r0, #0x27
lsl r0, r0, #8
add r0, r5, r0
add r1, r4, #0
add r2, r6, #0
bl ReadWholeNarcMemberByIdPair
pop {r4, r5, r6, pc}
thumb_func_end ReadBattleScriptFromNarc
thumb_func_start ov12_0224EBDC
ov12_0224EBDC: ; 0x0224EBDC
push {r4, r5, r6, lr}
add r4, r1, #0
add r6, r2, #0
add r5, r0, #0
add r0, r4, #0
add r1, r6, #0
bl GetNarcMemberSizeByIdPair
mov r1, #0x19
lsl r1, r1, #6
cmp r0, r1
blo _0224EBF8
bl GF_AssertFail
_0224EBF8:
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
cmp r0, #4
blt _0224EC06
bl GF_AssertFail
_0224EC06:
add r1, r5, #0
add r1, #0xb8
ldr r1, [r1]
add r0, r5, #0
add r0, #0xac
lsl r1, r1, #2
add r1, r5, r1
ldr r0, [r0]
add r1, #0xbc
str r0, [r1]
add r1, r5, #0
add r1, #0xb8
ldr r1, [r1]
add r0, r5, #0
add r0, #0xb0
lsl r1, r1, #2
add r1, r5, r1
ldr r0, [r0]
add r1, #0xcc
str r0, [r1]
add r1, r5, #0
add r1, #0xb8
ldr r1, [r1]
add r0, r5, #0
add r0, #0xb4
lsl r1, r1, #2
add r1, r5, r1
ldr r0, [r0]
add r1, #0xdc
str r0, [r1]
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
add r2, r6, #0
add r1, r0, #1
add r0, r5, #0
add r0, #0xb8
str r1, [r0]
add r0, r5, #0
add r0, #0xac
str r4, [r0]
add r0, r5, #0
add r0, #0xb0
str r6, [r0]
add r0, r5, #0
mov r1, #0
add r0, #0xb4
str r1, [r0]
mov r0, #0x27
lsl r0, r0, #8
add r0, r5, r0
add r1, r4, #0
bl ReadWholeNarcMemberByIdPair
pop {r4, r5, r6, pc}
thumb_func_end ov12_0224EBDC
thumb_func_start ov12_0224EC74
ov12_0224EC74: ; 0x0224EC74
push {r4, lr}
add r4, r0, #0
add r1, r4, #0
add r1, #0xb8
ldr r1, [r1]
cmp r1, #0
beq _0224ECBE
add r1, r4, #0
add r1, #0xb8
ldr r1, [r1]
sub r2, r1, #1
add r1, r4, #0
add r1, #0xb8
str r2, [r1]
add r1, r4, #0
add r1, #0xb8
ldr r1, [r1]
lsl r2, r1, #2
add r1, r4, r2
add r2, r4, r2
add r1, #0xbc
add r2, #0xcc
ldr r1, [r1]
ldr r2, [r2]
bl ReadBattleScriptFromNarc
add r0, r4, #0
add r0, #0xb8
ldr r0, [r0]
lsl r0, r0, #2
add r0, r4, r0
add r0, #0xdc
ldr r0, [r0]
add r4, #0xb4
str r0, [r4]
mov r0, #0
pop {r4, pc}
_0224ECBE:
mov r0, #1
pop {r4, pc}
.balign 4, 0
thumb_func_end ov12_0224EC74
thumb_func_start ov12_0224ECC4
ov12_0224ECC4: ; 0x0224ECC4
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
lsl r0, r1, #6
lsl r6, r2, #4
add r1, r4, r0
add r5, r1, r6
mov r1, #0x22
add r7, r3, #0
mov r3, #0
lsl r1, r1, #8
_0224ECD8:
ldrb r2, [r5, r1]
cmp r2, #0
bne _0224ECEC
add r0, r4, r0
add r0, r0, r6
add r1, r0, r3
mov r0, #0x22
lsl r0, r0, #8
strb r7, [r1, r0]
b _0224ECF4
_0224ECEC:
add r3, r3, #1
add r5, r5, #1
cmp r3, #0x10
blt _0224ECD8
_0224ECF4:
cmp r3, #0x10
blt _0224ECFC
bl GF_AssertFail
_0224ECFC:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov12_0224ECC4
thumb_func_start ov12_0224ED00
ov12_0224ED00: ; 0x0224ED00
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r5, r1, #0
str r2, [sp]
add r4, r3, #0
bne _0224ED10
bl GF_AssertFail
_0224ED10:
ldr r0, [sp]
lsl r6, r5, #6
lsl r5, r0, #4
add r0, r7, r6
add r3, r0, r5
mov r0, #0x22
mov r2, #0
lsl r0, r0, #8
_0224ED20:
ldrb r1, [r3, r0]
cmp r4, r1
bne _0224ED36
add r1, r7, r6
add r1, r1, r5
add r3, r1, r2
mov r1, #0x22
mov r0, #0
lsl r1, r1, #8
strb r0, [r3, r1]
b _0224ED3E
_0224ED36:
add r2, r2, #1
add r3, r3, #1
cmp r2, #0x10
blt _0224ED20
_0224ED3E:
cmp r2, #0x10
blt _0224ED46
bl GF_AssertFail
_0224ED46:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov12_0224ED00
thumb_func_start Link_QueueNotEmpty
Link_QueueNotEmpty: ; 0x0224ED48
push {r3, r4, r5, r6, r7, lr}
mov r2, #0
mov r4, #0x22
mov lr, r0
mov ip, r2
add r7, r0, #0
add r6, r2, #0
lsl r4, r4, #8
_0224ED58:
mov r0, #0
add r3, r7, #0
_0224ED5C:
add r1, r6, #0
_0224ED5E:
add r5, r3, r1
ldrb r5, [r5, r4]
add r1, r1, #1
add r2, r2, r5
cmp r1, #0x10
blt _0224ED5E
add r0, r0, #1
add r3, #0x10
cmp r0, #4
blt _0224ED5C
mov r0, ip
add r0, r0, #1
add r7, #0x40
mov ip, r0
cmp r0, #4
blt _0224ED58
cmp r2, #0
bne _0224ED8A
ldr r1, _0224ED98 ; =0x00003148
mov r3, #0
mov r0, lr
str r3, [r0, r1]
_0224ED8A:
cmp r2, #0
bne _0224ED92
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0224ED92:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_0224ED98: .word 0x00003148
thumb_func_end Link_QueueNotEmpty
thumb_func_start Link_CheckTimeout
Link_CheckTimeout: ; 0x0224ED9C
push {r3, lr}
ldr r1, _0224EDB8 ; =0x00003148
ldr r2, [r0, r1]
add r2, r2, #1
str r2, [r0, r1]
ldr r1, [r0, r1]
ldr r0, _0224EDBC ; =0x00000708
cmp r1, r0
ble _0224EDB4
mov r0, #1
bl sub_02039AD8
_0224EDB4:
pop {r3, pc}
nop
_0224EDB8: .word 0x00003148
_0224EDBC: .word 0x00000708
thumb_func_end Link_CheckTimeout
thumb_func_start ov12_0224EDC0
ov12_0224EDC0: ; 0x0224EDC0
push {r3, r4}
lsl r1, r1, #8
add r4, r0, r1
mov r3, #0
mov r0, #0x23
mov r1, #1
add r2, r3, #0
lsl r0, r0, #8
lsl r1, r1, #8
_0224EDD2:
add r3, r3, #1
strb r2, [r4, r0]
add r4, r4, #1
cmp r3, r1
blt _0224EDD2
pop {r3, r4}
bx lr
thumb_func_end ov12_0224EDC0
thumb_func_start GetBattlerVar
GetBattlerVar: ; 0x0224EDE0
push {r4, r5, r6, lr}
mov r4, #0xb5
lsl r4, r4, #6
add r5, r0, r4
mov r6, #0xc0
add r4, r1, #0
mul r4, r6
add r4, r5, r4
cmp r2, #0x64
bls _0224EDF6
b _0224F15E
_0224EDF6:
add r5, r2, r2
add r5, pc
ldrh r5, [r5, #6]
lsl r5, r5, #0x10
asr r5, r5, #0x10
add pc, r5
_0224EE02: ; jump table
.short _0224EECC - _0224EE02 - 2 ; case 0
.short _0224EED0 - _0224EE02 - 2 ; case 1
.short _0224EED4 - _0224EE02 - 2 ; case 2
.short _0224EED8 - _0224EE02 - 2 ; case 3
.short _0224EEDC - _0224EE02 - 2 ; case 4
.short _0224EEE0 - _0224EE02 - 2 ; case 5
.short _0224EEE4 - _0224EE02 - 2 ; case 6
.short _0224EEE4 - _0224EE02 - 2 ; case 7
.short _0224EEE4 - _0224EE02 - 2 ; case 8
.short _0224EEE4 - _0224EE02 - 2 ; case 9
.short _0224EEEE - _0224EE02 - 2 ; case 10
.short _0224EEF6 - _0224EE02 - 2 ; case 11
.short _0224EEFE - _0224EE02 - 2 ; case 12
.short _0224EF06 - _0224EE02 - 2 ; case 13
.short _0224EF0E - _0224EE02 - 2 ; case 14
.short _0224EF16 - _0224EE02 - 2 ; case 15
.short _0224EF1E - _0224EE02 - 2 ; case 16
.short _0224EF26 - _0224EE02 - 2 ; case 17
.short _0224EF2C - _0224EE02 - 2 ; case 18
.short _0224EF2C - _0224EE02 - 2 ; case 19
.short _0224EF2C - _0224EE02 - 2 ; case 20
.short _0224EF2C - _0224EE02 - 2 ; case 21
.short _0224EF2C - _0224EE02 - 2 ; case 22
.short _0224EF2C - _0224EE02 - 2 ; case 23
.short _0224EF2C - _0224EE02 - 2 ; case 24
.short _0224EF2C - _0224EE02 - 2 ; case 25
.short _0224EF36 - _0224EE02 - 2 ; case 26
.short _0224EF3C - _0224EE02 - 2 ; case 27
.short _0224EF3C - _0224EE02 - 2 ; case 28
.short _0224EF42 - _0224EE02 - 2 ; case 29
.short _0224EF4C - _0224EE02 - 2 ; case 30
.short _0224EF56 - _0224EE02 - 2 ; case 31
.short _0224EF56 - _0224EE02 - 2 ; case 32
.short _0224EF56 - _0224EE02 - 2 ; case 33
.short _0224EF56 - _0224EE02 - 2 ; case 34
.short _0224EF60 - _0224EE02 - 2 ; case 35
.short _0224EF60 - _0224EE02 - 2 ; case 36
.short _0224EF60 - _0224EE02 - 2 ; case 37
.short _0224EF60 - _0224EE02 - 2 ; case 38
.short _0224EF6A - _0224EE02 - 2 ; case 39
.short _0224EF6A - _0224EE02 - 2 ; case 40
.short _0224EF6A - _0224EE02 - 2 ; case 41
.short _0224EF6A - _0224EE02 - 2 ; case 42
.short _0224EF7E - _0224EE02 - 2 ; case 43
.short _0224EF84 - _0224EE02 - 2 ; case 44
.short _0224EF8A - _0224EE02 - 2 ; case 45
.short _0224EF9C - _0224EE02 - 2 ; case 46
.short _0224EFA8 - _0224EE02 - 2 ; case 47
.short _0224EFAC - _0224EE02 - 2 ; case 48
.short _0224EFB0 - _0224EE02 - 2 ; case 49
.short _0224EFC6 - _0224EE02 - 2 ; case 50
.short _0224EFCA - _0224EE02 - 2 ; case 51
.short _0224EFCE - _0224EE02 - 2 ; case 52
.short _0224EFD2 - _0224EE02 - 2 ; case 53
.short _0224EFD6 - _0224EE02 - 2 ; case 54
.short _0224EFDA - _0224EE02 - 2 ; case 55
.short _0224EFE0 - _0224EE02 - 2 ; case 56
.short _0224EFE6 - _0224EE02 - 2 ; case 57
.short _0224EFEC - _0224EE02 - 2 ; case 58
.short _0224EFF6 - _0224EE02 - 2 ; case 59
.short _0224EFFC - _0224EE02 - 2 ; case 60
.short _0224F002 - _0224EE02 - 2 ; case 61
.short _0224F00C - _0224EE02 - 2 ; case 62
.short _0224F016 - _0224EE02 - 2 ; case 63
.short _0224F020 - _0224EE02 - 2 ; case 64
.short _0224F02A - _0224EE02 - 2 ; case 65
.short _0224F034 - _0224EE02 - 2 ; case 66
.short _0224F03E - _0224EE02 - 2 ; case 67
.short _0224F048 - _0224EE02 - 2 ; case 68
.short _0224F052 - _0224EE02 - 2 ; case 69
.short _0224F05C - _0224EE02 - 2 ; case 70
.short _0224F066 - _0224EE02 - 2 ; case 71
.short _0224F070 - _0224EE02 - 2 ; case 72
.short _0224F07A - _0224EE02 - 2 ; case 73
.short _0224F082 - _0224EE02 - 2 ; case 74
.short _0224F08C - _0224EE02 - 2 ; case 75
.short _0224F096 - _0224EE02 - 2 ; case 76
.short _0224F0A0 - _0224EE02 - 2 ; case 77
.short _0224F0AA - _0224EE02 - 2 ; case 78
.short _0224F0B4 - _0224EE02 - 2 ; case 79
.short _0224F0BE - _0224EE02 - 2 ; case 80
.short _0224F0C8 - _0224EE02 - 2 ; case 81
.short _0224F0D2 - _0224EE02 - 2 ; case 82
.short _0224F0DC - _0224EE02 - 2 ; case 83
.short _0224F0E6 - _0224EE02 - 2 ; case 84
.short _0224F0F0 - _0224EE02 - 2 ; case 85
.short _0224F0FA - _0224EE02 - 2 ; case 86
.short _0224F104 - _0224EE02 - 2 ; case 87
.short _0224F10A - _0224EE02 - 2 ; case 88
.short _0224F110 - _0224EE02 - 2 ; case 89
.short _0224F116 - _0224EE02 - 2 ; case 90
.short _0224F11C - _0224EE02 - 2 ; case 91
.short _0224F122 - _0224EE02 - 2 ; case 92
.short _0224F128 - _0224EE02 - 2 ; case 93
.short _0224F12E - _0224EE02 - 2 ; case 94
.short _0224F134 - _0224EE02 - 2 ; case 95
.short _0224F13A - _0224EE02 - 2 ; case 96
.short _0224F142 - _0224EE02 - 2 ; case 97
.short _0224F14A - _0224EE02 - 2 ; case 98
.short _0224F15E - _0224EE02 - 2 ; case 99
.short _0224F154 - _0224EE02 - 2 ; case 100
_0224EECC:
ldrh r0, [r4]
pop {r4, r5, r6, pc}
_0224EED0:
ldrh r0, [r4, #2]
pop {r4, r5, r6, pc}
_0224EED4:
ldrh r0, [r4, #4]
pop {r4, r5, r6, pc}
_0224EED8:
ldrh r0, [r4, #6]
pop {r4, r5, r6, pc}
_0224EEDC:
ldrh r0, [r4, #8]
pop {r4, r5, r6, pc}
_0224EEE0:
ldrh r0, [r4, #0xa]
pop {r4, r5, r6, pc}
_0224EEE4:
sub r0, r2, #6
lsl r0, r0, #1
add r0, r4, r0
ldrh r0, [r0, #0xc]
pop {r4, r5, r6, pc}
_0224EEEE:
ldr r0, [r4, #0x14]
lsl r0, r0, #0x1b
lsr r0, r0, #0x1b
pop {r4, r5, r6, pc}
_0224EEF6:
ldr r0, [r4, #0x14]
lsl r0, r0, #0x16
lsr r0, r0, #0x1b
pop {r4, r5, r6, pc}
_0224EEFE:
ldr r0, [r4, #0x14]
lsl r0, r0, #0x11
lsr r0, r0, #0x1b
pop {r4, r5, r6, pc}
_0224EF06:
ldr r0, [r4, #0x14]
lsl r0, r0, #0xc
lsr r0, r0, #0x1b
pop {r4, r5, r6, pc}
_0224EF0E:
ldr r0, [r4, #0x14]
lsl r0, r0, #7
lsr r0, r0, #0x1b
pop {r4, r5, r6, pc}
_0224EF16:
ldr r0, [r4, #0x14]
lsl r0, r0, #2
lsr r0, r0, #0x1b
pop {r4, r5, r6, pc}
_0224EF1E:
ldr r0, [r4, #0x14]
lsl r0, r0, #1
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224EF26:
ldr r0, [r4, #0x14]
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224EF2C:
sub r2, #0x12
add r1, r4, r2
mov r0, #0x18
ldrsb r0, [r1, r0]
pop {r4, r5, r6, pc}
_0224EF36:
add r4, #0x27
ldrb r0, [r4]
pop {r4, r5, r6, pc}
_0224EF3C:
bl ov12_022584AC
pop {r4, r5, r6, pc}
_0224EF42:
add r4, #0x7e
ldrb r0, [r4]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
pop {r4, r5, r6, pc}
_0224EF4C:
add r4, #0x26
ldrb r0, [r4]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224EF56:
sub r2, #0x1f
add r0, r4, r2
add r0, #0x2c
ldrb r0, [r0]
pop {r4, r5, r6, pc}
_0224EF60:
sub r2, #0x23
add r0, r4, r2
add r0, #0x30
ldrb r0, [r0]
pop {r4, r5, r6, pc}
_0224EF6A:
sub r2, #0x27
lsl r0, r2, #1
add r1, r4, r2
add r0, r4, r0
add r1, #0x30
ldrh r0, [r0, #0xc]
ldrb r1, [r1]
bl GetMoveMaxPP
pop {r4, r5, r6, pc}
_0224EF7E:
add r4, #0x34
ldrb r0, [r4]
pop {r4, r5, r6, pc}
_0224EF84:
add r4, #0x35
ldrb r0, [r4]
pop {r4, r5, r6, pc}
_0224EF8A:
mov r1, #0
_0224EF8C:
ldrh r0, [r4, #0x36]
add r1, r1, #1
add r4, r4, #2
strh r0, [r3]
add r3, r3, #2
cmp r1, #0xb
blt _0224EF8C
b _0224F162
_0224EF9C:
add r4, #0x36
add r0, r3, #0
add r1, r4, #0
bl CopyU16ArrayToString
b _0224F162
_0224EFA8:
ldr r0, [r4, #0x4c]
pop {r4, r5, r6, pc}
_0224EFAC:
ldr r0, [r4, #0x50]
pop {r4, r5, r6, pc}
_0224EFB0:
mov r1, #0
_0224EFB2:
add r0, r4, #0
add r0, #0x54
ldrh r0, [r0]
add r1, r1, #1
add r4, r4, #2
strh r0, [r3]
add r3, r3, #2
cmp r1, #0xb
blt _0224EFB2
b _0224F162
_0224EFC6:
ldr r0, [r4, #0x64]
pop {r4, r5, r6, pc}
_0224EFCA:
ldr r0, [r4, #0x68]
pop {r4, r5, r6, pc}
_0224EFCE:
ldr r0, [r4, #0x6c]
pop {r4, r5, r6, pc}
_0224EFD2:
ldr r0, [r4, #0x70]
pop {r4, r5, r6, pc}
_0224EFD6:
ldr r0, [r4, #0x74]
pop {r4, r5, r6, pc}
_0224EFDA:
add r4, #0x78
ldrh r0, [r4]
pop {r4, r5, r6, pc}
_0224EFE0:
add r4, #0x7c
ldrb r0, [r4]
pop {r4, r5, r6, pc}
_0224EFE6:
add r4, #0x7d
ldrb r0, [r4]
pop {r4, r5, r6, pc}
_0224EFEC:
add r4, #0x7e
ldrb r0, [r4]
lsl r0, r0, #0x18
lsr r0, r0, #0x1c
pop {r4, r5, r6, pc}
_0224EFF6:
add r4, #0x80
ldr r0, [r4]
pop {r4, r5, r6, pc}
_0224EFFC:
add r4, #0x84
ldr r0, [r4]
pop {r4, r5, r6, pc}
_0224F002:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #0x1d
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F00C:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F016:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #0x18
lsr r0, r0, #0x1e
pop {r4, r5, r6, pc}
_0224F020:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #0x15
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F02A:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #0x13
lsr r0, r0, #0x1e
pop {r4, r5, r6, pc}
_0224F034:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #0x11
lsr r0, r0, #0x1e
pop {r4, r5, r6, pc}
_0224F03E:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #0xe
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F048:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #0xb
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F052:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #8
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F05C:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #5
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F066:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #2
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F070:
add r4, #0x88
ldr r0, [r4]
lsl r0, r0, #1
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224F07A:
add r4, #0x88
ldr r0, [r4]
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224F082:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
pop {r4, r5, r6, pc}
_0224F08C:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1c
pop {r4, r5, r6, pc}
_0224F096:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #0x18
lsr r0, r0, #0x1e
pop {r4, r5, r6, pc}
_0224F0A0:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #0x16
lsr r0, r0, #0x1e
pop {r4, r5, r6, pc}
_0224F0AA:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #0x13
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F0B4:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #0x10
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F0BE:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #0xd
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F0C8:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #0xa
lsr r0, r0, #0x1d
pop {r4, r5, r6, pc}
_0224F0D2:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #9
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224F0DC:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #5
lsr r0, r0, #0x1c
pop {r4, r5, r6, pc}
_0224F0E6:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #4
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224F0F0:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #3
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224F0FA:
add r4, #0x8c
ldr r0, [r4]
lsl r0, r0, #2
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224F104:
add r4, #0x90
ldr r0, [r4]
pop {r4, r5, r6, pc}
_0224F10A:
add r4, #0x94
ldr r0, [r4]
pop {r4, r5, r6, pc}
_0224F110:
add r4, #0x98
ldr r0, [r4]
pop {r4, r5, r6, pc}
_0224F116:
add r4, #0xa0
ldr r0, [r4]
pop {r4, r5, r6, pc}
_0224F11C:
add r4, #0xa4
ldr r0, [r4]
pop {r4, r5, r6, pc}
_0224F122:
add r4, #0xa8
ldrh r0, [r4]
pop {r4, r5, r6, pc}
_0224F128:
add r4, #0xac
ldrh r0, [r4]
pop {r4, r5, r6, pc}
_0224F12E:
add r4, #0xaa
ldrh r0, [r4]
pop {r4, r5, r6, pc}
_0224F134:
add r4, #0xbc
ldr r0, [r4]
pop {r4, r5, r6, pc}
_0224F13A:
ldr r0, [r4, #0x28]
lsl r0, r0, #0x19
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224F142:
ldr r0, [r4, #0x28]
lsl r0, r0, #0x18
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
_0224F14A:
add r4, #0x26
ldrb r0, [r4]
lsl r0, r0, #0x1b
lsr r0, r0, #0x1b
pop {r4, r5, r6, pc}
_0224F154:
add r6, #0x78
ldr r2, [r0, r6]
bl GetBattlerVar
pop {r4, r5, r6, pc}
_0224F15E:
bl GF_AssertFail
_0224F162:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end GetBattlerVar
thumb_func_start SetBattlerVar
SetBattlerVar: ; 0x0224F168
push {r4, r5, r6, lr}
add r5, r2, #0
mov r2, #0xb5
lsl r2, r2, #6
add r4, r0, r2
mov r6, #0xc0
add r2, r1, #0
mul r2, r6
add r2, r4, r2
cmp r5, #0x64
bls _0224F180
b _0224F77E
_0224F180:
add r4, r5, r5
add r4, pc
ldrh r4, [r4, #6]
lsl r4, r4, #0x10
asr r4, r4, #0x10
add pc, r4
_0224F18C: ; jump table
.short _0224F256 - _0224F18C - 2 ; case 0
.short _0224F25C - _0224F18C - 2 ; case 1
.short _0224F262 - _0224F18C - 2 ; case 2
.short _0224F268 - _0224F18C - 2 ; case 3
.short _0224F26E - _0224F18C - 2 ; case 4
.short _0224F274 - _0224F18C - 2 ; case 5
.short _0224F27A - _0224F18C - 2 ; case 6
.short _0224F27A - _0224F18C - 2 ; case 7
.short _0224F27A - _0224F18C - 2 ; case 8
.short _0224F27A - _0224F18C - 2 ; case 9
.short _0224F286 - _0224F18C - 2 ; case 10
.short _0224F298 - _0224F18C - 2 ; case 11
.short _0224F2AA - _0224F18C - 2 ; case 12
.short _0224F2BC - _0224F18C - 2 ; case 13
.short _0224F2CE - _0224F18C - 2 ; case 14
.short _0224F2E0 - _0224F18C - 2 ; case 15
.short _0224F2F2 - _0224F18C - 2 ; case 16
.short _0224F304 - _0224F18C - 2 ; case 17
.short _0224F314 - _0224F18C - 2 ; case 18
.short _0224F314 - _0224F18C - 2 ; case 19
.short _0224F314 - _0224F18C - 2 ; case 20
.short _0224F314 - _0224F18C - 2 ; case 21
.short _0224F314 - _0224F18C - 2 ; case 22
.short _0224F314 - _0224F18C - 2 ; case 23
.short _0224F314 - _0224F18C - 2 ; case 24
.short _0224F314 - _0224F18C - 2 ; case 25
.short _0224F320 - _0224F18C - 2 ; case 26
.short _0224F328 - _0224F18C - 2 ; case 27
.short _0224F330 - _0224F18C - 2 ; case 28
.short _0224F338 - _0224F18C - 2 ; case 29
.short _0224F350 - _0224F18C - 2 ; case 30
.short _0224F368 - _0224F18C - 2 ; case 31
.short _0224F368 - _0224F18C - 2 ; case 32
.short _0224F368 - _0224F18C - 2 ; case 33
.short _0224F368 - _0224F18C - 2 ; case 34
.short _0224F374 - _0224F18C - 2 ; case 35
.short _0224F374 - _0224F18C - 2 ; case 36
.short _0224F374 - _0224F18C - 2 ; case 37
.short _0224F374 - _0224F18C - 2 ; case 38
.short _0224F380 - _0224F18C - 2 ; case 39
.short _0224F380 - _0224F18C - 2 ; case 40
.short _0224F380 - _0224F18C - 2 ; case 41
.short _0224F380 - _0224F18C - 2 ; case 42
.short _0224F386 - _0224F18C - 2 ; case 43
.short _0224F38E - _0224F18C - 2 ; case 44
.short _0224F396 - _0224F18C - 2 ; case 45
.short _0224F77E - _0224F18C - 2 ; case 46
.short _0224F3A8 - _0224F18C - 2 ; case 47
.short _0224F3B0 - _0224F18C - 2 ; case 48
.short _0224F3B6 - _0224F18C - 2 ; case 49
.short _0224F3CC - _0224F18C - 2 ; case 50
.short _0224F3D2 - _0224F18C - 2 ; case 51
.short _0224F3D8 - _0224F18C - 2 ; case 52
.short _0224F3DE - _0224F18C - 2 ; case 53
.short _0224F3E4 - _0224F18C - 2 ; case 54
.short _0224F3EA - _0224F18C - 2 ; case 55
.short _0224F3F2 - _0224F18C - 2 ; case 56
.short _0224F3FA - _0224F18C - 2 ; case 57
.short _0224F402 - _0224F18C - 2 ; case 58
.short _0224F41A - _0224F18C - 2 ; case 59
.short _0224F422 - _0224F18C - 2 ; case 60
.short _0224F42A - _0224F18C - 2 ; case 61
.short _0224F442 - _0224F18C - 2 ; case 62
.short _0224F45A - _0224F18C - 2 ; case 63
.short _0224F472 - _0224F18C - 2 ; case 64
.short _0224F48A - _0224F18C - 2 ; case 65
.short _0224F4A2 - _0224F18C - 2 ; case 66
.short _0224F4BA - _0224F18C - 2 ; case 67
.short _0224F4D2 - _0224F18C - 2 ; case 68
.short _0224F4EA - _0224F18C - 2 ; case 69
.short _0224F502 - _0224F18C - 2 ; case 70
.short _0224F51A - _0224F18C - 2 ; case 71
.short _0224F532 - _0224F18C - 2 ; case 72
.short _0224F54A - _0224F18C - 2 ; case 73
.short _0224F560 - _0224F18C - 2 ; case 74
.short _0224F578 - _0224F18C - 2 ; case 75
.short _0224F590 - _0224F18C - 2 ; case 76
.short _0224F5A8 - _0224F18C - 2 ; case 77
.short _0224F5C0 - _0224F18C - 2 ; case 78
.short _0224F5D8 - _0224F18C - 2 ; case 79
.short _0224F5F0 - _0224F18C - 2 ; case 80
.short _0224F608 - _0224F18C - 2 ; case 81
.short _0224F620 - _0224F18C - 2 ; case 82
.short _0224F690 - _0224F18C - 2 ; case 83
.short _0224F6A8 - _0224F18C - 2 ; case 84
.short _0224F6C0 - _0224F18C - 2 ; case 85
.short _0224F6D8 - _0224F18C - 2 ; case 86
.short _0224F6F0 - _0224F18C - 2 ; case 87
.short _0224F6F8 - _0224F18C - 2 ; case 88
.short _0224F700 - _0224F18C - 2 ; case 89
.short _0224F708 - _0224F18C - 2 ; case 90
.short _0224F710 - _0224F18C - 2 ; case 91
.short _0224F718 - _0224F18C - 2 ; case 92
.short _0224F720 - _0224F18C - 2 ; case 93
.short _0224F728 - _0224F18C - 2 ; case 94
.short _0224F730 - _0224F18C - 2 ; case 95
.short _0224F738 - _0224F18C - 2 ; case 96
.short _0224F74A - _0224F18C - 2 ; case 97
.short _0224F75C - _0224F18C - 2 ; case 98
.short _0224F77E - _0224F18C - 2 ; case 99
.short _0224F774 - _0224F18C - 2 ; case 100
_0224F256:
ldrh r0, [r3]
strh r0, [r2]
pop {r4, r5, r6, pc}
_0224F25C:
ldrh r0, [r3]
strh r0, [r2, #2]
pop {r4, r5, r6, pc}
_0224F262:
ldrh r0, [r3]
strh r0, [r2, #4]
pop {r4, r5, r6, pc}
_0224F268:
ldrh r0, [r3]
strh r0, [r2, #6]
pop {r4, r5, r6, pc}
_0224F26E:
ldrh r0, [r3]
strh r0, [r2, #8]
pop {r4, r5, r6, pc}
_0224F274:
ldrh r0, [r3]
strh r0, [r2, #0xa]
pop {r4, r5, r6, pc}
_0224F27A:
sub r0, r5, #6
lsl r0, r0, #1
ldrh r1, [r3]
add r0, r2, r0
strh r1, [r0, #0xc]
pop {r4, r5, r6, pc}
_0224F286:
ldr r4, [r2, #0x14]
mov r0, #0x1f
bic r4, r0
ldrb r1, [r3]
mov r0, #0x1f
and r0, r1
orr r0, r4
str r0, [r2, #0x14]
pop {r4, r5, r6, pc}
_0224F298:
ldr r1, [r2, #0x14]
ldr r0, _0224F62C ; =0xFFFFFC1F
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1b
lsr r0, r0, #0x16
orr r0, r1
str r0, [r2, #0x14]
pop {r4, r5, r6, pc}
_0224F2AA:
ldr r1, [r2, #0x14]
ldr r0, _0224F630 ; =0xFFFF83FF
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1b
lsr r0, r0, #0x11
orr r0, r1
str r0, [r2, #0x14]
pop {r4, r5, r6, pc}
_0224F2BC:
ldr r1, [r2, #0x14]
ldr r0, _0224F634 ; =0xFFF07FFF
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1b
lsr r0, r0, #0xc
orr r0, r1
str r0, [r2, #0x14]
pop {r4, r5, r6, pc}
_0224F2CE:
ldr r1, [r2, #0x14]
ldr r0, _0224F638 ; =0xFE0FFFFF
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1b
lsr r0, r0, #7
orr r0, r1
str r0, [r2, #0x14]
pop {r4, r5, r6, pc}
_0224F2E0:
ldr r1, [r2, #0x14]
ldr r0, _0224F63C ; =0xC1FFFFFF
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1b
lsr r0, r0, #2
orr r0, r1
str r0, [r2, #0x14]
pop {r4, r5, r6, pc}
_0224F2F2:
ldr r1, [r2, #0x14]
ldr r0, _0224F640 ; =0xBFFFFFFF
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #1
orr r0, r1
str r0, [r2, #0x14]
pop {r4, r5, r6, pc}
_0224F304:
ldr r1, [r2, #0x14]
ldr r0, _0224F644 ; =0x7FFFFFFF
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
orr r0, r1
str r0, [r2, #0x14]
pop {r4, r5, r6, pc}
_0224F314:
mov r0, #0
ldrsb r1, [r3, r0]
sub r5, #0x12
add r0, r2, r5
strb r1, [r0, #0x18]
pop {r4, r5, r6, pc}
_0224F320:
ldrb r0, [r3]
add r2, #0x27
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F328:
ldrb r0, [r3]
add r2, #0x24
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F330:
ldrb r0, [r3]
add r2, #0x25
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F338:
add r0, r2, #0
add r0, #0x7e
ldrb r4, [r0]
ldrb r1, [r3]
mov r0, #0xf
bic r4, r0
mov r0, #0xf
and r0, r1
orr r0, r4
add r2, #0x7e
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F350:
add r0, r2, #0
add r0, #0x26
ldrb r1, [r0]
mov r0, #0x20
add r2, #0x26
bic r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1a
orr r0, r1
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F368:
sub r5, #0x1f
add r0, r2, r5
ldrb r1, [r3]
add r0, #0x2c
strb r1, [r0]
pop {r4, r5, r6, pc}
_0224F374:
sub r5, #0x23
add r0, r2, r5
ldrb r1, [r3]
add r0, #0x30
strb r1, [r0]
pop {r4, r5, r6, pc}
_0224F380:
bl GF_AssertFail
pop {r4, r5, r6, pc}
_0224F386:
ldrb r0, [r3]
add r2, #0x34
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F38E:
ldrb r0, [r3]
add r2, #0x35
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F396:
mov r1, #0
_0224F398:
ldrh r0, [r3]
add r1, r1, #1
add r3, r3, #2
strh r0, [r2, #0x36]
add r2, r2, #2
cmp r1, #0xb
blt _0224F398
pop {r4, r5, r6, pc}
_0224F3A8:
mov r0, #0
ldrsh r0, [r3, r0]
str r0, [r2, #0x4c]
pop {r4, r5, r6, pc}
_0224F3B0:
ldrh r0, [r3]
str r0, [r2, #0x50]
pop {r4, r5, r6, pc}
_0224F3B6:
mov r4, #0
_0224F3B8:
ldrh r1, [r3]
add r0, r2, #0
add r0, #0x54
add r4, r4, #1
strh r1, [r0]
add r3, r3, #2
add r2, r2, #2
cmp r4, #0xb
blt _0224F3B8
pop {r4, r5, r6, pc}
_0224F3CC:
ldr r0, [r3]
str r0, [r2, #0x64]
pop {r4, r5, r6, pc}
_0224F3D2:
ldr r0, [r3]
str r0, [r2, #0x68]
pop {r4, r5, r6, pc}
_0224F3D8:
ldr r0, [r3]
str r0, [r2, #0x6c]
pop {r4, r5, r6, pc}
_0224F3DE:
ldr r0, [r3]
str r0, [r2, #0x70]
pop {r4, r5, r6, pc}
_0224F3E4:
ldr r0, [r3]
str r0, [r2, #0x74]
pop {r4, r5, r6, pc}
_0224F3EA:
ldrh r0, [r3]
add r2, #0x78
strh r0, [r2]
pop {r4, r5, r6, pc}
_0224F3F2:
ldrb r0, [r3]
add r2, #0x7c
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F3FA:
ldrb r0, [r3]
add r2, #0x7d
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F402:
add r0, r2, #0
add r0, #0x7e
ldrb r1, [r0]
mov r0, #0xf0
add r2, #0x7e
bic r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1c
lsr r0, r0, #0x18
orr r0, r1
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F41A:
ldr r0, [r3]
add r2, #0x80
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F422:
ldr r0, [r3]
add r2, #0x84
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F42A:
add r0, r2, #0
add r0, #0x88
ldr r4, [r0]
mov r0, #7
bic r4, r0
ldrb r1, [r3]
mov r0, #7
add r2, #0x88
and r0, r1
orr r0, r4
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F442:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
mov r0, #0x38
bic r1, r0
ldrb r0, [r3]
add r2, #0x88
lsl r0, r0, #0x1d
lsr r0, r0, #0x1a
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F45A:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
mov r0, #0xc0
bic r1, r0
ldrb r0, [r3]
add r2, #0x88
lsl r0, r0, #0x1e
lsr r0, r0, #0x18
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F472:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F648 ; =0xFFFFF8FF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #0x15
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F48A:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F64C ; =0xFFFFE7FF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1e
lsr r0, r0, #0x13
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F4A2:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F650 ; =0xFFFF9FFF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1e
lsr r0, r0, #0x11
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F4BA:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F654 ; =0xFFFC7FFF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #0xe
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F4D2:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F658 ; =0xFFE3FFFF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #0xb
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F4EA:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F65C ; =0xFF1FFFFF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #8
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F502:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F660 ; =0xF8FFFFFF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #5
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F51A:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F664 ; =0xC7FFFFFF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #2
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F532:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F640 ; =0xBFFFFFFF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #1
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F54A:
add r0, r2, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224F644 ; =0x7FFFFFFF
add r2, #0x88
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F560:
add r0, r2, #0
add r0, #0x8c
ldr r4, [r0]
mov r0, #3
bic r4, r0
ldrb r1, [r3]
mov r0, #3
add r2, #0x8c
and r0, r1
orr r0, r4
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F578:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
mov r0, #0x3c
bic r1, r0
ldrb r0, [r3]
add r2, #0x8c
lsl r0, r0, #0x1c
lsr r0, r0, #0x1a
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F590:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
mov r0, #0xc0
bic r1, r0
ldrb r0, [r3]
add r2, #0x8c
lsl r0, r0, #0x1e
lsr r0, r0, #0x18
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F5A8:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F668 ; =0xFFFFFCFF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1e
lsr r0, r0, #0x16
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F5C0:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F66C ; =0xFFFFE3FF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #0x13
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F5D8:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F670 ; =0xFFFF1FFF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #0x10
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F5F0:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F674 ; =0xFFF8FFFF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #0xd
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F608:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F678 ; =0xFFC7FFFF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1d
lsr r0, r0, #0xa
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F620:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F67C ; =0xFFBFFFFF
b _0224F680
nop
_0224F62C: .word 0xFFFFFC1F
_0224F630: .word 0xFFFF83FF
_0224F634: .word 0xFFF07FFF
_0224F638: .word 0xFE0FFFFF
_0224F63C: .word 0xC1FFFFFF
_0224F640: .word 0xBFFFFFFF
_0224F644: .word 0x7FFFFFFF
_0224F648: .word 0xFFFFF8FF
_0224F64C: .word 0xFFFFE7FF
_0224F650: .word 0xFFFF9FFF
_0224F654: .word 0xFFFC7FFF
_0224F658: .word 0xFFE3FFFF
_0224F65C: .word 0xFF1FFFFF
_0224F660: .word 0xF8FFFFFF
_0224F664: .word 0xC7FFFFFF
_0224F668: .word 0xFFFFFCFF
_0224F66C: .word 0xFFFFE3FF
_0224F670: .word 0xFFFF1FFF
_0224F674: .word 0xFFF8FFFF
_0224F678: .word 0xFFC7FFFF
_0224F67C: .word 0xFFBFFFFF
_0224F680:
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #9
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F690:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F784 ; =0xF87FFFFF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1c
lsr r0, r0, #5
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F6A8:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F788 ; =0xF7FFFFFF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #4
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F6C0:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F78C ; =0xEFFFFFFF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #3
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F6D8:
add r0, r2, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224F790 ; =0xDFFFFFFF
add r2, #0x8c
and r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #2
orr r0, r1
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F6F0:
ldr r0, [r3]
add r2, #0x90
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F6F8:
ldr r0, [r3]
add r2, #0x94
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F700:
ldr r0, [r3]
add r2, #0x98
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F708:
ldr r0, [r3]
add r2, #0xa0
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F710:
ldr r0, [r3]
add r2, #0xa4
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F718:
ldrh r0, [r3]
add r2, #0xa8
strh r0, [r2]
pop {r4, r5, r6, pc}
_0224F720:
ldrh r0, [r3]
add r2, #0xac
strh r0, [r2]
pop {r4, r5, r6, pc}
_0224F728:
ldrh r0, [r3]
add r2, #0xaa
strh r0, [r2]
pop {r4, r5, r6, pc}
_0224F730:
ldr r0, [r3]
add r2, #0xbc
str r0, [r2]
pop {r4, r5, r6, pc}
_0224F738:
ldr r1, [r2, #0x28]
mov r0, #0x40
bic r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #0x19
orr r0, r1
str r0, [r2, #0x28]
pop {r4, r5, r6, pc}
_0224F74A:
ldr r1, [r2, #0x28]
mov r0, #0x80
bic r1, r0
ldrb r0, [r3]
lsl r0, r0, #0x1f
lsr r0, r0, #0x18
orr r0, r1
str r0, [r2, #0x28]
pop {r4, r5, r6, pc}
_0224F75C:
add r0, r2, #0
add r0, #0x26
ldrb r4, [r0]
ldrb r1, [r3]
mov r0, #0x1f
bic r4, r0
mov r0, #0x1f
and r0, r1
orr r0, r4
add r2, #0x26
strb r0, [r2]
pop {r4, r5, r6, pc}
_0224F774:
add r6, #0x78
ldr r2, [r0, r6]
bl SetBattlerVar
pop {r4, r5, r6, pc}
_0224F77E:
bl GF_AssertFail
pop {r4, r5, r6, pc}
.balign 4, 0
_0224F784: .word 0xF87FFFFF
_0224F788: .word 0xF7FFFFFF
_0224F78C: .word 0xEFFFFFFF
_0224F790: .word 0xDFFFFFFF
thumb_func_end SetBattlerVar
thumb_func_start ov12_0224F794
ov12_0224F794: ; 0x0224F794
push {r4, lr}
mov r4, #0xb5
lsl r4, r4, #6
add r4, r0, r4
mov r0, #0xc0
mul r0, r1
add r1, r2, #0
add r0, r4, r0
add r2, r3, #0
bl ov12_0224F7AC
pop {r4, pc}
thumb_func_end ov12_0224F794
thumb_func_start ov12_0224F7AC
ov12_0224F7AC: ; 0x0224F7AC
push {r4, r5, r6, lr}
add r4, r0, #0
add r5, r2, #0
cmp r1, #0x62
bls _0224F7B8
b _0224FC02
_0224F7B8:
add r0, r1, r1
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0224F7C4: ; jump table
.short _0224FC02 - _0224F7C4 - 2 ; case 0
.short _0224F88A - _0224F7C4 - 2 ; case 1
.short _0224F892 - _0224F7C4 - 2 ; case 2
.short _0224F89A - _0224F7C4 - 2 ; case 3
.short _0224F8A2 - _0224F7C4 - 2 ; case 4
.short _0224F8AA - _0224F7C4 - 2 ; case 5
.short _0224FC02 - _0224F7C4 - 2 ; case 6
.short _0224FC02 - _0224F7C4 - 2 ; case 7
.short _0224FC02 - _0224F7C4 - 2 ; case 8
.short _0224FC02 - _0224F7C4 - 2 ; case 9
.short _0224F8B2 - _0224F7C4 - 2 ; case 10
.short _0224F8CA - _0224F7C4 - 2 ; case 11
.short _0224F8E0 - _0224F7C4 - 2 ; case 12
.short _0224F8F6 - _0224F7C4 - 2 ; case 13
.short _0224F90C - _0224F7C4 - 2 ; case 14
.short _0224F922 - _0224F7C4 - 2 ; case 15
.short _0224FC02 - _0224F7C4 - 2 ; case 16
.short _0224FC02 - _0224F7C4 - 2 ; case 17
.short _0224F938 - _0224F7C4 - 2 ; case 18
.short _0224F938 - _0224F7C4 - 2 ; case 19
.short _0224F938 - _0224F7C4 - 2 ; case 20
.short _0224F938 - _0224F7C4 - 2 ; case 21
.short _0224F938 - _0224F7C4 - 2 ; case 22
.short _0224F938 - _0224F7C4 - 2 ; case 23
.short _0224F938 - _0224F7C4 - 2 ; case 24
.short _0224F938 - _0224F7C4 - 2 ; case 25
.short _0224FC02 - _0224F7C4 - 2 ; case 26
.short _0224FC02 - _0224F7C4 - 2 ; case 27
.short _0224FC02 - _0224F7C4 - 2 ; case 28
.short _0224FC02 - _0224F7C4 - 2 ; case 29
.short _0224FC02 - _0224F7C4 - 2 ; case 30
.short _0224F956 - _0224F7C4 - 2 ; case 31
.short _0224F956 - _0224F7C4 - 2 ; case 32
.short _0224F956 - _0224F7C4 - 2 ; case 33
.short _0224F956 - _0224F7C4 - 2 ; case 34
.short _0224F97C - _0224F7C4 - 2 ; case 35
.short _0224F97C - _0224F7C4 - 2 ; case 36
.short _0224F97C - _0224F7C4 - 2 ; case 37
.short _0224F97C - _0224F7C4 - 2 ; case 38
.short _0224FC02 - _0224F7C4 - 2 ; case 39
.short _0224FC02 - _0224F7C4 - 2 ; case 40
.short _0224FC02 - _0224F7C4 - 2 ; case 41
.short _0224FC02 - _0224F7C4 - 2 ; case 42
.short _0224F988 - _0224F7C4 - 2 ; case 43
.short _0224F996 - _0224F7C4 - 2 ; case 44
.short _0224FC02 - _0224F7C4 - 2 ; case 45
.short _0224FC02 - _0224F7C4 - 2 ; case 46
.short _0224F9B2 - _0224F7C4 - 2 ; case 47
.short _0224F9C4 - _0224F7C4 - 2 ; case 48
.short _0224FC02 - _0224F7C4 - 2 ; case 49
.short _0224F9CC - _0224F7C4 - 2 ; case 50
.short _0224F9D4 - _0224F7C4 - 2 ; case 51
.short _0224FC02 - _0224F7C4 - 2 ; case 52
.short _0224FC02 - _0224F7C4 - 2 ; case 53
.short _0224FC02 - _0224F7C4 - 2 ; case 54
.short _0224FC02 - _0224F7C4 - 2 ; case 55
.short _0224FC02 - _0224F7C4 - 2 ; case 56
.short _0224FC02 - _0224F7C4 - 2 ; case 57
.short _0224FC02 - _0224F7C4 - 2 ; case 58
.short _0224FC02 - _0224F7C4 - 2 ; case 59
.short _0224FC02 - _0224F7C4 - 2 ; case 60
.short _0224F9DC - _0224F7C4 - 2 ; case 61
.short _0224F9FA - _0224F7C4 - 2 ; case 62
.short _0224FA18 - _0224F7C4 - 2 ; case 63
.short _0224FA36 - _0224F7C4 - 2 ; case 64
.short _0224FA52 - _0224F7C4 - 2 ; case 65
.short _0224FA6E - _0224F7C4 - 2 ; case 66
.short _0224FA8A - _0224F7C4 - 2 ; case 67
.short _0224FAA6 - _0224F7C4 - 2 ; case 68
.short _0224FAC2 - _0224F7C4 - 2 ; case 69
.short _0224FADE - _0224F7C4 - 2 ; case 70
.short _0224FAFA - _0224F7C4 - 2 ; case 71
.short _0224FC02 - _0224F7C4 - 2 ; case 72
.short _0224FC02 - _0224F7C4 - 2 ; case 73
.short _0224FC02 - _0224F7C4 - 2 ; case 74
.short _0224FC02 - _0224F7C4 - 2 ; case 75
.short _0224FC02 - _0224F7C4 - 2 ; case 76
.short _0224FC02 - _0224F7C4 - 2 ; case 77
.short _0224FB16 - _0224F7C4 - 2 ; case 78
.short _0224FB32 - _0224F7C4 - 2 ; case 79
.short _0224FB4E - _0224F7C4 - 2 ; case 80
.short _0224FC02 - _0224F7C4 - 2 ; case 81
.short _0224FC02 - _0224F7C4 - 2 ; case 82
.short _0224FC02 - _0224F7C4 - 2 ; case 83
.short _0224FC02 - _0224F7C4 - 2 ; case 84
.short _0224FC02 - _0224F7C4 - 2 ; case 85
.short _0224FC02 - _0224F7C4 - 2 ; case 86
.short _0224FB6A - _0224F7C4 - 2 ; case 87
.short _0224FB78 - _0224F7C4 - 2 ; case 88
.short _0224FB86 - _0224F7C4 - 2 ; case 89
.short _0224FB94 - _0224F7C4 - 2 ; case 90
.short _0224FC02 - _0224F7C4 - 2 ; case 91
.short _0224FC02 - _0224F7C4 - 2 ; case 92
.short _0224FC02 - _0224F7C4 - 2 ; case 93
.short _0224FC02 - _0224F7C4 - 2 ; case 94
.short _0224FBA2 - _0224F7C4 - 2 ; case 95
.short _0224FBB0 - _0224F7C4 - 2 ; case 96
.short _0224FBC8 - _0224F7C4 - 2 ; case 97
.short _0224FBE0 - _0224F7C4 - 2 ; case 98
_0224F88A:
ldrh r0, [r4, #2]
add r0, r0, r5
strh r0, [r4, #2]
pop {r4, r5, r6, pc}
_0224F892:
ldrh r0, [r4, #4]
add r0, r0, r5
strh r0, [r4, #4]
pop {r4, r5, r6, pc}
_0224F89A:
ldrh r0, [r4, #6]
add r0, r0, r5
strh r0, [r4, #6]
pop {r4, r5, r6, pc}
_0224F8A2:
ldrh r0, [r4, #8]
add r0, r0, r5
strh r0, [r4, #8]
pop {r4, r5, r6, pc}
_0224F8AA:
ldrh r0, [r4, #0xa]
add r0, r0, r5
strh r0, [r4, #0xa]
pop {r4, r5, r6, pc}
_0224F8B2:
ldr r2, [r4, #0x14]
mov r1, #0x1f
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x1b
lsr r1, r1, #0x1b
add r2, r1, r5
mov r1, #0x1f
and r1, r2
orr r0, r1
str r0, [r4, #0x14]
pop {r4, r5, r6, pc}
_0224F8CA:
ldr r1, [r4, #0x14]
ldr r0, _0224FC08 ; =0xFFFFFC1F
and r0, r1
lsl r1, r1, #0x16
lsr r1, r1, #0x1b
add r1, r1, r5
lsl r1, r1, #0x1b
lsr r1, r1, #0x16
orr r0, r1
str r0, [r4, #0x14]
pop {r4, r5, r6, pc}
_0224F8E0:
ldr r1, [r4, #0x14]
ldr r0, _0224FC0C ; =0xFFFF83FF
and r0, r1
lsl r1, r1, #0x11
lsr r1, r1, #0x1b
add r1, r1, r5
lsl r1, r1, #0x1b
lsr r1, r1, #0x11
orr r0, r1
str r0, [r4, #0x14]
pop {r4, r5, r6, pc}
_0224F8F6:
ldr r1, [r4, #0x14]
ldr r0, _0224FC10 ; =0xFFF07FFF
and r0, r1
lsl r1, r1, #0xc
lsr r1, r1, #0x1b
add r1, r1, r5
lsl r1, r1, #0x1b
lsr r1, r1, #0xc
orr r0, r1
str r0, [r4, #0x14]
pop {r4, r5, r6, pc}
_0224F90C:
ldr r1, [r4, #0x14]
ldr r0, _0224FC14 ; =0xFE0FFFFF
and r0, r1
lsl r1, r1, #7
lsr r1, r1, #0x1b
add r1, r1, r5
lsl r1, r1, #0x1b
lsr r1, r1, #7
orr r0, r1
str r0, [r4, #0x14]
pop {r4, r5, r6, pc}
_0224F922:
ldr r1, [r4, #0x14]
ldr r0, _0224FC18 ; =0xC1FFFFFF
and r0, r1
lsl r1, r1, #2
lsr r1, r1, #0x1b
add r1, r1, r5
lsl r1, r1, #0x1b
lsr r1, r1, #2
orr r0, r1
str r0, [r4, #0x14]
pop {r4, r5, r6, pc}
_0224F938:
add r4, #0x18
sub r1, #0x12
ldrsb r0, [r4, r1]
add r0, r5, r0
bpl _0224F948
mov r0, #0
strb r0, [r4, r1]
pop {r4, r5, r6, pc}
_0224F948:
cmp r0, #0xc
ble _0224F952
mov r0, #0xc
strb r0, [r4, r1]
pop {r4, r5, r6, pc}
_0224F952:
strb r0, [r4, r1]
pop {r4, r5, r6, pc}
_0224F956:
add r6, r1, #0
sub r6, #0x1f
lsl r0, r6, #1
add r1, r4, r6
add r0, r4, r0
add r1, #0x30
ldrh r0, [r0, #0xc]
ldrb r1, [r1]
bl GetMoveMaxPP
add r4, #0x2c
ldrb r1, [r4, r6]
add r1, r5, r1
cmp r1, r0
ble _0224F978
strb r0, [r4, r6]
pop {r4, r5, r6, pc}
_0224F978:
strb r1, [r4, r6]
pop {r4, r5, r6, pc}
_0224F97C:
add r4, #0x30
sub r1, #0x23
ldrb r0, [r4, r1]
add r0, r0, r5
strb r0, [r4, r1]
pop {r4, r5, r6, pc}
_0224F988:
add r0, r4, #0
add r0, #0x34
ldrb r0, [r0]
add r4, #0x34
add r0, r0, r5
strb r0, [r4]
pop {r4, r5, r6, pc}
_0224F996:
add r0, r4, #0
add r0, #0x35
ldrb r0, [r0]
add r0, r0, r5
cmp r0, #0xff
ble _0224F9A6
mov r0, #0xff
b _0224F9AC
_0224F9A6:
cmp r0, #0
bge _0224F9AC
mov r0, #0
_0224F9AC:
add r4, #0x35
strb r0, [r4]
pop {r4, r5, r6, pc}
_0224F9B2:
ldr r0, [r4, #0x4c]
ldr r1, [r4, #0x50]
add r0, r0, r5
cmp r0, r1
bls _0224F9C0
str r1, [r4, #0x4c]
pop {r4, r5, r6, pc}
_0224F9C0:
str r0, [r4, #0x4c]
pop {r4, r5, r6, pc}
_0224F9C4:
ldr r0, [r4, #0x50]
add r0, r0, r5
str r0, [r4, #0x50]
pop {r4, r5, r6, pc}
_0224F9CC:
ldr r0, [r4, #0x64]
add r0, r0, r5
str r0, [r4, #0x64]
pop {r4, r5, r6, pc}
_0224F9D4:
ldr r0, [r4, #0x68]
add r0, r0, r5
str r0, [r4, #0x68]
pop {r4, r5, r6, pc}
_0224F9DC:
add r0, r4, #0
add r0, #0x88
ldr r2, [r0]
mov r1, #7
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x1d
lsr r1, r1, #0x1d
add r2, r1, r5
mov r1, #7
and r1, r2
orr r0, r1
add r4, #0x88
str r0, [r4]
pop {r4, r5, r6, pc}
_0224F9FA:
add r0, r4, #0
add r0, #0x88
ldr r2, [r0]
mov r1, #0x38
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x1a
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #0x1a
orr r0, r1
add r4, #0x88
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FA18:
add r0, r4, #0
add r0, #0x88
ldr r2, [r0]
mov r1, #0xc0
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x1e
add r1, r1, r5
lsl r1, r1, #0x1e
lsr r1, r1, #0x18
orr r0, r1
add r4, #0x88
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FA36:
add r0, r4, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224FC1C ; =0xFFFFF8FF
add r4, #0x88
and r0, r1
lsl r1, r1, #0x15
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #0x15
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FA52:
add r0, r4, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224FC20 ; =0xFFFFE7FF
add r4, #0x88
and r0, r1
lsl r1, r1, #0x13
lsr r1, r1, #0x1e
add r1, r1, r5
lsl r1, r1, #0x1e
lsr r1, r1, #0x13
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FA6E:
add r0, r4, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224FC24 ; =0xFFFF9FFF
add r4, #0x88
and r0, r1
lsl r1, r1, #0x11
lsr r1, r1, #0x1e
add r1, r1, r5
lsl r1, r1, #0x1e
lsr r1, r1, #0x11
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FA8A:
add r0, r4, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224FC28 ; =0xFFFC7FFF
add r4, #0x88
and r0, r1
lsl r1, r1, #0xe
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #0xe
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FAA6:
add r0, r4, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224FC2C ; =0xFFE3FFFF
add r4, #0x88
and r0, r1
lsl r1, r1, #0xb
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #0xb
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FAC2:
add r0, r4, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224FC30 ; =0xFF1FFFFF
add r4, #0x88
and r0, r1
lsl r1, r1, #8
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #8
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FADE:
add r0, r4, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224FC34 ; =0xF8FFFFFF
add r4, #0x88
and r0, r1
lsl r1, r1, #5
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #5
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FAFA:
add r0, r4, #0
add r0, #0x88
ldr r1, [r0]
ldr r0, _0224FC38 ; =0xC7FFFFFF
add r4, #0x88
and r0, r1
lsl r1, r1, #2
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #2
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FB16:
add r0, r4, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224FC3C ; =0xFFFFE3FF
add r4, #0x8c
and r0, r1
lsl r1, r1, #0x13
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #0x13
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FB32:
add r0, r4, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224FC40 ; =0xFFFF1FFF
add r4, #0x8c
and r0, r1
lsl r1, r1, #0x10
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #0x10
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FB4E:
add r0, r4, #0
add r0, #0x8c
ldr r1, [r0]
ldr r0, _0224FC44 ; =0xFFF8FFFF
add r4, #0x8c
and r0, r1
lsl r1, r1, #0xd
lsr r1, r1, #0x1d
add r1, r1, r5
lsl r1, r1, #0x1d
lsr r1, r1, #0xd
orr r0, r1
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FB6A:
add r0, r4, #0
add r0, #0x90
ldr r0, [r0]
add r4, #0x90
add r0, r0, r5
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FB78:
add r0, r4, #0
add r0, #0x94
ldr r0, [r0]
add r4, #0x94
add r0, r0, r5
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FB86:
add r0, r4, #0
add r0, #0x98
ldr r0, [r0]
add r4, #0x98
add r0, r0, r5
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FB94:
add r0, r4, #0
add r0, #0xa0
ldr r0, [r0]
add r4, #0xa0
add r0, r0, r5
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FBA2:
add r0, r4, #0
add r0, #0xbc
ldr r0, [r0]
add r4, #0xbc
add r0, r0, r5
str r0, [r4]
pop {r4, r5, r6, pc}
_0224FBB0:
ldr r2, [r4, #0x28]
mov r1, #0x40
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x19
lsr r1, r1, #0x1f
add r1, r1, r5
lsl r1, r1, #0x1f
lsr r1, r1, #0x19
orr r0, r1
str r0, [r4, #0x28]
pop {r4, r5, r6, pc}
_0224FBC8:
ldr r2, [r4, #0x28]
mov r1, #0x80
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x1f
add r1, r1, r5
lsl r1, r1, #0x1f
lsr r1, r1, #0x18
orr r0, r1
str r0, [r4, #0x28]
pop {r4, r5, r6, pc}
_0224FBE0:
add r0, r4, #0
add r0, #0x26
ldrb r2, [r0]
mov r1, #0x1f
add r4, #0x26
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x1b
lsr r1, r1, #0x1b
add r1, r1, r5
lsl r1, r1, #0x18
lsr r2, r1, #0x18
mov r1, #0x1f
and r1, r2
orr r0, r1
strb r0, [r4]
pop {r4, r5, r6, pc}
_0224FC02:
bl GF_AssertFail
pop {r4, r5, r6, pc}
.balign 4, 0
_0224FC08: .word 0xFFFFFC1F
_0224FC0C: .word 0xFFFF83FF
_0224FC10: .word 0xFFF07FFF
_0224FC14: .word 0xFE0FFFFF
_0224FC18: .word 0xC1FFFFFF
_0224FC1C: .word 0xFFFFF8FF
_0224FC20: .word 0xFFFFE7FF
_0224FC24: .word 0xFFFF9FFF
_0224FC28: .word 0xFFFC7FFF
_0224FC2C: .word 0xFFE3FFFF
_0224FC30: .word 0xFF1FFFFF
_0224FC34: .word 0xF8FFFFFF
_0224FC38: .word 0xC7FFFFFF
_0224FC3C: .word 0xFFFFE3FF
_0224FC40: .word 0xFFFF1FFF
_0224FC44: .word 0xFFF8FFFF
thumb_func_end ov12_0224F7AC
thumb_func_start ov12_0224FC48
ov12_0224FC48: ; 0x0224FC48
push {r4, r5, r6, r7, lr}
sub sp, #0x6c
str r0, [sp, #4]
ldr r0, [sp, #0x80]
str r3, [sp, #0xc]
str r0, [sp, #0x80]
mov r0, #0
str r0, [sp, #0x64]
str r0, [sp, #0x60]
ldr r0, [sp, #0x64]
str r2, [sp, #8]
str r0, [sp, #0x5c]
ldr r0, [sp, #0x64]
ldr r3, _0224FF44 ; =0x00002D8C
str r0, [sp, #0x48]
ldr r0, [sp, #0x64]
add r5, r1, #0
str r0, [sp, #0x44]
ldr r0, [sp, #0x64]
str r0, [sp, #0x40]
ldr r0, [sp, #0x64]
str r0, [sp, #0x3c]
ldr r0, [sp, #0x64]
str r0, [sp, #0x38]
ldr r0, [sp, #0x64]
str r0, [sp, #0x34]
mov r0, #0xc0
mul r2, r0
str r2, [sp, #0x18]
add r2, r5, r3
ldr r1, [sp, #0x18]
str r2, [sp, #0x68]
ldr r1, [r2, r1]
cmp r1, #0
bne _0224FCA0
ldr r2, [sp, #0xc]
mul r0, r2
add r0, r5, r0
ldr r0, [r0, r3]
cmp r0, #0
beq _0224FCA0
add sp, #0x6c
mov r0, #1
pop {r4, r5, r6, r7, pc}
_0224FCA0:
cmp r1, #0
beq _0224FCBA
ldr r0, [sp, #0xc]
mov r1, #0xc0
mul r1, r0
ldr r0, _0224FF44 ; =0x00002D8C
add r1, r5, r1
ldr r0, [r1, r0]
cmp r0, #0
bne _0224FCBA
add sp, #0x6c
mov r0, #0
pop {r4, r5, r6, r7, pc}
_0224FCBA:
ldr r1, [sp, #8]
add r0, r5, #0
bl GetBattlerAbility
str r0, [sp, #0x2c]
ldr r1, [sp, #0xc]
add r0, r5, #0
bl GetBattlerAbility
str r0, [sp, #0x28]
ldr r1, [sp, #8]
add r0, r5, #0
bl GetBattlerHeldItemEffect
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x58]
ldr r1, [sp, #8]
add r0, r5, #0
mov r2, #0
bl BattleSystem_GetHeldItemDamageBoost
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x54]
ldr r1, [sp, #0xc]
add r0, r5, #0
bl GetBattlerHeldItemEffect
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x50]
ldr r1, [sp, #0xc]
add r0, r5, #0
mov r2, #0
bl BattleSystem_GetHeldItemDamageBoost
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x4c]
ldr r0, [sp, #0x18]
ldr r2, _0224FF48 ; =0x00002D5B
add r0, r5, r0
ldrsb r4, [r0, r2]
ldr r0, [sp, #0xc]
mov r1, #0xc0
mul r1, r0
add r0, r5, r1
str r1, [sp, #0x14]
ldrsb r7, [r0, r2]
ldr r1, [sp, #8]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x56
bne _0224FD3C
sub r0, r4, #6
lsl r0, r0, #1
add r4, r0, #6
cmp r4, #0xc
ble _0224FD36
mov r4, #0xc
_0224FD36:
cmp r4, #0
bge _0224FD3C
mov r4, #0
_0224FD3C:
ldr r1, [sp, #0xc]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x56
bne _0224FD5A
sub r0, r7, #6
lsl r0, r0, #1
add r7, r0, #6
cmp r7, #0xc
ble _0224FD54
mov r7, #0xc
_0224FD54:
cmp r7, #0
bge _0224FD5A
mov r7, #0
_0224FD5A:
ldr r0, [sp, #0x18]
lsl r1, r4, #1
add r2, r5, r0
ldr r0, _0224FF4C ; =0x00002D46
ldrh r2, [r2, r0]
ldr r0, _0224FF50 ; =ov12_0226CB88
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _0224FF54 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
add r6, r0, #0
ldr r0, [sp, #0x14]
lsl r1, r7, #1
add r2, r5, r0
ldr r0, _0224FF4C ; =0x00002D46
ldrh r2, [r2, r0]
ldr r0, _0224FF50 ; =ov12_0226CB88
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _0224FF54 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
add r4, r0, #0
mov r0, #0xd
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _0224FE02
mov r0, #0x4c
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _0224FE02
ldr r0, [sp, #0x2c]
cmp r0, #0x21
bne _0224FDC8
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #3
tst r0, r1
bne _0224FDDA
_0224FDC8:
ldr r0, [sp, #0x2c]
cmp r0, #0x22
bne _0224FDDC
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #0x30
tst r0, r1
beq _0224FDDC
_0224FDDA:
lsl r6, r6, #1
_0224FDDC:
ldr r0, [sp, #0x28]
cmp r0, #0x21
bne _0224FDEE
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #3
tst r0, r1
bne _0224FE00
_0224FDEE:
ldr r0, [sp, #0x28]
cmp r0, #0x22
bne _0224FE02
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #0x30
tst r0, r1
beq _0224FE02
_0224FE00:
lsl r4, r4, #1
_0224FE02:
mov r0, #0
str r0, [sp, #0x24]
ldr r0, [sp, #0x18]
ldr r7, _0224FF58 ; =ov12_0226CB50
add r0, r5, r0
str r0, [sp, #0x1c]
_0224FE0E:
ldr r2, [sp, #0x1c]
ldr r1, _0224FF5C ; =0x00002DB8
add r0, r5, #0
ldrh r1, [r2, r1]
mov r2, #1
bl GetItemHoldEffect
ldrb r1, [r7]
cmp r1, r0
bne _0224FE26
lsr r6, r6, #1
b _0224FE32
_0224FE26:
ldr r0, [sp, #0x24]
add r7, r7, #1
add r0, r0, #1
str r0, [sp, #0x24]
cmp r0, #8
blo _0224FE0E
_0224FE32:
ldr r0, [sp, #0x58]
cmp r0, #0x73
bne _0224FE44
mov r0, #0xf
mul r0, r6
mov r1, #0xa
bl _u32_div_f
add r6, r0, #0
_0224FE44:
ldr r0, [sp, #0x58]
cmp r0, #0x66
bne _0224FE5A
ldr r0, [sp, #0x18]
add r1, r5, r0
mov r0, #0xb5
lsl r0, r0, #6
ldrh r0, [r1, r0]
cmp r0, #0x84
bne _0224FE5A
lsl r6, r6, #1
_0224FE5A:
ldr r0, [sp, #0x2c]
cmp r0, #0x5f
bne _0224FE7C
ldr r0, [sp, #0x18]
add r1, r5, r0
ldr r0, _0224FF60 ; =0x00002DAC
ldr r0, [r1, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _0224FE7C
mov r0, #0xf
mul r0, r6
mov r1, #0xa
bl _u32_div_f
add r6, r0, #0
b _0224FE8C
_0224FE7C:
ldr r0, [sp, #0x18]
add r1, r5, r0
ldr r0, _0224FF60 ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #0x40
tst r0, r1
beq _0224FE8C
lsr r6, r6, #2
_0224FE8C:
ldr r0, [sp, #0x2c]
cmp r0, #0x70
bne _0224FEA8
ldr r1, [sp, #0x18]
mov r0, #0x15
add r2, r5, r1
ldr r1, _0224FF64 ; =0x00002DD8
lsl r0, r0, #4
ldr r0, [r5, r0]
ldr r1, [r2, r1]
sub r0, r0, r1
cmp r0, #5
bge _0224FEA8
lsr r6, r6, #1
_0224FEA8:
ldr r0, [sp, #0x2c]
cmp r0, #0x54
bne _0224FEC6
ldr r0, [sp, #0x18]
add r2, r5, r0
ldr r0, _0224FF68 ; =0x00002DCC
ldr r1, [r2, r0]
lsl r1, r1, #9
lsr r1, r1, #0x1f
beq _0224FEC6
sub r0, #0x14
ldrh r0, [r2, r0]
cmp r0, #0
bne _0224FEC6
lsl r6, r6, #1
_0224FEC6:
ldr r0, [sp, #4]
ldr r1, [sp, #8]
bl BattleSys_GetFieldSide
lsl r0, r0, #2
add r1, r5, r0
mov r0, #0x6f
lsl r0, r0, #2
ldr r1, [r1, r0]
mov r0, #3
lsl r0, r0, #8
tst r0, r1
beq _0224FEE2
lsl r6, r6, #1
_0224FEE2:
ldr r0, [sp, #0x58]
cmp r0, #0x34
bne _0224FF20
ldr r1, [sp, #0x54]
mov r0, #0x64
bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #8]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _0224FF6C ; =0x0000310C
ldrh r0, [r2, r0]
bl _s32_div_f
cmp r1, #0
bne _0224FF20
mov r0, #1
str r0, [sp, #0x40]
ldr r0, [sp, #0x80]
cmp r0, #0
bne _0224FF20
ldr r0, _0224FF68 ; =0x00002DCC
ldr r1, [sp, #0x18]
add r0, r5, r0
ldr r2, [r0, r1]
mov r1, #2
lsl r1, r1, #0x1c
orr r2, r1
ldr r1, [sp, #0x18]
str r2, [r0, r1]
_0224FF20:
ldr r0, [sp, #0x58]
cmp r0, #0x2d
bne _0224FFA4
ldr r1, [sp, #8]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _0224FF3A
ldr r0, [sp, #0x54]
lsl r0, r0, #0x17
lsr r0, r0, #0x18
str r0, [sp, #0x54]
_0224FF3A:
ldr r0, [sp, #8]
mov r1, #0xc0
mul r1, r0
ldr r0, _0224FF70 ; =0x00002D90
b _0224FF74
.balign 4, 0
_0224FF44: .word 0x00002D8C
_0224FF48: .word 0x00002D5B
_0224FF4C: .word 0x00002D46
_0224FF50: .word ov12_0226CB88
_0224FF54: .word ov12_0226CB89
_0224FF58: .word ov12_0226CB50
_0224FF5C: .word 0x00002DB8
_0224FF60: .word 0x00002DAC
_0224FF64: .word 0x00002DD8
_0224FF68: .word 0x00002DCC
_0224FF6C: .word 0x0000310C
_0224FF70: .word 0x00002D90
_0224FF74:
add r1, r5, r1
ldr r0, [r1, r0]
ldr r1, [sp, #0x54]
bl _u32_div_f
ldr r2, [sp, #0x68]
ldr r1, [sp, #0x18]
ldr r1, [r2, r1]
cmp r1, r0
bhi _0224FFA4
mov r0, #1
str r0, [sp, #0x40]
ldr r0, [sp, #0x80]
cmp r0, #0
bne _0224FFA4
ldr r0, _0225026C ; =0x00002DCC
ldr r1, [sp, #0x18]
add r0, r5, r0
ldr r2, [r0, r1]
mov r1, #1
lsl r1, r1, #0x1c
orr r2, r1
ldr r1, [sp, #0x18]
str r2, [r0, r1]
_0224FFA4:
ldr r0, [sp, #0x58]
cmp r0, #0x6b
bne _0224FFAE
mov r0, #1
str r0, [sp, #0x38]
_0224FFAE:
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #0x14]
ldr r7, _02250270 ; =ov12_0226CB50
add r0, r5, r0
str r0, [sp, #0x20]
_0224FFBA:
ldr r2, [sp, #0x20]
ldr r1, _02250274 ; =0x00002DB8
add r0, r5, #0
ldrh r1, [r2, r1]
mov r2, #1
bl GetItemHoldEffect
ldrb r1, [r7]
cmp r1, r0
bne _0224FFD2
lsr r4, r4, #1
b _0224FFDE
_0224FFD2:
ldr r0, [sp, #0x10]
add r7, r7, #1
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #8
blo _0224FFBA
_0224FFDE:
ldr r0, [sp, #0x50]
cmp r0, #0x73
bne _0224FFF0
mov r0, #0xf
mul r0, r4
mov r1, #0xa
bl _u32_div_f
add r4, r0, #0
_0224FFF0:
ldr r0, [sp, #0x50]
cmp r0, #0x66
bne _02250006
ldr r0, [sp, #0x14]
add r1, r5, r0
mov r0, #0xb5
lsl r0, r0, #6
ldrh r0, [r1, r0]
cmp r0, #0x84
bne _02250006
lsl r4, r4, #1
_02250006:
ldr r0, [sp, #0x28]
cmp r0, #0x5f
bne _02250028
ldr r0, [sp, #0x14]
add r1, r5, r0
ldr r0, _02250278 ; =0x00002DAC
ldr r0, [r1, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _02250028
mov r0, #0xf
mul r0, r4
mov r1, #0xa
bl _u32_div_f
add r4, r0, #0
b _02250038
_02250028:
ldr r0, [sp, #0x14]
add r1, r5, r0
ldr r0, _02250278 ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #0x40
tst r0, r1
beq _02250038
lsr r4, r4, #2
_02250038:
ldr r0, [sp, #0x28]
cmp r0, #0x70
bne _02250054
ldr r1, [sp, #0x14]
mov r0, #0x15
add r2, r5, r1
ldr r1, _0225027C ; =0x00002DD8
lsl r0, r0, #4
ldr r0, [r5, r0]
ldr r1, [r2, r1]
sub r0, r0, r1
cmp r0, #5
bge _02250054
lsr r4, r4, #1
_02250054:
ldr r0, [sp, #0x28]
cmp r0, #0x54
bne _02250072
ldr r0, [sp, #0x14]
add r2, r5, r0
ldr r0, _0225026C ; =0x00002DCC
ldr r1, [r2, r0]
lsl r1, r1, #9
lsr r1, r1, #0x1f
beq _02250072
sub r0, #0x14
ldrh r0, [r2, r0]
cmp r0, #0
bne _02250072
lsl r4, r4, #1
_02250072:
ldr r0, [sp, #4]
ldr r1, [sp, #0xc]
bl BattleSys_GetFieldSide
lsl r0, r0, #2
add r1, r5, r0
mov r0, #0x6f
lsl r0, r0, #2
ldr r1, [r1, r0]
mov r0, #3
lsl r0, r0, #8
tst r0, r1
beq _0225008E
lsl r4, r4, #1
_0225008E:
ldr r0, [sp, #0x50]
cmp r0, #0x34
bne _022500CC
ldr r1, [sp, #0x4c]
mov r0, #0x64
bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #0xc]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _02250280 ; =0x0000310C
ldrh r0, [r2, r0]
bl _s32_div_f
cmp r1, #0
bne _022500CC
mov r0, #1
str r0, [sp, #0x3c]
ldr r0, [sp, #0x80]
cmp r0, #0
bne _022500CC
ldr r0, _0225026C ; =0x00002DCC
ldr r1, [sp, #0x14]
add r0, r5, r0
ldr r2, [r0, r1]
mov r1, #2
lsl r1, r1, #0x1c
orr r2, r1
ldr r1, [sp, #0x14]
str r2, [r0, r1]
_022500CC:
ldr r0, [sp, #0x50]
cmp r0, #0x2d
bne _02250120
ldr r1, [sp, #0xc]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _022500E6
ldr r0, [sp, #0x4c]
lsl r0, r0, #0x17
lsr r0, r0, #0x18
str r0, [sp, #0x4c]
_022500E6:
ldr r0, [sp, #0xc]
mov r1, #0xc0
add r7, r0, #0
mul r7, r1
ldr r0, _02250284 ; =0x00002D90
add r1, r5, r7
ldr r0, [r1, r0]
ldr r1, [sp, #0x4c]
bl _u32_div_f
ldr r1, _02250288 ; =0x00002D8C
add r2, r5, r7
ldr r2, [r2, r1]
cmp r2, r0
bhi _02250120
mov r0, #1
str r0, [sp, #0x3c]
ldr r0, [sp, #0x80]
cmp r0, #0
bne _02250120
add r1, #0x40
add r0, r5, r1
ldr r1, [sp, #0x14]
ldr r2, [r0, r1]
mov r1, #1
lsl r1, r1, #0x1c
orr r2, r1
ldr r1, [sp, #0x14]
str r2, [r0, r1]
_02250120:
ldr r0, [sp, #0x50]
cmp r0, #0x6b
bne _0225012A
mov r0, #1
str r0, [sp, #0x34]
_0225012A:
ldr r0, [sp, #8]
lsl r0, r0, #2
add r1, r5, r0
ldr r0, _0225028C ; =0x000021F0
str r6, [r1, r0]
ldr r1, [sp, #0xc]
lsl r1, r1, #2
add r1, r5, r1
str r4, [r1, r0]
ldr r1, [sp, #0x80]
cmp r1, #0
bne _022501E2
ldr r1, [sp, #0xc]
ldr r3, _02250290 ; =0x000030BC
lsl r1, r1, #4
add r2, r5, r1
add r1, r0, #0
sub r1, #0x3c
ldr r1, [r2, r1]
sub r0, #0x3c
str r1, [sp, #0x30]
ldr r1, [sp, #8]
lsl r1, r1, #1
add r1, r5, r1
ldrh r2, [r1, r3]
ldr r1, [sp, #0xc]
lsl r1, r1, #1
add r1, r5, r1
ldrh r7, [r1, r3]
ldr r1, [sp, #8]
lsl r1, r1, #4
add r1, r5, r1
ldr r0, [r1, r0]
cmp r0, #1
bne _0225019A
ldr r0, [sp, #8]
lsl r0, r0, #6
add r1, r5, r0
mov r0, #0x75
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
beq _02250188
mov r0, #0xa5
str r0, [sp, #0x60]
b _0225019A
_02250188:
ldr r1, [sp, #8]
add r0, r5, #0
add r2, r2, #6
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x60]
_0225019A:
ldr r0, [sp, #0x30]
cmp r0, #1
bne _022501CA
ldr r0, [sp, #0xc]
lsl r0, r0, #6
add r1, r5, r0
mov r0, #0x75
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
beq _022501B8
mov r0, #0xa5
str r0, [sp, #0x5c]
b _022501CA
_022501B8:
ldr r1, [sp, #0xc]
add r0, r5, #0
add r2, r7, #6
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x5c]
_022501CA:
ldr r0, [sp, #0x60]
mov r1, #0xfa
lsl r0, r0, #4
add r0, r5, r0
lsl r1, r1, #2
ldrsb r0, [r0, r1]
str r0, [sp, #0x48]
ldr r0, [sp, #0x5c]
lsl r0, r0, #4
add r0, r5, r0
ldrsb r0, [r0, r1]
str r0, [sp, #0x44]
_022501E2:
ldr r1, [sp, #0x48]
ldr r0, [sp, #0x44]
cmp r1, r0
beq _022501EC
b _02250352
_022501EC:
ldr r0, [sp, #0x40]
cmp r0, #0
beq _02250218
ldr r0, [sp, #0x3c]
cmp r0, #0
beq _02250218
cmp r6, r4
bhs _02250202
mov r0, #1
str r0, [sp, #0x64]
b _0225035A
_02250202:
cmp r6, r4
bne _02250256
ldr r0, [sp, #4]
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _02250256
mov r0, #2
str r0, [sp, #0x64]
b _0225035A
_02250218:
ldr r0, [sp, #0x40]
cmp r0, #0
bne _0225022A
ldr r0, [sp, #0x3c]
cmp r0, #0
beq _0225022A
mov r0, #1
str r0, [sp, #0x64]
b _0225035A
_0225022A:
ldr r0, [sp, #0x40]
cmp r0, #0
beq _0225023C
ldr r0, [sp, #0x3c]
cmp r0, #0
bne _0225023C
mov r0, #0
str r0, [sp, #0x64]
b _0225035A
_0225023C:
ldr r0, [sp, #0x38]
cmp r0, #0
beq _02250294
ldr r0, [sp, #0x34]
cmp r0, #0
beq _02250294
cmp r6, r4
bls _02250252
mov r0, #1
str r0, [sp, #0x64]
b _0225035A
_02250252:
cmp r6, r4
beq _02250258
_02250256:
b _0225035A
_02250258:
ldr r0, [sp, #4]
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _0225035A
mov r0, #2
str r0, [sp, #0x64]
b _0225035A
nop
_0225026C: .word 0x00002DCC
_02250270: .word ov12_0226CB50
_02250274: .word 0x00002DB8
_02250278: .word 0x00002DAC
_0225027C: .word 0x00002DD8
_02250280: .word 0x0000310C
_02250284: .word 0x00002D90
_02250288: .word 0x00002D8C
_0225028C: .word 0x000021F0
_02250290: .word 0x000030BC
_02250294:
ldr r0, [sp, #0x38]
cmp r0, #0
beq _022502A6
ldr r0, [sp, #0x34]
cmp r0, #0
bne _022502A6
mov r0, #1
str r0, [sp, #0x64]
b _0225035A
_022502A6:
ldr r0, [sp, #0x38]
cmp r0, #0
bne _022502B8
ldr r0, [sp, #0x34]
cmp r0, #0
beq _022502B8
mov r0, #0
str r0, [sp, #0x64]
b _0225035A
_022502B8:
ldr r0, [sp, #0x2c]
cmp r0, #0x64
bne _022502E4
ldr r0, [sp, #0x28]
cmp r0, #0x64
bne _022502E4
cmp r6, r4
bls _022502CE
mov r0, #1
str r0, [sp, #0x64]
b _0225035A
_022502CE:
cmp r6, r4
bne _0225035A
ldr r0, [sp, #4]
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _0225035A
mov r0, #2
str r0, [sp, #0x64]
b _0225035A
_022502E4:
ldr r0, [sp, #0x2c]
cmp r0, #0x64
bne _022502F6
ldr r0, [sp, #0x28]
cmp r0, #0x64
beq _022502F6
mov r0, #1
str r0, [sp, #0x64]
b _0225035A
_022502F6:
ldr r0, [sp, #0x2c]
cmp r0, #0x64
beq _02250308
ldr r0, [sp, #0x28]
cmp r0, #0x64
bne _02250308
mov r0, #0
str r0, [sp, #0x64]
b _0225035A
_02250308:
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #7
lsl r0, r0, #0x10
tst r0, r1
beq _02250334
cmp r6, r4
bls _0225031E
mov r0, #1
str r0, [sp, #0x64]
_0225031E:
cmp r6, r4
bne _0225035A
ldr r0, [sp, #4]
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _0225035A
mov r0, #2
str r0, [sp, #0x64]
b _0225035A
_02250334:
cmp r6, r4
bhs _0225033C
mov r0, #1
str r0, [sp, #0x64]
_0225033C:
cmp r6, r4
bne _0225035A
ldr r0, [sp, #4]
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _0225035A
mov r0, #2
str r0, [sp, #0x64]
b _0225035A
_02250352:
cmp r1, r0
bge _0225035A
mov r0, #1
str r0, [sp, #0x64]
_0225035A:
ldr r0, [sp, #0x64]
add sp, #0x6c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov12_0224FC48
thumb_func_start BattleSystem_ClearExperienceEarnFlags
BattleSystem_ClearExperienceEarnFlags: ; 0x02250360
asr r1, r1, #1
lsl r1, r1, #0x1f
lsr r1, r1, #0x1d
add r0, r0, r1
mov r2, #0
add r0, #0xa4
str r2, [r0]
bx lr
thumb_func_end BattleSystem_ClearExperienceEarnFlags
thumb_func_start BattleSystem_SetExperienceEarnFlags
BattleSystem_SetExperienceEarnFlags: ; 0x02250370
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r2, [sp]
add r5, r1, #0
mov r4, #0
bl BattleSys_GetBattleType
add r7, r0, #0
ldr r0, [sp]
mov r1, #0xc0
mul r1, r0
add r0, r5, r1
str r0, [sp, #4]
ldr r0, [sp]
asr r0, r0, #1
lsl r0, r0, #0x1f
lsr r0, r0, #0x1d
add r6, r5, r0
add r6, #0xa4
_02250396:
add r0, r4, #0
bl MaskOfFlagNo
ldr r1, _022503E0 ; =0x00003108
ldrb r1, [r5, r1]
tst r0, r1
bne _022503CC
ldr r0, [sp]
bl MaskOfFlagNo
ldr r1, _022503E0 ; =0x00003108
ldrb r1, [r5, r1]
tst r0, r1
bne _022503CC
ldr r1, [sp, #4]
ldr r0, _022503E4 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _022503CC
ldr r0, _022503E8 ; =0x0000219C
add r1, r5, r4
ldrb r0, [r1, r0]
bl MaskOfFlagNo
ldr r1, [r6]
orr r0, r1
str r0, [r6]
_022503CC:
add r4, r4, #2
cmp r7, #0x4a
beq _022503DA
cmp r7, #0x4b
beq _022503DA
cmp r4, #2
ble _02250396
_022503DA:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_022503E0: .word 0x00003108
_022503E4: .word 0x00002D8C
_022503E8: .word 0x0000219C
thumb_func_end BattleSystem_SetExperienceEarnFlags
thumb_func_start ov12_022503EC
ov12_022503EC: ; 0x022503EC
push {r4, r5, r6, lr}
ldr r0, _02250478 ; =0x00002170
add r5, r1, #0
add r4, r2, #0
ldr r2, [r5, r0]
mov r0, #2
lsl r0, r0, #0x1c
mov r6, #0
tst r0, r2
beq _0225041E
add r0, r5, #0
mov r1, #1
bl ov12_02258348
str r0, [r4]
ldr r0, _02250478 ; =0x00002170
add r1, r6, #0
str r1, [r5, r0]
sub r0, r0, #4
ldr r1, [r5, r0]
ldr r0, _0225047C ; =0x801FDA49
tst r0, r1
bne _02250472
mov r6, #1
b _02250472
_0225041E:
cmp r2, #0
beq _02250472
add r0, r5, #0
mov r1, #1
bl ov12_02258348
str r0, [r4]
add r0, r5, #0
add r0, #0x94
ldr r1, [r0]
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
ldr r0, _02250480 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _0225046C
ldr r1, _02250484 ; =0x0000216C
ldr r2, _0225047C ; =0x801FDA49
ldr r0, [r5, r1]
tst r2, r0
beq _0225046A
add r1, r1, #4
mov r2, #2
ldr r1, [r5, r1]
lsl r2, r2, #0x16
tst r2, r1
beq _0225045C
ldr r2, _02250488 ; =0x00040008
tst r2, r0
bne _0225046A
_0225045C:
mov r2, #1
lsl r2, r2, #0x1c
tst r1, r2
beq _0225046C
ldr r1, _0225048C ; =0x00010001
tst r0, r1
beq _0225046C
_0225046A:
mov r6, #1
_0225046C:
ldr r0, _02250478 ; =0x00002170
mov r1, #0
str r1, [r5, r0]
_02250472:
add r0, r6, #0
pop {r4, r5, r6, pc}
nop
_02250478: .word 0x00002170
_0225047C: .word 0x801FDA49
_02250480: .word 0x00002D8C
_02250484: .word 0x0000216C
_02250488: .word 0x00040008
_0225048C: .word 0x00010001
thumb_func_end ov12_022503EC
thumb_func_start ov12_02250490
ov12_02250490: ; 0x02250490
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
add r5, r1, #0
ldr r0, _022506B0 ; =0x00002174
add r4, r2, #0
ldr r2, [r5, r0]
mov r1, #2
lsl r1, r1, #0x1c
add r3, r2, #0
mov r6, #0
tst r3, r1
beq _022504C6
add r0, r5, #0
mov r1, #2
bl ov12_02258348
str r0, [r4]
ldr r0, _022506B0 ; =0x00002174
add r1, r6, #0
str r1, [r5, r0]
sub r0, #8
ldr r1, [r5, r0]
ldr r0, _022506B4 ; =0x801FDA49
tst r0, r1
bne _02250566
mov r6, #1
b _022506AA
_022504C6:
lsr r3, r1, #5
tst r3, r2
beq _022504FA
add r0, r5, #0
mov r1, #2
bl ov12_02258348
str r0, [r4]
ldr r0, _022506B0 ; =0x00002174
add r1, r6, #0
str r1, [r5, r0]
add r1, r5, #0
add r1, #0x94
ldr r1, [r1]
add r0, r5, #0
bl ov12_02256838
cmp r0, #0
bne _02250566
ldr r0, _022506B8 ; =0x0000216C
ldr r1, [r5, r0]
ldr r0, _022506B4 ; =0x801FDA49
tst r0, r1
bne _02250566
mov r6, #1
b _022506AA
_022504FA:
lsr r3, r1, #4
tst r3, r2
beq _0225053C
add r0, r5, #0
mov r1, #2
bl ov12_02258348
str r0, [r4]
ldr r0, _022506B0 ; =0x00002174
add r1, r6, #0
str r1, [r5, r0]
add r0, r5, #0
add r0, #0x94
ldr r1, [r0]
mov r0, #0xc0
mul r0, r1
add r2, r5, r0
ldr r0, _022506BC ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _02250566
add r0, r5, #0
bl ov12_02256838
cmp r0, #0
bne _02250566
ldr r0, _022506B8 ; =0x0000216C
ldr r1, [r5, r0]
ldr r0, _022506B4 ; =0x801FDA49
tst r0, r1
bne _02250566
mov r6, #1
b _022506AA
_0225053C:
lsr r3, r1, #1
tst r3, r2
beq _0225056C
add r0, r5, #0
mov r1, #2
bl ov12_02258348
str r0, [r4]
ldr r0, _022506B0 ; =0x00002174
add r1, r6, #0
str r1, [r5, r0]
add r0, r5, #0
add r0, #0x94
ldr r1, [r0]
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
ldr r0, _022506BC ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
bne _02250568
_02250566:
b _022506AA
_02250568:
mov r6, #1
b _022506AA
_0225056C:
lsr r1, r1, #3
tst r1, r2
beq _022505F8
ldr r1, [r5, #0x64]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x20
ldr r0, _022506C0 ; =0x00003044
bne _02250590
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _022506C4 ; =0x000003E5
ldrb r0, [r1, r0]
lsl r0, r0, #0x11
lsr r6, r0, #0x10
b _0225059A
_02250590:
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _022506C4 ; =0x000003E5
ldrb r6, [r1, r0]
_0225059A:
cmp r6, #0
bne _022505A2
bl GF_AssertFail
_022505A2:
ldr r0, [sp]
bl BattleSys_Random
mov r1, #0x64
bl _s32_div_f
cmp r1, r6
bge _022505BE
ldr r1, _022506C8 ; =0x0000213C
mov r0, #1
ldr r2, [r5, r1]
lsl r0, r0, #0x16
orr r0, r2
str r0, [r5, r1]
_022505BE:
ldr r2, _022506B0 ; =0x00002174
add r0, r5, #0
ldr r2, [r5, r2]
mov r1, #2
bl ov12_02258348
str r0, [r4]
ldr r1, _022506B0 ; =0x00002174
mov r0, #0
str r0, [r5, r1]
add r0, r5, #0
add r0, #0x94
ldr r2, [r0]
mov r0, #0xc0
mul r0, r2
add r2, r5, r0
ldr r0, _022506BC ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
bne _022505F4
add r0, r1, #0
sub r0, #0x38
ldr r2, [r5, r0]
ldr r0, _022506CC ; =0xFFBFFFFF
sub r1, #0x38
and r0, r2
str r0, [r5, r1]
_022505F4:
mov r6, #1
b _022506AA
_022505F8:
cmp r2, #0
beq _0225067C
ldr r1, [r5, #0x64]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x20
ldr r0, _022506C0 ; =0x00003044
bne _0225061A
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _022506C4 ; =0x000003E5
ldrb r0, [r1, r0]
lsl r0, r0, #0x11
lsr r7, r0, #0x10
b _02250624
_0225061A:
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _022506C4 ; =0x000003E5
ldrb r7, [r1, r0]
_02250624:
cmp r7, #0
bne _0225062C
bl GF_AssertFail
_0225062C:
ldr r0, [sp]
bl BattleSys_Random
mov r1, #0x64
bl _s32_div_f
cmp r1, r7
bge _022506AA
ldr r2, _022506B0 ; =0x00002174
add r0, r5, #0
ldr r2, [r5, r2]
mov r1, #2
bl ov12_02258348
str r0, [r4]
ldr r0, _022506B0 ; =0x00002174
mov r1, #0
str r1, [r5, r0]
add r0, r5, #0
add r0, #0x94
ldr r1, [r0]
mov r0, #0xc0
mul r0, r1
add r2, r5, r0
ldr r0, _022506BC ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _022506AA
add r0, r5, #0
bl ov12_02256838
cmp r0, #0
bne _022506AA
ldr r0, _022506B8 ; =0x0000216C
ldr r1, [r5, r0]
ldr r0, _022506B4 ; =0x801FDA49
tst r0, r1
bne _022506AA
mov r6, #1
b _022506AA
_0225067C:
add r0, r0, #4
ldr r2, [r5, r0]
cmp r2, #0
beq _022506AA
add r0, r5, #0
mov r1, #3
bl ov12_02258348
str r0, [r4]
ldr r0, _022506D0 ; =0x00002178
add r1, r6, #0
str r1, [r5, r0]
add r0, r5, #0
add r0, #0x94
ldr r1, [r0]
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
ldr r0, _022506BC ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _022506AA
mov r6, #1
_022506AA:
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_022506B0: .word 0x00002174
_022506B4: .word 0x801FDA49
_022506B8: .word 0x0000216C
_022506BC: .word 0x00002D8C
_022506C0: .word 0x00003044
_022506C4: .word 0x000003E5
_022506C8: .word 0x0000213C
_022506CC: .word 0xFFBFFFFF
_022506D0: .word 0x00002178
thumb_func_end ov12_02250490
thumb_func_start ov12_022506D4
ov12_022506D4: ; 0x022506D4
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r6, r0, #0
mov r0, #0xff
add r4, r1, #0
add r5, r2, #0
str r0, [sp, #0xc]
cmp r3, #0
beq _022506F0
lsl r0, r3, #4
add r1, r4, r0
ldr r0, _0225099C ; =0x000003E6
ldrh r0, [r1, r0]
b _022506F2
_022506F0:
ldr r0, [sp, #0x34]
_022506F2:
cmp r0, #4
bne _02250782
add r0, r6, #0
bl BattleSys_GetMaxBattlers
str r0, [sp, #8]
add r0, r6, #0
add r1, r5, #0
bl BattleSys_GetOpponentDataByBattlerId
bl ov12_02261258
ldr r1, _022509A0 ; =0x0000217E
mov r2, #0
strb r2, [r4, r1]
ldrb r1, [r4, r1]
ldr r2, [sp, #8]
cmp r1, r2
bge _02250770
mov r2, #1
add r5, r0, #0
and r5, r2
_0225071E:
ldr r0, _022509A4 ; =0x000021EC
add r1, r4, r1
ldrb r7, [r1, r0]
mov r0, #0xc0
mul r0, r7
add r1, r4, r0
ldr r0, _022509A8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _0225075E
add r0, r6, #0
add r1, r7, #0
bl BattleSys_GetOpponentDataByBattlerId
str r0, [sp]
cmp r5, #0
beq _0225074A
bl ov12_02261258
mov r1, #1
tst r0, r1
beq _0225075A
_0225074A:
cmp r5, #0
bne _0225075E
ldr r0, [sp]
bl ov12_02261258
mov r1, #1
tst r0, r1
beq _0225075E
_0225075A:
str r7, [sp, #0xc]
b _02250770
_0225075E:
ldr r0, _022509A0 ; =0x0000217E
ldrb r0, [r4, r0]
add r1, r0, #1
ldr r0, _022509A0 ; =0x0000217E
strb r1, [r4, r0]
ldrb r1, [r4, r0]
ldr r0, [sp, #8]
cmp r1, r0
blt _0225071E
_02250770:
ldr r1, _022509A0 ; =0x0000217E
ldr r0, [sp, #8]
ldrb r2, [r4, r1]
cmp r2, r0
bne _0225077C
b _02250A0C
_0225077C:
add r0, r2, #1
strb r0, [r4, r1]
b _02250A0C
_02250782:
cmp r0, #8
bne _022507D2
add r0, r6, #0
bl BattleSys_GetMaxBattlers
add r2, r0, #0
ldr r0, _022509A0 ; =0x0000217E
mov r1, #0
strb r1, [r4, r0]
ldrb r3, [r4, r0]
cmp r3, r2
bge _022507C4
ldr r7, _022509A8 ; =0x00002D8C
_0225079C:
ldr r1, _022509A4 ; =0x000021EC
add r6, r4, r3
ldrb r1, [r6, r1]
mov r6, #0xc0
mul r6, r1
add r6, r4, r6
ldr r6, [r6, r7]
cmp r6, #0
beq _022507B6
cmp r1, r5
beq _022507B6
str r1, [sp, #0xc]
b _022507C4
_022507B6:
ldrb r1, [r4, r0]
add r1, r1, #1
strb r1, [r4, r0]
ldr r1, _022509A0 ; =0x0000217E
ldrb r3, [r4, r1]
cmp r3, r2
blt _0225079C
_022507C4:
cmp r3, r2
beq _022508B0
ldr r0, _022509A0 ; =0x0000217E
ldrb r1, [r4, r0]
add r1, r1, #1
strb r1, [r4, r0]
b _02250A0C
_022507D2:
mov r1, #2
lsl r1, r1, #8
cmp r0, r1
bne _02250820
ldr r1, [sp, #0x30]
cmp r1, #1
bne _02250820
add r0, r6, #0
bl BattleSys_GetBattleType
mov r1, #2
tst r0, r1
beq _0225081C
add r0, r6, #0
bl BattleSys_Random
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
bne _0225081C
add r0, r6, #0
add r1, r5, #0
bl BattleSys_GetBattlerIdPartner
mov r1, #0xc0
mul r1, r0
str r0, [sp, #0xc]
ldr r0, _022509A8 ; =0x00002D8C
add r1, r4, r1
ldr r0, [r1, r0]
cmp r0, #0
bne _022508B0
str r5, [sp, #0xc]
b _02250A0C
_0225081C:
str r5, [sp, #0xc]
b _02250A0C
_02250820:
mov r1, #1
lsl r1, r1, #0xa
cmp r0, r1
bne _0225083C
ldr r1, [sp, #0x30]
cmp r1, #1
bne _0225083C
add r0, r6, #0
add r1, r4, #0
add r2, r5, #0
bl ov12_02253DA0
str r0, [sp, #0xc]
b _02250A0C
_0225083C:
cmp r0, #0x80
bne _0225084E
add r0, r6, #0
add r1, r4, #0
add r2, r5, #0
bl ov12_02253DA0
str r0, [sp, #0xc]
b _02250A0C
_0225084E:
cmp r0, #0x10
beq _0225085E
cmp r0, #0x20
beq _0225085E
cmp r0, #1
beq _0225085E
cmp r0, #0x40
bne _02250862
_0225085E:
str r5, [sp, #0xc]
b _02250A0C
_02250862:
mov r1, #1
lsl r1, r1, #8
cmp r0, r1
bne _02250886
add r0, r6, #0
bl BattleSys_GetBattleType
mov r1, #2
tst r0, r1
beq _02250882
add r0, r6, #0
add r1, r5, #0
bl BattleSys_GetBattlerIdPartner
str r0, [sp, #0xc]
b _02250A0C
_02250882:
str r5, [sp, #0xc]
b _02250A0C
_02250886:
lsl r1, r1, #1
cmp r0, r1
bne _022508BA
add r0, r6, #0
bl BattleSys_GetBattleType
mov r1, #2
tst r0, r1
beq _022508B6
lsl r0, r5, #4
add r1, r4, r0
ldr r0, _022509AC ; =0x000021AC
ldr r0, [r1, r0]
mov r1, #0xc0
mul r1, r0
str r0, [sp, #0xc]
ldr r0, _022509A8 ; =0x00002D8C
add r1, r4, r1
ldr r0, [r1, r0]
cmp r0, #0
beq _022508B2
_022508B0:
b _02250A0C
_022508B2:
str r5, [sp, #0xc]
b _02250A0C
_022508B6:
str r5, [sp, #0xc]
b _02250A0C
_022508BA:
cmp r0, #2
beq _022508C4
ldr r0, [sp, #0x30]
cmp r0, #1
bne _02250986
_022508C4:
add r0, r6, #0
bl BattleSys_GetBattleType
str r0, [sp, #0x10]
add r0, r6, #0
add r1, r5, #0
bl BattleSys_GetFieldSide
add r7, r0, #0
mov r1, #1
eor r7, r1
add r0, r6, #0
add r1, r5, #0
mov r2, #0
bl ov12_0223ABB8
str r0, [sp, #0x14]
add r0, r6, #0
add r1, r5, #0
mov r2, #2
bl ov12_0223ABB8
str r0, [sp, #0x18]
ldr r0, [sp, #0x10]
mov r1, #2
tst r0, r1
beq _0225096E
mov r0, #0x71
lsl r0, r0, #2
add r1, r4, r0
lsl r0, r7, #3
ldr r0, [r1, r0]
lsl r1, r0, #0xb
lsr r1, r1, #0x1f
beq _02250920
lsl r0, r0, #9
lsr r0, r0, #0x1e
mov r1, #0xc0
mul r1, r0
add r2, r4, r1
ldr r1, _022509A8 ; =0x00002D8C
ldr r1, [r2, r1]
cmp r1, #0
beq _02250920
str r0, [sp, #0xc]
b _02250A0C
_02250920:
ldr r0, [sp, #0x14]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
add r0, r4, r2
ldr r2, _022509A8 ; =0x00002D8C
ldr r0, [r0, r2]
cmp r0, #0
beq _02250950
ldr r3, [sp, #0x18]
mul r1, r3
add r1, r4, r1
ldr r1, [r1, r2]
cmp r1, #0
beq _02250950
add r0, r6, #0
bl BattleSys_Random
lsl r0, r0, #0x1f
lsr r1, r0, #0x1d
add r0, sp, #0x14
ldr r0, [r0, r1]
str r0, [sp, #0xc]
b _02250A0C
_02250950:
cmp r0, #0
beq _0225095A
ldr r0, [sp, #0x14]
str r0, [sp, #0xc]
b _02250A0C
_0225095A:
ldr r2, [sp, #0x18]
mov r0, #0xc0
mul r0, r2
add r1, r4, r0
ldr r0, _022509A8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02250A0C
str r2, [sp, #0xc]
b _02250A0C
_0225096E:
mov r0, #1
add r2, r5, #0
eor r2, r0
mov r0, #0xc0
mul r0, r2
add r1, r4, r0
ldr r0, _022509A8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02250A0C
str r2, [sp, #0xc]
b _02250A0C
_02250986:
add r0, r6, #0
add r1, r5, #0
bl BattleSys_GetFieldSide
mov r1, #1
eor r0, r1
str r0, [sp, #4]
lsl r0, r5, #4
add r1, r4, r0
ldr r0, _022509AC ; =0x000021AC
b _022509B0
.balign 4, 0
_0225099C: .word 0x000003E6
_022509A0: .word 0x0000217E
_022509A4: .word 0x000021EC
_022509A8: .word 0x00002D8C
_022509AC: .word 0x000021AC
_022509B0:
ldr r7, [r1, r0]
add r0, r6, #0
bl BattleSys_GetMaxBattlers
mov r0, #0x71
lsl r0, r0, #2
add r1, r4, r0
ldr r0, [sp, #4]
lsl r0, r0, #3
ldr r0, [r1, r0]
lsl r1, r0, #0xb
lsr r1, r1, #0x1f
beq _022509E0
lsl r0, r0, #9
lsr r0, r0, #0x1e
mov r1, #0xc0
mul r1, r0
add r2, r4, r1
ldr r1, _02250A14 ; =0x00002D8C
ldr r1, [r2, r1]
cmp r1, #0
beq _022509E0
str r0, [sp, #0xc]
b _02250A0C
_022509E0:
mov r0, #0xc0
mul r0, r7
add r1, r4, r0
ldr r0, _02250A14 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _022509F2
str r7, [sp, #0xc]
b _02250A0C
_022509F2:
add r0, r6, #0
add r1, r4, #0
add r2, r5, #0
bl ov12_02253DA0
mov r1, #0xc0
mul r1, r0
add r2, r4, r1
ldr r1, _02250A14 ; =0x00002D8C
ldr r1, [r2, r1]
cmp r1, #0
beq _02250A0C
str r0, [sp, #0xc]
_02250A0C:
ldr r0, [sp, #0xc]
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
_02250A14: .word 0x00002D8C
thumb_func_end ov12_022506D4
thumb_func_start ov12_02250A18
ov12_02250A18: ; 0x02250A18
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r1, #0
str r0, [sp, #4]
ldr r0, [r5, #0x6c]
add r7, r2, #0
add r6, r3, #0
cmp r0, #0xff
beq _02250A72
add r0, r5, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x60
beq _02250A72
add r0, r5, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x68
beq _02250A72
ldr r0, [sp, #4]
add r1, r7, #0
bl BattleSys_GetFieldSide
add r2, r0, #0
mov r1, #1
mov r0, #0x71
eor r2, r1
lsl r0, r0, #2
add r1, r5, r0
lsl r0, r2, #3
ldr r0, [r1, r0]
lsl r1, r0, #0xb
lsr r1, r1, #0x1f
beq _02250A74
lsl r0, r0, #9
lsr r1, r0, #0x1e
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
ldr r0, _02250BA8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02250A74
_02250A72:
b _02250BA4
_02250A74:
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r7, #0
add r3, r6, #0
bl ov12_02258688
str r0, [sp, #0xc]
cmp r0, #0
bne _02250A90
lsl r0, r6, #4
add r1, r5, r0
ldr r0, _02250BAC ; =0x000003E2
ldrb r0, [r1, r0]
str r0, [sp, #0xc]
_02250A90:
ldr r0, [sp, #4]
bl BattleSys_GetMaxBattlers
str r0, [sp, #8]
ldr r0, [sp, #0xc]
cmp r0, #0xd
bne _02250B20
lsl r0, r6, #4
add r1, r5, r0
ldr r0, _02250BB0 ; =0x000003E6
ldrh r0, [r1, r0]
cmp r0, #0
beq _02250AAE
cmp r0, #2
bne _02250B20
_02250AAE:
ldr r0, _02250BB4 ; =0x0000213C
ldr r1, [r5, r0]
mov r0, #0x20
tst r0, r1
bne _02250B20
mov r0, #0x1f
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #9
add r3, r7, #0
bl CheckAbilityActive
cmp r0, #0
beq _02250B20
ldr r0, [sp, #8]
mov r6, #0
cmp r0, #0
ble _02250B00
_02250AD4:
ldr r0, _02250BB8 ; =0x000021EC
add r1, r5, r6
ldrb r4, [r1, r0]
add r0, r5, #0
add r1, r4, #0
bl GetBattlerAbility
cmp r0, #0x1f
bne _02250AF8
mov r0, #0xc0
mul r0, r4
add r1, r5, r0
ldr r0, _02250BA8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02250AF8
cmp r7, r4
bne _02250B00
_02250AF8:
ldr r0, [sp, #8]
add r6, r6, #1
cmp r6, r0
blt _02250AD4
_02250B00:
ldr r0, [r5, #0x6c]
cmp r4, r0
beq _02250BA4
mov r0, #0xb5
lsl r0, r0, #2
add r3, r5, r0
mov r0, #0x1c
add r2, r4, #0
mul r2, r0
ldr r1, [r3, r2]
mov r0, #2
orr r0, r1
str r0, [r3, r2]
add sp, #0x10
str r4, [r5, #0x6c]
pop {r3, r4, r5, r6, r7, pc}
_02250B20:
ldr r0, [sp, #0xc]
cmp r0, #0xb
bne _02250BA4
lsl r0, r6, #4
add r1, r5, r0
ldr r0, _02250BB0 ; =0x000003E6
ldrh r0, [r1, r0]
cmp r0, #0
beq _02250B36
cmp r0, #2
bne _02250BA4
_02250B36:
ldr r0, _02250BB4 ; =0x0000213C
ldr r1, [r5, r0]
mov r0, #0x20
tst r0, r1
bne _02250BA4
mov r0, #0x72
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #9
add r3, r7, #0
bl CheckAbilityActive
cmp r0, #0
beq _02250BA4
ldr r0, [sp, #8]
mov r6, #0
cmp r0, #0
ble _02250B88
_02250B5C:
ldr r0, _02250BB8 ; =0x000021EC
add r1, r5, r6
ldrb r4, [r1, r0]
add r0, r5, #0
add r1, r4, #0
bl GetBattlerAbility
cmp r0, #0x72
bne _02250B80
mov r0, #0xc0
mul r0, r4
add r1, r5, r0
ldr r0, _02250BA8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02250B80
cmp r7, r4
bne _02250B88
_02250B80:
ldr r0, [sp, #8]
add r6, r6, #1
cmp r6, r0
blt _02250B5C
_02250B88:
ldr r0, [r5, #0x6c]
cmp r4, r0
beq _02250BA4
mov r0, #0xb5
lsl r0, r0, #2
add r3, r5, r0
mov r0, #0x1c
add r2, r4, #0
mul r2, r0
ldr r1, [r3, r2]
mov r0, #4
orr r0, r1
str r0, [r3, r2]
str r4, [r5, #0x6c]
_02250BA4:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02250BA8: .word 0x00002D8C
_02250BAC: .word 0x000003E2
_02250BB0: .word 0x000003E6
_02250BB4: .word 0x0000213C
_02250BB8: .word 0x000021EC
thumb_func_end ov12_02250A18
thumb_func_start ov12_02250BBC
ov12_02250BBC: ; 0x02250BBC
push {r3, r4, r5, lr}
ldr r0, _02250C38 ; =0x0000216C
add r4, r1, #0
ldr r1, [r4, r0]
ldr r0, _02250C3C ; =0x801FDA49
mov r2, #0
tst r0, r1
bne _02250BFA
mov r0, #0xb5
lsl r0, r0, #2
add r1, r4, r0
ldr r3, [r4, #0x6c]
mov r0, #0x1c
mul r0, r3
ldr r3, [r1, r0]
lsl r5, r3, #0x1e
lsr r5, r5, #0x1f
beq _02250BFA
mov r2, #2
bic r3, r2
str r3, [r1, r0]
add r0, r4, #0
mov r1, #1
mov r2, #0xb4
bl ReadBattleScriptFromNarc
ldr r0, [r4, #8]
mov r2, #1
str r0, [r4, #0xc]
mov r0, #0x16
str r0, [r4, #8]
_02250BFA:
ldr r0, _02250C38 ; =0x0000216C
ldr r1, [r4, r0]
ldr r0, _02250C3C ; =0x801FDA49
tst r0, r1
bne _02250C32
mov r0, #0xb5
lsl r0, r0, #2
add r1, r4, r0
ldr r3, [r4, #0x6c]
mov r0, #0x1c
mul r0, r3
ldr r3, [r1, r0]
lsl r5, r3, #0x1d
lsr r5, r5, #0x1f
beq _02250C32
mov r2, #4
bic r3, r2
str r3, [r1, r0]
add r0, r4, #0
mov r1, #1
mov r2, #0xb4
bl ReadBattleScriptFromNarc
ldr r0, [r4, #8]
mov r2, #1
str r0, [r4, #0xc]
mov r0, #0x16
str r0, [r4, #8]
_02250C32:
add r0, r2, #0
pop {r3, r4, r5, pc}
nop
_02250C38: .word 0x0000216C
_02250C3C: .word 0x801FDA49
thumb_func_end ov12_02250BBC
thumb_func_start CopyBattleMonToPartyMon
CopyBattleMonToPartyMon: ; 0x02250C40
push {r4, r5, r6, lr}
add r6, r0, #0
add r4, r2, #0
mov r0, #0xc0
add r5, r1, #0
mul r0, r4
add r1, r5, r0
ldr r0, _02250C6C ; =0x00002DB8
ldrh r0, [r1, r0]
cmp r0, #0
bne _02250C60
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov12_022585A8
_02250C60:
add r0, r6, #0
add r1, r5, #0
add r2, r4, #0
bl BattleController_EmitBattleMonToPartyMonCopy
pop {r4, r5, r6, pc}
.balign 4, 0
_02250C6C: .word 0x00002DB8
thumb_func_end CopyBattleMonToPartyMon
thumb_func_start LockBattlerIntoCurrentMove
LockBattlerIntoCurrentMove: ; 0x02250C70
push {r4, r5}
ldr r0, _02250C98 ; =0x00002DB0
add r4, r2, #0
add r5, r1, r0
mov r0, #0xc0
mul r4, r0
mov r0, #1
ldr r3, [r5, r4]
lsl r0, r0, #0xc
orr r0, r3
str r0, [r5, r4]
ldr r0, _02250C9C ; =0x00003044
lsl r2, r2, #2
ldr r3, [r1, r0]
add r1, r1, r2
add r0, #8
str r3, [r1, r0]
pop {r4, r5}
bx lr
nop
_02250C98: .word 0x00002DB0
_02250C9C: .word 0x00003044
thumb_func_end LockBattlerIntoCurrentMove
thumb_func_start UnlockBattlerOutOfCurrentMove
UnlockBattlerOutOfCurrentMove: ; 0x02250CA0
push {r4, r5}
ldr r4, _02250CE4 ; =0x00002DB0
add r3, r2, #0
mov r0, #0xc0
mul r3, r0
add r0, r1, r4
ldr r5, [r0, r3]
ldr r2, _02250CE8 ; =0xFFFFEFFF
and r2, r5
str r2, [r0, r3]
ldr r5, [r0, r3]
ldr r2, _02250CEC ; =0xFFFFFCFF
and r2, r5
str r2, [r0, r3]
add r0, r4, #0
add r0, #0x10
add r5, r1, r0
ldr r2, [r5, r3]
ldr r0, _02250CF0 ; =0xDFFBFF3F
add r4, #0x18
and r0, r2
str r0, [r5, r3]
add r2, r1, r4
ldr r1, [r2, r3]
ldr r0, _02250CF4 ; =0xFFFC7FFF
and r0, r1
str r0, [r2, r3]
ldr r1, [r2, r3]
ldr r0, _02250CF8 ; =0xFFE3FFFF
and r0, r1
str r0, [r2, r3]
pop {r4, r5}
bx lr
nop
_02250CE4: .word 0x00002DB0
_02250CE8: .word 0xFFFFEFFF
_02250CEC: .word 0xFFFFFCFF
_02250CF0: .word 0xDFFBFF3F
_02250CF4: .word 0xFFFC7FFF
_02250CF8: .word 0xFFE3FFFF
thumb_func_end UnlockBattlerOutOfCurrentMove
thumb_func_start ov12_02250CFC
ov12_02250CFC: ; 0x02250CFC
mov r2, #0xc0
mul r2, r1
add r1, r0, r2
ldr r0, _02250D48 ; =0x00002DAC
ldr r0, [r1, r0]
mov r1, #7
tst r1, r0
beq _02250D10
mov r0, #1
bx lr
_02250D10:
mov r1, #8
tst r1, r0
beq _02250D1A
mov r0, #2
bx lr
_02250D1A:
mov r1, #0x10
tst r1, r0
beq _02250D24
mov r0, #3
bx lr
_02250D24:
mov r1, #0x20
tst r1, r0
beq _02250D2E
mov r0, #4
bx lr
_02250D2E:
mov r1, #0x40
tst r1, r0
beq _02250D38
mov r0, #5
bx lr
_02250D38:
mov r1, #0x80
tst r0, r1
beq _02250D42
mov r0, #2
bx lr
_02250D42:
mov r0, #0
bx lr
nop
_02250D48: .word 0x00002DAC
thumb_func_end ov12_02250CFC
thumb_func_start ov12_02250D4C
ov12_02250D4C: ; 0x02250D4C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
add r7, r1, #0
bl BattleSys_GetBattleType
mov r1, #0x84
tst r1, r0
beq _02250D64
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_02250D64:
mov r1, #1
add r2, r0, #0
tst r2, r1
bne _02250D72
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_02250D72:
mov r2, #2
tst r0, r2
beq _02250D7E
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_02250D7E:
ldr r0, [sp]
bl BattleSys_GetTrainerIndex
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #4]
_02250D8A:
ldr r0, [sp, #4]
cmp r0, #4
bls _02250D92
b _02250F28
_02250D92:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02250D9E: ; jump table
.short _02250DA8 - _02250D9E - 2 ; case 0
.short _02250DEC - _02250D9E - 2 ; case 1
.short _02250E34 - _02250D9E - 2 ; case 2
.short _02250EA8 - _02250D9E - 2 ; case 3
.short _02250F28 - _02250D9E - 2 ; case 4
_02250DA8:
ldr r0, _02250F38 ; =0x00002E7C
ldrb r0, [r7, r0]
cmp r0, #1
bne _02250DE4
mov r0, #0x85
lsl r0, r0, #6
ldr r1, [r7, r0]
mov r0, #0x20
tst r0, r1
bne _02250DE4
ldr r0, [sp, #8]
mov r1, #0xd
mov r2, #5
bl TrainerMessageWithIdPairExists
cmp r0, #0
beq _02250DE4
mov r1, #0x85
lsl r1, r1, #6
ldr r2, [r7, r1]
mov r0, #0x20
orr r0, r2
str r0, [r7, r1]
mov r0, #0x13
mov r1, #0xd
lsl r0, r0, #4
str r1, [r7, r0]
add sp, #0xc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02250DE4:
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
b _02250F28
_02250DEC:
ldr r1, _02250F3C ; =0x00002E7D
mov r0, #2
ldrb r2, [r7, r1]
tst r0, r2
bne _02250E2C
add r0, r1, #0
sub r0, #0x31
sub r1, #0x2d
ldr r2, [r7, r0]
ldr r0, [r7, r1]
lsr r0, r0, #1
cmp r2, r0
bhi _02250E2C
ldr r0, [sp, #8]
mov r1, #0xe
mov r2, #5
bl TrainerMessageWithIdPairExists
cmp r0, #0
beq _02250E2C
ldr r1, _02250F3C ; =0x00002E7D
mov r0, #2
ldrb r2, [r7, r1]
add sp, #0xc
orr r0, r2
strb r0, [r7, r1]
mov r0, #0x13
mov r1, #0xe
lsl r0, r0, #4
str r1, [r7, r0]
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02250E2C:
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
b _02250F28
_02250E34:
ldr r0, _02250F3C ; =0x00002E7D
ldrb r1, [r7, r0]
mov r0, #3
tst r0, r1
bne _02250EA0
ldr r0, [sp]
mov r1, #1
bl BattleSys_GetParty
mov r6, #0
add r5, r0, #0
add r4, r6, #0
bl GetPartyCount
cmp r0, #0
ble _02250E76
_02250E54:
add r0, r5, #0
add r1, r4, #0
bl GetPartyMonByIndex
mov r1, #0xa3
mov r2, #0
bl GetMonData
cmp r0, #0
beq _02250E6A
add r6, r6, #1
_02250E6A:
add r0, r5, #0
add r4, r4, #1
bl GetPartyCount
cmp r4, r0
blt _02250E54
_02250E76:
cmp r6, #1
bne _02250EA0
ldr r0, [sp, #8]
mov r1, #0xf
mov r2, #5
bl TrainerMessageWithIdPairExists
cmp r0, #0
beq _02250EA0
ldr r1, _02250F3C ; =0x00002E7D
mov r0, #3
ldrb r2, [r7, r1]
add sp, #0xc
orr r0, r2
strb r0, [r7, r1]
mov r0, #0x13
mov r1, #0xf
lsl r0, r0, #4
str r1, [r7, r0]
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02250EA0:
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
b _02250F28
_02250EA8:
ldr r0, _02250F3C ; =0x00002E7D
ldrb r1, [r7, r0]
mov r0, #4
tst r0, r1
bne _02250F22
ldr r0, [sp]
mov r1, #1
bl BattleSys_GetParty
mov r6, #0
add r5, r0, #0
add r4, r6, #0
bl GetPartyCount
cmp r0, #0
ble _02250EEA
_02250EC8:
add r0, r5, #0
add r1, r4, #0
bl GetPartyMonByIndex
mov r1, #0xa3
mov r2, #0
bl GetMonData
cmp r0, #0
beq _02250EDE
add r6, r6, #1
_02250EDE:
add r0, r5, #0
add r4, r4, #1
bl GetPartyCount
cmp r4, r0
blt _02250EC8
_02250EEA:
cmp r6, #1
bne _02250F22
ldr r0, _02250F40 ; =0x00002E4C
ldr r1, [r7, r0]
add r0, r0, #4
ldr r0, [r7, r0]
lsr r0, r0, #1
cmp r1, r0
bhi _02250F22
ldr r0, [sp, #8]
mov r1, #0x10
mov r2, #5
bl TrainerMessageWithIdPairExists
cmp r0, #0
beq _02250F22
ldr r1, _02250F3C ; =0x00002E7D
mov r0, #4
ldrb r2, [r7, r1]
add sp, #0xc
orr r0, r2
strb r0, [r7, r1]
mov r0, #0x13
mov r1, #0x10
lsl r0, r0, #4
str r1, [r7, r0]
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02250F22:
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
_02250F28:
ldr r0, [sp, #4]
cmp r0, #4
beq _02250F30
b _02250D8A
_02250F30:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_02250F38: .word 0x00002E7C
_02250F3C: .word 0x00002E7D
_02250F40: .word 0x00002E4C
thumb_func_end ov12_02250D4C
thumb_func_start BattleContext_Init
BattleContext_Init: ; 0x02250F44
push {r3, r4, r5, r6, r7, lr}
ldr r1, _02251024 ; =0x00002144
add r5, r0, #0
mov r4, #0
add r0, r1, #0
str r4, [r5, r1]
mov r2, #1
add r0, #0xc
str r2, [r5, r0]
add r0, r1, #0
add r0, #8
str r4, [r5, r0]
add r0, r1, #0
add r0, #0x10
str r4, [r5, r0]
add r0, r1, #0
mov r2, #0xa
add r0, #0x14
str r2, [r5, r0]
add r0, r1, #0
add r0, #0x1c
str r4, [r5, r0]
add r0, r1, #0
add r0, #0x20
str r4, [r5, r0]
add r0, r1, #0
add r0, #0x28
str r4, [r5, r0]
mov r0, #0xff
add r2, r1, #0
str r0, [r5, #0x74]
add r2, #0x2c
str r4, [r5, r2]
add r2, r1, #0
add r2, #0x30
str r4, [r5, r2]
add r2, r1, #0
add r2, #0x34
str r4, [r5, r2]
add r2, r5, #0
add r2, #0x88
str r4, [r2]
add r2, r5, #0
add r2, #0x8c
str r4, [r2]
add r2, r5, #0
add r2, #0x94
str r0, [r2]
add r0, r1, #0
add r0, #0x38
strb r4, [r5, r0]
add r0, r1, #0
add r0, #0x39
strb r4, [r5, r0]
add r0, r1, #0
add r0, #0x3a
strb r4, [r5, r0]
add r0, r1, #0
add r0, #0x3c
str r4, [r5, r0]
add r0, r1, #0
str r4, [r5, #0x38]
add r0, #0x40
str r4, [r5, r0]
add r0, r1, #0
add r0, #0x44
str r4, [r5, r0]
str r4, [r5, #0x10]
str r4, [r5, #0x18]
str r4, [r5, #0x20]
str r4, [r5, #0x28]
str r4, [r5, #0x30]
str r4, [r5, #0x3c]
str r4, [r5, #0x40]
str r4, [r5, #0x48]
str r4, [r5, #0x4c]
str r4, [r5, #0x50]
add r0, r1, #0
str r4, [r5, #0x54]
sub r0, #8
ldr r2, [r5, r0]
ldr r0, _02251028 ; =0xFF800000
mov r7, #6
and r2, r0
add r0, r1, #0
sub r0, #8
str r2, [r5, r0]
sub r0, r1, #4
ldr r2, [r5, r0]
ldr r0, _0225102C ; =0xFFFFFEA1
and r2, r0
sub r0, r1, #4
str r2, [r5, r0]
ldr r0, _02251030 ; =0x00003120
strb r4, [r5, r0]
mov r0, #0xb5
lsl r0, r0, #2
add r6, r5, r0
_02251008:
mov r0, #0
add r1, r6, #0
mov r2, #0x1c
bl MIi_CpuClearFast
add r1, r5, r4
ldr r0, _02251034 ; =0x000021A4
add r4, r4, #1
add r6, #0x1c
strb r7, [r1, r0]
cmp r4, #4
blt _02251008
pop {r3, r4, r5, r6, r7, pc}
nop
_02251024: .word 0x00002144
_02251028: .word 0xFF800000
_0225102C: .word 0xFFFFFEA1
_02251030: .word 0x00003120
_02251034: .word 0x000021A4
thumb_func_end BattleContext_Init
thumb_func_start ov12_02251038
ov12_02251038: ; 0x02251038
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
add r7, r0, #0
mov r4, #0
add r5, r6, #0
_02251042:
ldr r0, _022510A4 ; =0x0000306C
mov r1, #0xff
strh r1, [r5, r0]
ldr r0, _022510A8 ; =0x000021A0
add r2, r6, r4
mov r1, #6
strb r1, [r2, r0]
add r0, r7, #0
bl BattleSys_Random
ldr r1, _022510AC ; =0x0000310C
add r4, r4, #1
strh r0, [r5, r1]
add r5, r5, #2
cmp r4, #4
blt _02251042
ldr r0, _022510B0 ; =0x00002168
mov r1, #1
str r1, [r6, r0]
mov r0, #0x5d
lsl r0, r0, #2
str r1, [r6, r0]
add r0, r7, #0
bl BattleSys_GetBattleType
mov r1, #2
tst r0, r1
bne _02251096
add r0, r1, #0
bl MaskOfFlagNo
ldr r1, _022510B4 ; =0x00003108
ldrb r2, [r6, r1]
orr r0, r2
strb r0, [r6, r1]
mov r0, #3
bl MaskOfFlagNo
ldr r1, _022510B4 ; =0x00003108
ldrb r2, [r6, r1]
orr r0, r2
strb r0, [r6, r1]
_02251096:
ldr r0, _022510B8 ; =0x0000311C
mov r1, #6
strb r1, [r6, r0]
add r0, r0, #1
strb r1, [r6, r0]
pop {r3, r4, r5, r6, r7, pc}
nop
_022510A4: .word 0x0000306C
_022510A8: .word 0x000021A0
_022510AC: .word 0x0000310C
_022510B0: .word 0x00002168
_022510B4: .word 0x00003108
_022510B8: .word 0x0000311C
thumb_func_end ov12_02251038
thumb_func_start InitSwitchWork
InitSwitchWork: ; 0x022510BC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x58
str r1, [sp, #4]
str r0, [sp]
ldr r1, _02251400 ; =0x00002DC8
ldr r0, [sp, #4]
add r4, r2, #0
add r1, r0, r1
mov r0, #0xc0
mul r0, r4
add r5, r1, r0
str r5, [sp, #0x14]
add r3, sp, #0x20
mov r2, #7
_022510D8:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _022510D8
ldr r0, [sp]
bl BattleSys_GetMaxBattlers
add r6, r0, #0
ldr r0, [sp]
bl BattleSys_GetBattleType
ldr r1, [sp, #4]
lsl r2, r4, #4
add r1, r1, r2
ldr r2, _02251404 ; =0x000021A8
mov r0, #0x28
str r0, [r1, r2]
ldr r1, [sp, #4]
sub r2, #0x6c
ldr r1, [r1, r2]
add r0, #0xd8
tst r0, r1
bne _02251196
mov r5, #0
cmp r6, #0
ble _02251172
ldr r1, [sp, #4]
ldr r2, _02251408 ; =0x00002DCC
add r0, r1, #0
add r2, r0, r2
mov r0, #0x18
mov ip, r0
mov r7, #3
_0225111A:
ldr r0, _0225140C ; =0x00002DB0
ldr r3, [r1, r0]
mov r0, #1
lsl r0, r0, #0x1a
tst r0, r3
beq _0225113C
ldr r0, [r2]
lsl r0, r0, #0x16
lsr r0, r0, #0x1e
cmp r4, r0
bne _0225113C
ldr r0, _0225140C ; =0x00002DB0
ldr r3, [r1, r0]
ldr r0, _02251410 ; =0xFBFFFFFF
and r3, r0
ldr r0, _0225140C ; =0x00002DB0
str r3, [r1, r0]
_0225113C:
mov r0, #0xb7
lsl r0, r0, #6
ldr r3, [r1, r0]
mov r0, #0x18
tst r0, r3
beq _02251168
ldr r0, [r2]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
cmp r4, r0
bne _02251168
mov r0, #0xb7
lsl r0, r0, #6
ldr r0, [r1, r0]
mov r3, ip
bic r0, r3
mov r3, #0xb7
lsl r3, r3, #6
str r0, [r1, r3]
ldr r0, [r2]
bic r0, r7
str r0, [r2]
_02251168:
add r5, r5, #1
add r1, #0xc0
add r2, #0xc0
cmp r5, r6
blt _0225111A
_02251172:
mov r0, #0xc0
mul r0, r4
str r0, [sp, #0xc]
ldr r2, [sp, #4]
ldr r1, [sp, #0xc]
mov r0, #0
add r1, r2, r1
ldr r2, _0225140C ; =0x00002DB0
str r0, [r1, r2]
ldr r1, [sp, #4]
add r2, #0x10
add r2, r1, r2
ldr r1, [sp, #0xc]
add r1, r2, r1
str r1, [sp, #0x10]
ldr r1, [sp, #0xc]
str r0, [r2, r1]
b _0225120E
_02251196:
mov r0, #0xc0
mul r0, r4
str r0, [sp, #0xc]
ldr r1, _0225140C ; =0x00002DB0
ldr r0, [sp, #4]
ldr r2, [sp, #0xc]
add r0, r0, r1
ldr r3, [r0, r2]
ldr r2, _02251414 ; =0x15100007
and r3, r2
ldr r2, [sp, #0xc]
str r3, [r0, r2]
add r2, r1, #0
ldr r0, [sp, #4]
add r2, #0x10
add r0, r0, r2
ldr r2, [sp, #0xc]
add r2, r0, r2
str r2, [sp, #0x10]
ldr r2, [sp, #0xc]
ldr r3, [r0, r2]
ldr r2, _02251418 ; =0x0FA3843F
and r3, r2
ldr r2, [sp, #0xc]
str r3, [r0, r2]
mov r2, #0
cmp r6, #0
ble _0225120E
ldr r0, [sp, #4]
add r1, #0x1c
add r3, r0, #0
add r1, r3, r1
mov r7, #0x18
_022511D8:
mov r3, #0xb7
lsl r3, r3, #6
ldr r5, [r0, r3]
mov r3, #0x18
tst r3, r5
beq _02251204
ldr r3, [r1]
lsl r3, r3, #0x1e
lsr r3, r3, #0x1e
cmp r4, r3
bne _02251204
mov r3, #0xb7
lsl r3, r3, #6
ldr r5, [r0, r3]
bic r5, r7
str r5, [r0, r3]
ldr r5, [r0, r3]
mov r3, #0x10
orr r5, r3
mov r3, #0xb7
lsl r3, r3, #6
str r5, [r0, r3]
_02251204:
add r2, r2, #1
add r0, #0xc0
add r1, #0xc0
cmp r2, r6
blt _022511D8
_0225120E:
mov r0, #0
str r0, [sp, #8]
cmp r6, #0
ble _02251276
ldr r5, [sp, #4]
ldr r1, _02251408 ; =0x00002DCC
add r0, r5, #0
add r7, r0, r1
_0225121E:
add r0, r4, #0
bl MaskOfFlagNo
ldr r1, _0225140C ; =0x00002DB0
lsl r0, r0, #0x10
ldr r1, [r5, r1]
tst r0, r1
beq _02251246
add r0, r4, #0
bl MaskOfFlagNo
ldr r1, _0225140C ; =0x00002DB0
lsl r2, r0, #0x10
mov r0, #0
mvn r0, r0
ldr r1, [r5, r1]
eor r0, r2
and r1, r0
ldr r0, _0225140C ; =0x00002DB0
str r1, [r5, r0]
_02251246:
ldr r0, _0225140C ; =0x00002DB0
ldr r1, [r5, r0]
mov r0, #0xe
lsl r0, r0, #0xc
tst r0, r1
beq _02251268
ldr r0, [r7]
lsl r0, r0, #0x18
lsr r0, r0, #0x1e
cmp r4, r0
bne _02251268
ldr r0, _0225140C ; =0x00002DB0
ldr r1, [r5, r0]
ldr r0, _0225141C ; =0xFFFF1FFF
and r1, r0
ldr r0, _0225140C ; =0x00002DB0
str r1, [r5, r0]
_02251268:
ldr r0, [sp, #8]
add r5, #0xc0
add r0, r0, #1
add r7, #0xc0
str r0, [sp, #8]
cmp r0, r6
blt _0225121E
_02251276:
mov r2, #0
add r1, r2, #0
_0225127A:
ldr r0, [sp, #0x14]
strb r1, [r0, r2]
add r2, r2, #1
cmp r2, #0x38
blo _0225127A
ldr r1, _02251420 ; =0x0000213C
ldr r0, [sp, #4]
ldr r1, [r0, r1]
mov r0, #1
lsl r0, r0, #8
tst r0, r1
beq _0225132E
ldr r1, [sp, #4]
ldr r0, [sp, #0xc]
ldr r2, [sp, #0x38]
add r0, r1, r0
ldr r1, _02251424 ; =0x00002DE0
str r2, [r0, r1]
ldr r0, [sp, #4]
sub r1, #0x14
add r0, r0, r1
ldr r1, [sp, #0xc]
mov r2, #3
ldr r1, [r0, r1]
bic r1, r2
ldr r2, [sp, #0x24]
lsl r2, r2, #0x1e
lsr r3, r2, #0x1e
mov r2, #3
and r2, r3
orr r2, r1
ldr r1, [sp, #0xc]
str r2, [r0, r1]
ldr r3, [sp, #0x20]
ldr r1, [sp, #0x14]
lsl r3, r3, #0x11
lsr r3, r3, #0x1e
lsl r3, r3, #0x1e
ldr r1, [r1]
ldr r2, _02251428 ; =0xFFFF9FFF
lsr r3, r3, #0x11
and r1, r2
orr r3, r1
ldr r1, [sp, #0x14]
str r3, [r1]
ldr r1, [sp, #0xc]
ldr r3, [r0, r1]
asr r1, r2, #5
ldr r2, [sp, #0x24]
and r1, r3
lsl r2, r2, #0x16
lsr r2, r2, #0x1e
lsl r2, r2, #0x1e
lsr r2, r2, #0x16
orr r2, r1
ldr r1, [sp, #0xc]
str r2, [r0, r1]
ldr r2, [r0, r1]
ldr r1, _0225141C ; =0xFFFF1FFF
and r1, r2
ldr r2, [sp, #0x24]
lsl r2, r2, #0x10
lsr r2, r2, #0x1d
lsl r2, r2, #0x1d
lsr r2, r2, #0x10
orr r2, r1
ldr r1, [sp, #0xc]
str r2, [r0, r1]
ldr r3, [sp, #0x24]
ldr r1, [r0, r1]
lsl r3, r3, #0xa
ldr r2, _0225142C ; =0xFFC7FFFF
lsr r3, r3, #0x1d
lsl r3, r3, #0x1d
and r1, r2
lsr r3, r3, #0xa
orr r3, r1
ldr r1, [sp, #0xc]
str r3, [r0, r1]
ldr r3, [r0, r1]
asr r1, r2, #3
ldr r2, [sp, #0x24]
and r1, r3
lsl r2, r2, #0xd
lsr r2, r2, #0x1d
lsl r2, r2, #0x1d
lsr r2, r2, #0xd
orr r2, r1
ldr r1, [sp, #0xc]
str r2, [r0, r1]
_0225132E:
mov r0, #0xc0
add r3, r0, #0
ldr r2, [sp, #4]
add r3, #0x90
ldr r2, [r2, r3]
add r1, r4, #0
ldr r3, [sp, #4]
mul r1, r0
add r5, r0, #0
add r1, r3, r1
ldr r3, _02251430 ; =0x00002DD4
add r2, r2, #1
str r2, [r1, r3]
ldr r2, [sp, #4]
add r5, #0x90
ldr r2, [r2, r5]
add r0, #0x90
add r5, r2, #1
add r2, r3, #4
str r5, [r1, r2]
ldr r1, [sp, #0x14]
lsl r7, r4, #1
ldr r2, [r1]
ldr r1, _02251434 ; =0xBFFFFFFF
mov r3, #0
and r1, r2
ldr r2, [sp, #4]
mov r5, #0xff
ldr r0, [r2, r0]
add r0, r0, #1
lsl r0, r0, #0x1f
lsr r0, r0, #1
orr r1, r0
ldr r0, [sp, #0x14]
str r1, [r0]
add r0, r2, #0
add r2, r0, r7
ldr r0, _02251438 ; =0x0000305C
add r1, r0, #0
strh r3, [r2, r0]
add r1, #8
strh r3, [r2, r1]
add r1, r0, #0
add r1, #0x10
strh r5, [r2, r1]
add r1, r0, #0
add r1, #0x18
strh r3, [r2, r1]
add r1, r0, #0
add r1, #0x20
strh r3, [r2, r1]
add r1, r0, #0
add r1, #0x28
strh r3, [r2, r1]
ldr r1, [sp, #4]
lsl r5, r4, #3
add r1, r1, r5
add r5, r0, #0
add r5, #0x30
strh r3, [r1, r5]
add r5, r0, #0
add r5, #0x32
strh r3, [r1, r5]
add r5, r0, #0
add r5, #0x34
strh r3, [r1, r5]
add r5, r0, #0
add r5, #0x36
strh r3, [r1, r5]
add r1, r0, #0
add r1, #0x50
strh r3, [r2, r1]
add r1, r0, #0
add r1, #0x68
strh r3, [r2, r1]
add r1, r0, #0
add r1, #0x70
strh r3, [r2, r1]
add r1, r0, #0
add r1, #0x78
strh r3, [r2, r1]
add r0, #0x80
strh r3, [r2, r0]
add r0, r4, #0
bl MaskOfFlagNo
mov r1, #6
lsl r3, r0, #8
mov r0, #0
mvn r0, r0
ldr r2, [sp, #4]
lsl r1, r1, #6
ldr r2, [r2, r1]
eor r0, r3
and r2, r0
ldr r0, [sp, #4]
str r2, [r0, r1]
ldr r0, [sp, #0x10]
ldr r1, [r0]
mov r0, #2
lsl r0, r0, #0x16
tst r0, r1
beq _02251456
ldr r0, _0225143C ; =0x00002D42
b _02251440
.balign 4, 0
_02251400: .word 0x00002DC8
_02251404: .word 0x000021A8
_02251408: .word 0x00002DCC
_0225140C: .word 0x00002DB0
_02251410: .word 0xFBFFFFFF
_02251414: .word 0x15100007
_02251418: .word 0x0FA3843F
_0225141C: .word 0xFFFF1FFF
_02251420: .word 0x0000213C
_02251424: .word 0x00002DE0
_02251428: .word 0xFFFF9FFF
_0225142C: .word 0xFFC7FFFF
_02251430: .word 0x00002DD4
_02251434: .word 0xBFFFFFFF
_02251438: .word 0x0000305C
_0225143C: .word 0x00002D42
_02251440:
ldr r1, [sp, #4]
add r5, r1, r0
ldr r1, [sp, #0xc]
ldrh r3, [r5, r1]
add r1, r0, #2
ldr r0, [sp, #4]
add r2, r0, r1
ldr r0, [sp, #0xc]
ldrh r1, [r2, r0]
strh r1, [r5, r0]
strh r3, [r2, r0]
_02251456:
mov r5, #0
cmp r6, #0
ble _0225149A
ldr r0, [sp, #4]
str r0, [sp, #0x18]
add r7, r0, r7
_02251462:
cmp r5, r4
beq _02251486
ldr r0, [sp]
add r1, r5, #0
bl BattleSys_GetFieldSide
str r0, [sp, #0x1c]
ldr r0, [sp]
add r1, r4, #0
bl BattleSys_GetFieldSide
ldr r1, [sp, #0x1c]
cmp r1, r0
beq _02251486
ldr r1, [sp, #0x18]
ldr r0, _022514BC ; =0x00003084
mov r2, #0
strh r2, [r1, r0]
_02251486:
ldr r0, _022514C0 ; =0x0000308C
mov r1, #0
strh r1, [r7, r0]
ldr r0, [sp, #0x18]
add r5, r5, #1
add r0, r0, #2
str r0, [sp, #0x18]
add r7, #8
cmp r5, r6
blt _02251462
_0225149A:
lsl r1, r4, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
bl ov12_02258584
lsl r1, r4, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
bl ov12_0225859C
lsl r1, r4, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
bl ov12_022585A8
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022514BC: .word 0x00003084
_022514C0: .word 0x0000308C
thumb_func_end InitSwitchWork
thumb_func_start InitFaintedWork
InitFaintedWork: ; 0x022514C4
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r1, [sp, #4]
str r0, [sp]
add r5, r2, #0
bl BattleSys_GetMaxBattlers
str r0, [sp, #0xc]
mov r0, #0xc0
mul r0, r5
ldr r1, [sp, #4]
str r0, [sp, #8]
add r3, r1, r0
ldr r0, _022516E8 ; =0x00002D58
mov r2, #0
mov r1, #6
_022514E4:
add r2, r2, #1
strb r1, [r3, r0]
add r3, r3, #1
cmp r2, #8
blt _022514E4
mov r0, #0xc0
add r1, r5, #0
mul r1, r0
ldr r0, [sp, #4]
mov r7, #0
add r2, r0, r1
ldr r1, _022516EC ; =0x00002DB0
add r0, r1, #0
str r7, [r2, r1]
add r0, #0x10
str r7, [r2, r0]
ldr r0, [sp, #0xc]
cmp r0, #0
ble _0225158A
ldr r4, [sp, #4]
add r1, #0x1c
add r0, r4, #0
add r6, r0, r1
_02251512:
ldr r0, _022516EC ; =0x00002DB0
ldr r1, [r4, r0]
mov r0, #1
lsl r0, r0, #0x1a
tst r0, r1
beq _02251534
ldr r0, [r6]
lsl r0, r0, #0x16
lsr r0, r0, #0x1e
cmp r5, r0
bne _02251534
ldr r0, _022516EC ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, _022516F0 ; =0xFBFFFFFF
and r1, r0
ldr r0, _022516EC ; =0x00002DB0
str r1, [r4, r0]
_02251534:
add r0, r5, #0
bl MaskOfFlagNo
ldr r1, _022516EC ; =0x00002DB0
lsl r0, r0, #0x10
ldr r1, [r4, r1]
tst r0, r1
beq _0225155C
add r0, r5, #0
bl MaskOfFlagNo
ldr r1, _022516EC ; =0x00002DB0
lsl r2, r0, #0x10
mov r0, #0
mvn r0, r0
ldr r1, [r4, r1]
eor r0, r2
and r1, r0
ldr r0, _022516EC ; =0x00002DB0
str r1, [r4, r0]
_0225155C:
ldr r0, _022516EC ; =0x00002DB0
ldr r1, [r4, r0]
mov r0, #0xe
lsl r0, r0, #0xc
tst r0, r1
beq _0225157E
ldr r0, [r6]
lsl r0, r0, #0x18
lsr r0, r0, #0x1e
cmp r5, r0
bne _0225157E
ldr r0, _022516EC ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, _022516F4 ; =0xFFFF1FFF
and r1, r0
ldr r0, _022516EC ; =0x00002DB0
str r1, [r4, r0]
_0225157E:
ldr r0, [sp, #0xc]
add r7, r7, #1
add r4, #0xc0
add r6, #0xc0
cmp r7, r0
blt _02251512
_0225158A:
ldr r1, _022516F8 ; =0x00002DC8
ldr r0, [sp, #4]
add r1, r0, r1
ldr r0, [sp, #8]
add r6, r1, r0
mov r1, #0
add r0, r1, #0
_02251598:
strb r0, [r6, r1]
add r1, r1, #1
cmp r1, #0x38
blo _02251598
mov r2, #0x75
ldr r1, [sp, #4]
lsl r2, r2, #2
add r2, r1, r2
lsl r1, r5, #6
add r1, r2, r1
mov r4, #0
_022515AE:
strb r4, [r1, r0]
add r0, r0, #1
cmp r0, #0x40
blo _022515AE
mov r2, #0xc0
add r3, r2, #0
ldr r0, [sp, #4]
add r3, #0x90
ldr r0, [r0, r3]
add r1, r5, #0
ldr r3, [sp, #4]
mul r1, r2
add r3, r3, r1
add r1, r2, #0
ldr r7, _022516FC ; =0x00002DD4
add r0, r0, #1
str r0, [r3, r7]
ldr r0, [sp, #4]
add r1, #0x90
ldr r0, [r0, r1]
add r1, r7, #4
add r0, r0, #1
str r0, [r3, r1]
ldr r1, [r6]
ldr r0, _02251700 ; =0xBFFFFFFF
add r2, #0x90
and r0, r1
ldr r1, [sp, #4]
mov r3, #0xff
ldr r1, [r1, r2]
add r1, r1, #1
lsl r1, r1, #0x1f
lsr r1, r1, #1
orr r0, r1
str r0, [r6]
ldr r0, [sp, #4]
lsl r6, r5, #1
add r2, r0, r6
ldr r0, _02251704 ; =0x0000305C
add r1, r0, #0
strh r4, [r2, r0]
add r1, #8
strh r4, [r2, r1]
add r1, r0, #0
add r1, #0x10
strh r3, [r2, r1]
add r1, r0, #0
add r1, #0x18
strh r4, [r2, r1]
add r1, r0, #0
add r1, #0x20
strh r4, [r2, r1]
add r1, r0, #0
add r1, #0x28
strh r4, [r2, r1]
ldr r1, [sp, #4]
lsl r3, r5, #3
add r1, r1, r3
add r3, r0, #0
add r3, #0x30
strh r4, [r1, r3]
add r3, r0, #0
add r3, #0x32
strh r4, [r1, r3]
add r3, r0, #0
add r3, #0x34
strh r4, [r1, r3]
add r3, r0, #0
add r3, #0x36
strh r4, [r1, r3]
add r1, r0, #0
add r1, #0x50
strh r4, [r2, r1]
add r1, r0, #0
add r1, #0x68
strh r4, [r2, r1]
add r1, r0, #0
add r1, #0x70
strh r4, [r2, r1]
add r1, r0, #0
add r1, #0x78
strh r4, [r2, r1]
add r0, #0x80
strh r4, [r2, r0]
add r0, r5, #0
bl MaskOfFlagNo
mov r1, #6
lsl r3, r0, #8
mov r0, #0
mvn r0, r0
ldr r2, [sp, #4]
lsl r1, r1, #6
ldr r2, [r2, r1]
eor r0, r3
and r2, r0
ldr r0, [sp, #4]
mov r4, #0
str r2, [r0, r1]
ldr r0, [sp, #0xc]
cmp r0, #0
ble _022516B4
ldr r7, [sp, #4]
add r0, r7, #0
add r6, r0, r6
_02251680:
cmp r4, r5
beq _022516A2
ldr r0, [sp]
add r1, r4, #0
bl BattleSys_GetFieldSide
str r0, [sp, #0x10]
ldr r0, [sp]
add r1, r5, #0
bl BattleSys_GetFieldSide
ldr r1, [sp, #0x10]
cmp r1, r0
beq _022516A2
ldr r0, _02251708 ; =0x00003084
mov r1, #0
strh r1, [r7, r0]
_022516A2:
ldr r0, _0225170C ; =0x0000308C
mov r1, #0
strh r1, [r6, r0]
ldr r0, [sp, #0xc]
add r4, r4, #1
add r7, r7, #2
add r6, #8
cmp r4, r0
blt _02251680
_022516B4:
mov r1, #0x4f
ldr r0, [sp, #4]
lsl r1, r1, #2
add r3, r0, r1
lsl r2, r5, #2
ldr r1, [r3, r2]
mov r0, #1
bic r1, r0
str r1, [r3, r2]
lsl r1, r5, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
bl ov12_02258584
lsl r1, r5, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
bl ov12_0225859C
lsl r1, r5, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
bl ov12_022585A8
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022516E8: .word 0x00002D58
_022516EC: .word 0x00002DB0
_022516F0: .word 0xFBFFFFFF
_022516F4: .word 0xFFFF1FFF
_022516F8: .word 0x00002DC8
_022516FC: .word 0x00002DD4
_02251700: .word 0xBFFFFFFF
_02251704: .word 0x0000305C
_02251708: .word 0x00003084
_0225170C: .word 0x0000308C
thumb_func_end InitFaintedWork
thumb_func_start ov12_02251710
ov12_02251710: ; 0x02251710
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
mov r0, #0x75
add r5, r1, #0
lsl r0, r0, #2
add r7, r5, r0
mov r0, #0xd1
lsl r0, r0, #2
add r6, r5, r0
mov r0, #8
add r4, r5, #0
str r0, [sp, #8]
_0225172E:
mov r0, #0
add r1, r7, #0
mov r2, #0x40
bl MIi_CpuClearFast
mov r0, #0
add r1, r6, #0
mov r2, #4
bl MIi_CpuClearFast
ldr r0, _022517D8 ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, [sp, #8]
bic r1, r0
ldr r0, _022517D8 ; =0x00002DB0
str r1, [r4, r0]
add r0, #0x20
ldr r0, [r4, r0]
add r1, r0, #1
mov r0, #0x15
lsl r0, r0, #4
ldr r0, [r5, r0]
cmp r1, r0
bge _0225176A
ldr r0, _022517D8 ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, _022517DC ; =0xFFBFFFFF
and r1, r0
ldr r0, _022517D8 ; =0x00002DB0
str r1, [r4, r0]
_0225176A:
ldr r0, _022517E0 ; =0x00002DAC
ldr r1, [r4, r0]
mov r0, #7
tst r0, r1
beq _0225178A
ldr r0, _022517D8 ; =0x00002DB0
ldr r1, [r4, r0]
mov r0, #1
lsl r0, r0, #0xc
tst r0, r1
beq _0225178A
ldr r0, [sp]
ldr r2, [sp, #4]
add r1, r5, #0
bl UnlockBattlerOutOfCurrentMove
_0225178A:
ldr r0, _022517E0 ; =0x00002DAC
ldr r1, [r4, r0]
mov r0, #7
tst r0, r1
beq _022517AC
ldr r0, _022517D8 ; =0x00002DB0
ldr r1, [r4, r0]
mov r0, #3
lsl r0, r0, #0xa
tst r0, r1
beq _022517AC
ldr r0, _022517D8 ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, _022517E4 ; =0xFFFFF3FF
and r1, r0
ldr r0, _022517D8 ; =0x00002DB0
str r1, [r4, r0]
_022517AC:
ldr r0, [sp, #4]
add r7, #0x40
add r0, r0, #1
add r6, r6, #4
add r4, #0xc0
str r0, [sp, #4]
cmp r0, #4
blt _0225172E
mov r2, #0x71
lsl r2, r2, #2
ldr r0, [r5, r2]
ldr r1, _022517E8 ; =0xFFEFFFFF
and r0, r1
str r0, [r5, r2]
add r0, r2, #0
add r0, #8
ldr r0, [r5, r0]
add r2, #8
and r0, r1
str r0, [r5, r2]
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022517D8: .word 0x00002DB0
_022517DC: .word 0xFFBFFFFF
_022517E0: .word 0x00002DAC
_022517E4: .word 0xFFFFF3FF
_022517E8: .word 0xFFEFFFFF
thumb_func_end ov12_02251710
thumb_func_start StruggleCheck
StruggleCheck: ; 0x022517EC
push {r4, r5, r6, r7, lr}
sub sp, #0x5c
str r0, [sp]
ldr r0, [sp, #0x70]
add r7, r1, #0
str r0, [sp, #0x70]
str r2, [sp, #4]
add r0, r7, #0
add r1, r2, #0
add r5, r3, #0
bl GetBattlerHeldItemEffect
str r0, [sp, #0x34]
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
add r4, r7, r1
str r1, [sp, #0x38]
ldr r0, [sp, #0x70]
mov r1, #1
and r0, r1
str r0, [sp, #0x2c]
ldr r0, [sp, #0x70]
mov r1, #2
and r0, r1
str r0, [sp, #0x28]
ldr r0, [sp, #0x70]
mov r1, #4
and r0, r1
str r0, [sp, #0x24]
ldr r0, [sp, #4]
mov r1, #8
lsl r0, r0, #1
add r0, r7, r0
str r0, [sp, #0x20]
ldr r0, [sp, #0x70]
mov r2, #0x10
and r0, r1
ldr r1, _02251A04 ; =0x00002DC8
str r0, [sp, #0x1c]
add r0, r7, r1
str r0, [sp, #0x3c]
ldr r0, [sp, #0x70]
sub r1, #0x88
and r0, r2
str r0, [sp, #0x18]
ldr r0, [sp, #0x70]
mov r2, #0x20
and r0, r2
str r0, [sp, #0x14]
ldr r0, [sp, #0x70]
mov r2, #0x40
and r0, r2
str r0, [sp, #0x10]
ldr r2, [sp, #0x70]
mov r0, #0x80
and r2, r0
str r2, [sp, #0xc]
lsl r2, r0, #2
ldr r0, [sp, #0x70]
mov r6, #0
and r0, r2
str r0, [sp, #8]
add r0, r7, r1
str r0, [sp, #0x40]
ldr r0, _02251A08 ; =0x00002DE8
str r4, [sp, #0x30]
add r0, r4, r0
str r0, [sp, #0x44]
ldr r0, _02251A0C ; =0x00002DB0
add r0, r4, r0
str r0, [sp, #0x48]
ldr r0, _02251A10 ; =0x00002DEC
add r0, r4, r0
str r0, [sp, #0x4c]
ldr r0, _02251A14 ; =0x00002DF8
add r0, r4, r0
str r0, [sp, #0x50]
ldr r0, _02251A14 ; =0x00002DF8
add r0, r4, r0
str r0, [sp, #0x58]
ldr r0, _02251A14 ; =0x00002DF8
add r0, r4, r0
str r0, [sp, #0x54]
_02251894:
ldr r0, _02251A18 ; =0x00002D4C
ldrh r0, [r4, r0]
cmp r0, #0
bne _022518AA
ldr r0, [sp, #0x2c]
cmp r0, #0
beq _022518AA
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_022518AA:
ldr r1, [sp, #0x30]
ldr r0, _02251A1C ; =0x00002D6C
ldrb r0, [r1, r0]
cmp r0, #0
bne _022518C2
ldr r0, [sp, #0x28]
cmp r0, #0
beq _022518C2
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_022518C2:
ldr r0, [sp, #0x44]
ldrh r1, [r0]
ldr r0, _02251A18 ; =0x00002D4C
ldrh r0, [r4, r0]
cmp r1, r0
bne _022518DC
ldr r0, [sp, #0x24]
cmp r0, #0
beq _022518DC
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_022518DC:
ldr r1, [sp, #0x20]
ldr r0, _02251A20 ; =0x0000307C
ldrh r1, [r1, r0]
ldr r0, _02251A18 ; =0x00002D4C
ldrh r0, [r4, r0]
cmp r1, r0
bne _02251904
ldr r0, [sp, #0x1c]
cmp r0, #0
beq _02251904
ldr r0, [sp, #0x48]
ldr r1, [r0]
mov r0, #2
lsl r0, r0, #0x1e
tst r0, r1
beq _02251904
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_02251904:
ldr r1, [sp, #0x3c]
ldr r0, [sp, #0x38]
ldr r0, [r1, r0]
lsl r0, r0, #0x15
lsr r0, r0, #0x1d
beq _0225192E
ldr r0, [sp, #0x18]
cmp r0, #0
beq _0225192E
ldr r0, _02251A18 ; =0x00002D4C
ldrh r0, [r4, r0]
lsl r0, r0, #4
add r1, r7, r0
ldr r0, _02251A24 ; =0x000003E1
ldrb r0, [r1, r0]
cmp r0, #0
bne _0225192E
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_0225192E:
ldr r3, _02251A18 ; =0x00002D4C
ldr r0, [sp]
ldrh r3, [r4, r3]
ldr r2, [sp, #4]
add r1, r7, #0
bl ov12_02252C74
cmp r0, #0
beq _0225194E
ldr r0, [sp, #0x14]
cmp r0, #0
beq _0225194E
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_0225194E:
ldr r3, _02251A18 ; =0x00002D4C
ldr r0, [sp]
ldrh r3, [r4, r3]
ldr r2, [sp, #4]
add r1, r7, #0
bl ov12_02252DC4
cmp r0, #0
beq _0225196E
ldr r0, [sp, #0x10]
cmp r0, #0
beq _0225196E
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_0225196E:
ldr r3, _02251A18 ; =0x00002D4C
ldr r0, [sp]
ldrh r3, [r4, r3]
ldr r2, [sp, #4]
add r1, r7, #0
bl ov12_02252DF8
cmp r0, #0
beq _0225198E
ldr r0, [sp, #0xc]
cmp r0, #0
beq _0225198E
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_0225198E:
ldr r0, [sp, #0x4c]
ldrh r1, [r0]
cmp r1, #0
beq _022519A6
ldr r0, _02251A18 ; =0x00002D4C
ldrh r0, [r4, r0]
cmp r1, r0
beq _022519A6
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_022519A6:
ldr r0, [sp, #0x34]
cmp r0, #0x37
beq _022519B4
cmp r0, #0x73
beq _022519B4
cmp r0, #0x7d
bne _022519EC
_022519B4:
ldr r0, [sp, #8]
cmp r0, #0
beq _022519EC
ldr r1, [sp, #0x40]
ldr r0, [sp, #0x38]
add r0, r1, r0
ldr r1, [sp, #0x50]
ldrh r1, [r1]
bl BattleMon_GetMoveIndex
cmp r0, #4
bne _022519D4
ldr r0, [sp, #0x54]
mov r1, #0
strh r1, [r0]
b _022519EC
_022519D4:
ldr r0, [sp, #0x58]
ldrh r1, [r0]
cmp r1, #0
beq _022519EC
ldr r0, _02251A18 ; =0x00002D4C
ldrh r0, [r4, r0]
cmp r1, r0
beq _022519EC
add r0, r6, #0
bl MaskOfFlagNo
orr r5, r0
_022519EC:
ldr r0, [sp, #0x30]
add r6, r6, #1
add r0, r0, #1
add r4, r4, #2
str r0, [sp, #0x30]
cmp r6, #4
bge _022519FC
b _02251894
_022519FC:
add r0, r5, #0
add sp, #0x5c
pop {r4, r5, r6, r7, pc}
nop
_02251A04: .word 0x00002DC8
_02251A08: .word 0x00002DE8
_02251A0C: .word 0x00002DB0
_02251A10: .word 0x00002DEC
_02251A14: .word 0x00002DF8
_02251A18: .word 0x00002D4C
_02251A1C: .word 0x00002D6C
_02251A20: .word 0x0000307C
_02251A24: .word 0x000003E1
thumb_func_end StruggleCheck
thumb_func_start ov12_02251A28
ov12_02251A28: ; 0x02251A28
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r7, r3, #0
mov r3, #1
str r3, [sp, #8]
mov r3, #4
str r3, [sp]
mov r3, #0
str r0, [sp, #4]
add r5, r1, #0
add r6, r2, #0
ldr r4, [sp, #0x40]
bl StruggleCheck
str r0, [sp, #0xc]
add r0, r7, #0
bl MaskOfFlagNo
ldr r1, [sp, #0xc]
tst r0, r1
beq _02251A7A
mov r0, #0xa
strb r0, [r4, #1]
ldr r0, _02251C3C ; =0x00000261
add r1, r6, #0
strh r0, [r4, #2]
add r0, r5, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0xc0
mul r0, r6
add r1, r5, r0
lsl r0, r7, #1
add r1, r1, r0
ldr r0, _02251C40 ; =0x00002D4C
ldrh r0, [r1, r0]
str r0, [r4, #8]
mov r0, #0
str r0, [sp, #8]
b _02251C36
_02251A7A:
mov r0, #8
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
mov r3, #0
bl StruggleCheck
str r0, [sp, #0x10]
add r0, r7, #0
bl MaskOfFlagNo
ldr r1, [sp, #0x10]
tst r0, r1
beq _02251AB2
mov r0, #2
strb r0, [r4, #1]
mov r0, #0x99
lsl r0, r0, #2
strh r0, [r4, #2]
add r0, r5, #0
add r1, r6, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0
str r0, [sp, #8]
b _02251C36
_02251AB2:
mov r0, #0x10
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
mov r3, #0
bl StruggleCheck
str r0, [sp, #0x14]
add r0, r7, #0
bl MaskOfFlagNo
ldr r1, [sp, #0x14]
tst r0, r1
beq _02251AF8
mov r0, #0xa
strb r0, [r4, #1]
ldr r0, _02251C44 ; =0x00000265
add r1, r6, #0
strh r0, [r4, #2]
add r0, r5, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0xc0
mul r0, r6
add r1, r5, r0
lsl r0, r7, #1
add r1, r1, r0
ldr r0, _02251C40 ; =0x00002D4C
ldrh r0, [r1, r0]
str r0, [r4, #8]
mov r0, #0
str r0, [sp, #8]
b _02251C36
_02251AF8:
mov r0, #0x20
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
mov r3, #0
bl StruggleCheck
str r0, [sp, #0x18]
add r0, r7, #0
bl MaskOfFlagNo
ldr r1, [sp, #0x18]
tst r0, r1
beq _02251B40
mov r0, #0xa
strb r0, [r4, #1]
mov r0, #0x9a
lsl r0, r0, #2
strh r0, [r4, #2]
add r0, r5, #0
add r1, r6, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0xc0
mul r0, r6
add r1, r5, r0
lsl r0, r7, #1
add r1, r1, r0
ldr r0, _02251C40 ; =0x00002D4C
ldrh r0, [r1, r0]
str r0, [r4, #8]
mov r0, #0
str r0, [sp, #8]
b _02251C36
_02251B40:
mov r0, #0x40
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
mov r3, #0
bl StruggleCheck
str r0, [sp, #0x1c]
add r0, r7, #0
bl MaskOfFlagNo
ldr r1, [sp, #0x1c]
tst r0, r1
beq _02251B86
mov r0, #0xa
strb r0, [r4, #1]
ldr r0, _02251C48 ; =0x000003E9
add r1, r6, #0
strh r0, [r4, #2]
add r0, r5, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0xc0
mul r0, r6
add r1, r5, r0
lsl r0, r7, #1
add r1, r1, r0
ldr r0, _02251C40 ; =0x00002D4C
ldrh r0, [r1, r0]
str r0, [r4, #8]
mov r0, #0
str r0, [sp, #8]
b _02251C36
_02251B86:
mov r0, #0x80
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
mov r3, #0
bl StruggleCheck
str r0, [sp, #0x20]
add r0, r7, #0
bl MaskOfFlagNo
ldr r1, [sp, #0x20]
tst r0, r1
beq _02251BD0
mov r0, #0x22
strb r0, [r4, #1]
ldr r0, _02251C4C ; =0x00000421
add r1, r6, #0
strh r0, [r4, #2]
add r0, r5, #0
bl CreateNicknameTag
str r0, [r4, #4]
ldr r0, _02251C50 ; =0x00000179
str r0, [r4, #8]
mov r0, #0xc0
mul r0, r6
add r1, r5, r0
lsl r0, r7, #1
add r1, r1, r0
ldr r0, _02251C40 ; =0x00002D4C
ldrh r0, [r1, r0]
str r0, [r4, #0xc]
mov r0, #0
str r0, [sp, #8]
b _02251C36
_02251BD0:
mov r0, #2
lsl r0, r0, #8
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
mov r3, #0
bl StruggleCheck
str r0, [sp, #0x24]
add r0, r7, #0
bl MaskOfFlagNo
ldr r1, [sp, #0x24]
tst r0, r1
beq _02251C10
mov r0, #0x18
strb r0, [r4, #1]
ldr r0, _02251C54 ; =0x0000038F
strh r0, [r4, #2]
mov r0, #0xc0
mul r0, r6
add r2, r5, r0
ldr r0, _02251C58 ; =0x00002DB8
ldrh r1, [r2, r0]
add r0, #0x40
str r1, [r4, #4]
ldrh r0, [r2, r0]
str r0, [r4, #8]
mov r0, #0
str r0, [sp, #8]
b _02251C36
_02251C10:
mov r0, #2
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
mov r3, #0
bl StruggleCheck
add r5, r0, #0
add r0, r7, #0
bl MaskOfFlagNo
tst r0, r5
beq _02251C36
mov r0, #0
str r0, [sp, #8]
strb r0, [r4, #1]
ldr r0, _02251C5C ; =0x00000337
strh r0, [r4, #2]
_02251C36:
ldr r0, [sp, #8]
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02251C3C: .word 0x00000261
_02251C40: .word 0x00002D4C
_02251C44: .word 0x00000265
_02251C48: .word 0x000003E9
_02251C4C: .word 0x00000421
_02251C50: .word 0x00000179
_02251C54: .word 0x0000038F
_02251C58: .word 0x00002DB8
_02251C5C: .word 0x00000337
thumb_func_end ov12_02251A28
thumb_func_start BattleMon_GetMoveIndex
BattleMon_GetMoveIndex: ; 0x02251C60
mov r3, #0
_02251C62:
ldrh r2, [r0, #0xc]
cmp r1, r2
beq _02251C70
add r3, r3, #1
add r0, r0, #2
cmp r3, #4
blt _02251C62
_02251C70:
add r0, r3, #0
bx lr
thumb_func_end BattleMon_GetMoveIndex
thumb_func_start ov12_02251C74
ov12_02251C74: ; 0x02251C74
push {r4, r5, r6, lr}
add r6, r2, #0
add r1, r6, #0
add r5, r0, #0
add r4, r3, #0
bl GetBattlerHeldItemEffect
mov r1, #1
cmp r0, #0x6a
beq _02251C9A
mov r0, #0xc0
mul r0, r6
add r2, r5, r0
mov r0, #0xb7
lsl r0, r0, #6
ldr r2, [r2, r0]
lsl r0, r1, #0xa
tst r0, r2
beq _02251CB0
_02251C9A:
lsl r0, r4, #1
add r2, r4, r0
ldr r0, _02251D20 ; =sTypeEffectiveness + 1
ldrb r0, [r0, r2]
cmp r0, #2
bne _02251CB0
ldr r0, _02251D24 ; =sTypeEffectiveness + 2
ldrb r0, [r0, r2]
cmp r0, #0
bne _02251CB0
mov r1, #0
_02251CB0:
lsl r0, r6, #6
add r2, r5, r0
mov r0, #0x75
lsl r0, r0, #2
ldr r0, [r2, r0]
lsl r0, r0, #0x19
lsr r0, r0, #0x1f
beq _02251CCE
lsl r0, r4, #1
add r2, r4, r0
ldr r0, _02251D20 ; =sTypeEffectiveness + 1
ldrb r0, [r0, r2]
cmp r0, #2
bne _02251CCE
mov r1, #0
_02251CCE:
mov r0, #6
lsl r0, r0, #6
ldr r2, [r5, r0]
mov r0, #7
lsl r0, r0, #0xc
tst r0, r2
beq _02251CF2
lsl r0, r4, #1
add r2, r4, r0
ldr r0, _02251D20 ; =sTypeEffectiveness + 1
ldrb r0, [r0, r2]
cmp r0, #2
bne _02251CF2
ldr r0, _02251D24 ; =sTypeEffectiveness + 2
ldrb r0, [r0, r2]
cmp r0, #0
bne _02251CF2
mov r1, #0
_02251CF2:
mov r0, #0xc0
mul r0, r6
add r2, r5, r0
mov r0, #0xb7
lsl r0, r0, #6
ldr r2, [r2, r0]
mov r0, #1
lsl r0, r0, #0x16
tst r0, r2
beq _02251D1C
lsl r0, r4, #1
add r2, r4, r0
ldr r0, _02251D20 ; =sTypeEffectiveness + 1
ldrb r0, [r0, r2]
cmp r0, #0x11
bne _02251D1C
ldr r0, _02251D24 ; =sTypeEffectiveness + 2
ldrb r0, [r0, r2]
cmp r0, #0
bne _02251D1C
mov r1, #0
_02251D1C:
add r0, r1, #0
pop {r4, r5, r6, pc}
.balign 4, 0
_02251D20: .word sTypeEffectiveness + 1
_02251D24: .word sTypeEffectiveness + 2
thumb_func_end ov12_02251C74
thumb_func_start ov12_02251D28
ov12_02251D28: ; 0x02251D28
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
ldr r0, [sp, #0x50]
add r5, r1, #0
str r0, [sp, #0x50]
ldr r0, [sp, #0x54]
str r2, [sp, #8]
str r0, [sp, #0x54]
add r0, r2, #0
add r4, r3, #0
ldr r7, [sp, #0x48]
ldr r6, [sp, #0x4c]
cmp r0, #0xa5
bne _02251D4A
ldr r0, [sp, #0x50]
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
_02251D4A:
add r0, r5, #0
add r1, r7, #0
bl GetBattlerHeldItemEffect
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x24]
add r0, r5, #0
add r1, r7, #0
mov r2, #0
bl BattleSystem_GetHeldItemDamageBoost
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x1c]
add r0, r5, #0
add r1, r6, #0
bl GetBattlerHeldItemEffect
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x20]
add r0, r5, #0
add r1, r6, #0
mov r2, #0
bl BattleSystem_GetHeldItemDamageBoost
add r0, r5, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x60
bne _02251D92
mov r0, #0
str r0, [sp, #0x28]
b _02251DAA
_02251D92:
cmp r4, #0
beq _02251D9E
lsl r0, r4, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x28]
b _02251DAA
_02251D9E:
ldr r0, [sp, #8]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225203C ; =0x000003E2
ldrb r0, [r1, r0]
str r0, [sp, #0x28]
_02251DAA:
ldr r0, [sp, #8]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _02252040 ; =0x000003E1
ldrb r0, [r1, r0]
str r0, [sp, #0x14]
ldr r0, _02252044 ; =0x0000213C
ldr r1, [r5, r0]
mov r0, #2
lsl r0, r0, #0xa
tst r0, r1
bne _02251E08
add r0, r5, #0
add r1, r7, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x28]
cmp r1, r0
beq _02251DE6
add r0, r5, #0
add r1, r7, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x28]
cmp r1, r0
bne _02251E08
_02251DE6:
add r0, r5, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x5b
bne _02251DFA
ldr r0, [sp, #0x50]
lsl r0, r0, #1
str r0, [sp, #0x50]
b _02251E08
_02251DFA:
ldr r1, [sp, #0x50]
mov r0, #0xf
mul r0, r1
mov r1, #0xa
bl _s32_div_f
str r0, [sp, #0x50]
_02251E08:
add r0, r5, #0
add r1, r7, #0
add r2, r6, #0
mov r3, #0x1a
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02251E34
ldr r0, [sp, #0x28]
cmp r0, #4
bne _02251E34
ldr r0, [sp, #0x20]
cmp r0, #0x6a
beq _02251E34
ldr r0, [sp, #0x54]
ldr r1, [r0]
mov r0, #2
lsl r0, r0, #0xa
orr r1, r0
ldr r0, [sp, #0x54]
str r1, [r0]
b _02251F50
_02251E34:
mov r0, #0xc0
add r1, r6, #0
mul r1, r0
ldr r0, _02252048 ; =0x00002DCC
add r3, r5, r1
ldr r2, [r3, r0]
lsl r2, r2, #0x10
lsr r2, r2, #0x1d
beq _02251E6C
sub r0, #0xc
ldr r2, [r3, r0]
mov r0, #1
lsl r0, r0, #0xa
tst r2, r0
bne _02251E6C
ldr r2, [sp, #0x28]
cmp r2, #4
bne _02251E6C
ldr r2, [sp, #0x20]
cmp r2, #0x6a
beq _02251E6C
ldr r1, [sp, #0x54]
lsl r0, r0, #0xa
ldr r1, [r1]
orr r1, r0
ldr r0, [sp, #0x54]
str r1, [r0]
b _02251F50
_02251E6C:
add r0, r5, r1
mov r4, #0
str r0, [sp, #0x18]
_02251E72:
lsl r0, r4, #1
ldr r1, _0225204C ; =sTypeEffectiveness
add r0, r4, r0
add r1, r1, r0
str r1, [sp, #0xc]
ldr r1, _0225204C ; =sTypeEffectiveness
ldrb r1, [r1, r0]
cmp r1, #0xfe
bne _02251EA2
ldr r1, [sp, #0x18]
ldr r0, _02252050 ; =0x00002DB0
ldr r1, [r1, r0]
mov r0, #2
lsl r0, r0, #0x1c
tst r0, r1
bne _02251F50
add r0, r5, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x71
beq _02251F50
add r4, r4, #1
b _02251F44
_02251EA2:
ldr r0, [sp, #0x28]
cmp r0, r1
bne _02251F42
ldr r0, [sp, #0xc]
add r1, r6, #0
ldrb r0, [r0, #1]
mov r2, #0x1b
mov r3, #0
str r0, [sp, #0x10]
add r0, r5, #0
bl GetBattlerVar
ldr r1, [sp, #0x10]
cmp r1, r0
bne _02251EE8
add r0, r5, #0
add r1, r7, #0
add r2, r6, #0
add r3, r4, #0
bl ov12_02251C74
cmp r0, #1
bne _02251EE8
ldr r0, [sp, #0x14]
ldr r2, [sp, #0xc]
str r0, [sp]
ldr r0, [sp, #0x54]
ldr r3, [sp, #0x50]
str r0, [sp, #4]
ldrb r2, [r2, #2]
add r0, r5, #0
add r1, r7, #0
bl ov12_022583B4
str r0, [sp, #0x50]
_02251EE8:
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x10]
cmp r1, r0
bne _02251F42
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
str r0, [sp, #0x2c]
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x2c]
cmp r1, r0
beq _02251F42
add r0, r5, #0
add r1, r7, #0
add r2, r6, #0
add r3, r4, #0
bl ov12_02251C74
cmp r0, #1
bne _02251F42
ldr r0, [sp, #0x14]
ldr r2, [sp, #0xc]
str r0, [sp]
ldr r0, [sp, #0x54]
ldr r3, [sp, #0x50]
str r0, [sp, #4]
ldrb r2, [r2, #2]
add r0, r5, #0
add r1, r7, #0
bl ov12_022583B4
str r0, [sp, #0x50]
_02251F42:
add r4, r4, #1
_02251F44:
lsl r0, r4, #1
add r1, r4, r0
ldr r0, _0225204C ; =sTypeEffectiveness
ldrb r0, [r0, r1]
cmp r0, #0xff
bne _02251E72
_02251F50:
add r0, r5, #0
add r1, r7, #0
add r2, r6, #0
mov r3, #0x19
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02251F94
ldr r1, [sp, #8]
add r0, r5, #0
bl ov12_02258440
cmp r0, #0
beq _02251F94
ldr r0, [sp, #0x54]
ldr r1, [r0]
mov r0, #2
tst r0, r1
beq _02251F7E
mov r0, #6
and r0, r1
cmp r0, #6
bne _02251F94
_02251F7E:
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02251F94
ldr r0, [sp, #0x54]
ldr r1, [r0]
mov r0, #1
lsl r0, r0, #0x12
orr r1, r0
ldr r0, [sp, #0x54]
str r1, [r0]
b _02252036
_02251F94:
ldr r0, _02252044 ; =0x0000213C
ldr r2, [r5, r0]
mov r0, #2
lsl r0, r0, #0xa
add r1, r2, #0
tst r1, r0
bne _02252022
lsl r0, r0, #4
tst r0, r2
bne _02252022
ldr r0, [sp, #0x54]
ldr r1, [r0]
mov r0, #2
tst r0, r1
beq _02251FFE
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02251FFE
add r0, r5, #0
add r1, r7, #0
add r2, r6, #0
mov r3, #0x6f
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
beq _02251FD8
add r0, r5, #0
add r1, r7, #0
add r2, r6, #0
mov r3, #0x74
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02251FE6
_02251FD8:
ldr r0, [sp, #0x50]
lsl r1, r0, #1
add r0, r0, r1
mov r1, #4
bl DamageDivide
str r0, [sp, #0x50]
_02251FE6:
ldr r0, [sp, #0x24]
cmp r0, #0x60
bne _02251FFE
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x50]
add r0, #0x64
str r0, [sp, #0x1c]
mul r0, r1
mov r1, #0x64
bl _s32_div_f
str r0, [sp, #0x50]
_02251FFE:
ldr r0, [sp, #0x54]
ldr r1, [r0]
mov r0, #4
tst r0, r1
beq _02252036
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02252036
add r0, r5, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x6e
bne _02252036
ldr r0, [sp, #0x50]
lsl r0, r0, #1
str r0, [sp, #0x50]
b _02252036
_02252022:
ldr r0, [sp, #0x54]
ldr r1, [r0]
mov r0, #2
bic r1, r0
ldr r0, [sp, #0x54]
str r1, [r0]
mov r0, #4
bic r1, r0
ldr r0, [sp, #0x54]
str r1, [r0]
_02252036:
ldr r0, [sp, #0x50]
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0225203C: .word 0x000003E2
_02252040: .word 0x000003E1
_02252044: .word 0x0000213C
_02252048: .word 0x00002DCC
_0225204C: .word sTypeEffectiveness
_02252050: .word 0x00002DB0
thumb_func_end ov12_02251D28
thumb_func_start ov12_02252054
ov12_02252054: ; 0x02252054
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r0, #0
ldr r0, [sp, #0x2c]
str r1, [sp]
str r0, [sp, #0x2c]
ldr r0, [sp, #0x30]
str r3, [sp, #4]
str r0, [sp, #0x30]
ldr r0, [sp, #0x34]
ldr r6, [sp, #0x38]
str r0, [sp, #0x34]
add r0, r1, #0
cmp r0, #0xa5
beq _0225216A
add r0, r3, #0
cmp r0, #0x60
bne _0225207E
mov r0, #0
str r0, [sp, #0xc]
b _02252096
_0225207E:
cmp r2, #0
beq _0225208A
lsl r0, r2, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
b _02252096
_0225208A:
add r0, r1, #0
lsl r0, r0, #4
add r1, r7, r0
ldr r0, _02252170 ; =0x000003E2
ldrb r0, [r1, r0]
str r0, [sp, #0xc]
_02252096:
ldr r0, [sp, #4]
cmp r0, #0x68
beq _022520C6
ldr r0, [sp, #0x28]
cmp r0, #0x1a
bne _022520C6
ldr r0, [sp, #0xc]
cmp r0, #4
bne _022520C6
mov r0, #6
lsl r0, r0, #6
ldr r1, [r7, r0]
mov r0, #7
lsl r0, r0, #0xc
tst r0, r1
bne _022520C6
ldr r0, [sp, #0x2c]
cmp r0, #0x6a
beq _022520C6
ldr r1, [r6]
mov r0, #8
orr r0, r1
str r0, [r6]
b _0225213A
_022520C6:
mov r4, #0
_022520C8:
lsl r0, r4, #1
add r1, r4, r0
ldr r0, _02252174 ; =sTypeEffectiveness
add r5, r0, r1
ldrb r1, [r0, r1]
cmp r1, #0xfe
bne _022520E0
ldr r0, [sp, #4]
cmp r0, #0x71
beq _0225213A
add r4, r4, #1
b _0225212E
_022520E0:
ldr r0, [sp, #0xc]
cmp r0, r1
bne _0225212C
ldrb r0, [r5, #1]
ldr r1, [sp, #0x30]
str r0, [sp, #8]
cmp r1, r0
bne _02252106
ldr r1, [sp, #0x2c]
add r0, r7, #0
add r2, r4, #0
bl ov12_02252178
cmp r0, #1
bne _02252106
ldrb r0, [r5, #2]
add r1, r6, #0
bl ov12_022521C8
_02252106:
ldr r1, [sp, #0x34]
ldr r0, [sp, #8]
cmp r1, r0
bne _0225212C
ldr r1, [sp, #0x30]
ldr r0, [sp, #0x34]
cmp r1, r0
beq _0225212C
ldr r1, [sp, #0x2c]
add r0, r7, #0
add r2, r4, #0
bl ov12_02252178
cmp r0, #1
bne _0225212C
ldrb r0, [r5, #2]
add r1, r6, #0
bl ov12_022521C8
_0225212C:
add r4, r4, #1
_0225212E:
lsl r0, r4, #1
add r1, r4, r0
ldr r0, _02252174 ; =sTypeEffectiveness
ldrb r0, [r0, r1]
cmp r0, #0xff
bne _022520C8
_0225213A:
ldr r0, [sp, #4]
cmp r0, #0x68
beq _0225216A
ldr r0, [sp, #0x28]
cmp r0, #0x19
bne _0225216A
ldr r1, [sp]
add r0, r7, #0
bl ov12_02258440
cmp r0, #0
beq _0225216A
ldr r1, [r6]
mov r0, #2
tst r0, r1
beq _02252162
mov r0, #6
and r0, r1
cmp r0, #6
bne _0225216A
_02252162:
ldr r1, [r6]
mov r0, #8
orr r0, r1
str r0, [r6]
_0225216A:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_02252170: .word 0x000003E2
_02252174: .word sTypeEffectiveness
thumb_func_end ov12_02252054
thumb_func_start ov12_02252178
ov12_02252178: ; 0x02252178
push {r3, r4}
mov r3, #1
cmp r1, #0x6a
bne _02252196
lsl r1, r2, #1
add r4, r2, r1
ldr r1, _022521C0 ; =sTypeEffectiveness + 1
ldrb r1, [r1, r4]
cmp r1, #2
bne _02252196
ldr r1, _022521C4 ; =sTypeEffectiveness + 2
ldrb r1, [r1, r4]
cmp r1, #0
bne _02252196
mov r3, #0
_02252196:
mov r1, #6
lsl r1, r1, #6
ldr r1, [r0, r1]
mov r0, #7
lsl r0, r0, #0xc
tst r0, r1
beq _022521BA
lsl r0, r2, #1
add r1, r2, r0
ldr r0, _022521C0 ; =sTypeEffectiveness + 1
ldrb r0, [r0, r1]
cmp r0, #2
bne _022521BA
ldr r0, _022521C4 ; =sTypeEffectiveness + 2
ldrb r0, [r0, r1]
cmp r0, #0
bne _022521BA
mov r3, #0
_022521BA:
add r0, r3, #0
pop {r3, r4}
bx lr
.balign 4, 0
_022521C0: .word sTypeEffectiveness + 1
_022521C4: .word sTypeEffectiveness + 2
thumb_func_end ov12_02252178
thumb_func_start ov12_022521C8
ov12_022521C8: ; 0x022521C8
cmp r0, #0
beq _022521D6
cmp r0, #5
beq _022521E8
cmp r0, #0x14
beq _02252200
bx lr
_022521D6:
ldr r2, [r1]
mov r0, #8
orr r2, r0
mov r0, #4
bic r2, r0
mov r0, #2
bic r2, r0
str r2, [r1]
bx lr
_022521E8:
ldr r2, [r1]
mov r0, #2
tst r0, r2
beq _022521F8
mov r0, #2
bic r2, r0
str r2, [r1]
bx lr
_022521F8:
mov r0, #4
orr r0, r2
str r0, [r1]
bx lr
_02252200:
ldr r2, [r1]
mov r0, #4
tst r0, r2
beq _02252210
mov r0, #4
bic r2, r0
str r2, [r1]
bx lr
_02252210:
mov r0, #2
orr r0, r2
str r0, [r1]
bx lr
thumb_func_end ov12_022521C8
thumb_func_start ov12_02252218
ov12_02252218: ; 0x02252218
mov r2, #0xd1
lsl r2, r2, #2
add r2, r0, r2
lsl r0, r1, #2
ldr r0, [r2, r0]
lsl r1, r0, #0x1f
lsr r1, r1, #0x1f
bne _02252258
lsl r1, r0, #0x1e
lsr r1, r1, #0x1f
bne _02252258
lsl r1, r0, #0x1d
lsr r1, r1, #0x1f
bne _02252258
lsl r1, r0, #0x1c
lsr r1, r1, #0x1f
bne _02252258
lsl r1, r0, #0x1b
lsr r1, r1, #0x1f
bne _02252258
lsl r1, r0, #0x1a
lsr r1, r1, #0x1f
bne _02252258
lsl r1, r0, #0x19
lsr r1, r1, #0x1f
bne _02252258
lsl r1, r0, #0x17
lsr r1, r1, #0x1f
bne _02252258
lsl r0, r0, #0x18
lsr r0, r0, #0x1f
beq _0225225C
_02252258:
mov r0, #1
bx lr
_0225225C:
mov r0, #0
bx lr
thumb_func_end ov12_02252218
thumb_func_start GetMonsHitCount
GetMonsHitCount: ; 0x02252260
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
add r5, r1, #0
add r6, r2, #0
str r3, [sp, #4]
mov r4, #0
bl BattleSys_GetMaxBattlers
add r7, r0, #0
cmp r6, #0
beq _0225227E
cmp r6, #1
beq _022522A2
b _022522D6
_0225227E:
add r0, r4, #0
cmp r7, #0
ble _022522D6
ldr r2, _022522DC ; =0x00002D8C
_02252286:
ldr r1, [sp, #4]
cmp r0, r1
beq _02252298
ldr r1, [r5, r2]
cmp r1, #0
beq _02252298
add r1, r4, #1
lsl r1, r1, #0x18
lsr r4, r1, #0x18
_02252298:
add r0, r0, #1
add r5, #0xc0
cmp r0, r7
blt _02252286
b _022522D6
_022522A2:
add r6, r4, #0
cmp r7, #0
ble _022522D6
_022522A8:
ldr r0, [sp]
add r1, r6, #0
bl BattleSys_GetFieldSide
str r0, [sp, #8]
ldr r0, [sp]
ldr r1, [sp, #4]
bl BattleSys_GetFieldSide
ldr r1, [sp, #8]
cmp r1, r0
bne _022522CE
ldr r0, _022522DC ; =0x00002D8C
ldr r0, [r5, r0]
cmp r0, #0
beq _022522CE
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_022522CE:
add r6, r6, #1
add r5, #0xc0
cmp r6, r7
blt _022522A8
_022522D6:
add r0, r4, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022522DC: .word 0x00002D8C
thumb_func_end GetMonsHitCount
thumb_func_start CreateNicknameTag
CreateNicknameTag: ; 0x022522E0
add r2, r0, r1
ldr r0, _022522EC ; =0x0000219C
ldrb r0, [r2, r0]
lsl r0, r0, #8
orr r0, r1
bx lr
.balign 4, 0
_022522EC: .word 0x0000219C
thumb_func_end CreateNicknameTag
thumb_func_start GetBattlerSelectedMove
GetBattlerSelectedMove: ; 0x022522F0
push {r4, r5}
lsl r3, r1, #4
add r5, r0, r3
ldr r3, _0225231C ; =0x000021B4
mov r2, #0
ldr r4, [r5, r3]
cmp r4, #1
bne _02252316
sub r3, r3, #4
ldr r3, [r5, r3]
cmp r3, #0
beq _02252316
mov r2, #0xc0
mul r2, r1
add r1, r0, r2
lsl r0, r3, #1
add r1, r1, r0
ldr r0, _02252320 ; =0x00002D4A
ldrh r2, [r1, r0]
_02252316:
add r0, r2, #0
pop {r4, r5}
bx lr
.balign 4, 0
_0225231C: .word 0x000021B4
_02252320: .word 0x00002D4A
thumb_func_end GetBattlerSelectedMove
thumb_func_start CheckAbilityActive
CheckAbilityActive: ; 0x02252324
push {r4, r5, r6, r7, lr}
sub sp, #0x5c
str r2, [sp, #4]
str r0, [sp]
add r7, r1, #0
str r3, [sp, #8]
ldr r6, [sp, #0x70]
mov r4, #0
bl BattleSys_GetMaxBattlers
add r5, r0, #0
ldr r0, [sp, #4]
cmp r0, #9
bhi _02252398
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0225234C: ; jump table
.short _02252360 - _0225234C - 2 ; case 0
.short _0225239A - _0225234C - 2 ; case 1
.short _022523E6 - _0225234C - 2 ; case 2
.short _02252420 - _0225234C - 2 ; case 3
.short _0225246C - _0225234C - 2 ; case 4
.short _022524BE - _0225234C - 2 ; case 5
.short _022524E0 - _0225234C - 2 ; case 6
.short _02252508 - _0225234C - 2 ; case 7
.short _02252534 - _0225234C - 2 ; case 8
.short _02252568 - _0225234C - 2 ; case 9
_02252360:
add r0, r4, #0
str r0, [sp, #0x44]
cmp r5, #0
ble _02252398
_02252368:
ldr r0, [sp]
ldr r1, [sp, #0x44]
bl BattleSys_GetFieldSide
str r0, [sp, #0x48]
ldr r0, [sp]
ldr r1, [sp, #8]
bl BattleSys_GetFieldSide
ldr r1, [sp, #0x48]
cmp r1, r0
bne _0225238E
ldr r1, [sp, #0x44]
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _0225238E
add r4, r4, #1
_0225238E:
ldr r0, [sp, #0x44]
add r0, r0, #1
str r0, [sp, #0x44]
cmp r0, r5
blt _02252368
_02252398:
b _022525A0
_0225239A:
add r0, r4, #0
str r0, [sp, #0xc]
cmp r5, #0
ble _022523E4
str r7, [sp, #0x30]
_022523A4:
ldr r0, [sp]
ldr r1, [sp, #0xc]
bl BattleSys_GetFieldSide
str r0, [sp, #0x4c]
ldr r0, [sp]
ldr r1, [sp, #8]
bl BattleSys_GetFieldSide
ldr r1, [sp, #0x4c]
cmp r1, r0
bne _022523D4
ldr r1, [sp, #0x30]
ldr r0, _022525A8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _022523D4
ldr r1, [sp, #0xc]
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _022523D4
add r4, r4, #1
_022523D4:
ldr r0, [sp, #0x30]
add r0, #0xc0
str r0, [sp, #0x30]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, r5
blt _022523A4
_022523E4:
b _022525A0
_022523E6:
add r0, r4, #0
str r0, [sp, #0x10]
cmp r5, #0
ble _0225241E
_022523EE:
ldr r0, [sp]
ldr r1, [sp, #0x10]
bl BattleSys_GetFieldSide
str r0, [sp, #0x50]
ldr r0, [sp]
ldr r1, [sp, #8]
bl BattleSys_GetFieldSide
ldr r1, [sp, #0x50]
cmp r1, r0
beq _02252414
ldr r1, [sp, #0x10]
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _02252414
add r4, r4, #1
_02252414:
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, r5
blt _022523EE
_0225241E:
b _022525A0
_02252420:
add r0, r4, #0
str r0, [sp, #0x14]
cmp r5, #0
ble _0225246A
str r7, [sp, #0x34]
_0225242A:
ldr r0, [sp]
ldr r1, [sp, #0x14]
bl BattleSys_GetFieldSide
str r0, [sp, #0x54]
ldr r0, [sp]
ldr r1, [sp, #8]
bl BattleSys_GetFieldSide
ldr r1, [sp, #0x54]
cmp r1, r0
beq _0225245A
ldr r1, [sp, #0x34]
ldr r0, _022525A8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _0225245A
ldr r1, [sp, #0x14]
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _0225245A
add r4, r4, #1
_0225245A:
ldr r0, [sp, #0x34]
add r0, #0xc0
str r0, [sp, #0x34]
ldr r0, [sp, #0x14]
add r0, r0, #1
str r0, [sp, #0x14]
cmp r0, r5
blt _0225242A
_0225246A:
b _022525A0
_0225246C:
add r0, r4, #0
str r0, [sp, #0x18]
cmp r5, #0
ble _022524BC
str r7, [sp, #0x38]
_02252476:
ldr r0, [sp]
ldr r1, [sp, #0x18]
bl BattleSys_GetFieldSide
str r0, [sp, #0x58]
ldr r0, [sp]
ldr r1, [sp, #8]
bl BattleSys_GetFieldSide
ldr r1, [sp, #0x58]
cmp r1, r0
beq _022524AC
ldr r1, [sp, #0x38]
ldr r0, _022525A8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _022524AC
ldr r1, [sp, #0x18]
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _022524AC
ldr r0, [sp, #0x18]
bl MaskOfFlagNo
orr r4, r0
_022524AC:
ldr r0, [sp, #0x38]
add r0, #0xc0
str r0, [sp, #0x38]
ldr r0, [sp, #0x18]
add r0, r0, #1
str r0, [sp, #0x18]
cmp r0, r5
blt _02252476
_022524BC:
b _022525A0
_022524BE:
add r0, r4, #0
str r0, [sp, #0x1c]
cmp r5, #0
ble _022525A0
_022524C6:
ldr r1, [sp, #0x1c]
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _022524D4
add r4, r4, #1
_022524D4:
ldr r0, [sp, #0x1c]
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, r5
blt _022524C6
b _022525A0
_022524E0:
add r0, r4, #0
str r0, [sp, #0x20]
cmp r5, #0
ble _022525A0
_022524E8:
ldr r1, [sp, #0x20]
ldr r0, [sp, #8]
cmp r1, r0
beq _022524FC
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _022524FC
add r4, r4, #1
_022524FC:
ldr r0, [sp, #0x20]
add r0, r0, #1
str r0, [sp, #0x20]
cmp r0, r5
blt _022524E8
b _022525A0
_02252508:
add r0, r4, #0
str r0, [sp, #0x24]
cmp r5, #0
ble _022525A0
_02252510:
ldr r1, [sp, #0x24]
ldr r0, [sp, #8]
cmp r1, r0
beq _02252528
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _02252528
ldr r0, [sp, #0x24]
add r4, r0, #1
b _022525A0
_02252528:
ldr r0, [sp, #0x24]
add r0, r0, #1
str r0, [sp, #0x24]
cmp r0, r5
blt _02252510
b _022525A0
_02252534:
add r0, r4, #0
str r0, [sp, #0x28]
cmp r5, #0
ble _022525A0
str r7, [sp, #0x3c]
_0225253E:
ldr r1, [sp, #0x28]
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _02252556
ldr r1, [sp, #0x3c]
ldr r0, _022525A8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02252556
add r4, r4, #1
_02252556:
ldr r0, [sp, #0x3c]
add r0, #0xc0
str r0, [sp, #0x3c]
ldr r0, [sp, #0x28]
add r0, r0, #1
str r0, [sp, #0x28]
cmp r0, r5
blt _0225253E
b _022525A0
_02252568:
add r0, r4, #0
str r0, [sp, #0x2c]
cmp r5, #0
ble _022525A0
str r7, [sp, #0x40]
_02252572:
ldr r1, [sp, #0x2c]
ldr r0, [sp, #8]
cmp r1, r0
beq _02252590
add r0, r7, #0
bl GetBattlerAbility
cmp r6, r0
bne _02252590
ldr r1, [sp, #0x40]
ldr r0, _022525A8 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02252590
add r4, r4, #1
_02252590:
ldr r0, [sp, #0x40]
add r0, #0xc0
str r0, [sp, #0x40]
ldr r0, [sp, #0x2c]
add r0, r0, #1
str r0, [sp, #0x2c]
cmp r0, r5
blt _02252572
_022525A0:
add r0, r4, #0
add sp, #0x5c
pop {r4, r5, r6, r7, pc}
nop
_022525A8: .word 0x00002D8C
thumb_func_end CheckAbilityActive
thumb_func_start BattleCtx_IsIdenticalToCurrentMove
BattleCtx_IsIdenticalToCurrentMove: ; 0x022525AC
lsl r1, r1, #4
add r1, r0, r1
ldr r0, _02252608 ; =0x000003DE
ldrh r2, [r1, r0]
cmp r2, #0x9b
bgt _022525DE
cmp r2, #0x97
blt _022525C4
beq _022525FE
cmp r2, #0x9b
beq _022525FE
b _02252602
_022525C4:
cmp r2, #0x27
bgt _022525D0
bge _022525FE
cmp r2, #0x1a
beq _022525FE
b _02252602
_022525D0:
cmp r2, #0x4b
bgt _022525D8
beq _022525FE
b _02252602
_022525D8:
cmp r2, #0x91
beq _022525FE
b _02252602
_022525DE:
mov r1, #1
lsl r1, r1, #8
cmp r2, r1
bgt _022525EE
bge _022525FE
cmp r2, #0xff
beq _022525FE
b _02252602
_022525EE:
add r0, r1, #7
cmp r2, r0
bgt _022525F8
beq _022525FE
b _02252602
_022525F8:
add r1, #0x10
cmp r2, r1
bne _02252602
_022525FE:
mov r0, #1
bx lr
_02252602:
mov r0, #0
bx lr
nop
_02252608: .word 0x000003DE
thumb_func_end BattleCtx_IsIdenticalToCurrentMove
thumb_func_start ov12_0225260C
ov12_0225260C: ; 0x0225260C
push {r3, r4, r5, lr}
add r5, r2, #0
add r4, r3, #0
mov r2, #1
cmp r1, #0x70
blo _02252624
bl BattleSys_Random
mov r1, #0x70
bl _u32_div_f
mov r2, #0
_02252624:
lsl r0, r1, #1
add r0, r1, r0
ldr r1, _02252640 ; =sTypeEffectiveness
ldrb r1, [r1, r0]
strb r1, [r5]
ldr r1, _02252644 ; =sTypeEffectiveness + 1
ldrb r1, [r1, r0]
strb r1, [r4]
ldr r1, _02252648 ; =sTypeEffectiveness + 2
ldrb r1, [r1, r0]
ldr r0, [sp, #0x10]
strb r1, [r0]
add r0, r2, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_02252640: .word sTypeEffectiveness
_02252644: .word sTypeEffectiveness + 1
_02252648: .word sTypeEffectiveness + 2
thumb_func_end ov12_0225260C
thumb_func_start CalculateTypeEffectiveness
CalculateTypeEffectiveness: ; 0x0225264C
push {r3, r4, r5, r6, r7, lr}
ldr r4, _02252694 ; =sTypeEffectiveness
add r5, r1, #0
str r0, [sp]
add r6, r2, #0
mov r1, #0x28
_02252658:
ldrb r2, [r4]
ldr r0, [sp]
cmp r0, r2
bne _02252686
ldrb r7, [r4, #1]
cmp r5, r7
bne _02252672
ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
_02252672:
cmp r6, r7
bne _02252686
cmp r5, r6
beq _02252686
ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
_02252686:
add r4, r4, #3
ldrb r0, [r4]
cmp r0, #0xff
bne _02252658
add r0, r1, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_02252694: .word sTypeEffectiveness
thumb_func_end CalculateTypeEffectiveness
thumb_func_start ov12_02252698
ov12_02252698: ; 0x02252698
cmp r0, #0
beq _022526C0
cmp r0, #0xd6
beq _022526C0
ldr r2, _022526C8 ; =0x0000017F
cmp r0, r2
beq _022526C0
add r1, r2, #0
sub r1, #0x6d
cmp r0, r1
beq _022526C0
sub r1, r2, #1
cmp r0, r1
beq _022526C0
ldr r1, _022526CC ; =0x0000FF8A
add r0, r0, r1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
cmp r0, #1
bhi _022526C4
_022526C0:
mov r0, #1
bx lr
_022526C4:
mov r0, #0
bx lr
.balign 4, 0
_022526C8: .word 0x0000017F
_022526CC: .word 0x0000FF8A
thumb_func_end ov12_02252698
thumb_func_start ov12_022526D0
ov12_022526D0: ; 0x022526D0
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r2, #0
cmp r1, #0xae
bne _022526FC
add r1, r4, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
cmp r0, #7
beq _022526F8
add r0, r5, #0
add r1, r4, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
cmp r0, #7
bne _022526FC
_022526F8:
mov r0, #1
pop {r3, r4, r5, pc}
_022526FC:
mov r0, #0
pop {r3, r4, r5, pc}
thumb_func_end ov12_022526D0
thumb_func_start ov12_02252700
ov12_02252700: ; 0x02252700
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r2, #0
add r5, r1, #0
add r1, r6, #0
mov r7, #0
bl BattleSys_GetFieldSide
str r0, [sp]
ldr r0, _02252754 ; =0x00002DB8
add r4, r5, r0
mov r0, #0xc0
mul r0, r6
str r0, [sp, #4]
ldrh r0, [r4, r0]
cmp r0, #0
beq _0225274E
ldr r0, _02252758 ; =0x0000219C
add r1, r5, r6
ldrb r0, [r1, r0]
bl MaskOfFlagNo
ldr r1, [sp]
lsl r1, r1, #3
add r2, r5, r1
mov r1, #0x71
lsl r1, r1, #2
ldr r1, [r2, r1]
lsl r1, r1, #3
lsr r1, r1, #0x1a
tst r0, r1
bne _0225274E
ldr r0, [sp, #4]
ldrh r0, [r4, r0]
bl ItemIdIsMail
cmp r0, #0
bne _0225274E
mov r7, #1
_0225274E:
add r0, r7, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02252754: .word 0x00002DB8
_02252758: .word 0x0000219C
thumb_func_end ov12_02252700
thumb_func_start ov12_0225275C
ov12_0225275C: ; 0x0225275C
push {r3, lr}
mov r2, #0xc0
mul r2, r1
add r1, r0, r2
ldr r0, _02252778 ; =0x00002DB8
ldrh r0, [r1, r0]
bl ItemIdIsMail
cmp r0, #0
bne _02252774
mov r0, #1
pop {r3, pc}
_02252774:
mov r0, #0
pop {r3, pc}
.balign 4, 0
_02252778: .word 0x00002DB8
thumb_func_end ov12_0225275C
thumb_func_start WhirlwindCheck
WhirlwindCheck: ; 0x0225277C
push {r4, r5, r6, lr}
add r5, r1, #0
ldr r2, [r5, #0x6c]
mov r1, #0xc0
add r4, r2, #0
ldr r2, _022527C8 ; =0x00002D74
mul r4, r1
add r3, r5, r2
ldrb r4, [r3, r4]
ldr r3, [r5, #0x64]
mov r6, #0
mul r1, r3
add r1, r5, r1
ldrb r1, [r1, r2]
cmp r1, r4
blo _022527A0
mov r6, #1
b _022527C4
_022527A0:
bl BattleSys_Random
ldr r2, [r5, #0x64]
mov r1, #0xc0
mul r1, r2
add r2, r5, r1
ldr r1, _022527C8 ; =0x00002D74
lsl r0, r0, #0x18
ldrb r1, [r2, r1]
lsr r0, r0, #0x18
add r1, r1, r4
mul r0, r1
asr r0, r0, #8
add r1, r0, #1
lsr r0, r4, #2
cmp r1, r0
ble _022527C4
mov r6, #1
_022527C4:
add r0, r6, #0
pop {r4, r5, r6, pc}
.balign 4, 0
_022527C8: .word 0x00002D74
thumb_func_end WhirlwindCheck
thumb_func_start GetBattlerAbility
GetBattlerAbility: ; 0x022527CC
push {r4, r5}
mov r2, #0xc0
mul r2, r1
mov r3, #0xb7
mov r4, #2
add r5, r0, r2
lsl r3, r3, #6
ldr r1, [r5, r3]
lsl r4, r4, #0x14
tst r4, r1
beq _022527F0
sub r3, #0x59
ldrb r3, [r5, r3]
cmp r3, #0x79
beq _022527F0
mov r0, #0
pop {r4, r5}
bx lr
_022527F0:
mov r3, #6
lsl r3, r3, #6
ldr r4, [r0, r3]
mov r3, #7
lsl r3, r3, #0xc
tst r3, r4
beq _0225280E
ldr r3, _02252830 ; =0x00002D67
add r4, r0, r2
ldrb r3, [r4, r3]
cmp r3, #0x1a
bne _0225280E
mov r0, #0
pop {r4, r5}
bx lr
_0225280E:
mov r3, #1
lsl r3, r3, #0xa
tst r1, r3
beq _02252826
ldr r1, _02252830 ; =0x00002D67
add r3, r0, r2
ldrb r1, [r3, r1]
cmp r1, #0x1a
bne _02252826
mov r0, #0
pop {r4, r5}
bx lr
_02252826:
add r1, r0, r2
ldr r0, _02252830 ; =0x00002D67
ldrb r0, [r1, r0]
pop {r4, r5}
bx lr
.balign 4, 0
_02252830: .word 0x00002D67
thumb_func_end GetBattlerAbility
thumb_func_start CheckBattlerAbilityIfNotIgnored
CheckBattlerAbilityIfNotIgnored: ; 0x02252834
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r7, r1, #0
str r2, [sp]
add r4, r3, #0
mov r6, #0
bl GetBattlerAbility
cmp r0, #0x68
beq _02252858
ldr r1, [sp]
add r0, r5, #0
bl GetBattlerAbility
cmp r4, r0
bne _02252886
mov r6, #1
b _02252886
_02252858:
ldr r1, [sp]
add r0, r5, #0
bl GetBattlerAbility
cmp r4, r0
bne _02252886
mov r0, #0xb5
lsl r0, r0, #2
add r1, r5, r0
mov r0, #0x1c
mul r0, r7
ldr r3, [r1, r0]
lsl r2, r3, #0x1c
lsr r2, r2, #0x1f
bne _02252886
mov r2, #8
orr r3, r2
str r3, [r1, r0]
ldr r1, _0225288C ; =0x0000213C
lsl r0, r2, #0x14
ldr r3, [r5, r1]
orr r0, r3
str r0, [r5, r1]
_02252886:
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_0225288C: .word 0x0000213C
thumb_func_end CheckBattlerAbilityIfNotIgnored
thumb_func_start CanSwitchMon
CanSwitchMon: ; 0x02252890
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
mov r6, #0
str r0, [sp]
str r1, [sp, #4]
add r4, r2, #0
str r6, [sp, #0x18]
bl BattleSys_GetBattleType
add r5, r0, #0
ldr r0, [sp]
add r1, r4, #0
bl BattleSys_GetParty
str r0, [sp, #0x14]
ldr r0, [sp]
add r1, r4, #0
bl BattleSys_GetPartySize
add r7, r0, #0
mov r0, #8
tst r0, r5
bne _022528D2
mov r0, #0x10
tst r0, r5
beq _022528E6
ldr r0, [sp]
add r1, r4, #0
bl ov12_0223AB0C
mov r1, #1
tst r0, r1
beq _022528E6
_022528D2:
mov r0, #1
str r0, [sp, #0x10]
ldr r0, [sp, #4]
mov r5, #0
add r1, r0, r4
ldr r0, _0225297C ; =0x0000219C
ldrb r0, [r1, r0]
str r0, [sp, #0xc]
str r0, [sp, #8]
b _02252922
_022528E6:
mov r0, #2
tst r0, r5
beq _02252910
mov r0, #1
str r0, [sp, #0x10]
ldr r0, [sp, #4]
mov r5, #0
add r1, r0, r4
ldr r0, _0225297C ; =0x0000219C
ldrb r0, [r1, r0]
add r1, r4, #0
str r0, [sp, #0xc]
ldr r0, [sp]
bl BattleSys_GetBattlerIdPartner
ldr r1, [sp, #4]
add r1, r1, r0
ldr r0, _0225297C ; =0x0000219C
ldrb r0, [r1, r0]
str r0, [sp, #8]
b _02252922
_02252910:
mov r0, #1
str r0, [sp, #0x10]
ldr r0, [sp, #4]
mov r5, #0
add r1, r0, r4
ldr r0, _0225297C ; =0x0000219C
ldrb r0, [r1, r0]
str r0, [sp, #0xc]
str r0, [sp, #8]
_02252922:
cmp r5, r7
bge _0225296C
_02252926:
ldr r0, [sp, #0x14]
add r1, r5, #0
bl GetPartyMonByIndex
mov r1, #5
mov r2, #0
add r4, r0, #0
bl GetMonData
cmp r0, #0
beq _02252966
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
bl GetMonData
cmp r0, #0
bne _02252966
add r0, r4, #0
mov r1, #0xa3
mov r2, #0
bl GetMonData
cmp r0, #0
beq _02252966
ldr r0, [sp, #0xc]
cmp r0, r5
beq _02252966
ldr r0, [sp, #8]
cmp r0, r5
beq _02252966
add r6, r6, #1
_02252966:
add r5, r5, #1
cmp r5, r7
blt _02252926
_0225296C:
ldr r0, [sp, #0x10]
cmp r6, r0
blt _02252976
mov r0, #1
str r0, [sp, #0x18]
_02252976:
ldr r0, [sp, #0x18]
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0225297C: .word 0x0000219C
thumb_func_end CanSwitchMon
thumb_func_start CanEscape
CanEscape: ; 0x02252980
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r1, #0
add r6, r2, #0
add r7, r0, #0
add r4, r3, #0
bl BattleSys_GetBattleType
str r0, [sp, #0xc]
add r0, r5, #0
add r1, r6, #0
bl GetBattlerHeldItemEffect
str r0, [sp, #8]
cmp r0, #0x3f
beq _022529B6
mov r1, #0xa9
ldr r0, [sp, #0xc]
lsl r1, r1, #2
tst r0, r1
bne _022529B6
add r0, r5, #0
add r1, r6, #0
bl GetBattlerAbility
cmp r0, #0x32
bne _022529BC
_022529B6:
add sp, #0x14
mov r0, #0
pop {r4, r5, r6, r7, pc}
_022529BC:
add r0, r7, #0
add r1, r6, #0
bl BattleSys_GetFieldSide
add r0, r7, #0
bl BattleSys_GetMaxBattlers
mov r0, #0x17
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r2, #9
add r3, r6, #0
bl CheckAbilityActive
str r0, [sp, #0x10]
cmp r0, #0
beq _02252A12
add r0, r5, #0
add r1, r6, #0
bl GetBattlerAbility
cmp r0, #0x17
beq _02252A12
cmp r4, #0
bne _022529F6
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_022529F6:
mov r0, #0xb
strb r0, [r4, #1]
mov r0, #0x27
strh r0, [r4, #2]
ldr r1, [sp, #0x10]
add r0, r5, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0x17
str r0, [r4, #8]
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252A12:
mov r0, #0x47
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r2, #3
add r3, r6, #0
bl CheckAbilityActive
str r0, [sp, #4]
cmp r0, #0
beq _02252AC4
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #7
lsl r0, r0, #0xc
tst r0, r1
bne _02252A9E
ldr r0, [sp, #8]
cmp r0, #0x6a
beq _02252A9E
add r0, r5, #0
add r1, r6, #0
bl GetBattlerAbility
cmp r0, #0x1a
beq _02252AC4
mov r0, #0xc0
mul r0, r6
add r1, r5, r0
ldr r0, _02252B58 ; =0x00002DCC
ldr r0, [r1, r0]
lsl r0, r0, #0x10
lsr r0, r0, #0x1d
bne _02252AC4
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
cmp r0, #2
beq _02252AC4
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
cmp r0, #2
beq _02252AC4
cmp r4, #0
bne _02252A82
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252A82:
mov r0, #0xb
strb r0, [r4, #1]
mov r0, #0x27
strh r0, [r4, #2]
ldr r1, [sp, #4]
add r0, r5, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0x47
str r0, [r4, #8]
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252A9E:
cmp r4, #0
bne _02252AA8
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252AA8:
mov r0, #0xb
strb r0, [r4, #1]
mov r0, #0x27
strh r0, [r4, #2]
ldr r1, [sp, #4]
add r0, r5, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0x47
str r0, [r4, #8]
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252AC4:
mov r0, #0x2a
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r2, #3
add r3, r6, #0
bl CheckAbilityActive
add r7, r0, #0
beq _02252B1E
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
cmp r0, #8
beq _02252AF8
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
cmp r0, #8
bne _02252B1E
_02252AF8:
cmp r4, #0
bne _02252B02
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252B02:
mov r0, #0xb
strb r0, [r4, #1]
mov r0, #0x27
strh r0, [r4, #2]
add r0, r5, #0
add r1, r7, #0
bl CreateNicknameTag
str r0, [r4, #4]
mov r0, #0x2a
str r0, [r4, #8]
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252B1E:
mov r0, #0xc0
mul r0, r6
add r3, r5, r0
ldr r0, _02252B5C ; =0x00002DB0
ldr r1, _02252B60 ; =0x0400E000
ldr r2, [r3, r0]
tst r2, r1
bne _02252B38
add r0, #0x10
ldr r2, [r3, r0]
lsr r0, r1, #0x10
tst r0, r2
beq _02252B50
_02252B38:
cmp r4, #0
bne _02252B42
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252B42:
mov r0, #0
strb r0, [r4, #1]
ldr r0, _02252B64 ; =0x0000031A
add sp, #0x14
strh r0, [r4, #2]
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02252B50:
mov r0, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_02252B58: .word 0x00002DCC
_02252B5C: .word 0x00002DB0
_02252B60: .word 0x0400E000
_02252B64: .word 0x0000031A
thumb_func_end CanEscape
thumb_func_start BattleTryRun
BattleTryRun: ; 0x02252B68
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r4, r2, #0
str r0, [sp]
bl BattleSys_GetBattleType
add r7, r0, #0
add r0, r5, #0
add r1, r4, #0
bl GetBattlerHeldItemEffect
mov r6, #0
cmp r0, #0x3f
bne _02252B9C
mov r0, #0x75
lsl r0, r0, #2
add r3, r5, r0
lsl r2, r4, #6
ldr r1, [r3, r2]
ldr r0, _02252C34 ; =0xFFFFFE7F
mov r6, #1
and r1, r0
mov r0, #0x80
orr r0, r1
str r0, [r3, r2]
b _02252C30
_02252B9C:
mov r0, #0xa9
lsl r0, r0, #2
tst r0, r7
beq _02252BA8
mov r6, #1
b _02252C30
_02252BA8:
add r0, r5, #0
add r1, r4, #0
bl GetBattlerAbility
cmp r0, #0x32
bne _02252BCC
mov r1, #0x75
lsl r1, r1, #2
add r5, r5, r1
lsl r3, r4, #6
ldr r2, [r5, r3]
ldr r0, _02252C34 ; =0xFFFFFE7F
sub r1, #0xd4
and r0, r2
orr r0, r1
str r0, [r5, r3]
mov r6, #1
b _02252C30
_02252BCC:
mov r0, #1
add r1, r4, #0
eor r1, r0
mov r2, #0xc0
add r3, r1, #0
mul r3, r2
add r1, r5, r3
ldr r3, _02252C38 ; =0x00002D46
mul r2, r4
add r2, r5, r2
ldrh r1, [r1, r3]
ldrh r2, [r2, r3]
cmp r2, r1
bhs _02252C16
lsl r0, r2, #7
bl _s32_div_f
ldr r1, _02252C3C ; =0x0000311E
ldrb r2, [r5, r1]
mov r1, #0x1e
mul r1, r2
add r0, r1, r0
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [sp]
bl BattleSys_Random
lsr r1, r0, #0x1f
lsl r2, r0, #0x18
sub r2, r2, r1
mov r0, #0x18
ror r2, r0
add r0, r1, r2
cmp r7, r0
ble _02252C18
mov r6, #1
b _02252C18
_02252C16:
add r6, r0, #0
_02252C18:
cmp r6, #0
bne _02252C28
ldr r0, [sp]
add r1, r4, #0
mov r2, #0
mov r3, #0x63
bl BattleController_EmitIncrementGameStat
_02252C28:
ldr r0, _02252C3C ; =0x0000311E
ldrb r1, [r5, r0]
add r1, r1, #1
strb r1, [r5, r0]
_02252C30:
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02252C34: .word 0xFFFFFE7F
_02252C38: .word 0x00002D46
_02252C3C: .word 0x0000311E
thumb_func_end BattleTryRun
thumb_func_start ov12_02252C40
ov12_02252C40: ; 0x02252C40
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bl GetBattlerAbility
cmp r0, #0x36
bne _02252C6A
mov r2, #0xc0
mul r2, r4
add r3, r5, r2
ldr r2, _02252C70 ; =0x00002DC8
mov r0, #0x15
lsl r0, r0, #4
ldr r2, [r3, r2]
ldr r1, [r5, r0]
mov r0, #1
lsl r2, r2, #1
and r1, r0
lsr r2, r2, #0x1f
cmp r1, r2
bne _02252C6C
_02252C6A:
mov r0, #0
_02252C6C:
pop {r3, r4, r5, pc}
nop
_02252C70: .word 0x00002DC8
thumb_func_end ov12_02252C40
thumb_func_start ov12_02252C74
ov12_02252C74: ; 0x02252C74
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r1, #0
mov r1, #0
str r0, [sp]
add r4, r2, #0
add r5, r3, #0
str r1, [sp, #4]
bl BattleSys_GetMaxBattlers
str r0, [sp, #0xc]
ldr r0, [sp]
add r1, r4, #0
bl BattleSys_GetFieldSide
str r0, [sp, #8]
ldr r0, [sp, #0xc]
mov r7, #0
cmp r0, #0
ble _02252CDE
ldr r4, _02252CE4 ; =0x00002D4C
_02252C9E:
ldr r0, [sp]
add r1, r7, #0
bl BattleSys_GetFieldSide
ldr r1, [sp, #8]
cmp r1, r0
beq _02252CD4
mov r0, #0xb7
lsl r0, r0, #6
ldr r1, [r6, r0]
mov r0, #2
lsl r0, r0, #0xc
tst r0, r1
beq _02252CD4
mov r1, #0
add r2, r6, #0
_02252CBE:
ldrh r0, [r2, r4]
cmp r5, r0
beq _02252CCC
add r1, r1, #1
add r2, r2, #2
cmp r1, #4
blt _02252CBE
_02252CCC:
cmp r1, #4
beq _02252CD4
mov r0, #1
str r0, [sp, #4]
_02252CD4:
ldr r0, [sp, #0xc]
add r7, r7, #1
add r6, #0xc0
cmp r7, r0
blt _02252C9E
_02252CDE:
ldr r0, [sp, #4]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02252CE4: .word 0x00002D4C
thumb_func_end ov12_02252C74
thumb_func_start ov12_02252CE8
ov12_02252CE8: ; 0x02252CE8
push {r4, r5, r6, lr}
add r5, r1, #0
add r4, r2, #0
mov r6, #0
bl BattleSys_GetMaxBattlers
add r3, r6, #0
cmp r0, #0
ble _02252D10
mov r1, #0xb7
lsl r1, r1, #6
_02252CFE:
ldr r2, [r5, r1]
tst r2, r4
beq _02252D08
mov r6, #1
b _02252D10
_02252D08:
add r3, r3, #1
add r5, #0xc0
cmp r3, r0
blt _02252CFE
_02252D10:
add r0, r6, #0
pop {r4, r5, r6, pc}
thumb_func_end ov12_02252CE8
thumb_func_start ov12_02252D14
ov12_02252D14: ; 0x02252D14
ldr r2, _02252D34 ; =0x0000216C
mov r0, #0
str r0, [r1, r2]
add r0, r2, #0
mov r3, #1
sub r0, #0x1c
str r3, [r1, r0]
add r0, r2, #0
sub r0, #0x30
ldr r3, [r1, r0]
ldr r0, _02252D38 ; =0xFFEFFFFF
sub r2, #0x30
and r0, r3
str r0, [r1, r2]
bx lr
nop
_02252D34: .word 0x0000216C
_02252D38: .word 0xFFEFFFFF
thumb_func_end ov12_02252D14
thumb_func_start ov12_02252D3C
ov12_02252D3C: ; 0x02252D3C
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
str r0, [sp, #4]
str r1, [sp, #8]
bl BattleSys_GetMaxBattlers
mov r2, #0
str r0, [sp, #0x14]
cmp r0, #0
ble _02252D60
ldr r1, _02252DC0 ; =0x000021EC
_02252D52:
ldr r0, [sp, #8]
add r0, r0, r2
strb r2, [r0, r1]
ldr r0, [sp, #0x14]
add r2, r2, #1
cmp r2, r0
blt _02252D52
_02252D60:
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #0x14]
sub r0, r0, #1
str r0, [sp, #0x18]
cmp r0, #0
ble _02252DBC
_02252D6E:
ldr r0, [sp, #0x10]
add r4, r0, #1
ldr r0, [sp, #0x14]
cmp r4, r0
bge _02252DB0
ldr r1, [sp, #8]
ldr r0, [sp, #0x10]
add r6, r1, r0
_02252D7E:
ldr r0, _02252DC0 ; =0x000021EC
ldr r1, [sp, #8]
ldrb r0, [r6, r0]
str r0, [sp, #0xc]
ldr r0, [sp, #8]
ldr r2, [sp, #0xc]
add r7, r0, r4
ldr r0, _02252DC0 ; =0x000021EC
ldrb r5, [r7, r0]
mov r0, #1
str r0, [sp]
ldr r0, [sp, #4]
add r3, r5, #0
bl ov12_0224FC48
cmp r0, #0
beq _02252DA8
ldr r0, _02252DC0 ; =0x000021EC
ldr r1, [sp, #0xc]
strb r5, [r6, r0]
strb r1, [r7, r0]
_02252DA8:
ldr r0, [sp, #0x14]
add r4, r4, #1
cmp r4, r0
blt _02252D7E
_02252DB0:
ldr r0, [sp, #0x10]
add r1, r0, #1
ldr r0, [sp, #0x18]
str r1, [sp, #0x10]
cmp r1, r0
blt _02252D6E
_02252DBC:
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02252DC0: .word 0x000021EC
thumb_func_end ov12_02252D3C
thumb_func_start ov12_02252DC4
ov12_02252DC4: ; 0x02252DC4
push {r3, r4}
mov r2, #6
lsl r2, r2, #6
ldr r2, [r1, r2]
mov r1, #7
lsl r1, r1, #0xc
mov r0, #0
tst r1, r2
beq _02252DEE
ldr r4, _02252DF4 ; =ov12_0226CB7C
add r2, r0, #0
_02252DDA:
ldrh r1, [r4]
cmp r3, r1
bne _02252DE6
mov r0, #1
pop {r3, r4}
bx lr
_02252DE6:
add r2, r2, #1
add r4, r4, #2
cmp r2, #6
blo _02252DDA
_02252DEE:
pop {r3, r4}
bx lr
nop
_02252DF4: .word ov12_0226CB7C
thumb_func_end ov12_02252DC4
thumb_func_start ov12_02252DF8
ov12_02252DF8: ; 0x02252DF8
push {r3, r4}
mov r4, #0xc0
mul r4, r2
add r2, r1, r4
ldr r1, _02252E28 ; =0x00002DCC
mov r0, #0
ldr r1, [r2, r1]
lsl r1, r1, #0xd
lsr r1, r1, #0x1d
beq _02252E24
ldr r4, _02252E2C ; =ov12_0226CBA2
add r2, r0, #0
_02252E10:
ldrh r1, [r4]
cmp r3, r1
bne _02252E1C
mov r0, #1
pop {r3, r4}
bx lr
_02252E1C:
add r2, r2, #1
add r4, r4, #2
cmp r2, #0xe
blo _02252E10
_02252E24:
pop {r3, r4}
bx lr
.balign 4, 0
_02252E28: .word 0x00002DCC
_02252E2C: .word ov12_0226CBA2
thumb_func_end ov12_02252DF8
thumb_func_start ov12_02252E30
ov12_02252E30: ; 0x02252E30
push {r4, r5, r6, r7}
mov r0, #0xc1
lsl r0, r0, #6
ldr r3, [r1, r0]
ldr r0, _02252E98 ; =0x00000183
cmp r3, r0
beq _02252E94
ldr r4, [r1, #0x64]
mov r0, #0xc0
add r2, r4, #0
mul r2, r0
ldr r4, _02252E9C ; =0x00002DCC
add r0, r1, r2
ldr r4, [r0, r4]
lsl r4, r4, #0x13
lsr r7, r4, #0x1d
cmp r7, #4
beq _02252E94
mov r6, #0
cmp r7, #0
bls _02252E6A
ldr r4, _02252EA0 ; =0x00002DF0
_02252E5C:
ldrh r5, [r0, r4]
cmp r3, r5
beq _02252E94
add r6, r6, #1
add r0, r0, #2
cmp r6, r7
blo _02252E5C
_02252E6A:
add r2, r1, r2
lsl r0, r6, #1
add r2, r2, r0
ldr r0, _02252EA0 ; =0x00002DF0
strh r3, [r2, r0]
sub r0, #0x24
add r2, r1, r0
ldr r3, [r1, #0x64]
mov r0, #0xc0
add r1, r3, #0
mul r1, r0
ldr r3, [r2, r1]
ldr r0, _02252EA4 ; =0xFFFFE3FF
and r0, r3
lsl r3, r3, #0x13
lsr r3, r3, #0x1d
add r3, r3, #1
lsl r3, r3, #0x1d
lsr r3, r3, #0x13
orr r0, r3
str r0, [r2, r1]
_02252E94:
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
_02252E98: .word 0x00000183
_02252E9C: .word 0x00002DCC
_02252EA0: .word 0x00002DF0
_02252EA4: .word 0xFFFFE3FF
thumb_func_end ov12_02252E30
thumb_func_start GetBattlerLearnedMoveCount
GetBattlerLearnedMoveCount: ; 0x02252EA8
mov r3, #0xc0
mul r3, r2
add r3, r1, r3
ldr r1, _02252EC4 ; =0x00002D4C
mov r0, #0
_02252EB2:
ldrh r2, [r3, r1]
cmp r2, #0
beq _02252EC0
add r0, r0, #1
add r3, r3, #2
cmp r0, #4
blt _02252EB2
_02252EC0:
bx lr
nop
_02252EC4: .word 0x00002D4C
thumb_func_end GetBattlerLearnedMoveCount
thumb_func_start ov12_02252EC8
ov12_02252EC8: ; 0x02252EC8
push {r3, r4, r5, r6, r7, lr}
add r4, r2, #0
mov r2, #0
add r5, r0, #0
add r7, r1, #0
str r2, [sp]
bl GetBattlerAbility
cmp r0, #0x60
bne _02252EE0
mov r6, #0
b _02252EF4
_02252EE0:
ldr r0, _02253044 ; =0x00002160
ldr r6, [r5, r0]
cmp r6, #0
bne _02252EF4
ldr r0, _02253048 ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225304C ; =0x000003E2
ldrb r6, [r1, r0]
_02252EF4:
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
mov r3, #0xa
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02252F24
cmp r6, #0xd
bne _02252F24
cmp r7, r4
beq _02252F24
mov r0, #0xc0
mul r0, r4
add r1, r5, r0
ldr r0, _02253050 ; =0x00002D90
ldr r0, [r1, r0]
mov r1, #4
bl DamageDivide
ldr r1, _02253054 ; =0x0000215C
str r0, [r5, r1]
mov r0, #0xb2
str r0, [sp]
_02252F24:
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
mov r3, #0xb
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02252F6A
cmp r6, #0xb
bne _02252F6A
ldr r0, _02253058 ; =0x0000213C
ldr r1, [r5, r0]
mov r0, #0x20
tst r0, r1
bne _02252F6A
ldr r0, _02253048 ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225305C ; =0x000003E1
ldrb r0, [r1, r0]
cmp r0, #0
beq _02252F6A
mov r0, #0xc0
mul r0, r4
add r1, r5, r0
ldr r0, _02253050 ; =0x00002D90
ldr r0, [r1, r0]
mov r1, #4
bl DamageDivide
ldr r1, _02253054 ; =0x0000215C
str r0, [r5, r1]
mov r0, #0xb2
str r0, [sp]
_02252F6A:
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
mov r3, #0x12
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02252FB0
cmp r6, #0xa
bne _02252FB0
mov r0, #0xc0
mul r0, r4
add r1, r5, r0
ldr r0, _02253060 ; =0x00002DAC
ldr r0, [r1, r0]
mov r1, #0x20
tst r0, r1
bne _02252FB0
ldr r0, _02253058 ; =0x0000213C
ldr r0, [r5, r0]
tst r0, r1
bne _02252FB0
ldr r0, _02253048 ; =0x00003044
ldr r3, [r5, r0]
lsl r0, r3, #4
add r2, r5, r0
ldr r0, _0225305C ; =0x000003E1
ldrb r0, [r2, r0]
cmp r0, #0
bne _02252FAC
add r1, #0xe5
cmp r3, r1
bne _02252FB0
_02252FAC:
mov r0, #0xb3
str r0, [sp]
_02252FB0:
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
mov r3, #0x2b
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02252FDC
ldr r0, _02253048 ; =0x00003044
ldr r2, _02253064 ; =ov12_0226EC20
ldr r3, [r5, r0]
mov r1, #0
_02252FC8:
ldrh r0, [r2]
cmp r3, r0
bne _02252FD4
mov r0, #0xb5
str r0, [sp]
b _02252FDC
_02252FD4:
add r1, r1, #1
add r2, r2, #2
cmp r1, #0xc
blo _02252FC8
_02252FDC:
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
mov r3, #0x4e
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02252FF8
cmp r6, #0xd
bne _02252FF8
cmp r7, r4
beq _02252FF8
mov r0, #0xb6
str r0, [sp]
_02252FF8:
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
mov r3, #0x57
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _0225303E
cmp r6, #0xb
bne _0225303E
ldr r0, _02253058 ; =0x0000213C
ldr r1, [r5, r0]
mov r0, #0x20
tst r0, r1
bne _0225303E
ldr r0, _02253048 ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225305C ; =0x000003E1
ldrb r0, [r1, r0]
cmp r0, #0
beq _0225303E
mov r0, #0xc0
mul r0, r4
add r1, r5, r0
ldr r0, _02253050 ; =0x00002D90
ldr r0, [r1, r0]
mov r1, #4
bl DamageDivide
ldr r1, _02253054 ; =0x0000215C
str r0, [r5, r1]
mov r0, #0xb2
str r0, [sp]
_0225303E:
ldr r0, [sp]
pop {r3, r4, r5, r6, r7, pc}
nop
_02253044: .word 0x00002160
_02253048: .word 0x00003044
_0225304C: .word 0x000003E2
_02253050: .word 0x00002D90
_02253054: .word 0x0000215C
_02253058: .word 0x0000213C
_0225305C: .word 0x000003E1
_02253060: .word 0x00002DAC
_02253064: .word ov12_0226EC20
thumb_func_end ov12_02252EC8
thumb_func_start ov12_02253068
ov12_02253068: ; 0x02253068
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r1, #0
add r4, r2, #0
str r0, [sp]
add r0, r5, #0
add r1, r4, #0
mov r6, #0
bl GetBattlerAbility
cmp r0, #3
beq _02253086
cmp r0, #0x3d
beq _022530CC
b _0225314E
_02253086:
mov r2, #0xc0
add r0, r4, #0
mul r0, r2
ldr r3, _0225316C ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r3]
cmp r1, #0
beq _0225314E
add r1, r3, #0
sub r1, #0x31
ldrsb r1, [r0, r1]
cmp r1, #0xc
bge _0225314E
add r2, #0x90
ldr r1, [r5, r2]
add r3, #0x48
ldr r0, [r0, r3]
add r1, r1, #1
cmp r1, r0
beq _0225314E
add r0, r5, #0
mov r1, #0x11
add r0, #0x8c
str r1, [r0]
add r0, r5, #0
mov r1, #3
add r0, #0x88
str r1, [r0]
add r0, r5, #0
add r0, #0x94
str r4, [r0]
mov r0, #0xc
str r0, [sp, #4]
mov r6, #1
b _0225314E
_022530CC:
ldr r1, _02253170 ; =0x00002DAC
mov r0, #0xc0
add r7, r4, #0
mul r7, r0
add r0, r5, r1
str r0, [sp, #8]
ldr r0, [r0, r7]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _0225314E
add r0, r5, r7
sub r1, #0x20
ldr r0, [r0, r1]
cmp r0, #0
beq _0225314E
ldr r0, [sp]
bl BattleSys_Random
mov r1, #0xa
bl _s32_div_f
cmp r1, #3
bge _0225314E
ldr r0, [sp, #8]
mov r1, #7
ldr r0, [r0, r7]
tst r1, r0
beq _0225310E
mov r0, #0x13
add r1, r6, #0
lsl r0, r0, #4
str r1, [r5, r0]
b _02253142
_0225310E:
ldr r1, _02253174 ; =0x00000F88
tst r1, r0
beq _0225311E
mov r0, #0x13
mov r1, #1
lsl r0, r0, #4
str r1, [r5, r0]
b _02253142
_0225311E:
mov r1, #0x10
tst r1, r0
beq _0225312E
mov r0, #0x13
mov r1, #2
lsl r0, r0, #4
str r1, [r5, r0]
b _02253142
_0225312E:
mov r1, #0x40
tst r0, r1
beq _0225313C
mov r0, #3
add r1, #0xf0
str r0, [r5, r1]
b _02253142
_0225313C:
mov r0, #4
add r1, #0xf0
str r0, [r5, r1]
_02253142:
mov r0, #0x46
lsl r0, r0, #2
str r4, [r5, r0]
mov r0, #0xbe
str r0, [sp, #4]
mov r6, #1
_0225314E:
cmp r6, #1
bne _02253164
ldr r2, [sp, #4]
add r0, r5, #0
mov r1, #1
bl ReadBattleScriptFromNarc
ldr r0, [r5, #8]
str r0, [r5, #0xc]
mov r0, #0x16
str r0, [r5, #8]
_02253164:
add r0, r6, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_0225316C: .word 0x00002D8C
_02253170: .word 0x00002DAC
_02253174: .word 0x00000F88
thumb_func_end ov12_02253068
thumb_func_start DamageDivide
DamageDivide: ; 0x02253178
push {r4, lr}
cmp r0, #0
beq _02253192
bge _02253186
mov r4, #0
mvn r4, r4
b _02253188
_02253186:
mov r4, #1
_02253188:
bl _s32_div_f
cmp r0, #0
bne _02253192
add r0, r4, #0
_02253192:
pop {r4, pc}
thumb_func_end DamageDivide
thumb_func_start ov12_02253194
ov12_02253194: ; 0x02253194
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xd0
add r6, r0, #0
add r5, r1, #0
bl BattleSys_GetMaxBattlers
str r0, [sp, #0x80]
mov r0, #0
str r0, [sp, #0x84]
str r0, [sp, #0xcc]
thumb_func_end ov12_02253194
thumb_func_start ov12_022531A8
ov12_022531A8: ; 0x022531A8
ldr r0, [r5, #0x58]
cmp r0, #0xf
bls _022531B2
bl _02253D80
_022531B2:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_022531BE: ; jump table
.short _022531DE - _022531BE - 2 ; case 0
.short _02253274 - _022531BE - 2 ; case 1
.short _02253338 - _022531BE - 2 ; case 2
.short _02253448 - _022531BE - 2 ; case 3
.short _022534BE - _022531BE - 2 ; case 4
.short _02253624 - _022531BE - 2 ; case 5
.short _02253764 - _022531BE - 2 ; case 6
.short _02253974 - _022531BE - 2 ; case 7
.short _02253ACC - _022531BE - 2 ; case 8
.short _02253BA4 - _022531BE - 2 ; case 9
.short _02253C18 - _022531BE - 2 ; case 10
.short _02253CA6 - _022531BE - 2 ; case 11
.short _02253CC2 - _022531BE - 2 ; case 12
.short _02253CFC - _022531BE - 2 ; case 13
.short _02253D38 - _022531BE - 2 ; case 14
.short _02253D78 - _022531BE - 2 ; case 15
_022531DE:
ldr r0, _022534D0 ; =0x00003121
ldrb r0, [r5, r0]
cmp r0, #0
bne _0225326A
add r0, r6, #0
bl ov12_0223BAF8
ldr r1, _022534D4 ; =0x000003E9
cmp r0, r1
bgt _0225321A
bge _0225324C
cmp r0, #0xa
bhi _0225325E
add r1, r0, r0
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02253204: ; jump table
.short _0225325E - _02253204 - 2 ; case 0
.short _02253222 - _02253204 - 2 ; case 1
.short _02253222 - _02253204 - 2 ; case 2
.short _02253222 - _02253204 - 2 ; case 3
.short _0225322C - _02253204 - 2 ; case 4
.short _0225322C - _02253204 - 2 ; case 5
.short _0225322C - _02253204 - 2 ; case 6
.short _02253238 - _02253204 - 2 ; case 7
.short _0225325E - _02253204 - 2 ; case 8
.short _02253242 - _02253204 - 2 ; case 9
.short _02253242 - _02253204 - 2 ; case 10
_0225321A:
ldr r1, _022534D8 ; =0x000003EA
cmp r0, r1
beq _02253256
b _0225325E
_02253222:
ldr r0, _022534DC ; =0x0000010F
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _0225325E
_0225322C:
mov r0, #0x11
lsl r0, r0, #4
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _0225325E
_02253238:
ldr r0, _022534E0 ; =0x00000111
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _0225325E
_02253242:
ldr r0, _022534E4 ; =0x00000112
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _0225325E
_0225324C:
ldr r0, _022534E8 ; =0x00000126
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _0225325E
_02253256:
ldr r0, _022534EC ; =0x00000127
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
_0225325E:
ldr r0, [sp, #0x84]
cmp r0, #1
bne _0225326A
ldr r0, _022534D0 ; =0x00003121
mov r1, #1
strb r1, [r5, r0]
_0225326A:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
bl _02253D80
_02253274:
ldr r0, [sp, #0x80]
mov r7, #0
cmp r0, #0
ble _02253324
ldr r0, _022534F0 ; =0x00002D68
add r0, r5, r0
str r0, [sp, #0x90]
_02253282:
ldr r0, _022534F4 ; =0x000021EC
add r1, r5, r7
ldrb r4, [r1, r0]
add r0, r6, #0
mov r2, #0
add r1, r4, #0
bl ov12_0223ABB8
str r0, [sp, #0x88]
add r0, r6, #0
add r1, r4, #0
mov r2, #2
bl ov12_0223ABB8
add r3, r0, #0
ldr r2, [sp, #0x88]
add r0, r6, #0
add r1, r5, #0
bl ov12_022585B8
mov r1, #0x12
lsl r1, r1, #4
str r0, [r5, r1]
mov r0, #0xc0
mul r0, r4
ldr r1, [sp, #0x90]
str r0, [sp, #0x8c]
ldr r0, [r1, r0]
lsl r0, r0, #0x1d
lsr r0, r0, #0x1f
bne _0225331C
mov r0, #0x12
lsl r0, r0, #4
ldr r1, [r5, r0]
cmp r1, #0xff
beq _0225331C
ldr r0, [sp, #0x8c]
ldr r2, _022534F8 ; =0x00002D8C
add r0, r5, r0
ldr r2, [r0, r2]
cmp r2, #0
beq _0225331C
ldr r2, _022534FC ; =0x00002DB8
ldrh r0, [r0, r2]
cmp r0, #0x70
beq _0225331C
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
add r0, r2, #0
sub r0, #0x2c
ldr r0, [r1, r0]
cmp r0, #0
beq _0225331C
add r0, r5, #0
add r1, r4, #0
bl GetBattlerAbility
cmp r0, #0x24
bne _0225331C
ldr r1, [sp, #0x90]
ldr r0, [sp, #0x8c]
ldr r1, [r1, r0]
mov r0, #4
add r2, r1, #0
orr r2, r0
ldr r1, [sp, #0x90]
ldr r0, [sp, #0x8c]
str r2, [r1, r0]
mov r0, #0x46
lsl r0, r0, #2
str r4, [r5, r0]
mov r0, #0xbb
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253324
_0225331C:
ldr r0, [sp, #0x80]
add r7, r7, #1
cmp r7, r0
blt _02253282
_02253324:
ldr r0, [sp, #0x80]
cmp r7, r0
beq _0225332E
bl _02253D80
_0225332E:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
bl _02253D80
_02253338:
mov r0, #0
str r0, [sp, #0x2c]
ldr r0, [sp, #0x80]
cmp r0, #0
ble _02253436
ldr r0, _022534F0 ; =0x00002D68
add r7, r5, r0
mov r0, #1
str r0, [sp, #0xbc]
str r0, [sp, #0xb8]
str r0, [sp, #0xb4]
str r0, [sp, #0xb0]
_02253350:
ldr r0, [sp, #0x2c]
add r1, r5, r0
ldr r0, _022534F4 ; =0x000021EC
ldrb r1, [r1, r0]
mov r0, #0xc0
add r4, r1, #0
mul r4, r0
ldr r0, [r7, r4]
str r1, [sp, #0x10]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
bne _0225341A
ldr r0, _022534F8 ; =0x00002D8C
add r1, r5, r4
ldr r0, [r1, r0]
cmp r0, #0
beq _0225341A
ldr r1, [sp, #0x10]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x2d
bgt _02253386
bge _022533B6
cmp r0, #2
beq _02253394
b _0225341A
_02253386:
cmp r0, #0x46
bgt _0225338E
beq _022533D8
b _0225341A
_0225338E:
cmp r0, #0x75
beq _022533FA
b _0225341A
_02253394:
ldr r0, [r7, r4]
ldr r1, [sp, #0xb0]
bic r0, r1
mov r1, #1
orr r0, r1
str r0, [r7, r4]
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #2
tst r0, r1
bne _0225341A
mov r0, #0xb7
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _0225341A
_022533B6:
ldr r0, [r7, r4]
ldr r1, [sp, #0xb4]
bic r0, r1
mov r1, #1
orr r0, r1
str r0, [r7, r4]
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #8
tst r0, r1
bne _0225341A
mov r0, #0xb8
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _0225341A
_022533D8:
ldr r0, [r7, r4]
ldr r1, [sp, #0xb8]
bic r0, r1
mov r1, #1
orr r0, r1
str r0, [r7, r4]
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #0x20
tst r0, r1
bne _0225341A
mov r0, #0xb9
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _0225341A
_022533FA:
ldr r0, [r7, r4]
ldr r1, [sp, #0xbc]
bic r0, r1
mov r1, #1
orr r0, r1
str r0, [r7, r4]
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #0x80
tst r0, r1
bne _0225341A
mov r0, #0xfc
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
_0225341A:
ldr r0, [sp, #0x84]
cmp r0, #1
bne _0225342A
mov r1, #0x46
ldr r0, [sp, #0x10]
lsl r1, r1, #2
str r0, [r5, r1]
b _02253436
_0225342A:
ldr r0, [sp, #0x2c]
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x2c]
cmp r1, r0
blt _02253350
_02253436:
ldr r1, [sp, #0x2c]
ldr r0, [sp, #0x80]
cmp r1, r0
bne _022534B0
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
bl _02253D80
_02253448:
ldr r0, [sp, #0x80]
mov r4, #0
cmp r0, #0
ble _022534AA
ldr r0, _022534F0 ; =0x00002D68
add r0, r5, r0
str r0, [sp, #0x94]
_02253456:
ldr r0, _022534F4 ; =0x000021EC
add r1, r5, r4
ldrb r1, [r1, r0]
mov r0, #0xc0
add r7, r1, #0
mul r7, r0
ldr r0, [sp, #0x94]
str r1, [sp, #0x14]
ldr r0, [r0, r7]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1f
bne _022534A2
ldr r0, _022534F8 ; =0x00002D8C
add r1, r5, r7
ldr r0, [r1, r0]
cmp r0, #0
beq _022534A2
ldr r1, [sp, #0x14]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x16
bne _022534A2
ldr r0, [sp, #0x94]
ldr r1, [r0, r7]
mov r0, #2
orr r1, r0
ldr r0, [sp, #0x94]
str r1, [r0, r7]
mov r1, #0x46
ldr r0, [sp, #0x14]
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0xba
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _022534AA
_022534A2:
ldr r0, [sp, #0x80]
add r4, r4, #1
cmp r4, r0
blt _02253456
_022534AA:
ldr r0, [sp, #0x80]
cmp r4, r0
beq _022534B4
_022534B0:
bl _02253D80
_022534B4:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
bl _02253D80
_022534BE:
mov r0, #0
str r0, [sp, #0x30]
ldr r0, [sp, #0x80]
cmp r0, #0
bgt _022534CA
b _02253612
_022534CA:
ldr r0, _022534F0 ; =0x00002D68
b _02253500
nop
_022534D0: .word 0x00003121
_022534D4: .word 0x000003E9
_022534D8: .word 0x000003EA
_022534DC: .word 0x0000010F
_022534E0: .word 0x00000111
_022534E4: .word 0x00000112
_022534E8: .word 0x00000126
_022534EC: .word 0x00000127
_022534F0: .word 0x00002D68
_022534F4: .word 0x000021EC
_022534F8: .word 0x00002D8C
_022534FC: .word 0x00002DB8
_02253500:
add r0, r5, r0
str r0, [sp, #0x9c]
_02253504:
ldr r0, [sp, #0x30]
add r1, r5, r0
ldr r0, _02253804 ; =0x000021EC
ldrb r1, [r1, r0]
mov r0, #0xc0
mul r0, r1
str r1, [sp, #0x18]
ldr r1, [sp, #0x9c]
str r0, [sp, #0x98]
ldr r0, [r1, r0]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1f
bne _02253604
ldr r0, [sp, #0x98]
add r1, r5, r0
ldr r0, _02253808 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02253604
ldr r1, [sp, #0x18]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x58
bne _02253604
mov r0, #0
str r0, [sp, #0x78]
str r0, [sp, #0x74]
str r0, [sp, #0x7c]
ldr r0, [sp, #0x80]
cmp r0, #0
ble _022535BE
add r4, r5, #0
_02253546:
ldr r1, [sp, #0x18]
add r0, r6, #0
bl BattleSys_GetFieldSide
add r7, r0, #0
ldr r1, [sp, #0x7c]
add r0, r6, #0
bl BattleSys_GetFieldSide
cmp r7, r0
beq _022535B0
ldr r0, _0225380C ; =0x00002DB0
ldr r1, [r4, r0]
mov r0, #1
lsl r0, r0, #0x18
tst r0, r1
bne _022535B0
ldr r0, _02253808 ; =0x00002D8C
ldr r0, [r4, r0]
cmp r0, #0
beq _022535B0
ldr r0, _02253810 ; =0x00002D5A
ldrsb r0, [r4, r0]
lsl r2, r0, #1
ldr r0, _02253814 ; =ov12_0226CB88
add r1, r0, r2
ldr r0, _02253818 ; =0x00002D44
ldrb r1, [r1, #1]
ldrh r3, [r4, r0]
ldr r0, _02253814 ; =ov12_0226CB88
ldrb r0, [r0, r2]
mul r0, r3
bl _s32_div_f
ldr r1, [sp, #0x78]
add r0, r1, r0
str r0, [sp, #0x78]
ldr r0, _0225381C ; =0x00002D5D
ldrsb r0, [r4, r0]
lsl r2, r0, #1
ldr r0, _02253814 ; =ov12_0226CB88
add r1, r0, r2
ldr r0, _02253820 ; =0x00002D4A
ldrb r1, [r1, #1]
ldrh r3, [r4, r0]
ldr r0, _02253814 ; =ov12_0226CB88
ldrb r0, [r0, r2]
mul r0, r3
bl _s32_div_f
ldr r1, [sp, #0x74]
add r0, r1, r0
str r0, [sp, #0x74]
_022535B0:
ldr r0, [sp, #0x7c]
add r4, #0xc0
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x7c]
cmp r1, r0
blt _02253546
_022535BE:
ldr r1, [sp, #0x9c]
ldr r0, [sp, #0x98]
ldr r1, [r1, r0]
mov r0, #8
add r2, r1, #0
orr r2, r0
ldr r1, [sp, #0x9c]
ldr r0, [sp, #0x98]
str r2, [r1, r0]
ldr r1, [sp, #0x78]
ldr r0, [sp, #0x74]
add r0, r1, r0
beq _02253604
ldr r0, [sp, #0x74]
cmp r1, r0
blt _022535E2
mov r1, #0x12
b _022535E4
_022535E2:
mov r1, #0xf
_022535E4:
add r0, r5, #0
add r0, #0x8c
str r1, [r0]
add r0, r5, #0
mov r1, #3
add r0, #0x88
str r1, [r0]
add r1, r5, #0
ldr r0, [sp, #0x18]
add r1, #0x94
str r0, [r1]
mov r0, #0xc
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253612
_02253604:
ldr r0, [sp, #0x30]
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x30]
cmp r1, r0
bge _02253612
b _02253504
_02253612:
ldr r1, [sp, #0x30]
ldr r0, [sp, #0x80]
cmp r1, r0
beq _0225361C
b _02253D80
_0225361C:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253624:
mov r0, #0
str r0, [sp, #0x34]
ldr r0, [sp, #0x80]
cmp r0, #0
bgt _02253630
b _02253752
_02253630:
ldr r0, _02253824 ; =0x00002D68
add r7, r5, r0
_02253634:
ldr r0, [sp, #0x34]
add r1, r5, r0
ldr r0, _02253804 ; =0x000021EC
ldrb r1, [r1, r0]
mov r0, #0xc0
add r4, r1, #0
mul r4, r0
ldr r0, [r7, r4]
str r1, [sp, #0x1c]
lsl r0, r0, #0x1b
lsr r0, r0, #0x1f
bne _02253744
ldr r0, _02253808 ; =0x00002D8C
add r1, r5, r4
ldr r0, [r1, r0]
cmp r0, #0
beq _02253744
ldr r1, [sp, #0x1c]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x6b
bne _02253744
ldr r1, [r7, r4]
mov r0, #0x10
orr r0, r1
str r0, [r7, r4]
mov r0, #0
str r0, [sp, #0x70]
ldr r0, [sp, #0x80]
cmp r0, #0
ble _02253730
add r0, r5, r4
str r5, [sp, #0x50]
str r0, [sp, #0x4c]
_0225367A:
ldr r1, [sp, #0x1c]
add r0, r6, #0
bl BattleSys_GetFieldSide
add r4, r0, #0
ldr r1, [sp, #0x70]
add r0, r6, #0
bl BattleSys_GetFieldSide
cmp r4, r0
beq _0225371E
ldr r1, [sp, #0x50]
ldr r0, _02253808 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _0225371E
mov r0, #0
str r0, [sp, #0x6c]
add r7, r1, #0
_022536A0:
ldr r0, _02253828 ; =0x00002D4C
ldrh r4, [r7, r0]
cmp r4, #0
beq _0225370C
mov r0, #0
str r0, [sp, #0xc8]
ldr r0, [sp, #0x70]
add r1, r5, #0
str r0, [sp]
ldr r0, [sp, #0x1c]
add r2, r4, #0
str r0, [sp, #4]
ldr r0, _0225382C ; =0x00002144
mov r3, #0
ldr r0, [r5, r0]
str r0, [sp, #8]
add r0, sp, #0xc8
str r0, [sp, #0xc]
add r0, r6, #0
bl ov12_02251D28
ldr r1, _0225382C ; =0x00002144
str r0, [r5, r1]
ldr r1, [sp, #0xc8]
mov r0, #8
tst r0, r1
bne _0225370C
add r0, r5, #0
add r1, r4, #0
bl ov12_0225865C
cmp r0, #0
bne _0225370C
ldr r1, [sp, #0xc8]
mov r0, #2
tst r0, r1
bne _02253706
lsl r0, r4, #4
add r1, r5, r0
ldr r0, _02253830 ; =0x000003DE
ldrh r0, [r1, r0]
cmp r0, #0x26
bne _0225370C
ldr r1, [sp, #0x4c]
ldr r0, _02253834 ; =0x00002D74
ldr r2, [sp, #0x50]
ldrb r0, [r1, r0]
ldr r1, _02253834 ; =0x00002D74
ldrb r1, [r2, r1]
cmp r0, r1
bhi _0225370C
_02253706:
mov r0, #1
str r0, [sp, #0x84]
b _02253718
_0225370C:
ldr r0, [sp, #0x6c]
add r7, r7, #2
add r0, r0, #1
str r0, [sp, #0x6c]
cmp r0, #4
blt _022536A0
_02253718:
ldr r0, [sp, #0x84]
cmp r0, #1
beq _02253730
_0225371E:
ldr r0, [sp, #0x50]
add r0, #0xc0
str r0, [sp, #0x50]
ldr r0, [sp, #0x70]
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x70]
cmp r1, r0
blt _0225367A
_02253730:
ldr r0, [sp, #0x84]
cmp r0, #1
bne _02253752
mov r1, #0x46
ldr r0, [sp, #0x1c]
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0xc2
str r0, [sp, #0xcc]
b _02253752
_02253744:
ldr r0, [sp, #0x34]
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x34]
cmp r1, r0
bge _02253752
b _02253634
_02253752:
ldr r1, [sp, #0x34]
ldr r0, [sp, #0x80]
cmp r1, r0
beq _0225375C
b _02253D80
_0225375C:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253764:
mov r0, #0
str r0, [sp, #0x38]
ldr r0, [sp, #0x80]
cmp r0, #0
bgt _02253770
b _02253962
_02253770:
ldr r0, _02253824 ; =0x00002D68
add r7, r5, r0
_02253774:
ldr r0, [sp, #0x38]
add r1, r5, r0
ldr r0, _02253804 ; =0x000021EC
ldrb r1, [r1, r0]
mov r0, #0xc0
add r4, r1, #0
mul r4, r0
ldr r0, [r7, r4]
str r1, [sp, #0x20]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1f
bne _022537A2
ldr r0, _02253808 ; =0x00002D8C
add r1, r5, r4
ldr r0, [r1, r0]
cmp r0, #0
beq _022537A2
ldr r1, [sp, #0x20]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x6c
beq _022537A4
_022537A2:
b _02253954
_022537A4:
ldr r1, [r7, r4]
mov r0, #0x20
orr r0, r1
str r0, [r7, r4]
mov r4, #0
ldr r0, [sp, #0x80]
str r4, [sp, #0x5c]
str r4, [sp, #0x68]
cmp r0, #0
bgt _022537BA
b _022538EE
_022537BA:
str r5, [sp, #0x58]
_022537BC:
ldr r1, [sp, #0x20]
add r0, r6, #0
bl BattleSys_GetFieldSide
add r7, r0, #0
ldr r1, [sp, #0x68]
add r0, r6, #0
bl BattleSys_GetFieldSide
cmp r7, r0
bne _022537D4
b _022538DA
_022537D4:
ldr r1, [sp, #0x58]
ldr r0, _02253808 ; =0x00002D8C
ldr r1, [r1, r0]
cmp r1, #0
beq _022538DA
ldr r0, [sp, #0x5c]
add r0, r0, r1
str r0, [sp, #0x5c]
mov r0, #0
str r0, [sp, #0x64]
ldr r0, [sp, #0x58]
str r0, [sp, #0x54]
_022537EC:
ldr r1, [sp, #0x54]
ldr r0, _02253828 ; =0x00002D4C
ldrh r7, [r1, r0]
ldr r1, _02253838 ; =0x000003E1
lsl r0, r7, #4
add r0, r5, r0
ldrb r1, [r0, r1]
str r1, [sp, #0x60]
cmp r1, #1
bne _022538AC
ldr r1, _02253830 ; =0x000003DE
b _0225383C
.balign 4, 0
_02253804: .word 0x000021EC
_02253808: .word 0x00002D8C
_0225380C: .word 0x00002DB0
_02253810: .word 0x00002D5A
_02253814: .word ov12_0226CB88
_02253818: .word 0x00002D44
_0225381C: .word 0x00002D5D
_02253820: .word 0x00002D4A
_02253824: .word 0x00002D68
_02253828: .word 0x00002D4C
_0225382C: .word 0x00002144
_02253830: .word 0x000003DE
_02253834: .word 0x00002D74
_02253838: .word 0x000003E1
_0225383C:
ldrh r0, [r0, r1]
cmp r0, #0x59
bgt _0225384A
bge _02253874
cmp r0, #0x26
beq _02253858
b _02253890
_0225384A:
cmp r0, #0x90
bgt _02253852
beq _02253874
b _02253890
_02253852:
cmp r0, #0xe3
beq _02253874
b _02253890
_02253858:
cmp r4, #0x96
blo _0225386A
bne _022538CA
add r0, r6, #0
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _022538CA
_0225386A:
mov r4, #0x96
add r0, r4, #0
add r0, #0x8e
str r7, [r5, r0]
b _022538CA
_02253874:
cmp r4, #0x78
blo _02253886
bne _022538CA
add r0, r6, #0
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _022538CA
_02253886:
mov r4, #0x78
add r0, r4, #0
add r0, #0xac
str r7, [r5, r0]
b _022538CA
_02253890:
cmp r4, #0x50
blo _022538A2
bne _022538CA
add r0, r6, #0
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _022538CA
_022538A2:
mov r4, #0x50
add r0, r4, #0
add r0, #0xd4
str r7, [r5, r0]
b _022538CA
_022538AC:
add r0, r1, #0
cmp r4, r0
blo _022538C2
cmp r4, r0
bne _022538CA
add r0, r6, #0
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _022538CA
_022538C2:
mov r0, #0x49
lsl r0, r0, #2
ldr r4, [sp, #0x60]
str r7, [r5, r0]
_022538CA:
ldr r0, [sp, #0x54]
add r0, r0, #2
str r0, [sp, #0x54]
ldr r0, [sp, #0x64]
add r0, r0, #1
str r0, [sp, #0x64]
cmp r0, #4
blt _022537EC
_022538DA:
ldr r0, [sp, #0x58]
add r0, #0xc0
str r0, [sp, #0x58]
ldr r0, [sp, #0x68]
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x68]
cmp r1, r0
bge _022538EE
b _022537BC
_022538EE:
cmp r4, #0
beq _02253904
mov r1, #0x46
ldr r0, [sp, #0x20]
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0xc3
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253962
_02253904:
ldr r0, [sp, #0x5c]
cmp r0, #0
beq _02253962
ldr r2, [sp, #0x20]
add r0, r6, #0
add r1, r5, #0
bl ov12_02253DA0
add r7, r0, #0
add r0, r6, #0
add r1, r5, #0
add r2, r7, #0
bl GetBattlerLearnedMoveCount
add r4, r0, #0
add r0, r6, #0
bl BattleSys_Random
add r1, r4, #0
bl _s32_div_f
mov r0, #0xc0
add r2, r7, #0
mul r2, r0
lsl r3, r1, #1
add r1, r5, r2
add r2, r3, r1
ldr r1, _02253C2C ; =0x00002D4C
ldrh r2, [r2, r1]
add r1, r0, #0
add r1, #0x64
str r2, [r5, r1]
ldr r1, [sp, #0x20]
add r0, #0x58
str r1, [r5, r0]
mov r0, #0xc3
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253962
_02253954:
ldr r0, [sp, #0x38]
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x38]
cmp r1, r0
bge _02253962
b _02253774
_02253962:
ldr r1, [sp, #0x38]
ldr r0, [sp, #0x80]
cmp r1, r0
beq _0225396C
b _02253D80
_0225396C:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253974:
mov r0, #0
str r0, [sp, #0x3c]
ldr r0, [sp, #0x80]
cmp r0, #0
bgt _02253980
b _02253ABA
_02253980:
ldr r0, _02253C30 ; =0x00002D68
add r0, r5, r0
str r0, [sp, #0xa0]
_02253986:
ldr r0, [sp, #0x3c]
add r1, r5, r0
ldr r0, _02253C34 ; =0x000021EC
ldrb r4, [r1, r0]
mov r0, #0xc0
add r7, r4, #0
mul r7, r0
ldr r0, [sp, #0xa0]
ldr r0, [r0, r7]
lsl r0, r0, #0x17
lsr r0, r0, #0x1f
bne _02253A9A
ldr r0, _02253C38 ; =0x00002D8C
add r1, r5, r7
ldr r0, [r1, r0]
cmp r0, #0
beq _02253A9A
add r0, r5, #0
add r1, r4, #0
bl GetBattlerAbility
cmp r0, #0x77
bne _02253A9A
ldr r0, [sp, #0xa0]
ldr r1, [r0, r7]
mov r0, #1
lsl r0, r0, #8
orr r1, r0
ldr r0, [sp, #0xa0]
str r1, [r0, r7]
add r0, r6, #0
bl BattleSys_GetBattleType
mov r1, #2
tst r0, r1
beq _02253A74
add r0, r6, #0
add r1, r4, #0
mov r2, #0
bl ov12_0223ABB8
str r0, [sp, #0xc0]
add r0, r6, #0
add r1, r4, #0
mov r2, #2
bl ov12_0223ABB8
ldr r2, [sp, #0xc0]
mov r1, #0xc0
mul r1, r2
ldr r2, _02253C38 ; =0x00002D8C
add r1, r5, r1
ldr r3, [r1, r2]
str r0, [sp, #0xc4]
cmp r3, #0
beq _02253A38
add r2, #0x2c
ldrh r2, [r1, r2]
cmp r2, #0
beq _02253A38
mov r2, #0xc0
mul r2, r0
add r0, r5, r2
ldr r2, _02253C38 ; =0x00002D8C
ldr r2, [r0, r2]
cmp r2, #0
beq _02253A38
ldr r2, _02253C3C ; =0x00002DB8
ldrh r0, [r0, r2]
cmp r0, #0
beq _02253A38
add r0, r6, #0
bl BattleSys_Random
lsl r0, r0, #0x1f
lsr r1, r0, #0x1d
add r0, sp, #0xc0
ldr r1, [r0, r1]
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
ldr r0, _02253C3C ; =0x00002DB8
ldrh r1, [r1, r0]
mov r0, #0x4a
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #1
str r0, [sp, #0x84]
b _02253A9A
_02253A38:
cmp r3, #0
beq _02253A50
ldr r0, _02253C3C ; =0x00002DB8
ldrh r1, [r1, r0]
cmp r1, #0
beq _02253A50
mov r0, #0x4a
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #1
str r0, [sp, #0x84]
b _02253A9A
_02253A50:
ldr r1, [sp, #0xc4]
mov r0, #0xc0
mul r0, r1
ldr r1, _02253C38 ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r1]
cmp r1, #0
beq _02253A9A
ldr r1, _02253C3C ; =0x00002DB8
ldrh r1, [r0, r1]
cmp r1, #0
beq _02253A9A
mov r0, #0x4a
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #1
str r0, [sp, #0x84]
b _02253A9A
_02253A74:
mov r0, #1
add r1, r4, #0
eor r1, r0
mov r0, #0xc0
mul r0, r1
ldr r1, _02253C38 ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r1]
cmp r1, #0
beq _02253A9A
ldr r1, _02253C3C ; =0x00002DB8
ldrh r1, [r0, r1]
cmp r1, #0
beq _02253A9A
mov r0, #0x4a
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #1
str r0, [sp, #0x84]
_02253A9A:
ldr r0, [sp, #0x84]
cmp r0, #1
bne _02253AAC
mov r0, #0x46
lsl r0, r0, #2
str r4, [r5, r0]
mov r0, #0xfd
str r0, [sp, #0xcc]
b _02253ABA
_02253AAC:
ldr r0, [sp, #0x3c]
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x3c]
cmp r1, r0
bge _02253ABA
b _02253986
_02253ABA:
ldr r1, [sp, #0x3c]
ldr r0, [sp, #0x80]
cmp r1, r0
beq _02253AC4
b _02253D80
_02253AC4:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253ACC:
mov r0, #0
str r0, [sp, #0x40]
ldr r0, [sp, #0x80]
cmp r0, #0
ble _02253B94
ldr r0, _02253C30 ; =0x00002D68
add r0, r5, r0
str r0, [sp, #0xa4]
_02253ADC:
ldr r0, [sp, #0x40]
add r1, r5, r0
ldr r0, _02253C34 ; =0x000021EC
ldrb r7, [r1, r0]
mov r0, #0xc0
add r4, r7, #0
mul r4, r0
ldr r0, [sp, #0xa4]
ldr r0, [r0, r4]
lsl r0, r0, #0x19
lsr r0, r0, #0x1f
bne _02253B38
ldr r0, _02253C38 ; =0x00002D8C
add r1, r5, r4
ldr r0, [r1, r0]
str r1, [sp, #0x48]
cmp r0, #0
beq _02253B38
add r0, r5, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x70
bne _02253B38
mov r0, #0x15
lsl r0, r0, #4
ldr r2, [r5, r0]
ldr r1, [sp, #0x48]
ldr r0, _02253C40 ; =0x00002DD8
ldr r0, [r1, r0]
cmp r2, r0
bgt _02253B38
ldr r0, [sp, #0xa4]
mov r2, #0x40
ldr r0, [r0, r4]
add r1, r0, #0
orr r1, r2
ldr r0, [sp, #0xa4]
add r2, #0xd8
str r1, [r0, r4]
str r7, [r5, r2]
mov r0, #0xc4
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253B94
_02253B38:
ldr r0, [sp, #0xa4]
ldr r0, [r0, r4]
lsl r0, r0, #0x18
lsr r0, r0, #0x1f
bne _02253B88
ldr r0, _02253C38 ; =0x00002D8C
add r1, r5, r4
ldr r0, [r1, r0]
str r1, [sp, #0x44]
cmp r0, #0
beq _02253B88
add r0, r5, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x70
bne _02253B88
mov r0, #0x15
lsl r0, r0, #4
ldr r2, [r5, r0]
ldr r1, [sp, #0x44]
ldr r0, _02253C40 ; =0x00002DD8
ldr r0, [r1, r0]
sub r0, r2, r0
cmp r0, #5
bne _02253B88
ldr r0, [sp, #0xa4]
mov r2, #0x80
ldr r0, [r0, r4]
add r1, r0, #0
orr r1, r2
ldr r0, [sp, #0xa4]
add r2, #0x98
str r1, [r0, r4]
str r7, [r5, r2]
mov r0, #0xc5
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253B94
_02253B88:
ldr r0, [sp, #0x40]
add r1, r0, #1
ldr r0, [sp, #0x80]
str r1, [sp, #0x40]
cmp r1, r0
blt _02253ADC
_02253B94:
ldr r1, [sp, #0x40]
ldr r0, [sp, #0x80]
cmp r1, r0
bne _02253C0E
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253BA4:
ldr r0, [sp, #0x80]
mov r4, #0
cmp r0, #0
ble _02253C08
ldr r0, _02253C30 ; =0x00002D68
add r0, r5, r0
str r0, [sp, #0xa8]
_02253BB2:
ldr r0, _02253C34 ; =0x000021EC
add r1, r5, r4
ldrb r1, [r1, r0]
mov r0, #0xc0
add r7, r1, #0
mul r7, r0
ldr r0, [sp, #0xa8]
str r1, [sp, #0x24]
ldr r0, [r0, r7]
lsl r0, r0, #0x16
lsr r0, r0, #0x1f
bne _02253C00
ldr r0, _02253C38 ; =0x00002D8C
add r1, r5, r7
ldr r0, [r1, r0]
cmp r0, #0
beq _02253C00
ldr r1, [sp, #0x24]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x68
bne _02253C00
ldr r0, [sp, #0xa8]
mov r2, #2
ldr r0, [r0, r7]
lsl r2, r2, #8
add r1, r0, #0
orr r1, r2
ldr r0, [sp, #0xa8]
sub r2, #0xe8
str r1, [r0, r7]
ldr r0, [sp, #0x24]
str r0, [r5, r2]
mov r0, #0xb1
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253C08
_02253C00:
ldr r0, [sp, #0x80]
add r4, r4, #1
cmp r4, r0
blt _02253BB2
_02253C08:
ldr r0, [sp, #0x80]
cmp r4, r0
beq _02253C10
_02253C0E:
b _02253D80
_02253C10:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253C18:
ldr r0, [sp, #0x80]
mov r4, #0
cmp r0, #0
ble _02253C98
ldr r0, _02253C30 ; =0x00002D68
add r0, r5, r0
str r0, [sp, #0xac]
_02253C26:
ldr r0, _02253C34 ; =0x000021EC
b _02253C44
nop
_02253C2C: .word 0x00002D4C
_02253C30: .word 0x00002D68
_02253C34: .word 0x000021EC
_02253C38: .word 0x00002D8C
_02253C3C: .word 0x00002DB8
_02253C40: .word 0x00002DD8
_02253C44:
add r1, r5, r4
ldrb r1, [r1, r0]
mov r0, #0xc0
add r7, r1, #0
mul r7, r0
ldr r0, [sp, #0xac]
str r1, [sp, #0x28]
ldr r0, [r0, r7]
lsl r0, r0, #0x15
lsr r0, r0, #0x1f
bne _02253C90
ldr r0, _02253D90 ; =0x00002D8C
add r1, r5, r7
ldr r0, [r1, r0]
cmp r0, #0
beq _02253C90
ldr r1, [sp, #0x28]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x2e
bne _02253C90
ldr r0, [sp, #0xac]
ldr r1, [r0, r7]
mov r0, #1
lsl r0, r0, #0xa
orr r1, r0
ldr r0, [sp, #0xac]
str r1, [r0, r7]
mov r1, #0x46
ldr r0, [sp, #0x28]
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r1, #5
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253C98
_02253C90:
ldr r0, [sp, #0x80]
add r4, r4, #1
cmp r4, r0
blt _02253C26
_02253C98:
ldr r0, [sp, #0x80]
cmp r4, r0
bne _02253D80
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253CA6:
add r0, r6, #0
add r1, r5, #0
add r2, sp, #0xcc
bl ov12_02256914
cmp r0, #1
bne _02253CBA
mov r0, #1
str r0, [sp, #0x84]
b _02253D80
_02253CBA:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253CC2:
ldr r0, [sp, #0x80]
mov r4, #0
cmp r0, #0
ble _02253CF4
mov r7, #2
_02253CCC:
ldr r1, _02253D94 ; =0x000021EC
add r2, r5, r4
ldrb r2, [r2, r1]
mov r1, #0xc0
add r0, r5, #0
mul r1, r2
add r2, r5, r1
ldr r1, _02253D98 ; =0x00002DB8
ldrh r1, [r2, r1]
mov r2, #1
bl GetItemHoldEffect
cmp r0, #0x3a
bne _02253CEC
ldr r0, _02253D9C ; =0x00002168
str r7, [r5, r0]
_02253CEC:
ldr r0, [sp, #0x80]
add r4, r4, #1
cmp r4, r0
blt _02253CCC
_02253CF4:
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253CFC:
ldr r0, [sp, #0x80]
mov r4, #0
cmp r0, #0
ble _02253D2A
ldr r7, _02253D94 ; =0x000021EC
_02253D06:
add r2, r5, r4
ldrb r2, [r2, r7]
add r0, r6, #0
add r1, r5, #0
mov r3, #1
bl ov12_022543A0
cmp r0, #1
bne _02253D22
mov r0, #0xdd
str r0, [sp, #0xcc]
mov r0, #1
str r0, [sp, #0x84]
b _02253D2A
_02253D22:
ldr r0, [sp, #0x80]
add r4, r4, #1
cmp r4, r0
blt _02253D06
_02253D2A:
ldr r0, [sp, #0x80]
cmp r4, r0
bne _02253D80
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253D38:
ldr r0, [sp, #0x80]
mov r4, #0
cmp r0, #0
ble _02253D6A
_02253D40:
ldr r0, _02253D94 ; =0x000021EC
add r1, r5, r4
ldrb r7, [r1, r0]
add r0, r6, #0
add r1, r5, #0
add r2, r7, #0
add r3, sp, #0xcc
bl ov12_02254E7C
cmp r0, #1
bne _02253D62
mov r0, #0x46
lsl r0, r0, #2
str r7, [r5, r0]
mov r0, #1
str r0, [sp, #0x84]
b _02253D6A
_02253D62:
ldr r0, [sp, #0x80]
add r4, r4, #1
cmp r4, r0
blt _02253D40
_02253D6A:
ldr r0, [sp, #0x80]
cmp r4, r0
bne _02253D80
ldr r0, [r5, #0x58]
add r0, r0, #1
str r0, [r5, #0x58]
b _02253D80
_02253D78:
mov r0, #0
str r0, [r5, #0x58]
mov r0, #2
str r0, [sp, #0x84]
_02253D80:
ldr r0, [sp, #0x84]
cmp r0, #0
bne _02253D8A
bl ov12_022531A8
_02253D8A:
ldr r0, [sp, #0xcc]
add sp, #0xd0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02253D90: .word 0x00002D8C
_02253D94: .word 0x000021EC
_02253D98: .word 0x00002DB8
_02253D9C: .word 0x00002168
thumb_func_end ov12_022531A8
thumb_func_start ov12_02253DA0
ov12_02253DA0: ; 0x02253DA0
push {r4, r5, r6, lr}
sub sp, #8
add r5, r0, #0
add r6, r1, #0
add r4, r2, #0
bl BattleSys_GetBattleType
mov r1, #2
tst r0, r1
beq _02253DF8
add r0, r5, #0
add r1, r4, #0
mov r2, #0
bl ov12_0223ABB8
str r0, [sp]
add r0, r5, #0
add r1, r4, #0
mov r2, #2
bl ov12_0223ABB8
str r0, [sp, #4]
add r0, r5, #0
bl BattleSys_Random
mov r3, #1
add r2, r0, #0
and r2, r3
lsl r0, r2, #2
add r1, sp, #0
ldr r0, [r1, r0]
mov r4, #0xc0
mul r4, r0
add r5, r6, r4
ldr r4, _02253E00 ; =0x00002D8C
ldr r4, [r5, r4]
cmp r4, #0
bne _02253DFC
add r0, r2, #0
eor r0, r3
lsl r0, r0, #2
add sp, #8
ldr r0, [r1, r0]
pop {r4, r5, r6, pc}
_02253DF8:
mov r0, #1
eor r0, r4
_02253DFC:
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
_02253E00: .word 0x00002D8C
thumb_func_end ov12_02253DA0
thumb_func_start CheckAbilityEffectOnHit
CheckAbilityEffectOnHit: ; 0x02253E04
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
ldr r1, [r5, #0x6c]
add r7, r0, #0
add r4, r2, #0
mov r6, #0
cmp r1, #0xff
bne _02253E18
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02253E18:
add r0, r5, #0
bl ov12_02256838
cmp r0, #1
bne _02253E26
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02253E26:
ldr r1, [r5, #0x6c]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x26
bgt _02253E56
blt _02253E36
b _022540FE
_02253E36:
cmp r0, #0x10
bgt _02253E42
bge _02253F04
cmp r0, #9
beq _02253E6E
b _02254382
_02253E42:
cmp r0, #0x1b
bgt _02253E54
cmp r0, #0x18
blt _02253E54
bne _02253E4E
b _02253FAE
_02253E4E:
cmp r0, #0x1b
bne _02253E54
b _02254042
_02253E54:
b _02254382
_02253E56:
cmp r0, #0x38
bgt _02253E66
blt _02253E5E
b _02254258
_02253E5E:
cmp r0, #0x31
bne _02253E64
b _022541C2
_02253E64:
b _02254382
_02253E66:
cmp r0, #0x6a
bne _02253E6C
b _02254302
_02253E6C:
b _02254382
_02253E6E:
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r3, _02254120 ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r3]
cmp r1, #0
beq _02253F50
add r1, r3, #0
add r1, #0x20
ldr r0, [r0, r1]
cmp r0, #0
bne _02253F50
ldr r1, _02254124 ; =0x0000216C
ldr r0, _02254128 ; =0x801FDA49
ldr r2, [r5, r1]
tst r0, r2
bne _02253F50
add r0, r1, #0
sub r0, #0x30
ldr r2, [r5, r0]
mov r0, #0x20
tst r0, r2
bne _02253F50
sub r1, #0x2c
ldr r1, [r5, r1]
mov r0, #0x10
tst r0, r1
bne _02253F50
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
lsr r1, r3, #4
ldr r1, [r0, r1]
cmp r1, #0
bne _02253EC2
mov r1, #0x2e
lsl r1, r1, #4
ldr r0, [r0, r1]
cmp r0, #0
beq _02253F50
_02253EC2:
ldr r0, _0225412C ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _02254130 ; =0x000003E9
ldrb r1, [r1, r0]
mov r0, #1
tst r0, r1
beq _02253F50
add r0, r7, #0
bl BattleSys_Random
mov r1, #0xa
bl _s32_div_f
cmp r1, #3
bge _02253F50
add r0, r5, #0
mov r1, #3
add r0, #0x88
str r1, [r0]
add r0, r5, #0
ldr r1, [r5, #0x64]
add r0, #0x94
str r1, [r0]
mov r0, #0x46
ldr r1, [r5, #0x6c]
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #0x1f
str r0, [r4]
mov r6, #1
b _02254382
_02253F04:
ldr r1, [r5, #0x64]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x60
bne _02253F14
add r7, r6, #0
b _02253F2E
_02253F14:
ldr r0, _02254134 ; =0x00002160
ldr r0, [r5, r0]
cmp r0, #0
beq _02253F22
lsl r0, r0, #0x18
lsr r7, r0, #0x18
b _02253F2E
_02253F22:
ldr r0, _0225412C ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _02254138 ; =0x000003E2
ldrb r7, [r1, r0]
_02253F2E:
ldr r1, [r5, #0x6c]
mov r0, #0xc0
mul r0, r1
add r2, r5, r0
ldr r0, _02254120 ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _02253F50
ldr r0, _02254124 ; =0x0000216C
ldr r2, [r5, r0]
ldr r0, _02254128 ; =0x801FDA49
tst r0, r2
bne _02253F50
ldr r0, _0225412C ; =0x00003044
ldr r3, [r5, r0]
cmp r3, #0xa5
bne _02253F52
_02253F50:
b _02254382
_02253F52:
mov r0, #0x1c
ldr r2, _02254120 ; =0x00002D8C
mul r0, r1
add r0, r5, r0
lsr r2, r2, #4
ldr r2, [r0, r2]
cmp r2, #0
bne _02253F6C
mov r2, #0x2e
lsl r2, r2, #4
ldr r0, [r0, r2]
cmp r0, #0
beq _0225405C
_02253F6C:
mov r0, #0x85
lsl r0, r0, #6
ldr r2, [r5, r0]
mov r0, #0x10
tst r0, r2
bne _0225405C
lsl r0, r3, #4
add r2, r5, r0
ldr r0, _0225413C ; =0x000003E1
ldrb r0, [r2, r0]
cmp r0, #0
beq _0225405C
add r0, r5, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
cmp r7, r0
beq _0225405C
ldr r1, [r5, #0x6c]
add r0, r5, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
cmp r7, r0
beq _0225405C
mov r0, #0xbc
str r0, [r4]
add r0, #0x74
str r7, [r5, r0]
mov r6, #1
b _02254382
_02253FAE:
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
add r2, r5, r0
ldr r0, _02254120 ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _0225405C
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x62
beq _0225405C
ldr r1, _02254124 ; =0x0000216C
ldr r0, _02254128 ; =0x801FDA49
ldr r2, [r5, r1]
tst r0, r2
bne _0225405C
add r0, r1, #0
sub r0, #0x30
ldr r2, [r5, r0]
mov r0, #0x20
tst r0, r2
bne _0225405C
sub r1, #0x2c
ldr r1, [r5, r1]
mov r0, #0x10
tst r0, r1
bne _0225405C
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r2, r5, r0
mov r0, #0xb6
lsl r0, r0, #2
ldr r1, [r2, r0]
cmp r1, #0
bne _02254002
add r0, #8
ldr r0, [r2, r0]
cmp r0, #0
beq _0225405C
_02254002:
ldr r0, _0225412C ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _02254130 ; =0x000003E9
ldrb r1, [r1, r0]
mov r0, #1
tst r0, r1
beq _0225405C
ldr r0, [r5, #0x64]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldr r0, _02254140 ; =0x00002D90
add r2, r5, r2
ldr r2, [r2, r0]
sub r1, #0xc1
add r0, r2, #0
mul r0, r1
mov r1, #8
bl DamageDivide
ldr r1, _02254144 ; =0x0000215C
mov r6, #1
str r0, [r5, r1]
mov r0, #0x46
ldr r1, [r5, #0x64]
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #0xbd
str r0, [r4]
b _02254382
_02254042:
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r3, _02254120 ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r3]
cmp r1, #0
beq _0225405C
add r1, r3, #0
add r1, #0x20
ldr r0, [r0, r1]
cmp r0, #0
beq _0225405E
_0225405C:
b _02254382
_0225405E:
ldr r1, _02254124 ; =0x0000216C
ldr r0, _02254128 ; =0x801FDA49
ldr r2, [r5, r1]
tst r0, r2
bne _02254164
add r0, r1, #0
sub r0, #0x30
ldr r2, [r5, r0]
mov r0, #0x20
tst r0, r2
bne _02254164
sub r1, #0x2c
ldr r1, [r5, r1]
mov r0, #0x10
tst r0, r1
bne _02254164
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
lsr r1, r3, #4
ldr r1, [r0, r1]
cmp r1, #0
bne _02254098
mov r1, #0x2e
lsl r1, r1, #4
ldr r0, [r0, r1]
cmp r0, #0
beq _02254164
_02254098:
ldr r0, _0225412C ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _02254130 ; =0x000003E9
ldrb r1, [r1, r0]
mov r0, #1
tst r0, r1
beq _02254164
add r0, r7, #0
bl BattleSys_Random
mov r1, #0xa
bl _s32_div_f
cmp r1, #3
bge _02254164
add r0, r7, #0
bl BattleSys_Random
mov r1, #3
bl _s32_div_f
cmp r1, #0
beq _022540D2
cmp r1, #1
beq _022540D8
cmp r1, #2
beq _022540DE
_022540D2:
mov r0, #0x16
str r0, [r4]
b _022540E2
_022540D8:
mov r0, #0x1f
str r0, [r4]
b _022540E2
_022540DE:
mov r0, #0x12
str r0, [r4]
_022540E2:
add r0, r5, #0
mov r1, #3
add r0, #0x88
str r1, [r0]
add r0, r5, #0
ldr r1, [r5, #0x64]
add r0, #0x94
str r1, [r0]
mov r0, #0x46
ldr r1, [r5, #0x6c]
lsl r0, r0, #2
str r1, [r5, r0]
mov r6, #1
b _02254382
_022540FE:
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r3, _02254120 ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r3]
cmp r1, #0
beq _02254164
add r1, r3, #0
add r1, #0x20
ldr r0, [r0, r1]
cmp r0, #0
bne _02254164
ldr r1, _02254124 ; =0x0000216C
ldr r0, _02254128 ; =0x801FDA49
b _02254148
nop
_02254120: .word 0x00002D8C
_02254124: .word 0x0000216C
_02254128: .word 0x801FDA49
_0225412C: .word 0x00003044
_02254130: .word 0x000003E9
_02254134: .word 0x00002160
_02254138: .word 0x000003E2
_0225413C: .word 0x000003E1
_02254140: .word 0x00002D90
_02254144: .word 0x0000215C
_02254148:
ldr r2, [r5, r1]
tst r0, r2
bne _02254164
add r0, r1, #0
sub r0, #0x30
ldr r2, [r5, r0]
mov r0, #0x20
tst r0, r2
bne _02254164
sub r1, #0x2c
ldr r1, [r5, r1]
mov r0, #0x10
tst r0, r1
beq _02254166
_02254164:
b _02254382
_02254166:
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
lsr r1, r3, #4
ldr r1, [r0, r1]
cmp r1, #0
bne _02254180
mov r1, #0x2e
lsl r1, r1, #4
ldr r0, [r0, r1]
cmp r0, #0
beq _02254276
_02254180:
ldr r0, _02254388 ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225438C ; =0x000003E9
ldrb r1, [r1, r0]
mov r0, #1
tst r0, r1
beq _02254276
add r0, r7, #0
bl BattleSys_Random
mov r1, #0xa
bl _s32_div_f
cmp r1, #3
bge _02254276
add r0, r5, #0
mov r1, #3
add r0, #0x88
str r1, [r0]
add r0, r5, #0
ldr r1, [r5, #0x64]
add r0, #0x94
str r1, [r0]
mov r0, #0x46
ldr r1, [r5, #0x6c]
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #0x16
str r0, [r4]
mov r6, #1
b _02254382
_022541C2:
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r3, _02254390 ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r3]
cmp r1, #0
beq _02254276
add r1, r3, #0
add r1, #0x20
ldr r0, [r0, r1]
cmp r0, #0
bne _02254276
ldr r1, _02254394 ; =0x0000216C
ldr r0, _02254398 ; =0x801FDA49
ldr r2, [r5, r1]
tst r0, r2
bne _02254276
add r0, r1, #0
sub r0, #0x30
ldr r2, [r5, r0]
mov r0, #0x20
tst r0, r2
bne _02254276
sub r1, #0x2c
ldr r1, [r5, r1]
mov r0, #0x10
tst r0, r1
bne _02254276
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
lsr r1, r3, #4
ldr r1, [r0, r1]
cmp r1, #0
bne _02254216
mov r1, #0x2e
lsl r1, r1, #4
ldr r0, [r0, r1]
cmp r0, #0
beq _02254276
_02254216:
ldr r0, _02254388 ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225438C ; =0x000003E9
ldrb r1, [r1, r0]
mov r0, #1
tst r0, r1
beq _02254276
add r0, r7, #0
bl BattleSys_Random
mov r1, #0xa
bl _s32_div_f
cmp r1, #3
bge _02254276
add r0, r5, #0
mov r1, #3
add r0, #0x88
str r1, [r0]
add r0, r5, #0
ldr r1, [r5, #0x64]
add r0, #0x94
str r1, [r0]
mov r0, #0x46
ldr r1, [r5, #0x6c]
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #0x19
str r0, [r4]
mov r6, #1
b _02254382
_02254258:
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r3, _02254390 ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r3]
cmp r1, #0
beq _02254276
add r1, r3, #0
add r1, #0x24
ldr r1, [r0, r1]
mov r0, #0xf
lsl r0, r0, #0x10
tst r0, r1
beq _02254278
_02254276:
b _02254382
_02254278:
ldr r1, _02254394 ; =0x0000216C
ldr r0, _02254398 ; =0x801FDA49
ldr r2, [r5, r1]
tst r0, r2
bne _02254382
add r0, r1, #0
sub r0, #0x30
ldr r2, [r5, r0]
mov r0, #0x20
tst r0, r2
bne _02254382
sub r1, #0x2c
ldr r1, [r5, r1]
mov r0, #0x10
tst r0, r1
bne _02254382
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
lsr r2, r3, #4
ldr r2, [r0, r2]
cmp r2, #0
bne _022542B2
mov r2, #0x2e
lsl r2, r2, #4
ldr r0, [r0, r2]
cmp r0, #0
beq _02254382
_022542B2:
ldr r0, _02254388 ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r2, r5, r0
ldr r0, _0225438C ; =0x000003E9
ldrb r2, [r2, r0]
mov r0, #1
tst r0, r2
beq _02254382
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
ldr r0, _02254390 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _02254382
add r0, r7, #0
bl BattleSys_Random
mov r1, #0xa
bl _s32_div_f
cmp r1, #3
bge _02254382
add r0, r5, #0
mov r1, #3
add r0, #0x88
str r1, [r0]
add r0, r5, #0
ldr r1, [r5, #0x64]
add r0, #0x94
str r1, [r0]
mov r0, #0x46
ldr r1, [r5, #0x6c]
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #0x6a
str r0, [r4]
mov r6, #1
b _02254382
_02254302:
ldr r1, [r5, #0x6c]
ldr r0, [r5, #0x74]
cmp r1, r0
bne _02254382
ldr r1, [r5, #0x64]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x62
beq _02254382
mov r0, #6
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r2, #8
add r3, r6, #0
bl CheckAbilityActive
cmp r0, #0
bne _02254382
mov r2, #0x85
lsl r2, r2, #6
ldr r1, [r5, r2]
mov r0, #0x10
tst r0, r1
bne _02254382
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
ldr r0, _02254390 ; =0x00002D8C
ldr r3, [r1, r0]
cmp r3, #0
beq _02254382
add r2, #0x2c
ldr r3, [r5, r2]
ldr r2, _02254398 ; =0x801FDA49
tst r2, r3
bne _02254382
ldr r2, _02254388 ; =0x00003044
ldr r2, [r5, r2]
lsl r2, r2, #4
add r3, r5, r2
ldr r2, _0225438C ; =0x000003E9
ldrb r3, [r3, r2]
mov r2, #1
tst r3, r2
beq _02254382
add r0, r0, #4
ldr r1, [r1, r0]
sub r0, r2, #2
mul r0, r1
mov r1, #4
bl DamageDivide
ldr r1, _0225439C ; =0x0000215C
mov r6, #1
str r0, [r5, r1]
mov r0, #0x46
ldr r1, [r5, #0x64]
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #0xc1
str r0, [r4]
_02254382:
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_02254388: .word 0x00003044
_0225438C: .word 0x000003E9
_02254390: .word 0x00002D8C
_02254394: .word 0x0000216C
_02254398: .word 0x801FDA49
_0225439C: .word 0x0000215C
thumb_func_end CheckAbilityEffectOnHit
thumb_func_start ov12_022543A0
ov12_022543A0: ; 0x022543A0
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r2, #0
add r0, r4, #0
add r1, r5, #0
add r7, r3, #0
mov r6, #0
bl GetBattlerAbility
cmp r0, #0x28
bgt _022543E6
bge _02254480
cmp r0, #7
bgt _022543C0
beq _0225442E
b _022544D8
_022543C0:
add r1, r0, #0
sub r1, #0xc
cmp r1, #8
bhi _022543F0
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_022543D4: ; jump table
.short _0225449C - _022543D4 - 2 ; case 0
.short _022544D8 - _022543D4 - 2 ; case 1
.short _022544D8 - _022543D4 - 2 ; case 2
.short _02254448 - _022543D4 - 2 ; case 3
.short _022544D8 - _022543D4 - 2 ; case 4
.short _022543F8 - _022543D4 - 2 ; case 5
.short _022544D8 - _022543D4 - 2 ; case 6
.short _022544D8 - _022543D4 - 2 ; case 7
.short _02254412 - _022543D4 - 2 ; case 8
_022543E6:
cmp r0, #0x48
bgt _022543F2
bge _02254448
cmp r0, #0x29
beq _02254464
_022543F0:
b _022544D8
_022543F2:
cmp r0, #0x54
beq _022544BA
b _022544D8
_022543F8:
mov r0, #0xc0
add r1, r5, #0
mul r1, r0
add r2, r4, r1
ldr r1, _0225450C ; =0x00002DAC
ldr r2, [r2, r1]
ldr r1, _02254510 ; =0x00000F88
tst r1, r2
beq _022544D8
mov r6, #1
add r0, #0x70
str r6, [r4, r0]
b _022544D8
_02254412:
mov r0, #0xc0
add r1, r5, #0
mul r1, r0
add r2, r4, r1
ldr r1, _02254514 ; =0x00002DB0
ldr r2, [r2, r1]
mov r1, #7
tst r1, r2
beq _022544D8
mov r1, #5
add r0, #0x70
str r1, [r4, r0]
mov r6, #1
b _022544D8
_0225442E:
mov r0, #0xc0
mul r0, r5
add r1, r4, r0
ldr r0, _0225450C ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #0x40
tst r1, r0
beq _022544D8
mov r1, #3
add r0, #0xf0
str r1, [r4, r0]
mov r6, #1
b _022544D8
_02254448:
mov r0, #0xc0
add r1, r5, #0
mul r1, r0
add r2, r4, r1
ldr r1, _0225450C ; =0x00002DAC
ldr r2, [r2, r1]
mov r1, #7
tst r1, r2
beq _022544D8
mov r1, #0
add r0, #0x70
str r1, [r4, r0]
mov r6, #1
b _022544D8
_02254464:
mov r0, #0xc0
add r1, r5, #0
mul r1, r0
add r2, r4, r1
ldr r1, _0225450C ; =0x00002DAC
ldr r2, [r2, r1]
mov r1, #0x10
tst r1, r2
beq _022544D8
mov r1, #2
add r0, #0x70
str r1, [r4, r0]
mov r6, #1
b _022544D8
_02254480:
mov r0, #0xc0
add r1, r5, #0
mul r1, r0
add r2, r4, r1
ldr r1, _0225450C ; =0x00002DAC
ldr r2, [r2, r1]
mov r1, #0x20
tst r1, r2
beq _022544D8
mov r1, #4
add r0, #0x70
str r1, [r4, r0]
mov r6, #1
b _022544D8
_0225449C:
mov r0, #0xc0
add r1, r5, #0
mul r1, r0
add r2, r4, r1
ldr r1, _02254514 ; =0x00002DB0
ldr r2, [r2, r1]
mov r1, #0xf
lsl r1, r1, #0x10
tst r1, r2
beq _022544D8
mov r1, #6
add r0, #0x70
str r1, [r4, r0]
mov r6, #1
b _022544D8
_022544BA:
mov r0, #0xc0
add r3, r5, #0
mul r3, r0
ldr r0, _02254518 ; =0x00002DB8
add r1, r4, r3
ldrh r1, [r1, r0]
cmp r1, #0
beq _022544D8
add r0, #0x14
add r2, r4, r0
mov r0, #1
ldr r1, [r2, r3]
lsl r0, r0, #0x16
orr r0, r1
str r0, [r2, r3]
_022544D8:
cmp r6, #1
bne _02254506
mov r0, #0x46
lsl r0, r0, #2
str r5, [r4, r0]
add r0, r4, #0
add r1, r5, #0
bl GetBattlerAbility
mov r1, #0x4b
lsl r1, r1, #2
str r0, [r4, r1]
cmp r7, #0
bne _02254506
add r0, r4, #0
mov r1, #1
mov r2, #0xdd
bl ReadBattleScriptFromNarc
ldr r0, [r4, #8]
str r0, [r4, #0xc]
mov r0, #0x16
str r0, [r4, #8]
_02254506:
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_0225450C: .word 0x00002DAC
_02254510: .word 0x00000F88
_02254514: .word 0x00002DB0
_02254518: .word 0x00002DB8
thumb_func_end ov12_022543A0
thumb_func_start CheckNaturalCureOnSwitch
CheckNaturalCureOnSwitch: ; 0x0225451C
mov r0, #0
cmp r1, #0x28
bgt _0225453C
bge _02254572
cmp r1, #7
bgt _0225452C
beq _02254554
bx lr
_0225452C:
cmp r1, #0x11
bgt _0225457A
cmp r1, #0xf
blt _0225457A
beq _0225455E
cmp r1, #0x11
beq _0225454A
bx lr
_0225453C:
cmp r1, #0x29
bgt _02254544
beq _02254568
bx lr
_02254544:
cmp r1, #0x48
beq _0225455E
bx lr
_0225454A:
ldr r1, _0225457C ; =0x00000F88
tst r1, r2
beq _0225457A
mov r0, #1
bx lr
_02254554:
mov r1, #0x40
tst r1, r2
beq _0225457A
mov r0, #1
bx lr
_0225455E:
mov r1, #7
tst r1, r2
beq _0225457A
mov r0, #1
bx lr
_02254568:
mov r1, #0x10
tst r1, r2
beq _0225457A
mov r0, #1
bx lr
_02254572:
mov r1, #0x20
tst r1, r2
beq _0225457A
mov r0, #1
_0225457A:
bx lr
.balign 4, 0
_0225457C: .word 0x00000F88
thumb_func_end CheckNaturalCureOnSwitch
thumb_func_start ov12_02254580
ov12_02254580: ; 0x02254580
push {r3, r4, r5, r6, r7, lr}
mov r5, #0
add r4, r1, #0
str r5, [sp]
ldr r1, [r4, #0x6c]
add r7, r0, #0
add r6, r2, #0
cmp r1, #0xff
beq _022545C2
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x1c
bne _022545C2
add r1, r4, #0
add r1, #0x94
ldr r0, [r4, #0x6c]
ldr r1, [r1]
cmp r0, r1
bne _022545C2
ldr r1, _02254710 ; =0x0000213C
ldr r2, [r4, r1]
mov r1, #0x80
tst r2, r1
beq _022545C2
add r1, #0x98
str r0, [r4, r1]
add r0, r4, #0
ldr r1, [r4, #0x64]
add r0, #0x94
str r1, [r0]
mov r5, #1
b _022545F2
_022545C2:
ldr r1, [r4, #0x64]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x1c
bne _022545F2
add r1, r4, #0
add r1, #0x94
ldr r0, [r4, #0x64]
ldr r1, [r1]
cmp r0, r1
bne _022545F2
ldr r1, _02254710 ; =0x0000213C
ldr r2, [r4, r1]
mov r1, #0x80
tst r2, r1
beq _022545F2
add r1, #0x98
str r0, [r4, r1]
add r0, r4, #0
ldr r1, [r4, #0x6c]
add r0, #0x94
str r1, [r0]
mov r5, #1
_022545F2:
cmp r5, #1
bne _0225464A
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r4, r0]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02254714 ; =0x00002DAC
ldr r0, [r1, r0]
ldr r1, _02254718 ; =0x00000F88
tst r1, r0
beq _02254612
mov r0, #0x16
str r0, [sp]
b _02254628
_02254612:
mov r1, #0x10
tst r1, r0
beq _0225461E
mov r0, #0x19
str r0, [sp]
b _02254628
_0225461E:
mov r1, #0x40
tst r0, r1
beq _02254628
mov r0, #0x1f
str r0, [sp]
_02254628:
ldr r0, [sp]
cmp r0, #0
beq _0225464A
add r0, r4, #0
mov r1, #3
add r0, #0x88
str r1, [r0]
ldr r2, [sp]
add r0, r4, #0
mov r1, #1
bl ReadBattleScriptFromNarc
str r6, [r4, #0xc]
mov r0, #0x16
str r0, [r4, #8]
add r0, r5, #0
pop {r3, r4, r5, r6, r7, pc}
_0225464A:
add r0, r7, #0
add r1, r4, #0
add r2, sp, #0
bl ov12_02256914
add r5, r0, #0
cmp r5, #1
bne _0225466E
ldr r2, [sp]
add r0, r4, #0
mov r1, #1
bl ReadBattleScriptFromNarc
str r6, [r4, #0xc]
mov r0, #0x16
str r0, [r4, #8]
add r0, r5, #0
pop {r3, r4, r5, r6, r7, pc}
_0225466E:
ldr r1, [r4, #0x6c]
cmp r1, #0xff
beq _022546AE
add r0, r4, #0
bl GetBattlerHeldItemEffect
cmp r0, #0x6c
bne _022546AE
add r1, r4, #0
add r1, #0x94
ldr r0, [r4, #0x6c]
ldr r1, [r1]
cmp r0, r1
bne _022546AE
mov r1, #0x1c
add r2, r0, #0
mul r2, r1
add r3, r4, r2
mov r2, #0xba
lsl r2, r2, #2
ldr r3, [r3, r2]
mov r2, #4
tst r2, r3
beq _022546AE
add r1, #0xfc
str r0, [r4, r1]
add r0, r4, #0
ldr r1, [r4, #0x64]
add r0, #0x94
str r1, [r0]
mov r5, #1
b _022546E8
_022546AE:
ldr r1, [r4, #0x64]
add r0, r4, #0
bl GetBattlerHeldItemEffect
cmp r0, #0x6c
bne _022546E8
add r1, r4, #0
add r1, #0x94
ldr r0, [r4, #0x64]
ldr r1, [r1]
cmp r0, r1
bne _022546E8
mov r1, #0x1c
add r2, r0, #0
mul r2, r1
add r3, r4, r2
mov r2, #0xba
lsl r2, r2, #2
ldr r3, [r3, r2]
mov r2, #4
tst r2, r3
beq _022546E8
add r1, #0xfc
str r0, [r4, r1]
add r0, r4, #0
ldr r1, [r4, #0x6c]
add r0, #0x94
str r1, [r0]
mov r5, #1
_022546E8:
cmp r5, #1
bne _0225470C
mov r0, #0x6a
str r0, [sp]
add r0, r4, #0
mov r1, #5
add r0, #0x88
str r1, [r0]
ldr r2, [sp]
add r0, r4, #0
mov r1, #1
bl ReadBattleScriptFromNarc
str r6, [r4, #0xc]
mov r0, #0x16
str r0, [r4, #8]
add r0, r5, #0
pop {r3, r4, r5, r6, r7, pc}
_0225470C:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02254710: .word 0x0000213C
_02254714: .word 0x00002DAC
_02254718: .word 0x00000F88
thumb_func_end ov12_02254580
thumb_func_start ov12_0225471C
ov12_0225471C: ; 0x0225471C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
add r4, r1, #0
mov r0, #0
str r0, [sp, #0xc]
str r2, [sp, #4]
add r0, r4, #0
add r1, r2, #0
bl GetBattlerHeldItemEffect
str r0, [sp, #0x10]
ldr r1, [sp, #4]
add r0, r4, #0
mov r2, #0
bl BattleSystem_GetHeldItemDamageBoost
add r6, r0, #0
ldr r0, [sp, #4]
mov r3, #0xc0
add r5, r0, #0
ldr r0, _02254A40 ; =0x00002D8C
mul r5, r3
add r1, r4, r0
ldr r2, [r1, r5]
str r1, [sp, #0x14]
cmp r2, #0
bne _02254756
b _02254D4C
_02254756:
ldr r1, [sp, #0x10]
cmp r1, #0x36
bls _0225475E
b _02254D1E
_0225475E:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0225476A: ; jump table
.short _02254D1E - _0225476A - 2 ; case 0
.short _022547D8 - _0225476A - 2 ; case 1
.short _02254D1E - _0225476A - 2 ; case 2
.short _02254D1E - _0225476A - 2 ; case 3
.short _02254D1E - _0225476A - 2 ; case 4
.short _02254812 - _0225476A - 2 ; case 5
.short _02254826 - _0225476A - 2 ; case 6
.short _0225483A - _0225476A - 2 ; case 7
.short _0225484E - _0225476A - 2 ; case 8
.short _02254862 - _0225476A - 2 ; case 9
.short _02254878 - _0225476A - 2 ; case 10
.short _022548DA - _0225476A - 2 ; case 11
.short _022548EE - _0225476A - 2 ; case 12
.short _022547F0 - _0225476A - 2 ; case 13
.short _0225494C - _0225476A - 2 ; case 14
.short _02254988 - _0225476A - 2 ; case 15
.short _022549C6 - _0225476A - 2 ; case 16
.short _02254A02 - _0225476A - 2 ; case 17
.short _02254A5C - _0225476A - 2 ; case 18
.short _02254D1E - _0225476A - 2 ; case 19
.short _02254D1E - _0225476A - 2 ; case 20
.short _02254D1E - _0225476A - 2 ; case 21
.short _02254D1E - _0225476A - 2 ; case 22
.short _02254D1E - _0225476A - 2 ; case 23
.short _02254D1E - _0225476A - 2 ; case 24
.short _02254D1E - _0225476A - 2 ; case 25
.short _02254D1E - _0225476A - 2 ; case 26
.short _02254D1E - _0225476A - 2 ; case 27
.short _02254D1E - _0225476A - 2 ; case 28
.short _02254D1E - _0225476A - 2 ; case 29
.short _02254D1E - _0225476A - 2 ; case 30
.short _02254D1E - _0225476A - 2 ; case 31
.short _02254D1E - _0225476A - 2 ; case 32
.short _02254D1E - _0225476A - 2 ; case 33
.short _02254D1E - _0225476A - 2 ; case 34
.short _02254D1E - _0225476A - 2 ; case 35
.short _02254A98 - _0225476A - 2 ; case 36
.short _02254ADE - _0225476A - 2 ; case 37
.short _02254B24 - _0225476A - 2 ; case 38
.short _02254B6A - _0225476A - 2 ; case 39
.short _02254BB0 - _0225476A - 2 ; case 40
.short _02254BF8 - _0225476A - 2 ; case 41
.short _02254C3A - _0225476A - 2 ; case 42
.short _02254D1E - _0225476A - 2 ; case 43
.short _02254CEC - _0225476A - 2 ; case 44
.short _02254D1E - _0225476A - 2 ; case 45
.short _02254D1E - _0225476A - 2 ; case 46
.short _02254D1E - _0225476A - 2 ; case 47
.short _02254D1E - _0225476A - 2 ; case 48
.short _02254CA8 - _0225476A - 2 ; case 49
.short _02254D1E - _0225476A - 2 ; case 50
.short _02254D1E - _0225476A - 2 ; case 51
.short _02254D1E - _0225476A - 2 ; case 52
.short _02254D1E - _0225476A - 2 ; case 53
.short _02254CD0 - _0225476A - 2 ; case 54
_022547D8:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r0, r0, #1
cmp r2, r0
bhi _0225486E
ldr r0, _02254A44 ; =0x0000215C
mov r7, #0xc6
str r6, [r4, r0]
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
_022547F0:
add r1, r4, r5
add r0, r0, #4
ldr r1, [r1, r0]
lsr r0, r1, #1
cmp r2, r0
bhi _0225486E
add r0, r6, #0
mul r0, r1
mov r1, #0x64
bl DamageDivide
ldr r1, _02254A44 ; =0x0000215C
mov r7, #0xc6
str r0, [r4, r1]
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
_02254812:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
mov r0, #0x40
tst r0, r1
beq _0225486E
mov r0, #1
mov r7, #0xc7
str r0, [sp, #0xc]
b _02254D1E
_02254826:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
beq _0225486E
mov r0, #1
mov r7, #0xc8
str r0, [sp, #0xc]
b _02254D1E
_0225483A:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
ldr r0, _02254A48 ; =0x00000F88
tst r0, r1
beq _0225486E
mov r0, #1
mov r7, #0xc9
str r0, [sp, #0xc]
b _02254D1E
_0225484E:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
mov r0, #0x10
tst r0, r1
beq _0225486E
mov r0, #1
mov r7, #0xca
str r0, [sp, #0xc]
b _02254D1E
_02254862:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
mov r0, #0x20
tst r0, r1
bne _02254870
_0225486E:
b _02254D1E
_02254870:
mov r0, #1
mov r7, #0xcb
str r0, [sp, #0xc]
b _02254D1E
_02254878:
mov r0, #0
str r0, [sp, #8]
add r0, r4, r5
ldr r3, _02254A4C ; =0x00002D4C
add r1, r0, #0
_02254882:
ldrh r2, [r0, r3]
cmp r2, #0
beq _02254890
ldr r2, _02254A50 ; =0x00002D6C
ldrb r2, [r1, r2]
cmp r2, #0
beq _0225489E
_02254890:
ldr r2, [sp, #8]
add r0, r0, #2
add r2, r2, #1
add r1, r1, #1
str r2, [sp, #8]
cmp r2, #4
blt _02254882
_0225489E:
ldr r0, [sp, #8]
cmp r0, #4
beq _02254994
mov r0, #0xb5
lsl r0, r0, #6
ldr r1, [sp, #8]
add r0, r4, r0
add r0, r0, r5
add r1, #0x1f
add r2, r6, #0
bl ov12_0224F7AC
ldr r0, [sp]
ldr r2, [sp, #4]
add r1, r4, #0
bl CopyBattleMonToPartyMon
ldr r0, [sp, #8]
add r1, r4, r5
lsl r0, r0, #1
add r1, r1, r0
ldr r0, _02254A4C ; =0x00002D4C
mov r7, #0xcc
ldrh r1, [r1, r0]
mov r0, #0x49
lsl r0, r0, #2
str r1, [r4, r0]
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
_022548DA:
add r1, r4, r5
add r0, #0x24
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
beq _02254994
mov r0, #1
mov r7, #0xcd
str r0, [sp, #0xc]
b _02254D1E
_022548EE:
add r2, r0, #0
add r1, r4, r5
add r2, #0x20
ldr r2, [r1, r2]
lsl r3, r2, #0x18
lsr r3, r3, #0x18
bne _02254906
add r0, #0x24
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
beq _02254994
_02254906:
mov r0, #0x40
tst r0, r2
beq _0225490E
mov r7, #0xc7
_0225490E:
mov r0, #7
tst r0, r2
beq _02254916
mov r7, #0xc8
_02254916:
ldr r0, _02254A48 ; =0x00000F88
tst r0, r2
beq _0225491E
mov r7, #0xc9
_0225491E:
mov r0, #0x10
tst r0, r2
beq _02254926
mov r7, #0xca
_02254926:
mov r0, #0x20
tst r0, r2
beq _0225492E
mov r7, #0xcb
_0225492E:
ldr r0, _02254A54 ; =0x00002DB0
add r1, r4, r5
ldr r1, [r1, r0]
mov r0, #7
and r0, r1
beq _0225493C
mov r7, #0xcd
_0225493C:
cmp r3, #0
beq _02254946
cmp r0, #0
beq _02254946
mov r7, #0xce
_02254946:
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
_0225494C:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bhi _02254994
add r1, r6, #0
bl DamageDivide
ldr r1, _02254A44 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #0
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _02254A58 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _02254980
mov r7, #0xcf
b _02254982
_02254980:
mov r7, #0xc6
_02254982:
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
_02254988:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bls _02254996
_02254994:
b _02254D1E
_02254996:
add r1, r6, #0
bl DamageDivide
ldr r1, _02254A44 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _02254A58 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _022549BE
mov r7, #0xcf
b _022549C0
_022549BE:
mov r7, #0xc6
_022549C0:
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
_022549C6:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bhi _02254ACE
add r1, r6, #0
bl DamageDivide
ldr r1, _02254A44 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #2
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _02254A58 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _022549FA
mov r7, #0xcf
b _022549FC
_022549FA:
mov r7, #0xc6
_022549FC:
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
_02254A02:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bhi _02254ACE
add r1, r6, #0
bl DamageDivide
ldr r1, _02254A44 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #3
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _02254A58 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _02254A36
mov r7, #0xcf
b _02254A38
_02254A36:
mov r7, #0xc6
_02254A38:
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
nop
_02254A40: .word 0x00002D8C
_02254A44: .word 0x0000215C
_02254A48: .word 0x00000F88
_02254A4C: .word 0x00002D4C
_02254A50: .word 0x00002D6C
_02254A54: .word 0x00002DB0
_02254A58: .word 0x00002DA8
_02254A5C:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bhi _02254ACE
add r1, r6, #0
bl DamageDivide
ldr r1, _02254D54 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #4
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _02254D58 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _02254A90
mov r7, #0xcf
b _02254A92
_02254A90:
mov r7, #0xc6
_02254A92:
mov r0, #1
str r0, [sp, #0xc]
b _02254D1E
_02254A98:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02254AAA
lsr r0, r6, #0x1f
add r0, r6, r0
asr r6, r0, #1
_02254AAA:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02254D5C ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02254ACE
ldr r0, _02254D60 ; =0x00002D59
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
blt _02254AD0
_02254ACE:
b _02254D1E
_02254AD0:
mov r1, #0x13
mov r0, #1
lsl r1, r1, #4
str r0, [sp, #0xc]
str r0, [r4, r1]
mov r7, #0xd0
b _02254D1E
_02254ADE:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02254AF0
lsr r0, r6, #0x1f
add r0, r6, r0
asr r6, r0, #1
_02254AF0:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02254D5C ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02254BE6
ldr r0, _02254D64 ; =0x00002D5A
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
bge _02254BE6
mov r0, #0x13
mov r1, #2
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #1
mov r7, #0xd0
str r0, [sp, #0xc]
b _02254D1E
_02254B24:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02254B36
lsr r0, r6, #0x1f
add r0, r6, r0
asr r6, r0, #1
_02254B36:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02254D5C ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02254BE6
ldr r0, _02254D68 ; =0x00002D5B
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
bge _02254BE6
mov r0, #0x13
mov r1, #3
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #1
mov r7, #0xd0
str r0, [sp, #0xc]
b _02254D1E
_02254B6A:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02254B7C
lsr r0, r6, #0x1f
add r0, r6, r0
asr r6, r0, #1
_02254B7C:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02254D5C ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02254BE6
ldr r0, _02254D6C ; =0x00002D5C
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
bge _02254BE6
mov r0, #0x13
mov r1, #4
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #1
mov r7, #0xd0
str r0, [sp, #0xc]
b _02254D1E
_02254BB0:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02254BC2
lsr r0, r6, #0x1f
add r0, r6, r0
asr r6, r0, #1
_02254BC2:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02254D5C ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02254BE6
ldr r0, _02254D70 ; =0x00002D5D
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
blt _02254BE8
_02254BE6:
b _02254D1E
_02254BE8:
mov r0, #0x13
mov r1, #5
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #1
mov r7, #0xd0
str r0, [sp, #0xc]
b _02254D1E
_02254BF8:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02254C0A
lsr r0, r6, #0x1f
add r0, r6, r0
asr r6, r0, #1
_02254C0A:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02254D5C ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02254D1E
ldr r0, _02254D74 ; =0x00002DB0
add r1, r4, r5
ldr r1, [r1, r0]
mov r0, #1
lsl r0, r0, #0x14
tst r0, r1
bne _02254D1E
mov r0, #1
mov r7, #0xd1
str r0, [sp, #0xc]
b _02254D1E
_02254C3A:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02254C4C
lsr r0, r6, #0x1f
add r0, r6, r0
asr r6, r0, #1
_02254C4C:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02254D5C ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02254D1E
ldr r0, _02254D60 ; =0x00002D59
mov r2, #0
add r3, r4, r5
_02254C6C:
ldrsb r1, [r3, r0]
cmp r1, #0xc
blt _02254C7A
add r2, r2, #1
add r3, r3, #1
cmp r2, #5
blt _02254C6C
_02254C7A:
cmp r2, #5
beq _02254D1E
ldr r6, _02254D60 ; =0x00002D59
add r5, r4, r5
mov r7, #5
_02254C84:
ldr r0, [sp]
bl BattleSys_Random
add r1, r7, #0
bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r6]
cmp r0, #0xc
beq _02254C84
mov r0, #0x13
add r1, r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #1
mov r7, #0xd2
str r0, [sp, #0xc]
b _02254D1E
_02254CA8:
ldr r6, _02254D78 ; =0x00002D58
add r1, r4, r5
mov r0, #0
mov r5, #6
add r3, r6, #0
_02254CB2:
ldrsb r2, [r1, r3]
cmp r2, #6
bge _02254CBE
mov r2, #1
strb r5, [r1, r6]
str r2, [sp, #0xc]
_02254CBE:
add r0, r0, #1
add r1, r1, #1
cmp r0, #8
blt _02254CB2
ldr r0, [sp, #0xc]
cmp r0, #1
bne _02254D1E
mov r7, #0xd3
b _02254D1E
_02254CD0:
add r1, r4, r5
add r0, #0x24
ldr r1, [r1, r0]
mov r0, #0xf
lsl r0, r0, #0x10
tst r0, r1
beq _02254D1E
mov r0, #6
add r3, #0x70
str r0, [r4, r3]
mov r0, #1
mov r7, #0xd4
str r0, [sp, #0xc]
b _02254D1E
_02254CEC:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02254CFE
lsr r0, r6, #0x1f
add r0, r6, r0
asr r6, r0, #1
_02254CFE:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02254D5C ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02254D1E
mov r0, #1
ldr r7, _02254D7C ; =0x00000109
str r0, [sp, #0xc]
_02254D1E:
ldr r0, [sp, #0xc]
cmp r0, #1
bne _02254D4C
mov r1, #0x46
ldr r0, [sp, #4]
lsl r1, r1, #2
str r0, [r4, r1]
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerHeldItem
mov r1, #0x4a
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r4, #0
mov r1, #1
add r2, r7, #0
bl ReadBattleScriptFromNarc
ldr r0, [r4, #8]
str r0, [r4, #0xc]
mov r0, #0x16
str r0, [r4, #8]
_02254D4C:
ldr r0, [sp, #0xc]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_02254D54: .word 0x0000215C
_02254D58: .word 0x00002DA8
_02254D5C: .word 0x00002D90
_02254D60: .word 0x00002D59
_02254D64: .word 0x00002D5A
_02254D68: .word 0x00002D5B
_02254D6C: .word 0x00002D5C
_02254D70: .word 0x00002D5D
_02254D74: .word 0x00002DB0
_02254D78: .word 0x00002D58
_02254D7C: .word 0x00000109
thumb_func_end ov12_0225471C
thumb_func_start ov12_02254D80
ov12_02254D80: ; 0x02254D80
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r1, #0
add r6, r2, #0
mov r7, #0
add r0, r5, #0
add r1, r6, #0
bl GetBattlerHeldItemEffect
str r0, [sp, #4]
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
bl BattleSystem_GetHeldItemDamageBoost
mov r0, #0xc0
add r4, r6, #0
mul r4, r0
ldr r0, _02254E70 ; =0x00002D8C
add r1, r5, r0
str r1, [sp, #8]
ldr r1, [r1, r4]
cmp r1, #0
beq _02254E6A
ldr r2, [sp, #4]
cmp r2, #0x45
beq _02254DBE
add r0, r2, #0
cmp r0, #0x6d
beq _02254DDA
b _02254E40
_02254DBE:
add r2, r5, r4
add r0, r0, #4
ldr r0, [r2, r0]
cmp r1, r0
bhs _02254E40
mov r1, #0x10
bl DamageDivide
ldr r1, _02254E74 ; =0x0000215C
mov r7, #1
str r0, [r5, r1]
mov r0, #0xd5
str r0, [sp]
b _02254E40
_02254DDA:
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1b
add r3, r7, #0
bl GetBattlerVar
cmp r0, #3
beq _02254DFA
add r0, r5, #0
add r1, r6, #0
mov r2, #0x1c
add r3, r7, #0
bl GetBattlerVar
cmp r0, #3
bne _02254E1A
_02254DFA:
ldr r0, _02254E78 ; =0x00002D90
add r1, r5, r4
ldr r0, [r1, r0]
ldr r1, [sp, #8]
ldr r1, [r1, r4]
cmp r1, r0
bhs _02254E40
mov r1, #0x10
bl DamageDivide
ldr r1, _02254E74 ; =0x0000215C
mov r7, #1
str r0, [r5, r1]
mov r0, #0xd5
str r0, [sp]
b _02254E40
_02254E1A:
add r0, r5, #0
add r1, r6, #0
bl GetBattlerAbility
cmp r0, #0x62
beq _02254E40
ldr r0, _02254E78 ; =0x00002D90
add r1, r5, r4
ldr r1, [r1, r0]
sub r0, r7, #1
mul r0, r1
mov r1, #8
bl DamageDivide
ldr r1, _02254E74 ; =0x0000215C
mov r7, #1
str r0, [r5, r1]
mov r0, #0xd7
str r0, [sp]
_02254E40:
cmp r7, #1
bne _02254E6A
mov r0, #0x46
lsl r0, r0, #2
str r6, [r5, r0]
add r0, r5, #0
add r1, r6, #0
bl GetBattlerHeldItem
mov r1, #0x4a
lsl r1, r1, #2
str r0, [r5, r1]
ldr r2, [sp]
add r0, r5, #0
mov r1, #1
bl ReadBattleScriptFromNarc
ldr r0, [r5, #8]
str r0, [r5, #0xc]
mov r0, #0x16
str r0, [r5, #8]
_02254E6A:
add r0, r7, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02254E70: .word 0x00002D8C
_02254E74: .word 0x0000215C
_02254E78: .word 0x00002D90
thumb_func_end ov12_02254D80
thumb_func_start ov12_02254E7C
ov12_02254E7C: ; 0x02254E7C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
add r4, r1, #0
mov r0, #0
str r0, [sp, #0xc]
str r2, [sp, #4]
add r0, r4, #0
add r1, r2, #0
add r6, r3, #0
bl GetBattlerHeldItemEffect
str r0, [sp, #0x10]
ldr r1, [sp, #4]
add r0, r4, #0
mov r2, #0
bl BattleSystem_GetHeldItemDamageBoost
add r7, r0, #0
ldr r0, [sp, #4]
mov r3, #0xc0
add r5, r0, #0
ldr r0, _022551A0 ; =0x00002D8C
mul r5, r3
add r1, r4, r0
ldr r2, [r1, r5]
str r1, [sp, #0x14]
cmp r2, #0
bne _02254EB8
b _02255516
_02254EB8:
ldr r1, [sp, #0x10]
cmp r1, #0x36
bhi _02254F44
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02254ECA: ; jump table
.short _02255502 - _02254ECA - 2 ; case 0
.short _02254F38 - _02254ECA - 2 ; case 1
.short _02255502 - _02254ECA - 2 ; case 2
.short _02255502 - _02254ECA - 2 ; case 3
.short _02255502 - _02254ECA - 2 ; case 4
.short _02254F78 - _02254ECA - 2 ; case 5
.short _02254F8E - _02254ECA - 2 ; case 6
.short _02254FA4 - _02254ECA - 2 ; case 7
.short _02254FBA - _02254ECA - 2 ; case 8
.short _02254FD0 - _02254ECA - 2 ; case 9
.short _02254FE6 - _02254ECA - 2 ; case 10
.short _0225504A - _02254ECA - 2 ; case 11
.short _02255062 - _02254ECA - 2 ; case 12
.short _02254F54 - _02254ECA - 2 ; case 13
.short _0225515E - _02254ECA - 2 ; case 14
.short _022551C8 - _02254ECA - 2 ; case 15
.short _02255206 - _02254ECA - 2 ; case 16
.short _02255244 - _02254ECA - 2 ; case 17
.short _02255282 - _02254ECA - 2 ; case 18
.short _02255502 - _02254ECA - 2 ; case 19
.short _02255502 - _02254ECA - 2 ; case 20
.short _02255502 - _02254ECA - 2 ; case 21
.short _02255502 - _02254ECA - 2 ; case 22
.short _02255502 - _02254ECA - 2 ; case 23
.short _02255502 - _02254ECA - 2 ; case 24
.short _02255502 - _02254ECA - 2 ; case 25
.short _02255502 - _02254ECA - 2 ; case 26
.short _02255502 - _02254ECA - 2 ; case 27
.short _02255502 - _02254ECA - 2 ; case 28
.short _02255502 - _02254ECA - 2 ; case 29
.short _02255502 - _02254ECA - 2 ; case 30
.short _02255502 - _02254ECA - 2 ; case 31
.short _02255502 - _02254ECA - 2 ; case 32
.short _02255502 - _02254ECA - 2 ; case 33
.short _02255502 - _02254ECA - 2 ; case 34
.short _02255502 - _02254ECA - 2 ; case 35
.short _022552C2 - _02254ECA - 2 ; case 36
.short _02255308 - _02254ECA - 2 ; case 37
.short _02255350 - _02254ECA - 2 ; case 38
.short _02255398 - _02254ECA - 2 ; case 39
.short _022553E2 - _02254ECA - 2 ; case 40
.short _0225542A - _02254ECA - 2 ; case 41
.short _0225546E - _02254ECA - 2 ; case 42
.short _02255502 - _02254ECA - 2 ; case 43
.short _02255128 - _02254ECA - 2 ; case 44
.short _02255502 - _02254ECA - 2 ; case 45
.short _02255502 - _02254ECA - 2 ; case 46
.short _02255502 - _02254ECA - 2 ; case 47
.short _02255502 - _02254ECA - 2 ; case 48
.short _022550E0 - _02254ECA - 2 ; case 49
.short _02255502 - _02254ECA - 2 ; case 50
.short _02255502 - _02254ECA - 2 ; case 51
.short _02255502 - _02254ECA - 2 ; case 52
.short _02255502 - _02254ECA - 2 ; case 53
.short _0225510A - _02254ECA - 2 ; case 54
_02254F38:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r0, r0, #1
cmp r2, r0
bls _02254F46
_02254F44:
b _02255502
_02254F46:
ldr r0, _022551A4 ; =0x0000215C
str r7, [r4, r0]
mov r0, #0xc6
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02254F54:
add r1, r4, r5
add r0, r0, #4
ldr r1, [r1, r0]
lsr r0, r1, #1
cmp r2, r0
bhi _02255056
add r0, r7, #0
mul r0, r1
mov r1, #0x64
bl DamageDivide
ldr r1, _022551A4 ; =0x0000215C
str r0, [r4, r1]
mov r0, #0xc6
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02254F78:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
mov r0, #0x40
tst r0, r1
beq _02255056
mov r0, #0xc7
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02254F8E:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
beq _02255056
mov r0, #0xc8
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02254FA4:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
ldr r0, _022551A8 ; =0x00000F88
tst r0, r1
beq _02255056
mov r0, #0xc9
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02254FBA:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
mov r0, #0x10
tst r0, r1
beq _02255056
mov r0, #0xca
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02254FD0:
add r1, r4, r5
add r0, #0x20
ldr r1, [r1, r0]
mov r0, #0x20
tst r0, r1
beq _02255056
mov r0, #0xcb
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02254FE6:
mov r0, #0
str r0, [sp, #8]
add r0, r4, r5
ldr r3, _022551AC ; =0x00002D4C
add r1, r0, #0
_02254FF0:
ldrh r2, [r0, r3]
cmp r2, #0
beq _02254FFE
ldr r2, _022551B0 ; =0x00002D6C
ldrb r2, [r1, r2]
cmp r2, #0
beq _0225500C
_02254FFE:
ldr r2, [sp, #8]
add r0, r0, #2
add r2, r2, #1
add r1, r1, #1
str r2, [sp, #8]
cmp r2, #4
blt _02254FF0
_0225500C:
ldr r0, [sp, #8]
cmp r0, #4
beq _02255056
mov r0, #0xb5
lsl r0, r0, #6
ldr r1, [sp, #8]
add r0, r4, r0
add r0, r0, r5
add r1, #0x1f
add r2, r7, #0
bl ov12_0224F7AC
ldr r0, [sp]
ldr r2, [sp, #4]
add r1, r4, #0
bl CopyBattleMonToPartyMon
ldr r0, [sp, #8]
add r1, r4, r5
lsl r0, r0, #1
add r1, r1, r0
ldr r0, _022551AC ; =0x00002D4C
ldrh r1, [r1, r0]
mov r0, #0x49
lsl r0, r0, #2
str r1, [r4, r0]
mov r0, #0xcc
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_0225504A:
add r1, r4, r5
add r0, #0x24
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
bne _02255058
_02255056:
b _02255502
_02255058:
mov r0, #0xcd
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02255062:
add r1, r0, #0
add r1, #0x20
add r1, r4, r1
ldr r2, [r1, r5]
lsl r3, r2, #0x18
lsr r3, r3, #0x18
bne _0225507C
add r3, r4, r5
add r0, #0x24
ldr r3, [r3, r0]
mov r0, #7
tst r0, r3
beq _0225516A
_0225507C:
mov r0, #0x40
tst r0, r2
beq _02255086
mov r0, #0xc7
str r0, [r6]
_02255086:
ldr r2, [r1, r5]
mov r0, #7
tst r0, r2
beq _02255092
mov r0, #0xc8
str r0, [r6]
_02255092:
ldr r2, [r1, r5]
ldr r0, _022551A8 ; =0x00000F88
tst r0, r2
beq _0225509E
mov r0, #0xc9
str r0, [r6]
_0225509E:
ldr r2, [r1, r5]
mov r0, #0x10
tst r0, r2
beq _022550AA
mov r0, #0xca
str r0, [r6]
_022550AA:
ldr r2, [r1, r5]
mov r0, #0x20
tst r0, r2
beq _022550B6
mov r0, #0xcb
str r0, [r6]
_022550B6:
ldr r0, _022551B4 ; =0x00002DB0
mov r2, #7
add r0, r4, r0
ldr r3, [r0, r5]
tst r2, r3
beq _022550C6
mov r2, #0xcd
str r2, [r6]
_022550C6:
ldr r1, [r1, r5]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
beq _022550DA
ldr r1, [r0, r5]
mov r0, #7
tst r0, r1
beq _022550DA
mov r0, #0xce
str r0, [r6]
_022550DA:
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_022550E0:
ldr r7, _022551B8 ; =0x00002D58
add r1, r4, r5
mov r0, #0
mov r5, #6
add r3, r7, #0
_022550EA:
ldrsb r2, [r1, r3]
cmp r2, #6
bge _022550F6
mov r2, #1
strb r5, [r1, r7]
str r2, [sp, #0xc]
_022550F6:
add r0, r0, #1
add r1, r1, #1
cmp r0, #8
blt _022550EA
ldr r0, [sp, #0xc]
cmp r0, #1
bne _0225516A
mov r0, #0xd3
str r0, [r6]
b _02255502
_0225510A:
add r1, r4, r5
add r0, #0x24
ldr r1, [r1, r0]
mov r0, #0xf
lsl r0, r0, #0x10
tst r0, r1
beq _0225516A
mov r0, #6
add r3, #0x70
str r0, [r4, r3]
mov r0, #0xd4
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02255128:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _0225513A
lsr r0, r7, #0x1f
add r0, r7, r0
asr r7, r0, #1
_0225513A:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _022551BC ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _0225516A
ldr r0, _022551C0 ; =0x00000109
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_0225515E:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bls _0225516C
_0225516A:
b _02255502
_0225516C:
add r1, r7, #0
bl DamageDivide
ldr r1, _022551A4 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #0
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _022551C4 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _02255194
mov r0, #0xcf
b _02255196
_02255194:
mov r0, #0xc6
_02255196:
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
nop
_022551A0: .word 0x00002D8C
_022551A4: .word 0x0000215C
_022551A8: .word 0x00000F88
_022551AC: .word 0x00002D4C
_022551B0: .word 0x00002D6C
_022551B4: .word 0x00002DB0
_022551B8: .word 0x00002D58
_022551BC: .word 0x00002D90
_022551C0: .word 0x00000109
_022551C4: .word 0x00002DA8
_022551C8:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bhi _0225528E
add r1, r7, #0
bl DamageDivide
ldr r1, _022554B8 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _022554BC ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _022551FC
mov r0, #0xcf
b _022551FE
_022551FC:
mov r0, #0xc6
_022551FE:
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02255206:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bhi _0225528E
add r1, r7, #0
bl DamageDivide
ldr r1, _022554B8 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #2
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _022554BC ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _0225523A
mov r0, #0xcf
b _0225523C
_0225523A:
mov r0, #0xc6
_0225523C:
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02255244:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bhi _0225528E
add r1, r7, #0
bl DamageDivide
ldr r1, _022554B8 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #3
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _022554BC ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _02255278
mov r0, #0xcf
b _0225527A
_02255278:
mov r0, #0xc6
_0225527A:
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02255282:
add r1, r4, r5
add r0, r0, #4
ldr r0, [r1, r0]
lsr r1, r0, #1
cmp r2, r1
bls _02255290
_0225528E:
b _02255502
_02255290:
add r1, r7, #0
bl DamageDivide
ldr r1, _022554B8 ; =0x0000215C
add r2, r4, r5
str r0, [r4, r1]
mov r0, #0x13
mov r1, #4
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _022554BC ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
mov r1, #0
mvn r1, r1
cmp r0, r1
bne _022552B8
mov r0, #0xcf
b _022552BA
_022552B8:
mov r0, #0xc6
_022552BA:
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_022552C2:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _022552D4
lsr r0, r7, #0x1f
add r0, r7, r0
asr r7, r0, #1
_022552D4:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _022554C0 ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _022553CE
ldr r0, _022554C4 ; =0x00002D59
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
bge _022553CE
mov r1, #0x13
mov r0, #1
lsl r1, r1, #4
str r0, [sp, #0xc]
str r0, [r4, r1]
mov r0, #0xd0
str r0, [r6]
b _02255502
_02255308:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _0225531A
lsr r0, r7, #0x1f
add r0, r7, r0
asr r7, r0, #1
_0225531A:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _022554C0 ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _022553CE
ldr r0, _022554C8 ; =0x00002D5A
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
bge _022553CE
mov r0, #0x13
mov r1, #2
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #0xd0
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02255350:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02255362
lsr r0, r7, #0x1f
add r0, r7, r0
asr r7, r0, #1
_02255362:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _022554C0 ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _022553CE
ldr r0, _022554CC ; =0x00002D5B
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
bge _022553CE
mov r0, #0x13
mov r1, #3
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #0xd0
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_02255398:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _022553AA
lsr r0, r7, #0x1f
add r0, r7, r0
asr r7, r0, #1
_022553AA:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _022554C0 ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _022553CE
ldr r0, _022554D0 ; =0x00002D5C
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
blt _022553D0
_022553CE:
b _02255502
_022553D0:
mov r0, #0x13
mov r1, #4
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #0xd0
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_022553E2:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _022553F4
lsr r0, r7, #0x1f
add r0, r7, r0
asr r7, r0, #1
_022553F4:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _022554C0 ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02255502
ldr r0, _022554D4 ; =0x00002D5D
add r1, r4, r5
ldrsb r0, [r1, r0]
cmp r0, #0xc
bge _02255502
mov r0, #0x13
mov r1, #5
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #0xd0
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_0225542A:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _0225543C
lsr r0, r7, #0x1f
add r0, r7, r0
asr r7, r0, #1
_0225543C:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _022554C0 ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02255502
ldr r0, _022554D8 ; =0x00002DB0
add r1, r4, r5
ldr r1, [r1, r0]
mov r0, #1
lsl r0, r0, #0x14
tst r0, r1
bne _02255502
mov r0, #0xd1
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
b _02255502
_0225546E:
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x52
bne _02255480
lsr r0, r7, #0x1f
add r0, r7, r0
asr r7, r0, #1
_02255480:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _022554C0 ; =0x00002D90
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
bhi _02255502
ldr r0, _022554C4 ; =0x00002D59
mov r2, #0
add r3, r4, r5
_022554A0:
ldrsb r1, [r3, r0]
cmp r1, #0xc
blt _022554AE
add r2, r2, #1
add r3, r3, #1
cmp r2, #5
blt _022554A0
_022554AE:
cmp r2, #5
beq _02255502
ldr r7, _022554C4 ; =0x00002D59
b _022554DC
nop
_022554B8: .word 0x0000215C
_022554BC: .word 0x00002DA8
_022554C0: .word 0x00002D90
_022554C4: .word 0x00002D59
_022554C8: .word 0x00002D5A
_022554CC: .word 0x00002D5B
_022554D0: .word 0x00002D5C
_022554D4: .word 0x00002D5D
_022554D8: .word 0x00002DB0
_022554DC:
add r5, r4, r5
_022554DE:
ldr r0, [sp]
bl BattleSys_Random
mov r1, #5
bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r7]
cmp r0, #0xc
beq _022554DE
mov r0, #0x13
add r1, r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
mov r0, #0xd2
str r0, [r6]
mov r0, #1
str r0, [sp, #0xc]
_02255502:
ldr r0, [sp, #0xc]
cmp r0, #1
bne _02255516
ldr r1, [sp, #4]
add r0, r4, #0
bl GetBattlerHeldItem
mov r1, #0x4a
lsl r1, r1, #2
str r0, [r4, r1]
_02255516:
ldr r0, [sp, #0xc]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov12_02254E7C
thumb_func_start ov12_0225551C
ov12_0225551C: ; 0x0225551C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r1, #0
add r4, r2, #0
mov r6, #0
add r0, r5, #0
add r1, r4, #0
bl GetBattlerHeldItemEffect
add r7, r0, #0
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl BattleSystem_GetHeldItemDamageBoost
str r0, [sp, #8]
mov r0, #0xc0
mul r0, r4
str r0, [sp]
add r1, r5, r0
ldr r0, _022555E0 ; =0x00002D8C
ldr r0, [r1, r0]
cmp r0, #0
beq _022555D8
cmp r7, #0x64
beq _0225555A
cmp r7, #0x65
beq _02255570
cmp r7, #0x74
beq _02255586
b _022555AE
_0225555A:
add r0, r5, #0
add r0, #0x94
str r4, [r0]
add r0, r5, #0
mov r1, #5
add r0, #0x88
str r1, [r0]
mov r0, #0x2f
str r0, [sp, #4]
mov r6, #1
b _022555AE
_02255570:
add r0, r5, #0
add r0, #0x94
str r4, [r0]
add r0, r5, #0
mov r1, #5
add r0, #0x88
str r1, [r0]
mov r0, #0x19
str r0, [sp, #4]
mov r6, #1
b _022555AE
_02255586:
add r0, r5, #0
add r1, r4, #0
bl GetBattlerAbility
cmp r0, #0x62
beq _022555AE
ldr r0, [sp]
add r1, r5, r0
ldr r0, _022555E4 ; =0x00002D90
ldr r1, [r1, r0]
sub r0, r6, #1
mul r0, r1
ldr r1, [sp, #8]
bl DamageDivide
ldr r1, _022555E8 ; =0x0000215C
mov r6, #1
str r0, [r5, r1]
mov r0, #0xd7
str r0, [sp, #4]
_022555AE:
cmp r6, #1
bne _022555D8
mov r0, #0x46
lsl r0, r0, #2
str r4, [r5, r0]
add r0, r5, #0
add r1, r4, #0
bl GetBattlerHeldItem
mov r1, #0x4a
lsl r1, r1, #2
str r0, [r5, r1]
ldr r2, [sp, #4]
add r0, r5, #0
mov r1, #1
bl ReadBattleScriptFromNarc
ldr r0, [r5, #8]
str r0, [r5, #0xc]
mov r0, #0x16
str r0, [r5, #8]
_022555D8:
add r0, r6, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_022555E0: .word 0x00002D8C
_022555E4: .word 0x00002D90
_022555E8: .word 0x0000215C
thumb_func_end ov12_0225551C
thumb_func_start GetBattlerHeldItem
GetBattlerHeldItem: ; 0x022555EC
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bl GetBattlerAbility
cmp r0, #0x67
bne _022555FE
mov r0, #0
pop {r3, r4, r5, pc}
_022555FE:
mov r0, #0xc0
mul r0, r4
add r2, r5, r0
ldr r0, _02255618 ; =0x00002DCC
ldr r1, [r2, r0]
lsl r1, r1, #0xa
lsr r1, r1, #0x1d
beq _02255612
mov r0, #0
pop {r3, r4, r5, pc}
_02255612:
sub r0, #0x14
ldrh r0, [r2, r0]
pop {r3, r4, r5, pc}
.balign 4, 0
_02255618: .word 0x00002DCC
thumb_func_end GetBattlerHeldItem
thumb_func_start ov12_0225561C
ov12_0225561C: ; 0x0225561C
lsl r1, r1, #4
add r1, r0, r1
ldr r0, _02255630 ; =0x000021A8
ldr r0, [r1, r0]
cmp r0, #0x28
bne _0225562C
mov r0, #1
bx lr
_0225562C:
mov r0, #0
bx lr
.balign 4, 0
_02255630: .word 0x000021A8
thumb_func_end ov12_0225561C
thumb_func_start CheckItemEffectOnHit
CheckItemEffectOnHit: ; 0x02255634
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r1, #0
ldr r1, [r5, #0x6c]
str r0, [sp]
add r6, r2, #0
mov r7, #0
cmp r1, #0xff
bne _0225564C
add sp, #0xc
add r0, r7, #0
pop {r4, r5, r6, r7, pc}
_0225564C:
add r0, r5, #0
bl ov12_02256838
cmp r0, #1
bne _0225565C
add sp, #0xc
add r0, r7, #0
pop {r4, r5, r6, r7, pc}
_0225565C:
ldr r1, [r5, #0x6c]
add r0, r5, #0
bl GetBattlerHeldItemEffect
add r4, r0, #0
ldr r1, [r5, #0x6c]
add r0, r5, #0
add r2, r7, #0
bl BattleSystem_GetHeldItemDamageBoost
str r0, [sp, #4]
ldr r0, [sp]
ldr r1, [r5, #0x64]
bl BattleSys_GetFieldSide
str r0, [sp, #8]
cmp r4, #0x2f
bgt _02255692
cmp r4, #0x2b
blt _02255690
bne _02255688
b _022557C4
_02255688:
cmp r4, #0x2e
beq _02255714
cmp r4, #0x2f
beq _02255772
_02255690:
b _0225580A
_02255692:
cmp r4, #0x74
bne _022556FC
ldr r0, [r5, #0x64]
mov r1, #0xc0
mul r1, r0
add r3, r5, r1
ldr r1, _02255810 ; =0x00002D8C
ldr r2, [r3, r1]
cmp r2, #0
beq _022556FC
add r1, #0x2c
ldrh r1, [r3, r1]
cmp r1, #0
bne _022556FC
add r1, r5, r0
ldr r0, _02255814 ; =0x0000219C
ldrb r0, [r1, r0]
bl MaskOfFlagNo
ldr r1, [sp, #8]
lsl r1, r1, #3
add r2, r5, r1
mov r1, #0x71
lsl r1, r1, #2
ldr r2, [r2, r1]
lsl r2, r2, #3
lsr r2, r2, #0x1a
tst r0, r2
bne _022556FC
ldr r0, _02255818 ; =0x00003044
sub r1, #0xaa
ldr r0, [r5, r0]
cmp r0, r1
beq _022556FC
ldr r2, [r5, #0x6c]
mov r1, #0x1c
mul r1, r2
add r3, r5, r1
mov r1, #0xb6
lsl r1, r1, #2
ldr r2, [r3, r1]
cmp r2, #0
bne _022556F0
add r1, #8
ldr r1, [r3, r1]
cmp r1, #0
beq _022556FC
_022556F0:
mov r1, #0x85
lsl r1, r1, #6
ldr r2, [r5, r1]
mov r1, #0x10
tst r1, r2
beq _022556FE
_022556FC:
b _0225580A
_022556FE:
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225581C ; =0x000003E9
ldrb r1, [r1, r0]
mov r0, #1
tst r1, r0
beq _0225580A
mov r1, #0xd8
str r1, [r6]
add r7, r0, #0
b _0225580A
_02255714:
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
add r2, r5, r0
ldr r0, _02255810 ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _0225580A
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x62
beq _0225580A
mov r0, #0x85
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #0x10
tst r0, r1
bne _0225580A
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r1, r5, r0
mov r0, #0xb6
lsl r0, r0, #2
ldr r0, [r1, r0]
cmp r0, #0
beq _0225580A
ldr r0, [r5, #0x64]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldr r0, _02255820 ; =0x00002D90
add r2, r5, r2
ldr r2, [r2, r0]
sub r1, #0xc1
add r0, r2, #0
mul r0, r1
ldr r1, [sp, #4]
bl DamageDivide
ldr r1, _02255824 ; =0x0000215C
mov r7, #1
str r0, [r5, r1]
lsr r0, r1, #5
str r0, [r6]
b _0225580A
_02255772:
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
add r2, r5, r0
ldr r0, _02255810 ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _0225580A
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x62
beq _0225580A
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r1, r5, r0
mov r0, #0x2e
lsl r0, r0, #4
ldr r0, [r1, r0]
cmp r0, #0
beq _0225580A
ldr r0, [r5, #0x64]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldr r0, _02255820 ; =0x00002D90
add r2, r5, r2
ldr r2, [r2, r0]
sub r1, #0xc1
add r0, r2, #0
mul r0, r1
ldr r1, [sp, #4]
bl DamageDivide
ldr r1, _02255824 ; =0x0000215C
mov r7, #1
str r0, [r5, r1]
lsr r0, r1, #5
str r0, [r6]
b _0225580A
_022557C4:
ldr r1, [r5, #0x6c]
mov r0, #0xc0
mul r0, r1
ldr r2, _02255810 ; =0x00002D8C
add r0, r5, r0
ldr r1, [r0, r2]
cmp r1, #0
beq _0225580A
ldr r1, _02255828 ; =0x0000216C
ldr r3, [r5, r1]
mov r1, #2
tst r1, r3
beq _0225580A
add r1, r2, #4
ldr r0, [r0, r1]
ldr r1, [sp, #4]
bl DamageDivide
ldr r1, _02255824 ; =0x0000215C
mov r7, #1
str r0, [r5, r1]
mov r1, #0xc6
str r1, [r6]
ldr r0, [r5, #0x6c]
add r1, #0x52
str r0, [r5, r1]
ldr r0, [r5, #0x6c]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldr r0, _0225582C ; =0x00002DB8
add r2, r5, r2
ldrh r0, [r2, r0]
add r1, #0x68
str r0, [r5, r1]
_0225580A:
add r0, r7, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02255810: .word 0x00002D8C
_02255814: .word 0x0000219C
_02255818: .word 0x00003044
_0225581C: .word 0x000003E9
_02255820: .word 0x00002D90
_02255824: .word 0x0000215C
_02255828: .word 0x0000216C
_0225582C: .word 0x00002DB8
thumb_func_end CheckItemEffectOnHit
thumb_func_start GetBattlerHeldItemEffect
GetBattlerHeldItemEffect: ; 0x02255830
push {r4, lr}
add r4, r0, #0
bl GetBattlerHeldItem
add r1, r0, #0
add r0, r4, #0
mov r2, #1
bl GetItemHoldEffect
pop {r4, pc}
thumb_func_end GetBattlerHeldItemEffect
thumb_func_start BattleSystem_GetHeldItemDamageBoost
BattleSystem_GetHeldItemDamageBoost: ; 0x02255844
push {r4, lr}
add r4, r0, #0
cmp r2, #0
beq _02255856
cmp r2, #1
beq _02255872
cmp r2, #2
beq _0225585E
b _0225587C
_02255856:
bl GetBattlerHeldItem
add r1, r0, #0
b _0225587C
_0225585E:
mov r0, #0xc0
mul r0, r1
add r2, r4, r0
ldr r0, _02255888 ; =0x00002DCC
ldr r0, [r2, r0]
lsl r0, r0, #0xa
lsr r0, r0, #0x1d
beq _02255872
mov r0, #0
pop {r4, pc}
_02255872:
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _0225588C ; =0x00002DB8
ldrh r1, [r1, r0]
_0225587C:
add r0, r4, #0
mov r2, #2
bl GetItemHoldEffect
pop {r4, pc}
nop
_02255888: .word 0x00002DCC
_0225588C: .word 0x00002DB8
thumb_func_end BattleSystem_GetHeldItemDamageBoost
thumb_func_start GetNaturalGiftPower
GetNaturalGiftPower: ; 0x02255890
push {r4, lr}
add r4, r0, #0
bl GetBattlerHeldItem
add r1, r0, #0
add r0, r4, #0
mov r2, #0xb
bl GetItemHoldEffect
pop {r4, pc}
thumb_func_end GetNaturalGiftPower
thumb_func_start GetNaturalGiftType
GetNaturalGiftType: ; 0x022558A4
push {r4, lr}
add r4, r0, #0
bl GetBattlerHeldItem
add r1, r0, #0
add r0, r4, #0
mov r2, #0xc
bl GetItemHoldEffect
pop {r4, pc}
thumb_func_end GetNaturalGiftType
thumb_func_start ov12_022558B8
ov12_022558B8: ; 0x022558B8
mov r2, #0xc0
mul r2, r1
ldr r1, _022558C8 ; =0x00002DB8
add r2, r0, r2
ldrh r1, [r2, r1]
ldr r3, _022558CC ; =GetItemHoldEffect
mov r2, #8
bx r3
.balign 4, 0
_022558C8: .word 0x00002DB8
_022558CC: .word GetItemHoldEffect
thumb_func_end ov12_022558B8
thumb_func_start ov12_022558D0
ov12_022558D0: ; 0x022558D0
push {r3, lr}
mov r2, #0xc0
mul r2, r1
ldr r1, _022558F4 ; =0x00002DCC
add r3, r0, r2
ldr r2, [r3, r1]
lsl r2, r2, #0xa
lsr r2, r2, #0x1d
beq _022558E6
mov r0, #0
pop {r3, pc}
_022558E6:
sub r1, #0x14
ldrh r1, [r3, r1]
mov r2, #9
bl GetItemHoldEffect
pop {r3, pc}
nop
_022558F4: .word 0x00002DCC
thumb_func_end ov12_022558D0
thumb_func_start ov12_022558F8
ov12_022558F8: ; 0x022558F8
push {r3, lr}
mov r2, #0xc0
mul r2, r1
ldr r1, _0225591C ; =0x00002DCC
add r3, r0, r2
ldr r2, [r3, r1]
lsl r2, r2, #0xa
lsr r2, r2, #0x1d
beq _0225590E
mov r0, #0
pop {r3, pc}
_0225590E:
sub r1, #0x14
ldrh r1, [r3, r1]
mov r2, #0xa
bl GetItemHoldEffect
pop {r3, pc}
nop
_0225591C: .word 0x00002DCC
thumb_func_end ov12_022558F8
thumb_func_start ov12_02255920
ov12_02255920: ; 0x02255920
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r1, #0
add r4, r2, #0
str r0, [sp, #4]
add r0, r5, #0
add r1, r4, #0
mov r6, #0
bl GetBattlerHeldItemEffect
cmp r0, #0x7b
bne _0225593E
add sp, #8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_0225593E:
mov r0, #0xc0
add r7, r4, #0
mul r7, r0
ldr r0, _02255A20 ; =0x00002DB0
add r2, r5, r7
ldr r1, [r2, r0]
ldr r3, _02255A24 ; =0x0400E000
tst r1, r3
bne _0225595A
add r0, #0x10
ldr r1, [r2, r0]
lsr r0, r3, #0x10
tst r0, r1
beq _0225595C
_0225595A:
mov r6, #1
_0225595C:
add r0, r5, #0
add r1, r4, #0
bl GetBattlerAbility
cmp r0, #0x17
beq _0225597C
mov r0, #0x17
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #3
add r3, r4, #0
bl CheckAbilityActive
cmp r0, #0
bne _022559B0
_0225597C:
add r0, r5, #0
add r1, r4, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
cmp r0, #8
beq _0225599C
add r0, r5, #0
add r1, r4, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
cmp r0, #8
bne _022559B2
_0225599C:
mov r0, #0x2a
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #3
add r3, r4, #0
bl CheckAbilityActive
cmp r0, #0
beq _022559B2
_022559B0:
mov r6, #1
_022559B2:
add r0, r5, #0
add r1, r4, #0
bl GetBattlerAbility
cmp r0, #0x1a
beq _022559EA
ldr r0, _02255A28 ; =0x00002DCC
add r1, r5, r7
ldr r0, [r1, r0]
lsl r0, r0, #0x10
lsr r0, r0, #0x1d
bne _022559EA
add r0, r5, #0
add r1, r4, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
cmp r0, #2
beq _022559EA
add r0, r5, #0
add r1, r4, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
cmp r0, #2
bne _02255A04
_022559EA:
add r0, r5, #0
add r1, r4, #0
bl GetBattlerHeldItemEffect
cmp r0, #0x6a
beq _02255A04
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
mov r0, #7
lsl r0, r0, #0xc
tst r0, r1
beq _02255A1A
_02255A04:
mov r0, #0x47
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #3
add r3, r4, #0
bl CheckAbilityActive
cmp r0, #0
beq _02255A1A
mov r6, #1
_02255A1A:
add r0, r6, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02255A20: .word 0x00002DB0
_02255A24: .word 0x0400E000
_02255A28: .word 0x00002DCC
thumb_func_end ov12_02255920
thumb_func_start CanEatOpponentBerry
CanEatOpponentBerry: ; 0x02255A2C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r4, r1, #0
str r0, [sp]
mov r6, #0
str r2, [sp, #4]
add r0, r4, #0
add r1, r2, #0
add r5, r6, #0
bl ov12_022558B8
add r7, r0, #0
ldr r1, [sp, #4]
add r0, r4, #0
mov r2, #1
bl BattleSystem_GetHeldItemDamageBoost
str r0, [sp, #0x10]
ldr r1, [r4, #0x6c]
add r0, r4, #0
bl ov12_02256838
cmp r0, #1
bne _02255A62
add sp, #0x14
add r0, r6, #0
pop {r4, r5, r6, r7, pc}
_02255A62:
cmp r7, #0x17
bls _02255A68
b _02255EE2
_02255A68:
add r0, r7, r7
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02255A74: ; jump table
.short _02255EE2 - _02255A74 - 2 ; case 0
.short _02255AEE - _02255A74 - 2 ; case 1
.short _02255B06 - _02255A74 - 2 ; case 2
.short _02255B1E - _02255A74 - 2 ; case 3
.short _02255B36 - _02255A74 - 2 ; case 4
.short _02255B4E - _02255A74 - 2 ; case 5
.short _02255B66 - _02255A74 - 2 ; case 6
.short _02255AA4 - _02255A74 - 2 ; case 7
.short _02255BDC - _02255A74 - 2 ; case 8
.short _02255BF4 - _02255A74 - 2 ; case 9
.short _02255AC4 - _02255A74 - 2 ; case 10
.short _02255C56 - _02255A74 - 2 ; case 11
.short _02255C9C - _02255A74 - 2 ; case 12
.short _02255CE2 - _02255A74 - 2 ; case 13
.short _02255D28 - _02255A74 - 2 ; case 14
.short _02255D6E - _02255A74 - 2 ; case 15
.short _02255DDE - _02255A74 - 2 ; case 16
.short _02255DFC - _02255A74 - 2 ; case 17
.short _02255E1A - _02255A74 - 2 ; case 18
.short _02255E38 - _02255A74 - 2 ; case 19
.short _02255E56 - _02255A74 - 2 ; case 20
.short _02255EC2 - _02255A74 - 2 ; case 21
.short _02255E74 - _02255A74 - 2 ; case 22
.short _02255EDC - _02255A74 - 2 ; case 23
_02255AA4:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r2, r4, r0
ldr r0, _02255DA0 ; =0x00002D8C
ldr r1, [r2, r0]
add r0, r0, #4
ldr r0, [r2, r0]
cmp r1, r0
beq _02255AC0
ldr r1, _02255DA4 ; =0x0000215C
ldr r0, [sp, #0x10]
mov r5, #0xc6
str r0, [r4, r1]
_02255AC0:
mov r6, #1
b _02255EF8
_02255AC4:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02255DA8 ; =0x00002D90
ldr r2, [r1, r0]
sub r0, r0, #4
ldr r0, [r1, r0]
cmp r0, r2
beq _02255AEA
ldr r1, [sp, #0x10]
add r0, r1, #0
mul r0, r2
mov r1, #0x64
bl DamageDivide
ldr r1, _02255DA4 ; =0x0000215C
mov r5, #0xc6
str r0, [r4, r1]
_02255AEA:
mov r6, #1
b _02255EF8
_02255AEE:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02255DAC ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #0x40
tst r0, r1
beq _02255B02
mov r5, #0xc7
_02255B02:
mov r6, #1
b _02255EF8
_02255B06:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02255DAC ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
beq _02255B1A
mov r5, #0xc8
_02255B1A:
mov r6, #1
b _02255EF8
_02255B1E:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02255DAC ; =0x00002DAC
ldr r1, [r1, r0]
ldr r0, _02255DB0 ; =0x00000F88
tst r0, r1
beq _02255B32
mov r5, #0xc9
_02255B32:
mov r6, #1
b _02255EF8
_02255B36:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02255DAC ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #0x10
tst r0, r1
beq _02255B4A
mov r5, #0xca
_02255B4A:
mov r6, #1
b _02255EF8
_02255B4E:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02255DAC ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #0x20
tst r0, r1
beq _02255B62
mov r5, #0xcb
_02255B62:
mov r6, #1
b _02255EF8
_02255B66:
str r5, [sp, #0xc]
_02255B68:
ldr r1, [r4, #0x64]
mov r0, #0xc0
add r7, r1, #0
mul r7, r0
add r1, r4, r7
ldr r0, _02255DB4 ; =0x00002D4C
add r2, r6, r1
ldrh r0, [r2, r0]
cmp r0, #0
beq _02255B9A
add r2, r5, r1
ldr r1, _02255DB8 ; =0x00002D70
ldrb r1, [r2, r1]
bl GetMoveMaxPP
add r1, r4, r7
add r2, r5, r1
ldr r1, _02255DBC ; =0x00002D6C
ldrb r1, [r2, r1]
sub r1, r0, r1
ldr r0, [sp, #0xc]
cmp r1, r0
ble _02255B9A
str r1, [sp, #0xc]
str r5, [sp, #8]
_02255B9A:
add r5, r5, #1
add r6, r6, #2
cmp r5, #4
blt _02255B68
mov r0, #0xb5
lsl r0, r0, #6
ldr r1, [sp, #8]
add r0, r4, r0
ldr r2, [sp, #0x10]
add r0, r0, r7
add r1, #0x1f
bl ov12_0224F7AC
ldr r0, [sp]
ldr r2, [r4, #0x64]
add r1, r4, #0
bl CopyBattleMonToPartyMon
ldr r0, [r4, #0x64]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldr r0, [sp, #8]
add r2, r4, r2
lsl r0, r0, #1
add r2, r2, r0
ldr r0, _02255DB4 ; =0x00002D4C
add r1, #0x64
ldrh r0, [r2, r0]
mov r5, #0xcc
mov r6, #1
str r0, [r4, r1]
b _02255EF8
_02255BDC:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02255DC0 ; =0x00002DB0
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
beq _02255BF0
mov r5, #0xcd
_02255BF0:
mov r6, #1
b _02255EF8
_02255BF4:
ldr r2, [r4, #0x64]
mov r0, #0xc0
add r1, r2, #0
mul r1, r0
ldr r6, _02255DAC ; =0x00002DAC
add r0, r4, r1
ldr r2, [r0, r6]
lsl r3, r2, #0x18
lsr r3, r3, #0x18
bne _02255C12
add r6, r6, #4
ldr r6, [r0, r6]
mov r0, #7
tst r0, r6
beq _02255C52
_02255C12:
mov r0, #0x40
tst r0, r2
beq _02255C1A
mov r5, #0xc7
_02255C1A:
mov r0, #7
tst r0, r2
beq _02255C22
mov r5, #0xc8
_02255C22:
ldr r0, _02255DB0 ; =0x00000F88
tst r0, r2
beq _02255C2A
mov r5, #0xc9
_02255C2A:
mov r0, #0x10
tst r0, r2
beq _02255C32
mov r5, #0xca
_02255C32:
mov r0, #0x20
tst r0, r2
beq _02255C3A
mov r5, #0xcb
_02255C3A:
ldr r0, _02255DC0 ; =0x00002DB0
add r1, r4, r1
ldr r1, [r1, r0]
mov r0, #7
and r0, r1
beq _02255C48
mov r5, #0xcd
_02255C48:
cmp r3, #0
beq _02255C52
cmp r0, #0
beq _02255C52
mov r5, #0xce
_02255C52:
mov r6, #1
b _02255EF8
_02255C56:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r1, _02255DA8 ; =0x00002D90
add r2, r4, r0
ldr r0, [r2, r1]
sub r1, r1, #4
ldr r1, [r2, r1]
cmp r1, r0
beq _02255C98
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _02255DA4 ; =0x0000215C
str r0, [r4, r1]
mov r0, #0x13
add r1, r6, #0
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _02255DC4 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r6, #1
cmp r0, r1
bne _02255C96
mov r5, #0xcf
b _02255C98
_02255C96:
mov r5, #0xc6
_02255C98:
mov r6, #1
b _02255EF8
_02255C9C:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r1, _02255DA8 ; =0x00002D90
add r2, r4, r0
ldr r0, [r2, r1]
sub r1, r1, #4
ldr r1, [r2, r1]
cmp r1, r0
beq _02255CDE
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _02255DA4 ; =0x0000215C
str r0, [r4, r1]
mov r0, #0x13
mov r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _02255DC4 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r6, #1
cmp r0, r1
bne _02255CDC
mov r5, #0xcf
b _02255CDE
_02255CDC:
mov r5, #0xc6
_02255CDE:
mov r6, #1
b _02255EF8
_02255CE2:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r1, _02255DA8 ; =0x00002D90
add r2, r4, r0
ldr r0, [r2, r1]
sub r1, r1, #4
ldr r1, [r2, r1]
cmp r1, r0
beq _02255D24
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _02255DA4 ; =0x0000215C
str r0, [r4, r1]
mov r0, #0x13
mov r1, #2
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _02255DC4 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r6, #1
cmp r0, r1
bne _02255D22
mov r5, #0xcf
b _02255D24
_02255D22:
mov r5, #0xc6
_02255D24:
mov r6, #1
b _02255EF8
_02255D28:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r1, _02255DA8 ; =0x00002D90
add r2, r4, r0
ldr r0, [r2, r1]
sub r1, r1, #4
ldr r1, [r2, r1]
cmp r1, r0
beq _02255D6A
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _02255DA4 ; =0x0000215C
str r0, [r4, r1]
mov r0, #0x13
mov r1, #3
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _02255DC4 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r6, #1
cmp r0, r1
bne _02255D68
mov r5, #0xcf
b _02255D6A
_02255D68:
mov r5, #0xc6
_02255D6A:
mov r6, #1
b _02255EF8
_02255D6E:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
ldr r1, _02255DA8 ; =0x00002D90
add r2, r4, r0
ldr r0, [r2, r1]
sub r1, r1, #4
ldr r1, [r2, r1]
cmp r1, r0
beq _02255DDA
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _02255DA4 ; =0x0000215C
str r0, [r4, r1]
mov r0, #0x13
mov r1, #4
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _02255DC4 ; =0x00002DA8
b _02255DC8
.balign 4, 0
_02255DA0: .word 0x00002D8C
_02255DA4: .word 0x0000215C
_02255DA8: .word 0x00002D90
_02255DAC: .word 0x00002DAC
_02255DB0: .word 0x00000F88
_02255DB4: .word 0x00002D4C
_02255DB8: .word 0x00002D70
_02255DBC: .word 0x00002D6C
_02255DC0: .word 0x00002DB0
_02255DC4: .word 0x00002DA8
_02255DC8:
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r6, #1
cmp r0, r1
bne _02255DD8
mov r5, #0xcf
b _02255DDA
_02255DD8:
mov r5, #0xc6
_02255DDA:
mov r6, #1
b _02255EF8
_02255DDE:
ldr r1, [r4, #0x64]
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
ldr r1, _02255F5C ; =0x00002D59
add r2, r4, r2
ldrsb r1, [r2, r1]
cmp r1, #0xc
bge _02255DF8
mov r1, #1
add r0, #0x70
str r1, [r4, r0]
mov r5, #0xd0
_02255DF8:
mov r6, #1
b _02255EF8
_02255DFC:
ldr r1, [r4, #0x64]
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
ldr r1, _02255F60 ; =0x00002D5A
add r2, r4, r2
ldrsb r1, [r2, r1]
cmp r1, #0xc
bge _02255E16
mov r1, #2
add r0, #0x70
str r1, [r4, r0]
mov r5, #0xd0
_02255E16:
mov r6, #1
b _02255EF8
_02255E1A:
ldr r1, [r4, #0x64]
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
ldr r1, _02255F64 ; =0x00002D5B
add r2, r4, r2
ldrsb r1, [r2, r1]
cmp r1, #0xc
bge _02255E34
mov r1, #3
add r0, #0x70
str r1, [r4, r0]
mov r5, #0xd0
_02255E34:
mov r6, #1
b _02255EF8
_02255E38:
ldr r1, [r4, #0x64]
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
ldr r1, _02255F68 ; =0x00002D5C
add r2, r4, r2
ldrsb r1, [r2, r1]
cmp r1, #0xc
bge _02255E52
mov r1, #4
add r0, #0x70
str r1, [r4, r0]
mov r5, #0xd0
_02255E52:
mov r6, #1
b _02255EF8
_02255E56:
ldr r1, [r4, #0x64]
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
ldr r1, _02255F6C ; =0x00002D5D
add r2, r4, r2
ldrsb r1, [r2, r1]
cmp r1, #0xc
bge _02255E70
mov r1, #5
add r0, #0x70
str r1, [r4, r0]
mov r5, #0xd0
_02255E70:
mov r6, #1
b _02255EF8
_02255E74:
ldr r2, [r4, #0x64]
mov r1, #0xc0
mul r1, r2
add r3, r4, r1
ldr r1, _02255F5C ; =0x00002D59
add r0, r6, #0
_02255E80:
ldrsb r2, [r3, r1]
cmp r2, #0xc
blt _02255E8E
add r0, r0, #1
add r3, r3, #1
cmp r0, #5
blt _02255E80
_02255E8E:
cmp r0, #5
beq _02255EBE
ldr r5, _02255F5C ; =0x00002D59
mov r7, #5
mov r6, #0xc0
_02255E98:
ldr r0, [sp]
bl BattleSys_Random
add r1, r7, #0
bl _s32_div_f
ldr r0, [r4, #0x64]
add r2, r0, #0
mul r2, r6
add r0, r4, r2
add r0, r1, r0
ldrsb r0, [r0, r5]
cmp r0, #0xc
beq _02255E98
mov r0, #0x13
add r1, r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
mov r5, #0xd2
_02255EBE:
mov r6, #1
b _02255EF8
_02255EC2:
ldr r1, [r4, #0x64]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _02255F70 ; =0x00002DB0
ldr r1, [r1, r0]
mov r0, #1
lsl r0, r0, #0x14
tst r0, r1
bne _02255ED8
mov r5, #0xd1
_02255ED8:
mov r6, #1
b _02255EF8
_02255EDC:
ldr r5, _02255F74 ; =0x00000109
mov r6, #1
b _02255EF8
_02255EE2:
ldr r0, [sp, #4]
mov r1, #0xc0
mul r1, r0
ldr r0, _02255F78 ; =0x00002DB8
add r1, r4, r1
ldrh r0, [r1, r0]
bl ItemIdIsBerry
cmp r0, #1
bne _02255EF8
mov r6, #1
_02255EF8:
cmp r6, #1
bne _02255F56
ldr r1, [r4, #0x64]
add r0, r4, #0
bl GetBattlerAbility
cmp r0, #0x67
beq _02255F20
ldr r1, [r4, #0x64]
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
mov r1, #0xb7
add r2, r4, r2
lsl r1, r1, #6
ldr r2, [r2, r1]
mov r1, #1
lsl r1, r1, #0x1a
tst r1, r2
beq _02255F2A
_02255F20:
mov r0, #0x4e
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
b _02255F2E
_02255F2A:
add r0, #0x78
str r5, [r4, r0]
_02255F2E:
ldr r0, [sp, #4]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldr r0, _02255F78 ; =0x00002DB8
add r2, r4, r2
ldrh r0, [r2, r0]
add r1, #0x68
str r0, [r4, r1]
ldr r2, [r4, #0x64]
mov r0, #0xba
lsl r0, r0, #2
mov r1, #0x1c
add r3, r2, #0
mul r3, r1
add r0, r4, r0
ldr r2, [r0, r3]
mov r1, #2
orr r1, r2
str r1, [r0, r3]
_02255F56:
add r0, r6, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02255F5C: .word 0x00002D59
_02255F60: .word 0x00002D5A
_02255F64: .word 0x00002D5B
_02255F68: .word 0x00002D5C
_02255F6C: .word 0x00002D5D
_02255F70: .word 0x00002DB0
_02255F74: .word 0x00000109
_02255F78: .word 0x00002DB8
thumb_func_end CanEatOpponentBerry
thumb_func_start CanFling
CanFling: ; 0x02255F7C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r4, r1, #0
str r0, [sp]
str r2, [sp, #4]
add r0, r4, #0
add r1, r2, #0
bl ov12_022558D0
add r6, r0, #0
ldr r1, [sp, #4]
add r0, r4, #0
mov r2, #2
bl BattleSystem_GetHeldItemDamageBoost
str r0, [sp, #0x10]
ldr r1, [sp, #4]
add r0, r4, #0
bl ov12_022558F8
ldr r1, _022562D0 ; =0x00002154
add r2, r4, #0
str r0, [r4, r1]
ldr r0, _022562D4 ; =0x00003118
mov r5, #0
str r5, [r4, r0]
add r2, #0x88
str r5, [r2]
ldr r1, [r4, r1]
cmp r1, #0
bne _02255FC0
add sp, #0x14
add r0, r5, #0
pop {r4, r5, r6, r7, pc}
_02255FC0:
cmp r6, #0x1e
bls _02255FC6
b _0225654A
_02255FC6:
add r1, r6, r6
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02255FD2: ; jump table
.short _0225654A - _02255FD2 - 2 ; case 0
.short _0225603E - _02255FD2 - 2 ; case 1
.short _02256056 - _02255FD2 - 2 ; case 2
.short _0225606E - _02255FD2 - 2 ; case 3
.short _02256086 - _02255FD2 - 2 ; case 4
.short _0225609E - _02255FD2 - 2 ; case 5
.short _022560B6 - _02255FD2 - 2 ; case 6
.short _02256010 - _02255FD2 - 2 ; case 7
.short _02256138 - _02255FD2 - 2 ; case 8
.short _02256150 - _02255FD2 - 2 ; case 9
.short _0225601C - _02255FD2 - 2 ; case 10
.short _02256216 - _02255FD2 - 2 ; case 11
.short _02256258 - _02255FD2 - 2 ; case 12
.short _0225629A - _02255FD2 - 2 ; case 13
.short _0225630A - _02255FD2 - 2 ; case 14
.short _0225634C - _02255FD2 - 2 ; case 15
.short _02256448 - _02255FD2 - 2 ; case 16
.short _02256466 - _02255FD2 - 2 ; case 17
.short _02256484 - _02255FD2 - 2 ; case 18
.short _022564A2 - _02255FD2 - 2 ; case 19
.short _022564C0 - _02255FD2 - 2 ; case 20
.short _0225652C - _02255FD2 - 2 ; case 21
.short _022564DE - _02255FD2 - 2 ; case 22
.short _02256546 - _02255FD2 - 2 ; case 23
.short _0225638E - _02255FD2 - 2 ; case 24
.short _022563B6 - _02255FD2 - 2 ; case 25
.short _022563DA - _02255FD2 - 2 ; case 26
.short _022563F0 - _02255FD2 - 2 ; case 27
.short _02256406 - _02255FD2 - 2 ; case 28
.short _0225641C - _02255FD2 - 2 ; case 29
.short _02256432 - _02255FD2 - 2 ; case 30
_02256010:
ldr r1, [sp, #0x10]
sub r2, r0, #4
str r1, [r4, r2]
mov r1, #0xc6
str r1, [r4, r0]
b _0225654A
_0225601C:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562D8 ; =0x00002D90
ldr r0, [r1, r0]
ldr r1, [sp, #0x10]
mul r0, r1
mov r1, #0x64
bl DamageDivide
ldr r1, _022562DC ; =0x00003114
mov r2, #0xc6
str r0, [r4, r1]
add r0, r1, #4
str r2, [r4, r0]
b _0225654A
_0225603E:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
mul r1, r2
add r2, r4, r1
ldr r1, _022562E0 ; =0x00002DAC
ldr r2, [r2, r1]
mov r1, #0x40
tst r1, r2
beq _022560F8
mov r1, #0xc7
str r1, [r4, r0]
b _0225654A
_02256056:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
mul r1, r2
add r2, r4, r1
ldr r1, _022562E0 ; =0x00002DAC
ldr r2, [r2, r1]
mov r1, #7
tst r1, r2
beq _022560F8
mov r1, #0xc8
str r1, [r4, r0]
b _0225654A
_0225606E:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
mul r1, r2
add r2, r4, r1
ldr r1, _022562E0 ; =0x00002DAC
ldr r2, [r2, r1]
ldr r1, _022562E4 ; =0x00000F88
tst r1, r2
beq _022560F8
mov r1, #0xc9
str r1, [r4, r0]
b _0225654A
_02256086:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
mul r1, r2
add r2, r4, r1
ldr r1, _022562E0 ; =0x00002DAC
ldr r2, [r2, r1]
mov r1, #0x10
tst r1, r2
beq _022560F8
mov r1, #0xca
str r1, [r4, r0]
b _0225654A
_0225609E:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
mul r1, r2
add r2, r4, r1
ldr r1, _022562E0 ; =0x00002DAC
ldr r2, [r2, r1]
mov r1, #0x20
tst r1, r2
beq _022560F8
mov r1, #0xcb
str r1, [r4, r0]
b _0225654A
_022560B6:
add r6, r5, #0
add r7, r5, #0
_022560BA:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
str r0, [sp, #8]
ldr r0, _022562E8 ; =0x00002D4C
add r2, r7, r1
ldrh r0, [r2, r0]
cmp r0, #0
beq _022560EC
add r2, r6, r1
ldr r1, _022562EC ; =0x00002D70
ldrb r1, [r2, r1]
bl GetMoveMaxPP
ldr r1, [sp, #8]
add r1, r4, r1
add r2, r6, r1
ldr r1, _022562F0 ; =0x00002D6C
ldrb r1, [r2, r1]
sub r0, r0, r1
cmp r0, r5
ble _022560EC
add r5, r0, #0
str r6, [sp, #0xc]
_022560EC:
add r6, r6, #1
add r7, r7, #2
cmp r6, #4
blt _022560BA
cmp r5, #0
bne _022560FA
_022560F8:
b _0225654A
_022560FA:
mov r0, #0xb5
lsl r0, r0, #6
add r1, r4, r0
ldr r0, [sp, #8]
ldr r2, [sp, #0x10]
add r0, r1, r0
ldr r1, [sp, #0xc]
add r1, #0x1f
bl ov12_0224F7AC
ldr r0, [sp]
ldr r2, [r4, #0x6c]
add r1, r4, #0
bl CopyBattleMonToPartyMon
ldr r0, [r4, #0x6c]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldr r0, [sp, #0xc]
add r2, r4, r2
lsl r0, r0, #1
add r2, r2, r0
ldr r0, _022562E8 ; =0x00002D4C
add r1, #0x64
ldrh r0, [r2, r0]
str r0, [r4, r1]
ldr r0, _022562D4 ; =0x00003118
mov r1, #0xcc
str r1, [r4, r0]
b _0225654A
_02256138:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
mul r1, r2
add r2, r4, r1
ldr r1, _022562F4 ; =0x00002DB0
ldr r2, [r2, r1]
mov r1, #7
tst r1, r2
beq _0225620C
mov r1, #0xcd
str r1, [r4, r0]
b _0225654A
_02256150:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
ldr r1, _022562E0 ; =0x00002DAC
add r3, r4, r0
ldr r0, [r3, r1]
lsl r2, r0, #0x18
lsr r2, r2, #0x18
bne _0225616C
add r1, r1, #4
ldr r2, [r3, r1]
mov r1, #7
tst r1, r2
beq _0225620C
_0225616C:
mov r1, #0x40
tst r0, r1
beq _02256178
ldr r0, _022562D4 ; =0x00003118
mov r1, #0xc7
str r1, [r4, r0]
_02256178:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562E0 ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
beq _02256190
ldr r0, _022562D4 ; =0x00003118
mov r1, #0xc8
str r1, [r4, r0]
_02256190:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562E0 ; =0x00002DAC
ldr r1, [r1, r0]
ldr r0, _022562E4 ; =0x00000F88
tst r0, r1
beq _022561A8
ldr r0, _022562D4 ; =0x00003118
mov r1, #0xc9
str r1, [r4, r0]
_022561A8:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562E0 ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #0x10
tst r0, r1
beq _022561C0
ldr r0, _022562D4 ; =0x00003118
mov r1, #0xca
str r1, [r4, r0]
_022561C0:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562E0 ; =0x00002DAC
ldr r1, [r1, r0]
mov r0, #0x20
tst r0, r1
beq _022561D8
ldr r0, _022562D4 ; =0x00003118
mov r1, #0xcb
str r1, [r4, r0]
_022561D8:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562F4 ; =0x00002DB0
ldr r1, [r1, r0]
mov r0, #7
tst r0, r1
beq _022561F0
ldr r0, _022562D4 ; =0x00003118
mov r1, #0xcd
str r1, [r4, r0]
_022561F0:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r2, r4, r0
ldr r0, _022562E0 ; =0x00002DAC
ldr r1, [r2, r0]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
beq _0225620C
add r0, r0, #4
ldr r1, [r2, r0]
mov r0, #7
tst r0, r1
bne _0225620E
_0225620C:
b _0225654A
_0225620E:
ldr r0, _022562D4 ; =0x00003118
mov r1, #0xce
str r1, [r4, r0]
b _0225654A
_02256216:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562D8 ; =0x00002D90
ldr r0, [r1, r0]
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _022562DC ; =0x00003114
str r0, [r4, r1]
mov r0, #0x13
add r1, r5, #0
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x6c]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _022562F8 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r5, #1
cmp r0, r1
ldr r0, _022562D4 ; =0x00003118
bne _02256252
mov r1, #0xcf
str r1, [r4, r0]
b _0225654A
_02256252:
mov r1, #0xc6
str r1, [r4, r0]
b _0225654A
_02256258:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562D8 ; =0x00002D90
ldr r0, [r1, r0]
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _022562DC ; =0x00003114
str r0, [r4, r1]
mov r0, #0x13
mov r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x6c]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _022562F8 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r5, #1
cmp r0, r1
ldr r0, _022562D4 ; =0x00003118
bne _02256294
mov r1, #0xcf
str r1, [r4, r0]
b _0225654A
_02256294:
mov r1, #0xc6
str r1, [r4, r0]
b _0225654A
_0225629A:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022562D8 ; =0x00002D90
ldr r0, [r1, r0]
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _022562DC ; =0x00003114
str r0, [r4, r1]
mov r0, #0x13
mov r1, #2
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x6c]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _022562F8 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r5, #1
cmp r0, r1
ldr r0, _022562D4 ; =0x00003118
b _022562FC
.balign 4, 0
_022562D0: .word 0x00002154
_022562D4: .word 0x00003118
_022562D8: .word 0x00002D90
_022562DC: .word 0x00003114
_022562E0: .word 0x00002DAC
_022562E4: .word 0x00000F88
_022562E8: .word 0x00002D4C
_022562EC: .word 0x00002D70
_022562F0: .word 0x00002D6C
_022562F4: .word 0x00002DB0
_022562F8: .word 0x00002DA8
_022562FC:
bne _02256304
mov r1, #0xcf
str r1, [r4, r0]
b _0225654A
_02256304:
mov r1, #0xc6
str r1, [r4, r0]
b _0225654A
_0225630A:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022565B0 ; =0x00002D90
ldr r0, [r1, r0]
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _022565B4 ; =0x00003114
str r0, [r4, r1]
mov r0, #0x13
mov r1, #3
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x6c]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _022565B8 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r5, #1
cmp r0, r1
ldr r0, _022565BC ; =0x00003118
bne _02256346
mov r1, #0xcf
str r1, [r4, r0]
b _0225654A
_02256346:
mov r1, #0xc6
str r1, [r4, r0]
b _0225654A
_0225634C:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r1, r4, r0
ldr r0, _022565B0 ; =0x00002D90
ldr r0, [r1, r0]
ldr r1, [sp, #0x10]
bl DamageDivide
ldr r1, _022565B4 ; =0x00003114
str r0, [r4, r1]
mov r0, #0x13
mov r1, #4
lsl r0, r0, #4
str r1, [r4, r0]
ldr r2, [r4, #0x6c]
mov r0, #0xc0
mul r0, r2
add r2, r4, r0
ldr r0, _022565B8 ; =0x00002DA8
ldr r0, [r2, r0]
bl GetFlavorPreferenceFromPID
sub r1, r5, #1
cmp r0, r1
ldr r0, _022565BC ; =0x00003118
bne _02256388
mov r1, #0xcf
str r1, [r4, r0]
b _0225654A
_02256388:
mov r1, #0xc6
str r1, [r4, r0]
b _0225654A
_0225638E:
ldr r2, _022565C0 ; =0x00002D58
mov r6, #6
mov r3, #0xd3
mov r7, #0xc0
_02256396:
ldr r0, [r4, #0x6c]
add r1, r0, #0
mul r1, r7
add r0, r4, r1
add r0, r0, r5
ldrsb r1, [r0, r2]
cmp r1, #6
bge _022563AE
ldr r1, _022565C0 ; =0x00002D58
strb r6, [r0, r1]
ldr r0, _022565BC ; =0x00003118
str r3, [r4, r0]
_022563AE:
add r5, r5, #1
cmp r5, #8
blt _02256396
b _0225654A
_022563B6:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
add r3, r2, #0
mul r3, r1
ldr r2, _022565C4 ; =0x00002DB0
add r3, r4, r3
ldr r3, [r3, r2]
mov r2, #0xf
lsl r2, r2, #0x10
tst r2, r3
bne _022563CE
b _0225654A
_022563CE:
mov r2, #6
add r1, #0x70
str r2, [r4, r1]
mov r1, #0xd4
str r1, [r4, r0]
b _0225654A
_022563DA:
add r2, r4, #0
ldr r1, [sp, #4]
add r2, #0x94
str r1, [r2]
add r1, r4, #0
mov r2, #2
add r1, #0x88
str r2, [r1]
mov r1, #0xe
str r1, [r4, r0]
b _0225654A
_022563F0:
add r2, r4, #0
ldr r1, [sp, #4]
add r2, #0x94
str r1, [r2]
add r1, r4, #0
mov r2, #2
add r1, #0x88
str r2, [r1]
mov r1, #0x1f
str r1, [r4, r0]
b _0225654A
_02256406:
add r2, r4, #0
ldr r1, [sp, #4]
add r2, #0x94
str r1, [r2]
add r1, r4, #0
mov r2, #2
add r1, #0x88
str r2, [r1]
mov r1, #0x16
str r1, [r4, r0]
b _0225654A
_0225641C:
add r2, r4, #0
ldr r1, [sp, #4]
add r2, #0x94
str r1, [r2]
add r1, r4, #0
mov r2, #2
add r1, #0x88
str r2, [r1]
mov r1, #0x2f
str r1, [r4, r0]
b _0225654A
_02256432:
add r2, r4, #0
ldr r1, [sp, #4]
add r2, #0x94
str r1, [r2]
add r1, r4, #0
mov r2, #2
add r1, #0x88
str r2, [r1]
mov r1, #0x19
str r1, [r4, r0]
b _0225654A
_02256448:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
add r3, r2, #0
mul r3, r1
ldr r2, _022565C8 ; =0x00002D59
add r3, r4, r3
ldrsb r2, [r3, r2]
cmp r2, #0xc
bge _0225654A
mov r2, #1
add r1, #0x70
str r2, [r4, r1]
mov r1, #0xd0
str r1, [r4, r0]
b _0225654A
_02256466:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
add r3, r2, #0
mul r3, r1
ldr r2, _022565CC ; =0x00002D5A
add r3, r4, r3
ldrsb r2, [r3, r2]
cmp r2, #0xc
bge _0225654A
mov r2, #2
add r1, #0x70
str r2, [r4, r1]
mov r1, #0xd0
str r1, [r4, r0]
b _0225654A
_02256484:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
add r3, r2, #0
mul r3, r1
ldr r2, _022565D0 ; =0x00002D5B
add r3, r4, r3
ldrsb r2, [r3, r2]
cmp r2, #0xc
bge _0225654A
mov r2, #3
add r1, #0x70
str r2, [r4, r1]
mov r1, #0xd0
str r1, [r4, r0]
b _0225654A
_022564A2:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
add r3, r2, #0
mul r3, r1
ldr r2, _022565D4 ; =0x00002D5C
add r3, r4, r3
ldrsb r2, [r3, r2]
cmp r2, #0xc
bge _0225654A
mov r2, #4
add r1, #0x70
str r2, [r4, r1]
mov r1, #0xd0
str r1, [r4, r0]
b _0225654A
_022564C0:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
add r3, r2, #0
mul r3, r1
ldr r2, _022565D8 ; =0x00002D5D
add r3, r4, r3
ldrsb r2, [r3, r2]
cmp r2, #0xc
bge _0225654A
mov r2, #5
add r1, #0x70
str r2, [r4, r1]
mov r1, #0xd0
str r1, [r4, r0]
b _0225654A
_022564DE:
ldr r1, [r4, #0x6c]
mov r0, #0xc0
mul r0, r1
add r2, r4, r0
ldr r0, _022565C8 ; =0x00002D59
_022564E8:
ldrsb r1, [r2, r0]
cmp r1, #0xc
blt _022564F6
add r5, r5, #1
add r2, r2, #1
cmp r5, #5
blt _022564E8
_022564F6:
cmp r5, #5
beq _0225654A
ldr r5, _022565C8 ; =0x00002D59
mov r7, #5
mov r6, #0xc0
_02256500:
ldr r0, [sp]
bl BattleSys_Random
add r1, r7, #0
bl _s32_div_f
ldr r0, [r4, #0x6c]
add r2, r0, #0
mul r2, r6
add r0, r4, r2
add r0, r1, r0
ldrsb r0, [r0, r5]
cmp r0, #0xc
beq _02256500
mov r0, #0x13
add r1, r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _022565BC ; =0x00003118
mov r1, #0xd2
str r1, [r4, r0]
b _0225654A
_0225652C:
ldr r2, [r4, #0x6c]
mov r1, #0xc0
mul r1, r2
add r2, r4, r1
ldr r1, _022565C4 ; =0x00002DB0
ldr r2, [r2, r1]
mov r1, #1
lsl r1, r1, #0x14
tst r1, r2
bne _0225654A
mov r1, #0xd1
str r1, [r4, r0]
b _0225654A
_02256546:
ldr r1, _022565DC ; =0x00000109
str r1, [r4, r0]
_0225654A:
ldr r0, [r4, #0x6c]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
add r0, r4, r2
mov r2, #0xb7
lsl r2, r2, #6
ldr r3, [r0, r2]
mov r0, #1
lsl r0, r0, #0x1a
tst r0, r3
beq _0225656A
ldr r0, _022565BC ; =0x00003118
mov r1, #0
str r1, [r4, r0]
b _022565AA
_0225656A:
ldr r0, [sp, #4]
sub r2, #8
add r3, r0, #0
mul r3, r1
add r0, r4, r3
ldrh r0, [r0, r2]
add r1, #0x68
str r0, [r4, r1]
add r0, r4, #0
add r0, #0x88
ldr r0, [r0]
cmp r0, #0
bne _022565A2
ldr r0, _022565BC ; =0x00003118
ldr r0, [r4, r0]
cmp r0, #0
beq _022565A2
mov r0, #0xba
ldr r1, [r4, #0x64]
lsl r0, r0, #2
add r3, r4, r0
mov r0, #0x1c
add r2, r1, #0
mul r2, r0
ldr r1, [r3, r2]
mov r0, #2
orr r0, r1
str r0, [r3, r2]
_022565A2:
mov r0, #0x46
ldr r1, [r4, #0x6c]
lsl r0, r0, #2
str r1, [r4, r0]
_022565AA:
mov r0, #1
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022565B0: .word 0x00002D90
_022565B4: .word 0x00003114
_022565B8: .word 0x00002DA8
_022565BC: .word 0x00003118
_022565C0: .word 0x00002D58
_022565C4: .word 0x00002DB0
_022565C8: .word 0x00002D59
_022565CC: .word 0x00002D5A
_022565D0: .word 0x00002D5B
_022565D4: .word 0x00002D5C
_022565D8: .word 0x00002D5D
_022565DC: .word 0x00000109
thumb_func_end CanFling
thumb_func_start ov12_022565E0
ov12_022565E0: ; 0x022565E0
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
ldr r1, [r4, #0x64]
add r0, r4, #0
bl GetBattlerHeldItemEffect
cmp r0, #0x69
bne _0225666E
ldr r5, [r4, #0x64]
mov r6, #0xc0
add r3, r5, #0
mul r3, r6
ldr r0, _02256684 ; =0x00002DB0
add r2, r4, r3
ldr r1, [r2, r0]
lsl r6, r6, #4
tst r6, r1
bne _02256682
mov r6, #0x70
tst r6, r1
bne _02256682
ldr r6, _02256688 ; =0x0000213C
ldr r7, [r4, r6]
mov r6, #2
lsl r6, r6, #8
tst r7, r6
bne _02256682
lsl r6, r6, #3
tst r1, r6
bne _02256682
mov r6, #0xc1
lsl r6, r6, #6
lsl r5, r5, #1
add r7, r4, r5
add r5, r6, #0
add r5, #0x9c
ldrh r5, [r7, r5]
ldr r1, [r4, r6]
cmp r1, r5
bne _02256654
add r1, r0, #0
add r1, #0x1c
ldr r1, [r2, r1]
lsl r1, r1, #5
lsr r5, r1, #0x1c
cmp r5, #0xa
bhs _02256682
add r0, #0x1c
add r0, r4, r0
ldr r2, [r0, r3]
ldr r1, _0225668C ; =0xF87FFFFF
and r2, r1
add r1, r5, #1
lsl r1, r1, #0x1c
lsr r1, r1, #5
orr r1, r2
str r1, [r0, r3]
pop {r3, r4, r5, r6, r7, pc}
_02256654:
add r0, #0x1c
add r2, r4, r0
ldr r1, [r2, r3]
ldr r0, _0225668C ; =0xF87FFFFF
and r0, r1
str r0, [r2, r3]
ldr r0, [r4, #0x64]
ldr r1, [r4, r6]
lsl r0, r0, #1
add r0, r4, r0
add r6, #0x9c
strh r1, [r0, r6]
pop {r3, r4, r5, r6, r7, pc}
_0225666E:
ldr r0, _02256690 ; =0x00002DCC
ldr r1, [r4, #0x64]
add r3, r4, r0
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
ldr r1, [r3, r2]
ldr r0, _0225668C ; =0xF87FFFFF
and r0, r1
str r0, [r3, r2]
_02256682:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02256684: .word 0x00002DB0
_02256688: .word 0x0000213C
_0225668C: .word 0xF87FFFFF
_02256690: .word 0x00002DCC
thumb_func_end ov12_022565E0
thumb_func_start ov12_02256694
ov12_02256694: ; 0x02256694
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
ldr r1, [r4, #0x64]
add r0, r4, #0
bl GetBattlerHeldItemEffect
cmp r0, #0x69
bne _02256720
ldr r5, _02256738 ; =0x0000216C
ldr r0, _0225673C ; =0x801FDA49
ldr r1, [r4, r5]
tst r0, r1
beq _02256734
ldr r2, [r4, #0x64]
mov r0, #0xc1
lsl r0, r0, #6
lsl r1, r2, #1
ldr r3, [r4, r0]
add r1, r4, r1
add r0, #0x9c
ldrh r0, [r1, r0]
cmp r3, r0
bne _02256734
mov r0, #0xc0
add r1, r2, #0
mul r1, r0
ldr r3, _02256740 ; =0x00002DCC
add r6, r4, r1
ldr r0, [r6, r3]
lsl r0, r0, #5
lsr r0, r0, #0x1c
beq _02256734
mov r7, #0x1c
mul r7, r2
mov r2, #0xb5
add r7, r4, r7
lsl r2, r2, #2
ldr r7, [r7, r2]
lsl r7, r7, #0x17
lsr r7, r7, #0x1d
bne _02256734
add r7, r3, #0
sub r7, #0x1c
ldr r6, [r6, r7]
mov r7, #0xc0
lsl r7, r7, #4
tst r7, r6
bne _02256734
mov r7, #0x70
tst r7, r6
bne _02256734
sub r5, #0x30
ldr r5, [r4, r5]
sub r2, #0xd4
tst r2, r5
bne _02256734
mov r2, #1
lsl r2, r2, #0xc
tst r2, r6
bne _02256734
add r2, r4, r3
sub r0, r0, #1
lsl r0, r0, #0x1c
ldr r4, [r2, r1]
ldr r3, _02256744 ; =0xF87FFFFF
lsr r0, r0, #5
and r3, r4
orr r0, r3
str r0, [r2, r1]
pop {r3, r4, r5, r6, r7, pc}
_02256720:
ldr r0, _02256740 ; =0x00002DCC
ldr r1, [r4, #0x64]
add r3, r4, r0
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
ldr r1, [r3, r2]
ldr r0, _02256744 ; =0xF87FFFFF
and r0, r1
str r0, [r3, r2]
_02256734:
pop {r3, r4, r5, r6, r7, pc}
nop
_02256738: .word 0x0000216C
_0225673C: .word 0x801FDA49
_02256740: .word 0x00002DCC
_02256744: .word 0xF87FFFFF
thumb_func_end ov12_02256694
thumb_func_start ov12_02256748
ov12_02256748: ; 0x02256748
push {r4, r5, r6, lr}
add r5, r0, #0
cmp r3, #1
bne _0225675A
sub r0, r2, #2
cmp r0, #1
bhi _0225675A
mov r0, #1
b _0225675C
_0225675A:
mov r0, #0
_0225675C:
cmp r0, #1
mov r0, #0xc0
add r4, r1, #0
mul r4, r0
ldr r2, _02256798 ; =0x00002D8C
add r1, r5, r4
ldr r0, [r1, r2]
add r2, r2, #4
ldr r1, [r1, r2]
lsl r0, r0, #0x10
lsl r1, r1, #0x10
lsr r0, r0, #0x10
lsr r1, r1, #0x10
mov r2, #0x30
mov r6, #0
bl sub_020880B0
ldr r1, _0225679C ; =0x00002DAC
add r2, r5, r4
ldr r1, [r2, r1]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bne _02256792
cmp r0, #4
beq _02256794
cmp r0, #3
beq _02256794
_02256792:
mov r6, #0xb
_02256794:
add r0, r6, #0
pop {r4, r5, r6, pc}
.balign 4, 0
_02256798: .word 0x00002D8C
_0225679C: .word 0x00002DAC
thumb_func_end ov12_02256748
thumb_func_start ov12_022567A0
ov12_022567A0: ; 0x022567A0
push {r3, r4}
mov r3, #0xc0
add r4, r1, #0
mul r4, r3
add r1, r0, r4
ldr r0, _022567D0 ; =0x00002DB0
mov r2, #1
ldr r0, [r1, r0]
lsl r1, r2, #0x16
tst r1, r0
bne _022567C8
lsl r1, r3, #4
tst r1, r0
bne _022567C8
mov r1, #0x70
tst r1, r0
bne _022567C8
lsl r1, r2, #0xc
tst r0, r1
beq _022567CA
_022567C8:
mov r2, #0
_022567CA:
add r0, r2, #0
pop {r3, r4}
bx lr
.balign 4, 0
_022567D0: .word 0x00002DB0
thumb_func_end ov12_022567A0
thumb_func_start ov12_022567D4
ov12_022567D4: ; 0x022567D4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
bl BattleSys_GetPlayerProfile
str r0, [sp, #0xc]
add r0, r5, #0
bl ov12_0223AB60
str r0, [sp, #8]
add r0, r5, #0
bl BattleSys_GetTerrainId
add r7, r0, #0
add r0, r5, #0
bl BattleSys_GetBattleType
mov r1, #2
lsl r1, r1, #8
tst r0, r1
beq _02256814
add r0, r5, #0
add r1, r6, #0
bl ov12_0223AA88
bl BallToItemId
add r2, r0, #0
b _02256818
_02256814:
sub r1, #0xd8
ldr r2, [r4, r1]
_02256818:
str r7, [sp]
mov r0, #5
str r0, [sp, #4]
ldr r1, [sp, #0xc]
ldr r3, [sp, #8]
add r0, r6, #0
bl sub_020720FC
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov12_022567D4
thumb_func_start ov12_0225682C
ov12_0225682C: ; 0x0225682C
lsl r1, r1, #8
add r1, r0, r1
mov r0, #0x23
lsl r0, r0, #8
ldrb r0, [r1, r0]
bx lr
thumb_func_end ov12_0225682C
thumb_func_start ov12_02256838
ov12_02256838: ; 0x02256838
mov r3, #0x1c
mul r3, r1
add r1, r0, r3
mov r0, #0xba
lsl r0, r0, #2
ldr r1, [r1, r0]
mov r0, #8
mov r2, #0
tst r0, r1
beq _0225684E
mov r2, #1
_0225684E:
add r0, r2, #0
bx lr
.balign 4, 0
thumb_func_end ov12_02256838
thumb_func_start ov12_02256854
ov12_02256854: ; 0x02256854
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
mov r1, #0
bl BattleSys_GetPlayerProfile
add r4, r0, #0
bl PlayerProfile_GetTrainerID
add r6, r0, #0
add r0, r4, #0
bl PlayerProfile_GetTrainerGender
add r7, r0, #0
add r0, r4, #0
bl PlayerProfile_GetNamePtr
ldr r2, [r5, #0x64]
mov r1, #0xc0
add r4, r2, #0
mul r4, r1
ldr r1, _022568AC ; =0x00002DB4
add r3, r5, r4
ldr r2, [r3, r1]
cmp r6, r2
bne _022568A8
add r2, r1, #0
add r2, #0xa
ldrb r2, [r3, r2]
lsl r2, r2, #0x18
lsr r2, r2, #0x1c
cmp r7, r2
bne _022568A8
sub r1, #0x20
add r1, r5, r1
add r1, r1, r4
mov r2, #7
bl StringNotEqualN
cmp r0, #0
bne _022568A8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_022568A8:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022568AC: .word 0x00002DB4
thumb_func_end ov12_02256854
thumb_func_start ov12_022568B0
ov12_022568B0: ; 0x022568B0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r1, #0
mov r1, #0
bl BattleSys_GetPlayerProfile
add r4, r0, #0
bl PlayerProfile_GetTrainerID
add r6, r0, #0
add r0, r4, #0
bl PlayerProfile_GetTrainerGender
add r7, r0, #0
add r0, r4, #0
bl PlayerProfile_GetNamePtr
add r4, r0, #0
add r0, r5, #0
mov r1, #0x90
add r2, sp, #0
bl GetMonData
add r0, r5, #0
mov r1, #7
mov r2, #0
bl GetMonData
cmp r6, r0
bne _0225690E
add r0, r5, #0
mov r1, #0x9d
mov r2, #0
bl GetMonData
cmp r7, r0
bne _0225690E
add r0, r4, #0
add r1, sp, #0
mov r2, #7
bl StringNotEqualN
cmp r0, #0
bne _0225690E
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0225690E:
mov r0, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov12_022568B0
thumb_func_start ov12_02256914
ov12_02256914: ; 0x02256914
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
mov r4, #0
add r7, r0, #0
add r5, r1, #0
str r2, [sp, #4]
str r4, [sp, #8]
bl BattleSys_GetMaxBattlers
cmp r0, #0
bgt _0225692C
b _02256EE4
_0225692C:
ldr r0, _02256C2C ; =0x00002D66
add r6, r5, r0
_02256930:
ldr r0, _02256C30 ; =0x000021EC
add r1, r5, r4
ldrb r1, [r1, r0]
mov r0, #0x46
lsl r0, r0, #2
str r1, [r5, r0]
ldr r3, [r5, r0]
mov r0, #0xc0
mul r0, r3
add r2, r5, r0
mov r0, #0xb5
lsl r0, r0, #6
ldrh r1, [r2, r0]
ldr r0, _02256C34 ; =0x0000015F
cmp r1, r0
bne _02256964
ldr r0, _02256C38 ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _02256964
add r0, r5, #0
add r1, r3, #0
bl GetBattlerAbility
cmp r0, #0x3b
beq _02256966
_02256964:
b _02256B52
_02256966:
mov r0, #0xd
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _0225698E
mov r0, #0x4c
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
beq _02256990
_0225698E:
b _02256B00
_02256990:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
mov r1, #0xf3
tst r1, r0
bne _022569EE
mov r1, #0x46
lsl r1, r1, #2
ldr r2, [r5, r1]
mov r1, #0xc0
mul r1, r2
ldr r2, _02256C3C ; =0x00002D64
add r1, r5, r1
ldrb r2, [r1, r2]
cmp r2, #0
beq _022569EE
ldr r2, _02256C40 ; =0x00002D65
ldrb r2, [r1, r2]
cmp r2, #0
beq _022569EE
ldr r3, _02256C3C ; =0x00002D64
mov r2, #0
mov r0, #0x46
strb r2, [r1, r3]
lsl r0, r0, #2
ldr r4, [r5, r0]
mov r1, #0xc0
add r6, r4, #0
mul r6, r1
add r6, r5, r6
add r4, r3, #1
strb r2, [r6, r4]
ldr r0, [r5, r0]
add r2, r3, #2
add r4, r0, #0
mul r4, r1
add r2, r5, r2
ldrb r3, [r2, r4]
mov r0, #0x1f
add r1, #0x46
bic r3, r0
ldr r0, [sp, #4]
strb r3, [r2, r4]
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_022569EE:
mov r1, #0x30
tst r1, r0
beq _02256A48
mov r1, #0x46
lsl r1, r1, #2
ldr r2, [r5, r1]
mov r1, #0xc0
mul r1, r2
ldr r2, _02256C3C ; =0x00002D64
add r1, r5, r1
ldrb r2, [r1, r2]
cmp r2, #0xa
beq _02256A48
ldr r2, _02256C40 ; =0x00002D65
ldrb r2, [r1, r2]
cmp r2, #0xa
beq _02256A48
ldr r3, _02256C3C ; =0x00002D64
mov r2, #0xa
mov r0, #0x46
strb r2, [r1, r3]
lsl r0, r0, #2
ldr r4, [r5, r0]
mov r1, #0xc0
add r6, r4, #0
mul r6, r1
add r6, r5, r6
add r4, r3, #1
strb r2, [r6, r4]
add r2, r3, #2
ldr r3, [r5, r0]
add r2, r5, r2
add r0, r3, #0
mul r0, r1
ldrb r4, [r2, r0]
mov r3, #0x1f
add r1, #0x46
bic r4, r3
mov r3, #1
str r3, [sp, #8]
orr r3, r4
strb r3, [r2, r0]
ldr r0, [sp, #4]
str r1, [r0]
b _02256EE4
_02256A48:
mov r1, #3
tst r1, r0
beq _02256AA4
mov r1, #0x46
lsl r1, r1, #2
ldr r2, [r5, r1]
mov r1, #0xc0
mul r1, r2
ldr r2, _02256C3C ; =0x00002D64
add r1, r5, r1
ldrb r2, [r1, r2]
cmp r2, #0xb
beq _02256AA4
ldr r2, _02256C40 ; =0x00002D65
ldrb r2, [r1, r2]
cmp r2, #0xb
beq _02256AA4
ldr r3, _02256C3C ; =0x00002D64
mov r2, #0xb
mov r0, #0x46
strb r2, [r1, r3]
lsl r0, r0, #2
ldr r4, [r5, r0]
mov r1, #0xc0
add r6, r4, #0
mul r6, r1
add r6, r5, r6
add r4, r3, #1
strb r2, [r6, r4]
add r2, r3, #2
ldr r3, [r5, r0]
add r2, r5, r2
add r0, r3, #0
mul r0, r1
ldrb r4, [r2, r0]
mov r3, #0x1f
add r1, #0x46
bic r4, r3
mov r3, #2
orr r3, r4
strb r3, [r2, r0]
ldr r0, [sp, #4]
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256AA4:
mov r1, #0xc0
tst r0, r1
beq _02256B52
add r0, r1, #0
add r0, #0x58
ldr r1, [r5, r0]
mov r0, #0xc0
mul r0, r1
ldr r1, _02256C3C ; =0x00002D64
add r0, r5, r0
ldrb r1, [r0, r1]
cmp r1, #0xf
beq _02256B52
ldr r1, _02256C40 ; =0x00002D65
ldrb r1, [r0, r1]
cmp r1, #0xf
beq _02256B52
ldr r3, _02256C3C ; =0x00002D64
mov r2, #0xf
strb r2, [r0, r3]
mov r0, #0x46
lsl r0, r0, #2
ldr r4, [r5, r0]
mov r1, #0xc0
add r6, r4, #0
mul r6, r1
add r6, r5, r6
add r4, r3, #1
strb r2, [r6, r4]
add r2, r3, #2
ldr r3, [r5, r0]
add r2, r5, r2
add r0, r3, #0
mul r0, r1
ldrb r4, [r2, r0]
mov r3, #0x1f
add r1, #0x46
bic r4, r3
mov r3, #3
orr r3, r4
strb r3, [r2, r0]
ldr r0, [sp, #4]
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256B00:
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #0xc0
mul r0, r1
ldr r1, _02256C3C ; =0x00002D64
add r0, r5, r0
ldrb r1, [r0, r1]
cmp r1, #0
beq _02256B52
ldr r1, _02256C40 ; =0x00002D65
ldrb r1, [r0, r1]
cmp r1, #0
beq _02256B52
ldr r3, _02256C3C ; =0x00002D64
mov r2, #0
strb r2, [r0, r3]
mov r0, #0x46
lsl r0, r0, #2
ldr r4, [r5, r0]
mov r1, #0xc0
add r6, r4, #0
mul r6, r1
add r6, r5, r6
add r4, r3, #1
strb r2, [r6, r4]
ldr r0, [r5, r0]
add r2, r3, #2
add r4, r0, #0
mul r4, r1
add r2, r5, r2
ldrb r3, [r2, r4]
mov r0, #0x1f
add r1, #0x46
bic r3, r0
ldr r0, [sp, #4]
strb r3, [r2, r4]
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256B52:
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #0xc0
mul r0, r1
mov r1, #0xb5
add r0, r5, r0
lsl r1, r1, #6
ldrh r2, [r0, r1]
ldr r1, _02256C44 ; =0x000001A5
cmp r2, r1
bne _02256B72
ldr r1, _02256C38 ; =0x00002D8C
ldr r0, [r0, r1]
cmp r0, #0
bne _02256B74
_02256B72:
b _02256C9E
_02256B74:
mov r0, #0xd
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _02256C78
mov r0, #0x4c
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _02256C78
mov r0, #6
lsl r0, r0, #6
ldr r2, [r5, r0]
mov r0, #0xf3
tst r0, r2
bne _02256BD0
mov r0, #0x46
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0xc0
add r3, r0, #0
mul r3, r1
ldrb r0, [r6, r3]
lsl r1, r0, #0x1b
lsr r1, r1, #0x1b
cmp r1, #1
bne _02256BD0
mov r1, #0x1f
bic r0, r1
strb r0, [r6, r3]
ldr r1, _02256C48 ; =0x00000106
ldr r0, [sp, #4]
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256BD0:
mov r0, #0x30
tst r0, r2
beq _02256BFE
mov r0, #0x46
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0xc0
add r3, r0, #0
mul r3, r1
ldrb r0, [r6, r3]
lsl r1, r0, #0x1b
lsr r1, r1, #0x1b
bne _02256BFE
mov r1, #0x1f
bic r0, r1
mov r1, #1
orr r0, r1
str r1, [sp, #8]
strb r0, [r6, r3]
ldr r1, _02256C48 ; =0x00000106
ldr r0, [sp, #4]
str r1, [r0]
b _02256EE4
_02256BFE:
mov r0, #3
tst r0, r2
beq _02256C4C
mov r0, #0x46
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0xc0
add r3, r0, #0
mul r3, r1
ldrb r0, [r6, r3]
lsl r1, r0, #0x1b
lsr r1, r1, #0x1b
cmp r1, #1
bne _02256C4C
mov r1, #0x1f
bic r0, r1
strb r0, [r6, r3]
ldr r1, _02256C48 ; =0x00000106
ldr r0, [sp, #4]
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
.balign 4, 0
_02256C2C: .word 0x00002D66
_02256C30: .word 0x000021EC
_02256C34: .word 0x0000015F
_02256C38: .word 0x00002D8C
_02256C3C: .word 0x00002D64
_02256C40: .word 0x00002D65
_02256C44: .word 0x000001A5
_02256C48: .word 0x00000106
_02256C4C:
mov r0, #0xc0
tst r0, r2
beq _02256C9E
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #0xc0
mul r0, r1
ldrb r2, [r6, r0]
lsl r1, r2, #0x1b
lsr r1, r1, #0x1b
cmp r1, #1
bne _02256C9E
mov r1, #0x1f
bic r2, r1
strb r2, [r6, r0]
ldr r1, _02256EEC ; =0x00000106
ldr r0, [sp, #4]
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256C78:
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #0xc0
mul r0, r1
ldrb r2, [r6, r0]
lsl r1, r2, #0x1b
lsr r1, r1, #0x1b
cmp r1, #1
bne _02256C9E
mov r1, #0x1f
bic r2, r1
strb r2, [r6, r0]
ldr r1, _02256EEC ; =0x00000106
ldr r0, [sp, #4]
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256C9E:
mov r0, #0x46
lsl r0, r0, #2
ldr r3, [r5, r0]
mov r0, #0xc0
mul r0, r3
add r2, r5, r0
mov r0, #0xb5
lsl r0, r0, #6
ldrh r1, [r2, r0]
ldr r0, _02256EF0 ; =0x000001ED
cmp r1, r0
bne _02256D1C
ldr r0, _02256EF4 ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _02256D1C
add r0, r5, #0
add r1, r3, #0
bl GetBattlerAbility
cmp r0, #0x79
bne _02256D1C
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #0xc0
mul r0, r1
add r1, r5, r0
ldr r0, _02256EF8 ; =0x00002DB8
mov r2, #5
ldrh r0, [r1, r0]
mov r1, #1
bl GetItemAttr
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl GetArceusTypeByHeldItemEffect
mov r1, #0x46
lsl r1, r1, #2
ldr r1, [r5, r1]
mov r2, #0xc0
add r3, r1, #0
mul r3, r2
ldrb r1, [r6, r3]
lsl r2, r1, #0x1b
lsr r2, r2, #0x1b
cmp r0, r2
beq _02256D1C
mov r2, #0x1f
lsl r0, r0, #0x18
bic r1, r2
lsr r0, r0, #0x18
mov r2, #0x1f
and r0, r2
orr r0, r1
strb r0, [r6, r3]
ldr r0, [sp, #4]
add r2, #0xe7
str r2, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256D1C:
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #0xc0
add r3, r1, #0
mul r3, r0
mov r0, #0xb5
add r2, r5, r3
lsl r0, r0, #6
ldrh r1, [r2, r0]
ldr r0, _02256EFC ; =0x000001E7
cmp r1, r0
bne _02256D78
ldr r0, _02256EF4 ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _02256D78
ldr r0, _02256F00 ; =0x00002D66
ldrb r0, [r2, r0]
lsl r0, r0, #0x1b
lsr r0, r0, #0x1b
cmp r0, #1
bne _02256D78
ldr r0, _02256F04 ; =0x00002DB0
ldr r1, [r2, r0]
mov r0, #2
lsl r0, r0, #0x14
tst r0, r1
bne _02256D7A
add r0, r7, #0
bl BattleSys_GetBattleFlags
mov r1, #0x80
tst r0, r1
bne _02256D78
add r0, r1, #0
add r0, #0x98
ldr r1, [r5, r0]
mov r0, #0xc0
add r3, r1, #0
mul r3, r0
ldr r0, _02256EF8 ; =0x00002DB8
add r1, r5, r3
ldrh r0, [r1, r0]
cmp r0, #0x70
bne _02256D7A
_02256D78:
b _02256ED6
_02256D7A:
ldr r0, _02256F04 ; =0x00002DB0
add r1, r5, r3
ldr r1, [r1, r0]
mov r0, #2
lsl r0, r0, #0x14
tst r0, r1
bne _02256D8A
b _02256EC8
_02256D8A:
mov r0, #5
bl AllocMonZeroed
add r4, r0, #0
add r0, r7, #0
bl BattleSys_GetBattleType
mov r1, #2
tst r0, r1
beq _02256DAE
mov r0, #0x46
lsl r0, r0, #2
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _02256F08 ; =0x000021AC
ldr r1, [r1, r0]
b _02256DB8
_02256DAE:
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #1
eor r1, r0
_02256DB8:
ldr r2, _02256F0C ; =0x0000219C
add r3, r5, r1
ldrb r2, [r3, r2]
add r0, r7, #0
bl BattleSystem_GetPartyMon
add r1, r4, #0
bl CopyPokemonToPokemon
mov r0, #0
str r0, [sp, #0xc]
add r0, r4, #0
mov r1, #MON_DATA_HELD_ITEM
add r2, sp, #0xc
bl SetMonData
mov r0, #0
str r0, [sp, #0xc]
add r0, r4, #0
mov r1, #MON_DATA_FORME
add r2, sp, #0xc
bl SetMonData
add r0, r4, #0
bl Mon_UpdateGiratinaForme
add r0, r4, #0
mov r1, #0xa5
mov r2, #0
bl GetMonData
mov r1, #0x46
lsl r1, r1, #2
ldr r2, [r5, r1]
mov r1, #0xc0
mul r1, r2
add r2, r5, r1
ldr r1, _02256F10 ; =0x00002D42
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa6
mov r2, #0
bl GetMonData
mov r1, #0x46
lsl r1, r1, #2
ldr r2, [r5, r1]
mov r1, #0xc0
mul r1, r2
add r2, r5, r1
ldr r1, _02256F14 ; =0x00002D44
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa7
mov r2, #0
bl GetMonData
mov r1, #0x46
lsl r1, r1, #2
ldr r2, [r5, r1]
mov r1, #0xc0
mul r1, r2
add r2, r5, r1
ldr r1, _02256F18 ; =0x00002D46
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa8
mov r2, #0
bl GetMonData
mov r1, #0x46
lsl r1, r1, #2
ldr r2, [r5, r1]
mov r1, #0xc0
mul r1, r2
add r2, r5, r1
ldr r1, _02256F1C ; =0x00002D48
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa9
mov r2, #0
bl GetMonData
mov r1, #0x46
lsl r1, r1, #2
ldr r2, [r5, r1]
mov r1, #0xc0
mul r1, r2
add r2, r5, r1
ldr r1, _02256F20 ; =0x00002D4A
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa
mov r2, #0
bl GetMonData
mov r6, #0x46
lsl r6, r6, #2
ldr r2, [r5, r6]
mov r1, #0xc0
mul r1, r2
add r2, r5, r1
ldr r1, _02256F24 ; =0x00002D67
strb r0, [r2, r1]
sub r0, r1, #1
add r3, r5, r0
ldr r0, [r5, r6]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldrb r1, [r3, r2]
mov r0, #0x1f
bic r1, r0
strb r1, [r3, r2]
mov r1, #0x85
lsl r1, r1, #6
mov r0, #1
ldr r2, [r5, r1]
lsl r0, r0, #0x1a
orr r0, r2
str r0, [r5, r1]
ldr r2, [r5, r6]
add r0, r7, #0
add r1, r5, #0
bl BattleController_EmitBattleMonToPartyMonCopy
add r0, r4, #0
bl FreeToHeap
add r1, r6, #0
ldr r0, [sp, #4]
sub r1, #0x12
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256EC8:
mov r1, #0x4a
ldr r0, [sp, #4]
lsl r1, r1, #2
str r1, [r0]
mov r0, #1
str r0, [sp, #8]
b _02256EE4
_02256ED6:
add r0, r7, #0
add r4, r4, #1
bl BattleSys_GetMaxBattlers
cmp r4, r0
bge _02256EE4
b _02256930
_02256EE4:
ldr r0, [sp, #8]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_02256EEC: .word 0x00000106
_02256EF0: .word 0x000001ED
_02256EF4: .word 0x00002D8C
_02256EF8: .word 0x00002DB8
_02256EFC: .word 0x000001E7
_02256F00: .word 0x00002D66
_02256F04: .word 0x00002DB0
_02256F08: .word 0x000021AC
_02256F0C: .word 0x0000219C
_02256F10: .word 0x00002D42
_02256F14: .word 0x00002D44
_02256F18: .word 0x00002D46
_02256F1C: .word 0x00002D48
_02256F20: .word 0x00002D4A
_02256F24: .word 0x00002D67
thumb_func_end ov12_02256914
thumb_func_start ov12_02256F28
ov12_02256F28: ; 0x02256F28
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp, #4]
str r1, [sp]
mov r7, #0
bl BattleSys_GetMaxBattlers
cmp r0, #0
ble _02256F6A
ldr r5, [sp]
ldr r4, _02256F70 ; =0x0000312C
_02256F3E:
mov r1, #0
_02256F40:
add r0, r5, r1
strb r1, [r0, r4]
add r1, r1, #1
cmp r1, #6
blt _02256F40
ldr r1, [sp]
ldr r0, [sp, #4]
add r3, r1, #0
add r6, r3, r7
ldr r3, _02256F74 ; =0x0000219C
add r2, r7, #0
ldrb r3, [r6, r3]
bl ov12_02256F78
ldr r0, [sp, #4]
add r5, r5, #6
add r7, r7, #1
bl BattleSys_GetMaxBattlers
cmp r7, r0
blt _02256F3E
_02256F6A:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_02256F70: .word 0x0000312C
_02256F74: .word 0x0000219C
thumb_func_end ov12_02256F28
thumb_func_start ov12_02256F78
ov12_02256F78: ; 0x02256F78
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r6, r1, #0
add r5, r2, #0
add r4, r3, #0
bl BattleSys_GetBattleType
mov r1, #2
tst r1, r0
beq _02256F92
mov r1, #0x18
tst r1, r0
beq _02256FA6
_02256F92:
mov r1, #0x10
tst r0, r1
beq _02256FCA
add r0, r7, #0
add r1, r5, #0
bl ov12_0223AB0C
mov r1, #1
tst r0, r1
bne _02256FCA
_02256FA6:
add r0, r7, #0
add r1, r5, #0
bl ov12_0223AB0C
cmp r0, #4
beq _02256FBE
add r0, r7, #0
add r1, r5, #0
bl ov12_0223AB0C
cmp r0, #5
bne _02256FC2
_02256FBE:
mov r1, #1
b _02256FC4
_02256FC2:
mov r1, #0
_02256FC4:
mov r0, #1
and r5, r0
b _02256FCC
_02256FCA:
mov r1, #0
_02256FCC:
mov r2, #6
mul r2, r5
ldr r3, _02256FF4 ; =0x0000312C
mov r0, #0
add r7, r6, r2
_02256FD6:
ldrb r5, [r7, r3]
cmp r4, r5
beq _02256FE4
add r0, r0, #1
add r7, r7, #1
cmp r0, #6
blt _02256FD6
_02256FE4:
ldr r3, _02256FF4 ; =0x0000312C
add r3, r6, r3
add r4, r3, r2
ldrb r3, [r4, r1]
ldrb r2, [r4, r0]
strb r2, [r4, r1]
strb r3, [r4, r0]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02256FF4: .word 0x0000312C
thumb_func_end ov12_02256F78
thumb_func_start CalcMoveDamage
CalcMoveDamage: ; 0x02256FF8
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
str r0, [sp, #4]
ldr r0, [sp, #0xa0]
add r5, r1, #0
str r0, [sp, #0xa0]
ldr r0, [sp, #0xb4]
str r2, [sp, #8]
str r0, [sp, #0xb4]
mov r0, #0
str r0, [sp, #0x84]
ldr r0, [sp, #0xb4]
str r3, [sp, #0xc]
cmp r0, #1
beq _0225701C
bhi _0225701C
bl GF_AssertFail
_0225701C:
add r0, sp, #0x90
ldrb r0, [r0, #0x1c]
mov r2, #1
mov r3, #0
str r0, [sp, #0x24]
ldr r1, [sp, #0x24]
add r0, r5, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
add r0, sp, #0xb0
ldrb r0, [r0]
mov r2, #2
mov r3, #0
str r0, [sp, #0x20]
ldr r1, [sp, #0x20]
add r0, r5, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x78]
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #4
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #5
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x13
mov r3, #0
bl GetBattlerVar
sub r0, r0, #6
lsl r0, r0, #0x18
asr r0, r0, #0x18
str r0, [sp, #0x70]
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #0x14
mov r3, #0
bl GetBattlerVar
sub r0, r0, #6
lsl r0, r0, #0x18
asr r0, r0, #0x18
str r0, [sp, #0x6c]
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x16
mov r3, #0
bl GetBattlerVar
sub r0, r0, #6
lsl r0, r0, #0x18
asr r0, r0, #0x18
str r0, [sp, #0x68]
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #0x17
mov r3, #0
bl GetBattlerVar
sub r0, r0, #6
lsl r0, r0, #0x18
asr r0, r0, #0x18
str r0, [sp, #0x64]
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x2b
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r2, #0
str r0, [sp, #0x60]
ldr r1, [sp, #0x24]
add r0, r5, #0
add r3, r2, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r2, #0
str r0, [sp, #0x58]
ldr r1, [sp, #0x20]
add r0, r5, #0
add r3, r2, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x54]
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x2f
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x10
asr r0, r0, #0x10
str r0, [sp, #0x50]
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #0x2f
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x30
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4c]
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #0x30
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x34
mov r3, #0
bl GetBattlerVar
str r0, [sp, #0x48]
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #0x34
mov r3, #0
bl GetBattlerVar
str r0, [sp, #0x44]
ldr r1, [sp, #0x24]
add r0, r5, #0
bl GetBattlerAbility
add r7, r0, #0
ldr r1, [sp, #0x20]
add r0, r5, #0
bl GetBattlerAbility
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x1d
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x40]
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #0x1d
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x3c]
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #0x1b
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x38]
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x20]
add r0, r5, #0
mov r2, #0x1c
mov r3, #0
bl GetBattlerVar
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x34]
ldr r1, [sp, #0x24]
add r0, r5, #0
bl GetBattlerHeldItem
add r4, r0, #0
add r0, r5, #0
add r1, r4, #0
mov r2, #1
bl GetItemHoldEffect
str r0, [sp, #0x30]
add r0, r5, #0
add r1, r4, #0
mov r2, #2
bl GetItemHoldEffect
str r0, [sp, #0x2c]
ldr r1, [sp, #0x20]
add r0, r5, #0
bl GetBattlerHeldItem
add r4, r0, #0
add r0, r5, #0
add r1, r4, #0
mov r2, #1
bl GetItemHoldEffect
str r0, [sp, #0x28]
add r0, r5, #0
add r1, r4, #0
mov r2, #2
bl GetItemHoldEffect
ldr r0, [sp, #4]
bl BattleSys_GetBattleType
str r0, [sp, #0x5c]
add r0, sp, #0x90
ldrh r4, [r0, #0x14]
cmp r4, #0
bne _0225721C
ldr r0, [sp, #8]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225749C ; =0x000003E1
ldrb r4, [r1, r0]
_0225721C:
cmp r7, #0x60
bne _02257224
mov r6, #0
b _02257240
_02257224:
add r0, sp, #0x90
ldrb r1, [r0, #0x18]
cmp r1, #0
bne _02257238
ldr r0, [sp, #8]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _022574A0 ; =0x000003E2
ldrb r6, [r1, r0]
b _02257240
_02257238:
mov r0, #0x3f
and r0, r1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
_02257240:
ldr r0, _022574A4 ; =0x00002158
ldr r0, [r5, r0]
cmp r0, #0xa
bge _0225724C
bl GF_AssertFail
_0225724C:
ldr r0, _022574A4 ; =0x00002158
mov r1, #0xa
ldr r0, [r5, r0]
mul r0, r4
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, sp, #0x90
ldrb r0, [r0, #0x1c]
mov r1, #0xc0
mul r1, r0
add r2, r5, r1
mov r1, #0xb7
lsl r1, r1, #6
ldr r2, [r2, r1]
mov r1, #2
lsl r1, r1, #8
tst r1, r2
beq _0225727C
cmp r6, #0xd
bne _0225727C
lsl r1, r4, #0x11
lsr r4, r1, #0x10
_0225727C:
lsl r0, r0, #6
add r1, r5, r0
mov r0, #0x75
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1f
beq _0225729A
mov r0, #0xf
mul r0, r4
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0225729A:
cmp r7, #0x65
bne _022572B6
ldr r0, [sp, #8]
cmp r0, #0xa5
beq _022572B6
cmp r4, #0x3c
bhi _022572B6
mov r0, #0xf
mul r0, r4
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022572B6:
ldr r0, [sp, #8]
lsl r0, r0, #4
str r0, [sp, #0x18]
add r1, r5, r0
mov r0, #0x3e
lsl r0, r0, #4
ldrb r0, [r1, r0]
cmp r7, #0x25
str r0, [sp, #0x80]
beq _022572CE
cmp r7, #0x4a
bne _022572D6
_022572CE:
ldr r0, [sp, #0x7c]
lsl r0, r0, #0x11
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
_022572D6:
cmp r7, #0x70
bne _02257304
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #3
mov r3, #0
bl ov12_022581D4
str r0, [sp, #0x88]
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x59
mov r3, #0
bl GetBattlerVar
ldr r1, [sp, #0x88]
sub r0, r1, r0
cmp r0, #5
bge _02257304
ldr r0, [sp, #0x7c]
lsl r0, r0, #0xf
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
_02257304:
ldr r3, _022574A8 ; =ov12_0226CC3A
mov r2, #0
_02257308:
ldrb r1, [r3]
ldr r0, [sp, #0x30]
cmp r0, r1
bne _02257328
ldrb r0, [r3, #1]
cmp r6, r0
bne _02257328
ldr r0, [sp, #0x2c]
mov r1, #0x64
add r0, #0x64
mul r0, r4
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _02257330
_02257328:
add r2, r2, #1
add r3, r3, #2
cmp r2, #0x21
blo _02257308
_02257330:
ldr r0, [sp, #0x30]
cmp r0, #0x37
bne _02257348
ldr r1, [sp, #0x7c]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
_02257348:
ldr r0, [sp, #0x30]
cmp r0, #0x7d
bne _02257360
ldr r1, [sp, #0x74]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
_02257360:
ldr r0, [sp, #0x30]
cmp r0, #0x3c
bne _0225738E
ldr r0, [sp, #0x5c]
mov r1, #0x80
tst r0, r1
bne _0225738E
ldr r1, _022574AC ; =0x0000FE84
ldr r0, [sp, #0x58]
add r0, r0, r1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
cmp r0, #1
bhi _0225738E
ldr r1, [sp, #0x74]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
_0225738E:
ldr r0, [sp, #0x28]
cmp r0, #0x3c
bne _022573BC
ldr r0, [sp, #0x5c]
mov r1, #0x80
tst r0, r1
bne _022573BC
ldr r1, _022574AC ; =0x0000FE84
ldr r0, [sp, #0x54]
add r0, r0, r1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
cmp r0, #1
bhi _022573BC
ldr r1, [sp, #0x10]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
_022573BC:
ldr r0, [sp, #0x30]
cmp r0, #0x3d
bne _022573D2
ldr r1, _022574B0 ; =0x0000016E
ldr r0, [sp, #0x58]
cmp r0, r1
bne _022573D2
ldr r0, [sp, #0x74]
lsl r0, r0, #0x11
lsr r0, r0, #0x10
str r0, [sp, #0x74]
_022573D2:
ldr r0, [sp, #0x28]
cmp r0, #0x3e
bne _022573E8
ldr r1, _022574B0 ; =0x0000016E
ldr r0, [sp, #0x54]
cmp r0, r1
bne _022573E8
ldr r0, [sp, #0x10]
lsl r0, r0, #0x11
lsr r0, r0, #0x10
str r0, [sp, #0x10]
_022573E8:
ldr r0, [sp, #0x30]
cmp r0, #0x47
bne _022573F8
ldr r0, [sp, #0x58]
cmp r0, #0x19
bne _022573F8
lsl r0, r4, #0x11
lsr r4, r0, #0x10
_022573F8:
ldr r0, [sp, #0x28]
cmp r0, #0x5a
bne _0225740C
ldr r0, [sp, #0x54]
cmp r0, #0x84
bne _0225740C
ldr r0, [sp, #0x78]
lsl r0, r0, #0x11
lsr r0, r0, #0x10
str r0, [sp, #0x78]
_0225740C:
ldr r0, [sp, #0x30]
cmp r0, #0x5b
bne _02257428
ldr r1, _022574B4 ; =0x0000FF98
ldr r0, [sp, #0x58]
add r0, r0, r1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
cmp r0, #1
bhi _02257428
ldr r0, [sp, #0x7c]
lsl r0, r0, #0x11
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
_02257428:
ldr r0, [sp, #0x30]
cmp r0, #3
bne _0225744E
cmp r6, #0x10
beq _02257436
cmp r6, #8
bne _0225744E
_02257436:
ldr r1, _022574B8 ; =0x000001E3
ldr r0, [sp, #0x58]
cmp r0, r1
bne _0225744E
ldr r0, [sp, #0x2c]
mov r1, #0x64
add r0, #0x64
mul r0, r4
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0225744E:
ldr r0, [sp, #0x30]
cmp r0, #4
bne _02257476
cmp r6, #0x10
beq _0225745C
cmp r6, #0xb
bne _02257476
_0225745C:
mov r1, #0x79
ldr r0, [sp, #0x58]
lsl r1, r1, #2
cmp r0, r1
bne _02257476
ldr r0, [sp, #0x2c]
mov r1, #0x64
add r0, #0x64
mul r0, r4
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02257476:
ldr r0, [sp, #0x30]
cmp r0, #2
bne _022574D6
cmp r6, #0x10
beq _02257484
cmp r6, #7
bne _022574D6
_02257484:
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x35
mov r3, #0
bl GetBattlerVar
mov r1, #2
lsl r1, r1, #0x14
tst r0, r1
bne _022574D6
ldr r1, _022574BC ; =0x000001E7
b _022574C0
.balign 4, 0
_0225749C: .word 0x000003E1
_022574A0: .word 0x000003E2
_022574A4: .word 0x00002158
_022574A8: .word ov12_0226CC3A
_022574AC: .word 0x0000FE84
_022574B0: .word 0x0000016E
_022574B4: .word 0x0000FF98
_022574B8: .word 0x000001E3
_022574BC: .word 0x000001E7
_022574C0:
ldr r0, [sp, #0x58]
cmp r0, r1
bne _022574D6
ldr r0, [sp, #0x2c]
mov r1, #0x64
add r0, #0x64
mul r0, r4
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022574D6:
ldr r0, [sp, #0x30]
cmp r0, #0x5e
bne _022574F2
ldr r0, [sp, #0x80]
cmp r0, #0
bne _022574F2
ldr r0, [sp, #0x2c]
mov r1, #0x64
add r0, #0x64
mul r0, r4
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022574F2:
ldr r0, [sp, #0x30]
cmp r0, #0x5f
bne _02257510
ldr r0, [sp, #0x80]
cmp r0, #1
bne _02257510
ldr r0, [sp, #0x2c]
mov r1, #0x64
add r0, #0x64
str r0, [sp, #0x2c]
mul r0, r4
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02257510:
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x20]
add r0, r5, #0
mov r3, #0x2f
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _0225752C
cmp r6, #0xa
beq _02257528
cmp r6, #0xf
bne _0225752C
_02257528:
lsl r0, r4, #0xf
lsr r4, r0, #0x10
_0225752C:
cmp r7, #0x37
bne _02257542
ldr r1, [sp, #0x7c]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
_02257542:
cmp r7, #0x3e
bne _0225755E
ldr r0, [sp, #0x48]
cmp r0, #0
beq _0225755E
ldr r1, [sp, #0x7c]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
_0225755E:
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x20]
add r0, r5, #0
mov r3, #0x3f
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02257586
ldr r0, [sp, #0x44]
cmp r0, #0
beq _02257586
ldr r1, [sp, #0x78]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x78]
_02257586:
cmp r7, #0x39
bne _022575B0
mov r0, #0x3a
str r0, [sp]
ldr r0, [sp, #4]
ldr r3, [sp, #0x24]
add r1, r5, #0
mov r2, #1
bl CheckAbilityActive
cmp r0, #0
beq _022575B0
ldr r1, [sp, #0x74]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
_022575B0:
cmp r7, #0x3a
bne _022575DA
mov r0, #0x39
str r0, [sp]
ldr r0, [sp, #4]
ldr r3, [sp, #0x24]
add r1, r5, #0
mov r2, #1
bl CheckAbilityActive
cmp r0, #0
beq _022575DA
ldr r1, [sp, #0x74]
mov r0, #0x96
mul r0, r1
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
_022575DA:
cmp r6, #0xd
bne _022575F2
mov r2, #1
ldr r0, [sp, #4]
add r1, r5, #0
lsl r2, r2, #0x10
bl ov12_02252CE8
cmp r0, #0
beq _022575F2
lsl r0, r4, #0xf
lsr r4, r0, #0x10
_022575F2:
cmp r6, #0xa
bne _0225760A
mov r2, #2
ldr r0, [sp, #4]
add r1, r5, #0
lsl r2, r2, #0x10
bl ov12_02252CE8
cmp r0, #0
beq _0225760A
lsl r0, r4, #0xf
lsr r4, r0, #0x10
_0225760A:
cmp r6, #0xc
bne _0225762E
cmp r7, #0x41
bne _0225762E
ldr r0, [sp, #0x4c]
mov r1, #3
bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0225762E
mov r0, #0x96
mul r0, r4
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0225762E:
cmp r6, #0xa
bne _02257652
cmp r7, #0x42
bne _02257652
ldr r0, [sp, #0x4c]
mov r1, #3
bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _02257652
mov r0, #0x96
mul r0, r4
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02257652:
cmp r6, #0xb
bne _02257676
cmp r7, #0x43
bne _02257676
ldr r0, [sp, #0x4c]
mov r1, #3
bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _02257676
mov r0, #0x96
mul r0, r4
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02257676:
cmp r6, #6
bne _0225769A
cmp r7, #0x44
bne _0225769A
ldr r0, [sp, #0x4c]
mov r1, #3
bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0225769A
mov r0, #0x96
mul r0, r4
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0225769A:
cmp r6, #0xa
bne _022576B2
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x20]
add r0, r5, #0
mov r3, #0x55
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _022576B2
lsl r0, r4, #0xf
lsr r4, r0, #0x10
_022576B2:
cmp r6, #0xa
bne _022576D4
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x20]
add r0, r5, #0
mov r3, #0x57
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _022576D4
mov r0, #0x7d
mul r0, r4
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022576D4:
cmp r7, #0x56
bne _02257714
ldr r0, [sp, #0x70]
mov r1, #5
lsl r0, r0, #0x19
asr r0, r0, #0x18
str r0, [sp, #0x70]
ldr r0, [sp, #0x70]
mvn r1, r1
cmp r0, r1
bge _022576EC
str r1, [sp, #0x70]
_022576EC:
ldr r0, [sp, #0x70]
cmp r0, #6
ble _022576F6
mov r0, #6
str r0, [sp, #0x70]
_022576F6:
ldr r0, [sp, #0x68]
mov r1, #5
lsl r0, r0, #0x19
asr r0, r0, #0x18
str r0, [sp, #0x68]
ldr r0, [sp, #0x68]
mvn r1, r1
cmp r0, r1
bge _0225770A
str r1, [sp, #0x68]
_0225770A:
ldr r0, [sp, #0x68]
cmp r0, #6
ble _02257714
mov r0, #6
str r0, [sp, #0x68]
_02257714:
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x20]
add r0, r5, #0
mov r3, #0x56
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02257760
ldr r0, [sp, #0x6c]
mov r1, #5
lsl r0, r0, #0x19
asr r0, r0, #0x18
str r0, [sp, #0x6c]
ldr r0, [sp, #0x6c]
mvn r1, r1
cmp r0, r1
bge _02257738
str r1, [sp, #0x6c]
_02257738:
ldr r0, [sp, #0x6c]
cmp r0, #6
ble _02257742
mov r0, #6
str r0, [sp, #0x6c]
_02257742:
ldr r0, [sp, #0x64]
mov r1, #5
lsl r0, r0, #0x19
asr r0, r0, #0x18
str r0, [sp, #0x64]
ldr r0, [sp, #0x64]
mvn r1, r1
cmp r0, r1
bge _02257756
str r1, [sp, #0x64]
_02257756:
ldr r0, [sp, #0x64]
cmp r0, #6
ble _02257760
mov r0, #6
str r0, [sp, #0x64]
_02257760:
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x20]
add r0, r5, #0
mov r3, #0x6d
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #1
bne _02257776
mov r0, #0
str r0, [sp, #0x70]
str r0, [sp, #0x68]
_02257776:
cmp r7, #0x6d
bne _02257780
mov r0, #0
str r0, [sp, #0x6c]
str r0, [sp, #0x64]
_02257780:
ldr r0, [sp, #0x70]
add r0, r0, #6
lsl r0, r0, #0x18
asr r0, r0, #0x18
str r0, [sp, #0x70]
ldr r0, [sp, #0x6c]
add r0, r0, #6
lsl r0, r0, #0x18
asr r0, r0, #0x18
str r0, [sp, #0x6c]
ldr r0, [sp, #0x68]
add r0, r0, #6
lsl r0, r0, #0x18
asr r0, r0, #0x18
str r0, [sp, #0x68]
ldr r0, [sp, #0x64]
add r0, r0, #6
lsl r0, r0, #0x18
asr r0, r0, #0x18
str r0, [sp, #0x64]
cmp r7, #0x4f
bne _022577CE
ldr r1, [sp, #0x40]
ldr r0, [sp, #0x3c]
cmp r1, r0
bne _022577CE
add r0, r1, #0
cmp r0, #2
beq _022577CE
ldr r0, [sp, #0x3c]
cmp r0, #2
beq _022577CE
mov r0, #0x7d
mul r0, r4
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022577CE:
cmp r7, #0x4f
bne _022577F4
ldr r1, [sp, #0x40]
ldr r0, [sp, #0x3c]
cmp r1, r0
beq _022577F4
add r0, r1, #0
cmp r0, #2
beq _022577F4
ldr r0, [sp, #0x3c]
cmp r0, #2
beq _022577F4
mov r0, #0x4b
mul r0, r4
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022577F4:
ldr r2, _02257AE4 ; =ov12_0226CBBE
mov r3, #0
_022577F8:
ldrh r1, [r2]
ldr r0, [sp, #8]
cmp r0, r1
bne _02257814
cmp r7, #0x59
bne _02257814
mov r0, #0xc
mul r0, r4
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0225781C
_02257814:
add r3, r3, #1
add r2, r2, #2
cmp r3, #0xf
blo _022577F8
_0225781C:
mov r0, #0xd
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _022578EE
mov r0, #0x4c
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _022578EE
ldr r0, [sp, #0xa0]
mov r1, #0x30
and r0, r1
str r0, [sp, #0x1c]
beq _02257864
cmp r7, #0x5e
bne _02257864
ldr r1, [sp, #0x74]
mov r0, #0xf
mul r0, r1
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
_02257864:
ldr r0, [sp, #0xa0]
mov r1, #0xc
tst r0, r1
beq _0225788A
ldr r0, [sp, #0x38]
cmp r0, #5
beq _02257878
ldr r0, [sp, #0x34]
cmp r0, #5
bne _0225788A
_02257878:
ldr r1, [sp, #0x10]
mov r0, #0xf
mul r0, r1
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
_0225788A:
ldr r0, [sp, #0x1c]
cmp r0, #0
beq _022578B6
mov r0, #0x7a
str r0, [sp]
ldr r0, [sp, #4]
ldr r3, [sp, #0x24]
add r1, r5, #0
mov r2, #1
bl CheckAbilityActive
cmp r0, #0
beq _022578B6
ldr r1, [sp, #0x7c]
mov r0, #0xf
mul r0, r1
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
_022578B6:
ldr r0, [sp, #0x1c]
cmp r0, #0
beq _022578EE
ldr r1, [sp, #0x24]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x68
beq _022578EE
mov r0, #0x7a
str r0, [sp]
ldr r0, [sp, #4]
ldr r3, [sp, #0x20]
add r1, r5, #0
mov r2, #1
bl CheckAbilityActive
cmp r0, #0
beq _022578EE
ldr r1, [sp, #0x10]
mov r0, #0xf
mul r0, r1
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
_022578EE:
ldr r0, [sp, #0x18]
add r1, r5, r0
ldr r0, _02257AE8 ; =0x000003DE
ldrh r0, [r1, r0]
str r0, [sp, #0x14]
cmp r0, #7
bne _02257904
ldr r0, [sp, #0x78]
lsl r0, r0, #0xf
lsr r0, r0, #0x10
str r0, [sp, #0x78]
_02257904:
ldr r0, [sp, #0x80]
cmp r0, #0
bne _02257A06
ldr r0, [sp, #0xb4]
cmp r0, #1
bls _02257932
ldr r0, [sp, #0x70]
cmp r0, #6
ble _0225792C
lsl r1, r0, #1
ldr r0, _02257AEC ; =ov12_0226CB88
ldr r2, [sp, #0x7c]
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _02257AF0 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
str r0, [sp, #0x84]
b _02257948
_0225792C:
ldr r0, [sp, #0x7c]
str r0, [sp, #0x84]
b _02257948
_02257932:
ldr r0, [sp, #0x70]
ldr r2, [sp, #0x7c]
lsl r1, r0, #1
ldr r0, _02257AEC ; =ov12_0226CB88
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _02257AF0 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
str r0, [sp, #0x84]
_02257948:
ldr r0, [sp, #0x84]
add r1, r0, #0
ldr r0, [sp, #0x60]
mul r1, r4
str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
ldr r0, [sp, #0xb4]
str r1, [sp, #0x84]
cmp r0, #1
bls _02257984
ldr r0, [sp, #0x6c]
cmp r0, #6
bge _0225799A
lsl r1, r0, #1
ldr r0, _02257AEC ; =ov12_0226CB88
ldr r2, [sp, #0x78]
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _02257AF0 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
str r0, [sp, #0x78]
b _0225799A
_02257984:
ldr r0, [sp, #0x6c]
ldr r2, [sp, #0x78]
lsl r1, r0, #1
ldr r0, _02257AEC ; =ov12_0226CB88
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _02257AF0 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
str r0, [sp, #0x78]
_0225799A:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x78]
bl _s32_div_f
mov r1, #0x32
bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0x48]
mov r1, #0x10
tst r0, r1
beq _022579C0
cmp r7, #0x3e
beq _022579C0
ldr r0, [sp, #0x84]
lsr r1, r0, #0x1f
add r1, r0, r1
asr r0, r1, #1
str r0, [sp, #0x84]
_022579C0:
ldr r0, [sp, #0xc]
mov r2, #1
tst r0, r2
beq _022579D4
ldr r0, [sp, #0xb4]
cmp r0, #1
bne _022579D4
ldr r0, [sp, #0x14]
cmp r0, #0xba
bne _022579D6
_022579D4:
b _02257AFE
_022579D6:
ldr r0, [sp, #0x5c]
mov r1, #2
tst r0, r1
beq _022579FA
ldr r0, [sp, #4]
ldr r3, [sp, #0x20]
add r1, r5, #0
bl GetMonsHitCount
cmp r0, #2
bne _022579FA
ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
bl _s32_div_f
str r0, [sp, #0x84]
b _02257AFE
_022579FA:
ldr r0, [sp, #0x84]
lsr r1, r0, #0x1f
add r1, r0, r1
asr r0, r1, #1
str r0, [sp, #0x84]
b _02257AFE
_02257A06:
cmp r0, #1
bne _02257AFE
ldr r0, [sp, #0xb4]
cmp r0, #1
bls _02257A32
ldr r0, [sp, #0x68]
cmp r0, #6
ble _02257A2C
lsl r1, r0, #1
ldr r0, _02257AEC ; =ov12_0226CB88
ldr r2, [sp, #0x74]
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _02257AF0 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
str r0, [sp, #0x84]
b _02257A48
_02257A2C:
ldr r0, [sp, #0x74]
str r0, [sp, #0x84]
b _02257A48
_02257A32:
ldr r0, [sp, #0x68]
ldr r2, [sp, #0x74]
lsl r1, r0, #1
ldr r0, _02257AEC ; =ov12_0226CB88
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _02257AF0 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
str r0, [sp, #0x84]
_02257A48:
ldr r0, [sp, #0x84]
add r1, r0, #0
ldr r0, [sp, #0x60]
mul r1, r4
str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
ldr r0, [sp, #0xb4]
str r1, [sp, #0x84]
cmp r0, #1
bls _02257A84
ldr r0, [sp, #0x64]
cmp r0, #6
bge _02257A9A
lsl r1, r0, #1
ldr r0, _02257AEC ; =ov12_0226CB88
ldr r2, [sp, #0x10]
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _02257AF0 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
str r0, [sp, #0x10]
b _02257A9A
_02257A84:
ldr r0, [sp, #0x64]
ldr r2, [sp, #0x10]
lsl r1, r0, #1
ldr r0, _02257AEC ; =ov12_0226CB88
ldrb r0, [r0, r1]
mul r0, r2
ldr r2, _02257AF0 ; =ov12_0226CB89
ldrb r1, [r2, r1]
bl _s32_div_f
str r0, [sp, #0x10]
_02257A9A:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x10]
bl _s32_div_f
mov r1, #0x32
bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0xc]
mov r1, #2
tst r0, r1
beq _02257AFE
ldr r0, [sp, #0xb4]
cmp r0, #1
bne _02257AFE
ldr r0, [sp, #0x14]
cmp r0, #0xba
beq _02257AFE
ldr r0, [sp, #0x5c]
tst r0, r1
beq _02257AF4
ldr r0, [sp, #4]
ldr r3, [sp, #0x20]
add r1, r5, #0
mov r2, #1
bl GetMonsHitCount
cmp r0, #2
bne _02257AF4
ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
bl _s32_div_f
str r0, [sp, #0x84]
b _02257AFE
nop
_02257AE4: .word ov12_0226CBBE
_02257AE8: .word 0x000003DE
_02257AEC: .word ov12_0226CB88
_02257AF0: .word ov12_0226CB89
_02257AF4:
ldr r0, [sp, #0x84]
lsr r1, r0, #0x1f
add r1, r0, r1
asr r0, r1, #1
str r0, [sp, #0x84]
_02257AFE:
ldr r0, [sp, #0x5c]
mov r1, #2
add r4, r0, #0
and r4, r1
beq _02257B34
ldr r0, [sp, #0x18]
add r1, r5, r0
ldr r0, _02257C28 ; =0x000003E6
ldrh r0, [r1, r0]
cmp r0, #4
bne _02257B34
ldr r0, [sp, #4]
ldr r3, [sp, #0x20]
add r1, r5, #0
mov r2, #1
bl GetMonsHitCount
cmp r0, #2
bne _02257B34
ldr r0, [sp, #0x84]
lsl r1, r0, #1
add r1, r0, r1
asr r0, r1, #1
lsr r0, r0, #0x1e
add r0, r1, r0
asr r0, r0, #2
str r0, [sp, #0x84]
_02257B34:
cmp r4, #0
beq _02257B64
ldr r0, [sp, #0x18]
add r1, r5, r0
ldr r0, _02257C28 ; =0x000003E6
ldrh r0, [r1, r0]
cmp r0, #8
bne _02257B64
ldr r0, [sp, #4]
ldr r3, [sp, #0x20]
add r1, r5, #0
mov r2, #0
bl GetMonsHitCount
cmp r0, #2
blo _02257B64
ldr r0, [sp, #0x84]
lsl r1, r0, #1
add r1, r0, r1
asr r0, r1, #1
lsr r0, r0, #0x1e
add r0, r1, r0
asr r0, r0, #2
str r0, [sp, #0x84]
_02257B64:
mov r0, #0xd
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _02257BFC
mov r0, #0x4c
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _02257BFC
ldr r0, [sp, #0xa0]
mov r1, #3
tst r0, r1
beq _02257BB8
cmp r6, #0xa
beq _02257B9E
cmp r6, #0xb
beq _02257BAA
b _02257BB8
_02257B9E:
ldr r0, [sp, #0x84]
lsr r1, r0, #0x1f
add r1, r0, r1
asr r0, r1, #1
str r0, [sp, #0x84]
b _02257BB8
_02257BAA:
ldr r1, [sp, #0x84]
mov r0, #0xf
mul r0, r1
mov r1, #0xa
bl _s32_div_f
str r0, [sp, #0x84]
_02257BB8:
ldr r1, _02257C2C ; =0x000080CF
ldr r0, [sp, #0xa0]
tst r0, r1
beq _02257BD0
ldr r0, [sp, #8]
cmp r0, #0x4c
bne _02257BD0
ldr r0, [sp, #0x84]
lsr r1, r0, #0x1f
add r1, r0, r1
asr r0, r1, #1
str r0, [sp, #0x84]
_02257BD0:
ldr r0, [sp, #0xa0]
mov r1, #0x30
tst r0, r1
beq _02257BFC
cmp r6, #0xa
beq _02257BE2
cmp r6, #0xb
beq _02257BF2
b _02257BFC
_02257BE2:
ldr r1, [sp, #0x84]
mov r0, #0xf
mul r0, r1
mov r1, #0xa
bl _s32_div_f
str r0, [sp, #0x84]
b _02257BFC
_02257BF2:
ldr r0, [sp, #0x84]
lsr r1, r0, #0x1f
add r1, r0, r1
asr r0, r1, #1
str r0, [sp, #0x84]
_02257BFC:
ldr r1, [sp, #0x24]
add r0, r5, #0
mov r2, #0x49
mov r3, #0
bl GetBattlerVar
cmp r0, #0
beq _02257C1E
cmp r6, #0xa
bne _02257C1E
ldr r1, [sp, #0x84]
mov r0, #0xf
mul r0, r1
mov r1, #0xa
bl _s32_div_f
str r0, [sp, #0x84]
_02257C1E:
ldr r0, [sp, #0x84]
add r0, r0, #2
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
nop
_02257C28: .word 0x000003E6
_02257C2C: .word 0x000080CF
thumb_func_end CalcMoveDamage
thumb_func_start ov12_02257C30
ov12_02257C30: ; 0x02257C30
push {r4, lr}
add r4, r2, #0
beq _02257C56
bl BattleSys_Random
lsr r2, r0, #0x1f
lsl r1, r0, #0x1c
sub r1, r1, r2
mov r0, #0x1c
ror r1, r0
add r0, r2, r1
mov r1, #0x64
sub r0, r1, r0
mul r0, r4
bl _s32_div_f
add r4, r0, #0
bne _02257C56
mov r4, #1
_02257C56:
add r0, r4, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov12_02257C30
thumb_func_start ov12_02257C5C
ov12_02257C5C: ; 0x02257C5C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r0, [sp]
mov r0, #1
add r4, r1, #0
add r7, r2, #0
str r0, [sp, #8]
add r0, r4, #0
add r1, r7, #0
str r3, [sp, #4]
bl GetBattlerHeldItem
add r1, r0, #0
add r0, r4, #0
mov r2, #1
bl GetItemHoldEffect
mov r3, #0xb5
lsl r3, r3, #6
add r2, r3, #0
mov r5, #0xc0
add r1, r7, #0
mul r1, r5
add r6, r4, r1
add r2, #0x70
ldr r2, [r6, r2]
ldrh r1, [r6, r3]
mov ip, r2
ldr r2, [sp, #4]
mul r5, r2
add r2, r3, #0
add r5, r4, r5
add r2, #0x80
ldr r2, [r5, r2]
add r3, #0x27
str r2, [sp, #0xc]
ldrb r2, [r6, r3]
cmp r2, #0x69
bne _02257CAE
mov r2, #1
b _02257CB0
_02257CAE:
mov r2, #0
_02257CB0:
cmp r0, #0x43
bne _02257CB8
mov r3, #1
b _02257CBA
_02257CB8:
mov r3, #0
_02257CBA:
mov r6, #1
lsl r6, r6, #0x14
mov r5, ip
tst r5, r6
beq _02257CC8
mov r5, #1
b _02257CCA
_02257CC8:
mov r5, #0
_02257CCA:
cmp r0, #0x59
bne _02257CD6
cmp r1, #0x71
bne _02257CD6
mov r6, #1
b _02257CD8
_02257CD6:
mov r6, #0
_02257CD8:
cmp r0, #0x5c
bne _02257CE4
cmp r1, #0x53
bne _02257CE4
mov r1, #1
b _02257CE6
_02257CE4:
mov r1, #0
_02257CE6:
lsl r5, r5, #1
ldr r0, [sp, #0x28]
add r3, r3, r5
add r0, r0, r3
add r2, r2, r0
lsl r0, r6, #1
add r2, r2, r0
lsl r0, r1, #1
add r0, r2, r0
lsl r0, r0, #0x10
lsr r5, r0, #0x10
cmp r5, #4
bls _02257D02
mov r5, #4
_02257D02:
ldr r0, [sp]
bl BattleSys_Random
ldr r1, _02257D68 ; =ov12_0226CB48
ldrb r1, [r1, r5]
bl _s32_div_f
cmp r1, #0
bne _02257D4C
ldr r2, [sp, #4]
add r0, r4, #0
add r1, r7, #0
mov r3, #4
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #0
bne _02257D4C
ldr r2, [sp, #4]
add r0, r4, #0
add r1, r7, #0
mov r3, #0x4b
bl CheckBattlerAbilityIfNotIgnored
cmp r0, #0
bne _02257D4C
mov r0, #7
ldr r1, [sp, #0x2c]
lsl r0, r0, #0xc
tst r0, r1
bne _02257D4C
mov r1, #2
ldr r0, [sp, #0xc]
lsl r1, r1, #0xe
tst r0, r1
bne _02257D4C
mov r0, #2
str r0, [sp, #8]
_02257D4C:
ldr r0, [sp, #8]
cmp r0, #2
bne _02257D62
add r0, r4, #0
add r1, r7, #0
bl GetBattlerAbility
cmp r0, #0x61
bne _02257D62
mov r0, #3
str r0, [sp, #8]
_02257D62:
ldr r0, [sp, #8]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02257D68: .word ov12_0226CB48
thumb_func_end ov12_02257C5C
thumb_func_start CheckLegalMimicMove
CheckLegalMimicMove: ; 0x02257D6C
push {r3, r4}
ldr r4, _02257D9C ; =ov12_0226CC04
ldr r1, _02257DA0 ; =0x0000FFFE
mov r3, #0
_02257D74:
ldrh r2, [r4]
cmp r0, r2
beq _02257D84
add r4, r4, #2
ldrh r2, [r4]
add r3, r3, #1
cmp r2, r1
bne _02257D74
_02257D84:
ldr r0, _02257D9C ; =ov12_0226CC04
lsl r1, r3, #1
ldrh r1, [r0, r1]
ldr r0, _02257DA0 ; =0x0000FFFE
cmp r1, r0
bne _02257D96
mov r0, #1
pop {r3, r4}
bx lr
_02257D96:
mov r0, #0
pop {r3, r4}
bx lr
.balign 4, 0
_02257D9C: .word ov12_0226CC04
_02257DA0: .word 0x0000FFFE
thumb_func_end CheckLegalMimicMove
thumb_func_start CheckLegalMetronomeMove
CheckLegalMetronomeMove: ; 0x02257DA4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r7, r1, #0
str r2, [sp]
add r5, r3, #0
mov r4, #0
bl ov12_02252DC4
cmp r0, #1
beq _02257DC8
ldr r2, [sp]
add r0, r6, #0
add r1, r7, #0
add r3, r5, #0
bl ov12_02252DF8
cmp r0, #1
bne _02257DCC
_02257DC8:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02257DCC:
ldr r2, _02257DF4 ; =ov12_0226CC04
ldr r0, _02257DF8 ; =0x0000FFFF
_02257DD0:
ldrh r1, [r2]
cmp r5, r1
beq _02257DE0
add r2, r2, #2
ldrh r1, [r2]
add r4, r4, #1
cmp r1, r0
bne _02257DD0
_02257DE0:
ldr r0, _02257DF4 ; =ov12_0226CC04
lsl r1, r4, #1
ldrh r1, [r0, r1]
ldr r0, _02257DF8 ; =0x0000FFFF
cmp r1, r0
bne _02257DF0
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02257DF0:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02257DF4: .word ov12_0226CC04
_02257DF8: .word 0x0000FFFF
thumb_func_end CheckLegalMetronomeMove
thumb_func_start IsMoveEncored
IsMoveEncored: ; 0x02257DFC
push {r4, r5}
lsl r1, r1, #4
add r4, r0, r1
ldr r1, _02257E30 ; =0x000003DE
ldr r3, _02257E34 ; =ov12_0226CB58
ldrh r1, [r4, r1]
ldr r4, _02257E30 ; =0x000003DE
mov r2, #0
_02257E0C:
ldrh r5, [r3]
lsl r5, r5, #4
add r5, r0, r5
ldrh r5, [r5, r4]
cmp r1, r5
beq _02257E20
add r2, r2, #1
add r3, r3, #2
cmp r2, #6
blo _02257E0C
_02257E20:
cmp r2, #6
bne _02257E2A
mov r0, #1
pop {r4, r5}
bx lr
_02257E2A:
mov r0, #0
pop {r4, r5}
bx lr
.balign 4, 0
_02257E30: .word 0x000003DE
_02257E34: .word ov12_0226CB58
thumb_func_end IsMoveEncored
thumb_func_start CheckLegalMeFirstMove
CheckLegalMeFirstMove: ; 0x02257E38
push {r4, r5}
lsl r1, r1, #4
add r4, r0, r1
ldr r1, _02257E6C ; =0x000003DE
ldr r3, _02257E70 ; =ov12_0226CB70
ldrh r1, [r4, r1]
ldr r4, _02257E6C ; =0x000003DE
mov r2, #0
_02257E48:
ldrh r5, [r3]
lsl r5, r5, #4
add r5, r0, r5
ldrh r5, [r5, r4]
cmp r1, r5
beq _02257E5C
add r2, r2, #1
add r3, r3, #2
cmp r2, #6
blo _02257E48
_02257E5C:
cmp r2, #6
bne _02257E66
mov r0, #1
pop {r4, r5}
bx lr
_02257E66:
mov r0, #0
pop {r4, r5}
bx lr
.balign 4, 0
_02257E6C: .word 0x000003DE
_02257E70: .word ov12_0226CB70
thumb_func_end CheckLegalMeFirstMove
thumb_func_start GetItemHoldEffect
GetItemHoldEffect: ; 0x02257E74
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, r1, #0
mov r1, #0
add r4, r2, #0
bl GetItemIndexMapping
add r1, r0, #0
ldr r0, _02257E94 ; =0x00002120
ldr r0, [r5, r0]
bl GetItemDataPtrFromArray
add r1, r4, #0
bl GetItemAttr_PreloadedItemData
pop {r3, r4, r5, pc}
.balign 4, 0
_02257E94: .word 0x00002120
thumb_func_end GetItemHoldEffect
thumb_func_start ov12_02257E98
ov12_02257E98: ; 0x02257E98
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r5, r2, #0
bl BattleSys_GetMaxBattlers
add r6, r0, #0
mov r4, #0
cmp r6, #0
ble _02257EBC
_02257EAA:
add r0, r7, #0
add r1, r4, #0
bl BattleSys_GetFieldSide
cmp r5, r0
beq _02257EBC
add r4, r4, #1
cmp r4, r6
blt _02257EAA
_02257EBC:
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov12_02257E98
thumb_func_start ov12_02257EC0
ov12_02257EC0: ; 0x02257EC0
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
str r0, [sp, #4]
add r5, r1, #0
bl BattleSys_GetMaxBattlers
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
sub r0, r0, #1
str r0, [sp, #0x18]
cmp r0, #0
ble _02257F46
_02257EDC:
ldr r0, [sp, #0x14]
add r7, r0, #1
ldr r0, [sp, #0x10]
cmp r7, r0
bge _02257F3A
ldr r0, [sp, #0x14]
add r0, r5, r0
str r0, [sp, #0xc]
_02257EEC:
ldr r1, [sp, #0xc]
ldr r0, _02257F4C ; =0x000021E8
ldrb r6, [r1, r0]
add r1, r5, r7
ldrb r4, [r1, r0]
lsl r0, r6, #4
str r1, [sp, #8]
add r1, r5, r0
ldr r0, _02257F50 ; =0x000021B4
ldr r0, [r1, r0]
lsl r1, r4, #4
add r2, r5, r1
ldr r1, _02257F50 ; =0x000021B4
ldr r1, [r2, r1]
cmp r0, r1
bne _02257F32
cmp r0, #1
beq _02257F14
mov r0, #1
b _02257F16
_02257F14:
mov r0, #0
_02257F16:
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
add r3, r4, #0
bl ov12_0224FC48
cmp r0, #0
beq _02257F32
ldr r1, [sp, #0xc]
ldr r0, _02257F4C ; =0x000021E8
strb r4, [r1, r0]
ldr r1, [sp, #8]
strb r6, [r1, r0]
_02257F32:
ldr r0, [sp, #0x10]
add r7, r7, #1
cmp r7, r0
blt _02257EEC
_02257F3A:
ldr r0, [sp, #0x14]
add r1, r0, #1
ldr r0, [sp, #0x18]
str r1, [sp, #0x14]
cmp r1, r0
blt _02257EDC
_02257F46:
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
_02257F4C: .word 0x000021E8
_02257F50: .word 0x000021B4
thumb_func_end ov12_02257EC0
thumb_func_start CheckStatusEffectsSubstitute
CheckStatusEffectsSubstitute: ; 0x02257F54
push {r4, r5}
mov r4, #0xc0
mul r4, r1
add r5, r0, r4
ldr r0, _02257F94 ; =0x00002DB0
mov r1, #1
ldr r4, [r5, r0]
lsl r1, r1, #0x18
mov r3, #0
tst r1, r4
bne _02257F74
add r0, #0x10
ldr r1, [r5, r0]
ldr r0, _02257F98 ; =0x200400C0
tst r0, r1
beq _02257F8C
_02257F74:
ldr r4, _02257F9C ; =ov12_0226CBDC
mov r1, #0
_02257F78:
ldr r0, [r4]
cmp r2, r0
bne _02257F82
mov r3, #1
b _02257F8E
_02257F82:
add r1, r1, #1
add r4, r4, #4
cmp r1, #0xa
blo _02257F78
b _02257F8E
_02257F8C:
mov r3, #1
_02257F8E:
add r0, r3, #0
pop {r4, r5}
bx lr
.balign 4, 0
_02257F94: .word 0x00002DB0
_02257F98: .word 0x200400C0
_02257F9C: .word ov12_0226CBDC
thumb_func_end CheckStatusEffectsSubstitute
thumb_func_start CheckItemEffectOnUTurn
CheckItemEffectOnUTurn: ; 0x02257FA0
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r1, #0
ldr r1, [r5, #0x64]
str r0, [sp]
add r0, r5, #0
add r4, r2, #0
mov r6, #0
bl GetBattlerHeldItemEffect
str r0, [sp, #0xc]
ldr r1, [r5, #0x64]
add r0, r5, #0
add r2, r6, #0
bl BattleSystem_GetHeldItemDamageBoost
str r0, [sp, #0x10]
ldr r1, [r5, #0x6c]
add r0, r5, #0
bl GetBattlerHeldItemEffect
add r7, r0, #0
ldr r1, [r5, #0x6c]
add r0, r5, #0
add r2, r6, #0
bl BattleSystem_GetHeldItemDamageBoost
str r0, [sp, #8]
ldr r0, [sp]
ldr r1, [r5, #0x64]
bl BattleSys_GetFieldSide
str r0, [sp, #4]
ldr r0, [sp, #0xc]
cmp r0, #0x58
bne _0225803C
ldr r0, _02258164 ; =0x0000213C
ldr r1, [r5, r0]
mov r0, #2
lsl r0, r0, #0xc
tst r0, r1
beq _0225803C
ldr r0, [r5, #0x64]
mov r1, #0x1c
mul r1, r0
add r2, r5, r1
mov r1, #0xbb
lsl r1, r1, #2
ldr r2, [r2, r1]
cmp r2, #0
beq _0225803C
ldr r1, [r5, #0x6c]
cmp r0, r1
beq _0225803C
mov r1, #0xc0
mul r1, r0
ldr r3, _02258168 ; =0x00002D8C
add r1, r5, r1
ldr r0, [r1, r3]
add r3, r3, #4
ldr r1, [r1, r3]
cmp r0, r1
bhs _0225803C
cmp r0, #0
beq _0225803C
ldr r1, [sp, #0x10]
neg r0, r2
bl DamageDivide
ldr r1, _0225816C ; =0x0000215C
mov r6, #1
str r0, [r5, r1]
mov r0, #0x46
ldr r1, [r5, #0x64]
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #0xd5
str r0, [r4]
_0225803C:
ldr r0, [sp, #0xc]
cmp r0, #0x62
bne _0225809E
ldr r1, [r5, #0x64]
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x62
beq _0225809E
ldr r0, _02258164 ; =0x0000213C
ldr r1, [r5, r0]
mov r0, #2
lsl r0, r0, #0xc
tst r0, r1
beq _0225809E
ldr r0, _02258170 ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
mov r0, #0x3e
lsl r0, r0, #4
ldrb r0, [r1, r0]
cmp r0, #2
beq _0225809E
ldr r1, [r5, #0x64]
mov r0, #0xc0
add r2, r1, #0
mul r2, r0
ldr r3, _02258168 ; =0x00002D8C
add r2, r5, r2
ldr r1, [r2, r3]
cmp r1, #0
beq _0225809E
add r1, r3, #4
ldr r1, [r2, r1]
sub r0, #0xc1
mul r0, r1
mov r1, #0xa
bl DamageDivide
ldr r1, _0225816C ; =0x0000215C
mov r6, #1
str r0, [r5, r1]
mov r0, #0x46
ldr r1, [r5, #0x64]
lsl r0, r0, #2
str r1, [r5, r0]
mov r0, #0xd6
str r0, [r4]
_0225809E:
cmp r7, #0x2e
bne _022580F2
ldr r1, [r5, #0x64]
mov r0, #0xc0
mul r0, r1
add r2, r5, r0
ldr r0, _02258168 ; =0x00002D8C
ldr r0, [r2, r0]
cmp r0, #0
beq _022580F2
add r0, r5, #0
bl GetBattlerAbility
cmp r0, #0x62
beq _022580F2
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r1, r5, r0
mov r0, #0xb6
lsl r0, r0, #2
ldr r0, [r1, r0]
cmp r0, #0
beq _022580F2
ldr r0, [r5, #0x64]
mov r1, #0xc0
add r2, r0, #0
mul r2, r1
ldr r0, _02258174 ; =0x00002D90
add r2, r5, r2
ldr r2, [r2, r0]
sub r1, #0xc1
add r0, r2, #0
mul r0, r1
ldr r1, [sp, #8]
bl DamageDivide
ldr r1, _0225816C ; =0x0000215C
mov r6, #1
str r0, [r5, r1]
lsr r0, r1, #5
str r0, [r4]
_022580F2:
cmp r7, #0x74
bne _0225815E
ldr r0, [r5, #0x64]
mov r1, #0xc0
mul r1, r0
add r3, r5, r1
ldr r1, _02258168 ; =0x00002D8C
ldr r2, [r3, r1]
cmp r2, #0
beq _0225815E
add r1, #0x2c
ldrh r1, [r3, r1]
cmp r1, #0
bne _0225815E
add r1, r5, r0
ldr r0, _02258178 ; =0x0000219C
ldrb r0, [r1, r0]
bl MaskOfFlagNo
ldr r1, [sp, #4]
lsl r1, r1, #3
add r2, r5, r1
mov r1, #0x71
lsl r1, r1, #2
ldr r1, [r2, r1]
lsl r1, r1, #3
lsr r1, r1, #0x1a
tst r0, r1
bne _0225815E
ldr r1, [r5, #0x6c]
mov r0, #0x1c
mul r0, r1
add r2, r5, r0
mov r0, #0xb6
lsl r0, r0, #2
ldr r1, [r2, r0]
cmp r1, #0
bne _02258146
add r0, #8
ldr r0, [r2, r0]
cmp r0, #0
beq _0225815E
_02258146:
ldr r0, _02258170 ; =0x00003044
ldr r0, [r5, r0]
lsl r0, r0, #4
add r1, r5, r0
ldr r0, _0225817C ; =0x000003E9
ldrb r1, [r1, r0]
mov r0, #1
tst r1, r0
beq _0225815E
mov r1, #0xd8
str r1, [r4]
add r6, r0, #0
_0225815E:
add r0, r6, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02258164: .word 0x0000213C
_02258168: .word 0x00002D8C
_0225816C: .word 0x0000215C
_02258170: .word 0x00003044
_02258174: .word 0x00002D90
_02258178: .word 0x0000219C
_0225817C: .word 0x000003E9
thumb_func_end CheckItemEffectOnUTurn
thumb_func_start CheckIgnorePressure
CheckIgnorePressure: ; 0x02258180
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
cmp r2, #0xff
beq _022581B0
add r1, r2, #0
bl GetBattlerAbility
cmp r0, #0x2e
bne _022581B0
ldr r0, _022581B4 ; =0x00002D6C
add r1, r5, r0
mov r0, #0xc0
mul r0, r4
add r0, r1, r0
lsl r1, r4, #1
add r2, r5, r1
ldr r1, _022581B8 ; =0x000030BC
ldrh r2, [r2, r1]
ldrb r1, [r0, r2]
cmp r1, #0
beq _022581B0
sub r1, r1, #1
strb r1, [r0, r2]
_022581B0:
pop {r3, r4, r5, pc}
nop
_022581B4: .word 0x00002D6C
_022581B8: .word 0x000030BC
thumb_func_end CheckIgnorePressure
thumb_func_start ov12_022581BC
ov12_022581BC: ; 0x022581BC
push {r4, lr}
add r4, r1, #0
bl ov12_0223BFEC
cmp r0, #0
beq _022581D0
mov r0, #0x2b
str r0, [r4, #8]
mov r0, #1
pop {r4, pc}
_022581D0:
mov r0, #0
pop {r4, pc}
thumb_func_end ov12_022581BC
thumb_func_start ov12_022581D4
ov12_022581D4: ; 0x022581D4
push {r4, lr}
add r4, r1, #0
cmp r2, #0xe
bhi _02258294
add r1, r2, r2
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_022581E8: ; jump table
.short _02258206 - _022581E8 - 2 ; case 0
.short _02258218 - _022581E8 - 2 ; case 1
.short _0225822E - _022581E8 - 2 ; case 2
.short _02258236 - _022581E8 - 2 ; case 3
.short _0225823E - _022581E8 - 2 ; case 4
.short _02258244 - _022581E8 - 2 ; case 5
.short _0225824A - _022581E8 - 2 ; case 6
.short _02258256 - _022581E8 - 2 ; case 7
.short _02258262 - _022581E8 - 2 ; case 8
.short _0225826C - _022581E8 - 2 ; case 9
.short _02258274 - _022581E8 - 2 ; case 10
.short _0225827A - _022581E8 - 2 ; case 11
.short _02258282 - _022581E8 - 2 ; case 12
.short _0225828C - _022581E8 - 2 ; case 13
.short _02258290 - _022581E8 - 2 ; case 14
_02258206:
add r1, r3, #0
bl BattleSys_GetFieldSide
lsl r0, r0, #2
add r1, r4, r0
mov r0, #0x6f
lsl r0, r0, #2
ldr r0, [r1, r0]
pop {r4, pc}
_02258218:
add r1, r3, #0
bl BattleSys_GetFieldSide
lsl r0, r0, #3
add r1, r4, r0
mov r0, #0x71
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r0, r0, #0x11
lsr r0, r0, #0x1d
pop {r4, pc}
_0225822E:
ldr r0, _0225829C ; =0x0000219C
add r1, r4, r3
ldrb r0, [r1, r0]
pop {r4, pc}
_02258236:
mov r0, #0x15
lsl r0, r0, #4
ldr r0, [r4, r0]
pop {r4, pc}
_0225823E:
ldr r0, _022582A0 ; =0x00003109
ldrb r0, [r4, r0]
pop {r4, pc}
_02258244:
ldr r0, _022582A4 ; =0x0000311D
ldrb r0, [r4, r0]
pop {r4, pc}
_0225824A:
lsl r0, r3, #2
add r1, r4, r0
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r1, r0]
pop {r4, pc}
_02258256:
lsl r0, r3, #2
add r1, r4, r0
mov r0, #0x59
lsl r0, r0, #2
ldr r0, [r1, r0]
pop {r4, pc}
_02258262:
lsl r0, r3, #4
add r1, r4, r0
ldr r0, _022582A8 ; =0x000021A8
ldr r0, [r1, r0]
pop {r4, pc}
_0225826C:
mov r0, #0x3d
lsl r0, r0, #4
ldrb r0, [r4, r0]
pop {r4, pc}
_02258274:
ldr r0, _022582AC ; =0x00003108
ldrb r0, [r4, r0]
pop {r4, pc}
_0225827A:
ldr r0, _022582B0 ; =0x000003DA
add r1, r4, r3
ldrb r0, [r1, r0]
pop {r4, pc}
_02258282:
lsl r0, r3, #4
add r1, r4, r0
ldr r0, _022582B4 ; =0x000021B0
ldr r0, [r1, r0]
pop {r4, pc}
_0225828C:
ldr r0, [r4, #8]
pop {r4, pc}
_02258290:
ldr r0, [r4, #0xc]
pop {r4, pc}
_02258294:
bl GF_AssertFail
mov r0, #0
pop {r4, pc}
.balign 4, 0
_0225829C: .word 0x0000219C
_022582A0: .word 0x00003109
_022582A4: .word 0x0000311D
_022582A8: .word 0x000021A8
_022582AC: .word 0x00003108
_022582B0: .word 0x000003DA
_022582B4: .word 0x000021B0
thumb_func_end ov12_022581D4
thumb_func_start ov12_022582B8
ov12_022582B8: ; 0x022582B8
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r4, [sp, #0x10]
cmp r2, #0xb
bhi _02258336
add r1, r2, r2
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_022582CE: ; jump table
.short _022582E6 - _022582CE - 2 ; case 0
.short _022582F8 - _022582CE - 2 ; case 1
.short _02258316 - _022582CE - 2 ; case 2
.short _0225831E - _022582CE - 2 ; case 3
.short _02258336 - _022582CE - 2 ; case 4
.short _02258336 - _022582CE - 2 ; case 5
.short _02258336 - _022582CE - 2 ; case 6
.short _02258336 - _022582CE - 2 ; case 7
.short _02258336 - _022582CE - 2 ; case 8
.short _02258326 - _022582CE - 2 ; case 9
.short _02258336 - _022582CE - 2 ; case 10
.short _0225832E - _022582CE - 2 ; case 11
_022582E6:
add r1, r3, #0
bl BattleSys_GetFieldSide
lsl r0, r0, #2
add r1, r5, r0
mov r0, #0x6f
lsl r0, r0, #2
str r4, [r1, r0]
pop {r3, r4, r5, pc}
_022582F8:
add r1, r3, #0
bl BattleSys_GetFieldSide
mov r1, #0x71
lsl r1, r1, #2
add r1, r5, r1
lsl r0, r0, #3
ldr r3, [r1, r0]
ldr r2, _0225833C ; =0xFFFF8FFF
and r3, r2
lsl r2, r4, #0x1d
lsr r2, r2, #0x11
orr r2, r3
str r2, [r1, r0]
pop {r3, r4, r5, pc}
_02258316:
ldr r0, _02258340 ; =0x0000219C
add r1, r5, r3
strb r4, [r1, r0]
pop {r3, r4, r5, pc}
_0225831E:
mov r0, #0x15
lsl r0, r0, #4
str r4, [r5, r0]
pop {r3, r4, r5, pc}
_02258326:
mov r0, #0x3d
lsl r0, r0, #4
strb r4, [r5, r0]
pop {r3, r4, r5, pc}
_0225832E:
ldr r0, _02258344 ; =0x000003DA
add r1, r5, r3
strb r4, [r1, r0]
pop {r3, r4, r5, pc}
_02258336:
bl GF_AssertFail
pop {r3, r4, r5, pc}
.balign 4, 0
_0225833C: .word 0xFFFF8FFF
_02258340: .word 0x0000219C
_02258344: .word 0x000003DA
thumb_func_end ov12_022582B8
thumb_func_start ov12_02258348
ov12_02258348: ; 0x02258348
push {r4, lr}
add r3, r0, #0
add r3, #0x88
str r1, [r3]
add r3, r0, #0
ldr r1, _022583AC ; =0x007FFFFF
add r4, r2, #0
and r4, r1
add r3, #0x8c
str r4, [r3]
lsl r1, r1, #0x17
add r3, r2, #0
and r3, r1
add r1, r0, #0
add r1, #0x90
str r3, [r1]
mov r3, #1
lsl r3, r3, #0x1e
add r1, r2, #0
tst r1, r3
beq _0225837A
ldr r1, [r0, #0x64]
add r0, #0x94
str r1, [r0]
b _0225839A
_0225837A:
lsl r1, r3, #1
tst r1, r2
beq _02258388
ldr r1, [r0, #0x6c]
add r0, #0x94
str r1, [r0]
b _0225839A
_02258388:
lsr r1, r3, #1
tst r1, r2
bne _02258394
lsr r1, r3, #2
tst r1, r2
beq _0225839A
_02258394:
mov r1, #0
add r0, #0x94
str r1, [r0]
_0225839A:
cmp r4, #0x91
blo _022583A2
bl GF_AssertFail
_022583A2:
ldr r0, _022583B0 ; =ov12_0226CDCC
lsl r1, r4, #2
ldr r0, [r0, r1]
pop {r4, pc}
nop
_022583AC: .word 0x007FFFFF
_022583B0: .word ov12_0226CDCC
thumb_func_end ov12_02258348
thumb_func_start ov12_022583B4
ov12_022583B4: ; 0x022583B4
push {r3, r4, r5, lr}
ldr r1, _0225843C ; =0x0000213C
add r5, r2, #0
ldr r2, [r0, r1]
mov r0, #2
lsl r0, r0, #0xa
add r1, r2, #0
ldr r4, [sp, #0x14]
tst r1, r0
bne _022583DE
lsl r0, r0, #4
tst r0, r2
bne _022583DE
cmp r3, #0
beq _022583DE
add r0, r3, #0
mul r0, r5
mov r1, #0xa
bl DamageDivide
add r3, r0, #0
_022583DE:
cmp r5, #0
beq _022583EC
cmp r5, #5
beq _022583FE
cmp r5, #0x14
beq _0225841C
b _02258438
_022583EC:
ldr r1, [r4]
mov r0, #8
orr r1, r0
mov r0, #4
bic r1, r0
mov r0, #2
bic r1, r0
str r1, [r4]
b _02258438
_022583FE:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _02258438
ldr r1, [r4]
mov r0, #2
tst r0, r1
beq _02258414
mov r0, #2
bic r1, r0
str r1, [r4]
b _02258438
_02258414:
mov r0, #4
orr r0, r1
str r0, [r4]
b _02258438
_0225841C:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _02258438
ldr r1, [r4]
mov r0, #4
tst r0, r1
beq _02258432
mov r0, #4
bic r1, r0
str r1, [r4]
b _02258438
_02258432:
mov r0, #2
orr r0, r1
str r0, [r4]
_02258438:
add r0, r3, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_0225843C: .word 0x0000213C
thumb_func_end ov12_022583B4
thumb_func_start ov12_02258440
ov12_02258440: ; 0x02258440
lsl r1, r1, #4
add r2, r0, r1
ldr r1, _022584A4 ; =0x000003DE
ldrh r3, [r2, r1]
cmp r3, #0x9b
bgt _02258472
cmp r3, #0x97
blt _02258458
beq _02258492
cmp r3, #0x9b
beq _02258492
b _0225849E
_02258458:
cmp r3, #0x27
bgt _02258464
bge _02258492
cmp r3, #0x1a
beq _02258492
b _0225849E
_02258464:
cmp r3, #0x4b
bgt _0225846C
beq _02258492
b _0225849E
_0225846C:
cmp r3, #0x91
beq _02258492
b _0225849E
_02258472:
mov r2, #1
lsl r2, r2, #8
cmp r3, r2
bgt _02258482
bge _02258492
cmp r3, #0xff
beq _02258492
b _0225849E
_02258482:
add r1, r2, #7
cmp r3, r1
bgt _0225848C
beq _02258492
b _0225849E
_0225848C:
add r2, #0x11
cmp r3, r2
bne _0225849E
_02258492:
ldr r1, _022584A8 ; =0x0000213C
ldr r1, [r0, r1]
mov r0, #2
lsl r0, r0, #8
and r0, r1
bx lr
_0225849E:
mov r0, #1
bx lr
nop
_022584A4: .word 0x000003DE
_022584A8: .word 0x0000213C
thumb_func_end ov12_02258440
thumb_func_start ov12_022584AC
ov12_022584AC: ; 0x022584AC
push {r4, r5, r6, lr}
add r5, r0, #0
add r6, r1, #0
cmp r2, #0x1b
bne _022584C2
mov r0, #0xc0
mul r0, r6
add r1, r5, r0
ldr r0, _02258578 ; =0x00002D64
ldrb r4, [r1, r0]
b _022584D6
_022584C2:
cmp r2, #0x1c
bne _022584D2
mov r0, #0xc0
mul r0, r6
add r1, r5, r0
ldr r0, _0225857C ; =0x00002D65
ldrb r4, [r1, r0]
b _022584D6
_022584D2:
bl GF_AssertFail
_022584D6:
mov r0, #0xc0
mul r0, r6
mov r2, #0xb5
add r1, r5, r0
lsl r2, r2, #6
ldrh r3, [r1, r2]
ldr r0, _02258580 ; =0x000001ED
cmp r3, r0
bne _02258572
add r0, r2, #0
add r0, #0x27
ldrb r0, [r1, r0]
cmp r0, #0x79
bne _02258572
add r2, #0x78
ldrh r1, [r1, r2]
add r0, r5, #0
mov r2, #1
bl GetItemHoldEffect
sub r0, #0x7e
cmp r0, #0xf
bhi _02258570
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02258510: ; jump table
.short _02258530 - _02258510 - 2 ; case 0
.short _02258534 - _02258510 - 2 ; case 1
.short _02258538 - _02258510 - 2 ; case 2
.short _0225853C - _02258510 - 2 ; case 3
.short _02258540 - _02258510 - 2 ; case 4
.short _02258544 - _02258510 - 2 ; case 5
.short _02258548 - _02258510 - 2 ; case 6
.short _0225854C - _02258510 - 2 ; case 7
.short _02258550 - _02258510 - 2 ; case 8
.short _02258554 - _02258510 - 2 ; case 9
.short _02258558 - _02258510 - 2 ; case 10
.short _0225855C - _02258510 - 2 ; case 11
.short _02258560 - _02258510 - 2 ; case 12
.short _02258564 - _02258510 - 2 ; case 13
.short _02258568 - _02258510 - 2 ; case 14
.short _0225856C - _02258510 - 2 ; case 15
_02258530:
mov r4, #0xa
b _02258572
_02258534:
mov r4, #0xb
b _02258572
_02258538:
mov r4, #0xd
b _02258572
_0225853C:
mov r4, #0xc
b _02258572
_02258540:
mov r4, #0xf
b _02258572
_02258544:
mov r4, #1
b _02258572
_02258548:
mov r4, #3
b _02258572
_0225854C:
mov r4, #4
b _02258572
_02258550:
mov r4, #2
b _02258572
_02258554:
mov r4, #0xe
b _02258572
_02258558:
mov r4, #6
b _02258572
_0225855C:
mov r4, #5
b _02258572
_02258560:
mov r4, #7
b _02258572
_02258564:
mov r4, #0x10
b _02258572
_02258568:
mov r4, #0x11
b _02258572
_0225856C:
mov r4, #8
b _02258572
_02258570:
mov r4, #0
_02258572:
add r0, r4, #0
pop {r4, r5, r6, pc}
nop
_02258578: .word 0x00002D64
_0225857C: .word 0x00002D65
_02258580: .word 0x000001ED
thumb_func_end ov12_022584AC
thumb_func_start ov12_02258584
ov12_02258584: ; 0x02258584
lsl r1, r1, #3
add r3, r0, r1
mov r2, #0
mov r0, #0x37
add r1, r2, #0
lsl r0, r0, #4
_02258590:
add r2, r2, #1
strh r1, [r3, r0]
add r3, r3, #2
cmp r2, #4
blt _02258590
bx lr
thumb_func_end ov12_02258584
thumb_func_start ov12_0225859C
ov12_0225859C: ; 0x0225859C
add r1, r0, r1
mov r0, #0x39
mov r2, #0
lsl r0, r0, #4
strb r2, [r1, r0]
bx lr
thumb_func_end ov12_0225859C
thumb_func_start ov12_022585A8
ov12_022585A8: ; 0x022585A8
lsl r1, r1, #1
add r1, r0, r1
mov r0, #0xe5
mov r2, #0
lsl r0, r0, #2
strh r2, [r1, r0]
bx lr
.balign 4, 0
thumb_func_end ov12_022585A8
thumb_func_start ov12_022585B8
ov12_022585B8: ; 0x022585B8
push {r3, r4, r5, r6, r7, lr}
add r5, r2, #0
mov r2, #0xff
mov ip, r2
mov r2, #0xc0
add r7, r5, #0
mul r7, r2
ldr r2, _02258654 ; =0x00002D67
add r6, r1, r7
add r4, r3, #0
ldrb r3, [r6, r2]
cmp r3, #0x3b
beq _02258614
cmp r3, #0x24
beq _02258614
cmp r3, #0x79
beq _02258614
add r2, #0x25
ldr r2, [r6, r2]
cmp r2, #0
beq _02258614
mov r2, #0xc0
mul r2, r4
add r6, r1, r2
ldr r2, _02258654 ; =0x00002D67
add r2, #0x25
ldr r2, [r6, r2]
cmp r2, #0
beq _02258614
ldr r2, _02258654 ; =0x00002D67
ldrb r2, [r6, r2]
cmp r2, #0x3b
beq _02258614
cmp r2, #0x24
beq _02258614
cmp r2, #0x79
beq _02258614
bl BattleSys_Random
mov r1, #1
tst r0, r1
beq _02258610
mov ip, r4
b _0225864E
_02258610:
mov ip, r5
b _0225864E
_02258614:
cmp r3, #0x3b
beq _0225862E
cmp r3, #0x24
beq _0225862E
ldr r0, _02258658 ; =0x00002D8C
add r2, r1, r7
ldr r0, [r2, r0]
cmp r0, #0
beq _0225862E
cmp r3, #0x79
beq _0225862E
mov ip, r5
b _0225864E
_0225862E:
mov r0, #0xc0
mul r0, r4
add r2, r1, r0
ldr r0, _02258654 ; =0x00002D67
ldrb r1, [r2, r0]
cmp r1, #0x3b
beq _0225864E
cmp r1, #0x24
beq _0225864E
add r0, #0x25
ldr r0, [r2, r0]
cmp r0, #0
beq _0225864E
cmp r1, #0x79
beq _0225864E
mov ip, r4
_0225864E:
mov r0, ip
pop {r3, r4, r5, r6, r7, pc}
nop
_02258654: .word 0x00002D67
_02258658: .word 0x00002D8C
thumb_func_end ov12_022585B8
thumb_func_start ov12_0225865C
ov12_0225865C: ; 0x0225865C
lsl r1, r1, #4
add r1, r0, r1
ldr r0, _02258680 ; =0x000003DE
ldr r3, _02258684 ; =ov12_0226CB64
ldrh r1, [r1, r0]
mov r2, #0
_02258668:
ldrh r0, [r3]
cmp r0, r1
bne _02258672
mov r0, #1
bx lr
_02258672:
add r2, r2, #1
add r3, r3, #2
cmp r2, #6
blo _02258668
mov r0, #0
bx lr
nop
_02258680: .word 0x000003DE
_02258684: .word ov12_0226CB64
thumb_func_end ov12_0225865C
thumb_func_start ov12_02258688
ov12_02258688: ; 0x02258688
push {r3, r4, r5, r6, r7, lr}
add r6, r2, #0
ldr r2, _022587F4 ; =0x00000137
add r7, r0, #0
add r4, r1, #0
cmp r3, r2
bgt _022586A0
blt _0225869A
b _0225879C
_0225869A:
cmp r3, #0xed
beq _02258742
b _022587EE
_022586A0:
add r0, r2, #0
add r0, #0x34
cmp r3, r0
bgt _022586B0
add r2, #0x34
cmp r3, r2
beq _022586B8
b _022587EE
_022586B0:
add r2, #0x8a
cmp r3, r2
beq _022586C4
b _022587EE
_022586B8:
add r0, r4, #0
add r1, r6, #0
bl GetNaturalGiftType
add r5, r0, #0
b _022587F0
_022586C4:
add r0, r4, #0
add r1, r6, #0
bl GetBattlerHeldItemEffect
sub r0, #0x7e
cmp r0, #0xf
bhi _0225873E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_022586DE: ; jump table
.short _0225871E - _022586DE - 2 ; case 0
.short _02258722 - _022586DE - 2 ; case 1
.short _0225872A - _022586DE - 2 ; case 2
.short _02258726 - _022586DE - 2 ; case 3
.short _02258732 - _022586DE - 2 ; case 4
.short _022586FE - _022586DE - 2 ; case 5
.short _02258706 - _022586DE - 2 ; case 6
.short _0225870A - _022586DE - 2 ; case 7
.short _02258702 - _022586DE - 2 ; case 8
.short _0225872E - _022586DE - 2 ; case 9
.short _02258712 - _022586DE - 2 ; case 10
.short _0225870E - _022586DE - 2 ; case 11
.short _02258716 - _022586DE - 2 ; case 12
.short _02258736 - _022586DE - 2 ; case 13
.short _0225873A - _022586DE - 2 ; case 14
.short _0225871A - _022586DE - 2 ; case 15
_022586FE:
mov r5, #1
b _022587F0
_02258702:
mov r5, #2
b _022587F0
_02258706:
mov r5, #3
b _022587F0
_0225870A:
mov r5, #4
b _022587F0
_0225870E:
mov r5, #5
b _022587F0
_02258712:
mov r5, #6
b _022587F0
_02258716:
mov r5, #7
b _022587F0
_0225871A:
mov r5, #8
b _022587F0
_0225871E:
mov r5, #0xa
b _022587F0
_02258722:
mov r5, #0xb
b _022587F0
_02258726:
mov r5, #0xc
b _022587F0
_0225872A:
mov r5, #0xd
b _022587F0
_0225872E:
mov r5, #0xe
b _022587F0
_02258732:
mov r5, #0xf
b _022587F0
_02258736:
mov r5, #0x10
b _022587F0
_0225873A:
mov r5, #0x11
b _022587F0
_0225873E:
mov r5, #0
b _022587F0
_02258742:
ldr r0, _022587F8 ; =0x00002D54
add r1, r4, r0
mov r0, #0xc0
mul r0, r6
ldr r4, [r1, r0]
lsl r0, r4, #2
lsr r0, r0, #0x1b
lsl r0, r0, #0x1f
lsr r5, r0, #0x1a
lsl r0, r4, #7
lsr r0, r0, #0x1b
lsl r0, r0, #0x1f
lsr r3, r0, #0x1b
lsl r0, r4, #0xc
lsr r0, r0, #0x1b
lsl r0, r0, #0x1f
lsr r2, r0, #0x1c
lsl r0, r4, #0x11
lsr r0, r0, #0x1b
lsl r0, r0, #0x1f
lsr r1, r0, #0x1d
lsl r0, r4, #0x1b
lsl r4, r4, #0x16
lsr r4, r4, #0x1b
lsr r6, r0, #0x1b
mov r0, #1
lsl r4, r4, #0x1f
and r0, r6
lsr r4, r4, #0x1e
orr r0, r4
orr r0, r1
orr r0, r2
orr r0, r3
add r1, r5, #0
orr r1, r0
mov r0, #0xf
mul r0, r1
mov r1, #0x3f
bl _s32_div_f
add r5, r0, #1
cmp r5, #9
blt _022587F0
add r5, r5, #1
b _022587F0
_0225879C:
mov r2, #0xd
str r2, [sp]
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _022587F0
mov r0, #0x4c
str r0, [sp]
add r0, r7, #0
add r1, r4, #0
mov r2, #8
mov r3, #0
bl CheckAbilityActive
cmp r0, #0
bne _022587F0
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
ldr r1, _022587FC ; =0x000080FF
tst r1, r0
beq _022587F0
mov r1, #3
tst r1, r0
beq _022587D4
mov r5, #0xb
_022587D4:
mov r1, #0xc
tst r1, r0
beq _022587DC
mov r5, #5
_022587DC:
mov r1, #0x30
tst r1, r0
beq _022587E4
mov r5, #0xa
_022587E4:
mov r1, #0xc0
tst r0, r1
beq _022587F0
mov r5, #0xf
b _022587F0
_022587EE:
mov r5, #0
_022587F0:
add r0, r5, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022587F4: .word 0x00000137
_022587F8: .word 0x00002D54
_022587FC: .word 0x000080FF
thumb_func_end ov12_02258688
.rodata
ov12_0226CB48: ; 0x0226CB48
.byte 0x10, 0x08, 0x04, 0x03, 0x02, 0x00, 0x00, 0x00
ov12_0226CB50: ; 0x0226CB50
.byte 0x32, 0x6A, 0x7A, 0x75, 0x76, 0x79, 0x77, 0x78
ov12_0226CB58: ; 0x0226CB58
.byte 0x90, 0x00, 0x66, 0x00, 0xA6, 0x00, 0x77, 0x00
.byte 0xE3, 0x00, 0xA5, 0x00
ov12_0226CB64: ; 0x0226CB64
.byte 0x29, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x90, 0x00, 0xE3, 0x00
ov12_0226CB70: ; 0x0226CB70
.byte 0x44, 0x00, 0xF3, 0x00, 0xA8, 0x00, 0x57, 0x01, 0x08, 0x01, 0xC0, 0x01
ov12_0226CB7C: ; 0x0226CB7C
.byte 0x13, 0x00, 0x54, 0x01
.byte 0x1A, 0x00, 0x88, 0x00, 0x96, 0x00, 0x89, 0x01
ov12_0226CB88: ; 0x0226CB88
.byte 0x0A
ov12_0226CB89: ; 0x0226CB89
.byte 0x28, 0x0A, 0x23, 0x0A, 0x1E, 0x0A, 0x19
.byte 0x0A, 0x14, 0x0A, 0x0F, 0x0A, 0x0A, 0x0F, 0x0A, 0x14, 0x0A, 0x19, 0x0A, 0x1E, 0x0A, 0x23, 0x0A
.byte 0x28, 0x0A
ov12_0226CBA2: ; 0x0226CBA2
.byte 0x69, 0x00, 0x87, 0x00, 0x9C, 0x00, 0xD0, 0x00, 0xEA, 0x00, 0xEB, 0x00, 0xEC, 0x00
.byte 0x00, 0x01, 0xC8, 0x01, 0x2F, 0x01, 0x63, 0x01, 0xCD, 0x01, 0x69, 0x01, 0x11, 0x01
ov12_0226CBBE: ; 0x0226CBBE
.byte 0x08, 0x00
.byte 0x07, 0x00, 0x09, 0x00, 0xB7, 0x00, 0x08, 0x01, 0x92, 0x00, 0xDF, 0x00, 0x67, 0x01, 0x05, 0x00
.byte 0x04, 0x00, 0x35, 0x01, 0x45, 0x01, 0x99, 0x01, 0xA2, 0x01, 0x47, 0x01
ov12_0226CBDC: ; 0x0226CBDC
.byte 0x0F, 0x00, 0x00, 0x00
.byte 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00
.byte 0x1A, 0x00, 0x00, 0x00
ov12_0226CC04: ; 0x0226CC04
.byte 0x76, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0x66, 0x00, 0xC0, 0x01, 0xFE, 0xFF
.byte 0xD6, 0x00, 0x12, 0x01, 0x77, 0x00, 0x44, 0x00, 0xF3, 0x00, 0xB6, 0x00, 0xC5, 0x00, 0xCB, 0x00
.byte 0xC2, 0x00, 0xA8, 0x00, 0x0A, 0x01, 0x21, 0x01, 0x0E, 0x01, 0x57, 0x01, 0x0F, 0x01, 0x08, 0x01
.byte 0x6C, 0x01, 0x7F, 0x01, 0x7E, 0x01, 0x9F, 0x01, 0xFF, 0xFF
ov12_0226CC3A: ; 0x0226CC3A
.byte 0x39, 0x06, 0x44, 0x08, 0x48, 0x04
.byte 0x49, 0x05, 0x4A, 0x0C, 0x4B, 0x11, 0x4C, 0x01, 0x4D, 0x0D, 0x4E, 0x0B, 0x4F, 0x02, 0x50, 0x03
.byte 0x51, 0x0F, 0x52, 0x07, 0x53, 0x0E, 0x54, 0x0A, 0x55, 0x10, 0x56, 0x00, 0x7E, 0x0A, 0x7F, 0x0B
.byte 0x80, 0x0D, 0x81, 0x0C, 0x82, 0x0F, 0x83, 0x01, 0x84, 0x03, 0x85, 0x04, 0x86, 0x02, 0x87, 0x0E
.byte 0x88, 0x06, 0x89, 0x05, 0x8A, 0x07, 0x8B, 0x10, 0x8C, 0x11, 0x8D, 0x08
; format: attacking type, defending type, damage multiplier
sTypeEffectiveness: ; 0x0226CC7C
.byte TYPE_NORMAL, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_NORMAL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIRE, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIRE, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIRE, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FIRE, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FIRE, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FIRE, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIRE, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIRE, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_WATER, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_WATER, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_WATER, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_WATER, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_WATER, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_WATER, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ELECTRIC, TYPE_WATER, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ELECTRIC, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ELECTRIC, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ELECTRIC, TYPE_GROUND, TYPE_MUL_NO_EFFECT
.byte TYPE_ELECTRIC, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ELECTRIC, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GRASS, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GRASS, TYPE_WATER, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_GRASS, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GRASS, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GRASS, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_GRASS, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GRASS, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GRASS, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_GRASS, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GRASS, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ICE, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ICE, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ICE, TYPE_ICE, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ICE, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ICE, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ICE, TYPE_DRAGON, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ICE, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ICE, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_NORMAL, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_PSYCHIC, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_DARK, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FIGHTING, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_POISON, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_POISON, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_POISON, TYPE_GROUND, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_POISON, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_POISON, TYPE_GHOST, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_POISON, TYPE_STEEL, TYPE_MUL_NO_EFFECT
.byte TYPE_GROUND, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_GROUND, TYPE_ELECTRIC, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_GROUND, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GROUND, TYPE_POISON, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_GROUND, TYPE_FLYING, TYPE_MUL_NO_EFFECT
.byte TYPE_GROUND, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GROUND, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_GROUND, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FLYING, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FLYING, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FLYING, TYPE_FIGHTING, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FLYING, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_FLYING, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FLYING, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_PSYCHIC, TYPE_FIGHTING, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_PSYCHIC, TYPE_POISON, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_PSYCHIC, TYPE_PSYCHIC, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_PSYCHIC, TYPE_DARK, TYPE_MUL_NO_EFFECT
.byte TYPE_PSYCHIC, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_BUG, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_BUG, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_BUG, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_BUG, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_BUG, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_BUG, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_BUG, TYPE_GHOST, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_BUG, TYPE_DARK, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_BUG, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ROCK, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ROCK, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ROCK, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ROCK, TYPE_GROUND, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_ROCK, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ROCK, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_ROCK, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GHOST, TYPE_NORMAL, TYPE_MUL_NO_EFFECT
.byte TYPE_GHOST, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_GHOST, TYPE_DARK, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GHOST, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_GHOST, TYPE_GHOST, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_DRAGON, TYPE_DRAGON, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_DRAGON, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_DARK, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_DARK, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_DARK, TYPE_GHOST, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_DARK, TYPE_DARK, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_DARK, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_STEEL, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_STEEL, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_STEEL, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_STEEL, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_STEEL, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE
.byte TYPE_STEEL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE
.byte TYPE_FORESIGHT, TYPE_FORESIGHT, TYPE_MUL_NO_EFFECT
.byte TYPE_NORMAL, TYPE_GHOST, TYPE_MUL_NO_EFFECT
.byte TYPE_FIGHTING, TYPE_GHOST, TYPE_MUL_NO_EFFECT
.byte TYPE_ENDTABLE, TYPE_ENDTABLE, TYPE_MUL_NO_EFFECT
ov12_0226CDCC: ; 0x0226CDCC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x12, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00
.byte 0x1F, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
.byte 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00
.byte 0x3A, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x40, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00
.byte 0x5D, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00
.byte 0x8A, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x2C, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00
.byte 0x94, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00
.byte 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00
.byte 0x2D, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00
.byte 0x36, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00
.byte 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00
.byte 0x4F, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00
.byte 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00
.byte 0x5B, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x61, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00
.byte 0x67, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00
.byte 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00
.byte 0x7A, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00
.byte 0x7F, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00
.byte 0x84, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00
.byte 0x8D, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00
.byte 0x9B, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00
.byte 0xA0, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00
.byte 0xA4, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00
.byte 0xA8, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00
.byte 0xAF, 0x00, 0x00, 0x00, 0xDA, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00
.byte 0xE2, 0x00, 0x00, 0x00, 0xF6, 0x00, 0x00, 0x00, 0xF7, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00
.byte 0xF9, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00
.data
ov12_0226EC20: ; 0x0226EC20
.byte 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x67, 0x00, 0xAD, 0x00, 0xFD, 0x00, 0x3F, 0x01
.byte 0x40, 0x01, 0x30, 0x01, 0x95, 0x01, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
; 0x0226EC40