pokefirered/asm/battle_script_commands.s
2019-08-04 15:11:02 -07:00

33197 lines
591 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start atk00_attackcanceler
atk00_attackcanceler: @ 801D760
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
ldr r0, _0801D77C @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0
beq _0801D784
ldr r1, _0801D780 @ =gUnknown_2023BE3
movs r0, 0xC
strb r0, [r1]
b _0801DAFC
.align 2, 0
_0801D77C: .4byte gBattleOutcome
_0801D780: .4byte gUnknown_2023BE3
_0801D784:
ldr r2, _0801D7B4 @ =gBattleMons
ldr r0, _0801D7B8 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _0801D7C8
ldr r2, _0801D7BC @ =gUnknown_2023DD0
ldr r1, [r2]
movs r0, 0x80
lsls r0, 2
ands r0, r1
cmp r0, 0
bne _0801D7C8
movs r0, 0x80
lsls r0, 12
orrs r1, r0
str r1, [r2]
ldr r1, _0801D7C0 @ =gUnknown_2023D74
ldr r0, _0801D7C4 @ =gUnknown_81D694E
b _0801DAFA
.align 2, 0
_0801D7B4: .4byte gBattleMons
_0801D7B8: .4byte sBattler_AI
_0801D7BC: .4byte gUnknown_2023DD0
_0801D7C0: .4byte gUnknown_2023D74
_0801D7C4: .4byte gUnknown_81D694E
_0801D7C8:
bl sub_80192D4
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0
beq _0801D7D6
b _0801DAFC
_0801D7D6:
ldr r0, _0801D844 @ =gBattlerTarget
ldrb r1, [r0]
str r2, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
beq _0801D7EE
b _0801DAFC
_0801D7EE:
ldr r4, _0801D848 @ =gBattleMons
ldr r0, _0801D84C @ =gUnknown_2023D48
ldrb r1, [r0]
ldr r3, _0801D850 @ =sBattler_AI
ldrb r2, [r3]
movs r0, 0x58
muls r2, r0
adds r1, r2
adds r0, r4, 0
adds r0, 0x24
adds r1, r0
ldrb r0, [r1]
ldr r5, _0801D854 @ =gUnknown_2023DD0
cmp r0, 0
bne _0801D86C
ldr r0, _0801D858 @ =gCurrentMove
ldrh r0, [r0]
cmp r0, 0xA5
beq _0801D86C
ldr r0, [r5]
ldr r1, _0801D85C @ =0x00800200
ands r0, r1
cmp r0, 0
bne _0801D86C
adds r0, r4, 0
adds r0, 0x50
adds r0, r2, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 5
ands r0, r1
cmp r0, 0
bne _0801D86C
ldr r1, _0801D860 @ =gUnknown_2023D74
ldr r0, _0801D864 @ =gUnknown_81D8EA8
str r0, [r1]
ldr r2, _0801D868 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
b _0801DAFC
.align 2, 0
_0801D844: .4byte gBattlerTarget
_0801D848: .4byte gBattleMons
_0801D84C: .4byte gUnknown_2023D48
_0801D850: .4byte sBattler_AI
_0801D854: .4byte gUnknown_2023DD0
_0801D858: .4byte gCurrentMove
_0801D85C: .4byte 0x00800200
_0801D860: .4byte gUnknown_2023D74
_0801D864: .4byte gUnknown_81D8EA8
_0801D868: .4byte gMoveResultFlags
_0801D86C:
ldr r0, [r5]
ldr r1, _0801D8B0 @ =0xff7fffff
ands r0, r1
str r0, [r5]
movs r6, 0x80
lsls r6, 18
ands r0, r6
cmp r0, 0
bne _0801D8C4
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
adds r1, r4, 0
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 5
ands r0, r1
cmp r0, 0
bne _0801D8C4
bl sub_801D438
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0
beq _0801D8C4
cmp r2, 0x2
bne _0801D8B4
ldr r0, [r5]
orrs r0, r6
str r0, [r5]
b _0801DAFC
.align 2, 0
_0801D8B0: .4byte 0xff7fffff
_0801D8B4:
ldr r0, _0801D8C0 @ =gMoveResultFlags
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
strb r1, [r0]
b _0801DAFC
.align 2, 0
_0801D8C0: .4byte gMoveResultFlags
_0801D8C4:
ldr r2, _0801D928 @ =gUnknown_2023DD0
ldr r0, [r2]
movs r1, 0x80
lsls r1, 18
orrs r0, r1
str r0, [r2]
ldr r2, _0801D92C @ =gUnknown_2023E8C
ldr r1, _0801D930 @ =gBattlerTarget
ldrb r3, [r1]
lsls r0, r3, 4
adds r0, r2
ldrb r0, [r0]
lsls r0, 27
mov r8, r1
mov r9, r2
cmp r0, 0
bge _0801D94C
ldr r2, _0801D934 @ =gBattleMoves
ldr r0, _0801D938 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x8]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0801D94C
ldr r0, _0801D93C @ =sBattler_AI
ldrb r0, [r0]
ldr r2, _0801D940 @ =0x00000115
adds r1, r3, 0
bl PressurePPLose
mov r0, r8
ldrb r1, [r0]
lsls r1, 4
add r1, r9
ldrb r2, [r1]
movs r0, 0x11
negs r0, r0
ands r0, r2
strb r0, [r1]
bl BattleScriptPushCursor
ldr r1, _0801D944 @ =gUnknown_2023D74
ldr r0, _0801D948 @ =gUnknown_81D8FAA
b _0801DAFA
.align 2, 0
_0801D928: .4byte gUnknown_2023DD0
_0801D92C: .4byte gUnknown_2023E8C
_0801D930: .4byte gBattlerTarget
_0801D934: .4byte gBattleMoves
_0801D938: .4byte gCurrentMove
_0801D93C: .4byte sBattler_AI
_0801D940: .4byte 0x00000115
_0801D944: .4byte gUnknown_2023D74
_0801D948: .4byte gUnknown_81D8FAA
_0801D94C:
movs r2, 0
ldr r0, _0801D9C8 @ =gBattlersCount
ldrb r0, [r0]
cmp r2, r0
bge _0801D98E
ldr r6, _0801D9CC @ =gUnknown_2023E8C
ldr r1, _0801D9D0 @ =gBattleMoves
mov r12, r1
adds r5, r0, 0
ldr r7, _0801D9D4 @ =gUnknown_2023BDE
_0801D960:
adds r4, r2, r7
ldrb r3, [r4]
lsls r0, r3, 4
adds r0, r6
ldrb r0, [r0]
lsls r0, 26
cmp r0, 0
bge _0801D988
ldr r0, _0801D9D8 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
add r0, r12
ldrb r1, [r0, 0x8]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0801D988
b _0801DAB4
_0801D988:
adds r2, 0x1
cmp r2, r5
blt _0801D960
_0801D98E:
ldr r0, _0801D9DC @ =gUnknown_2023ECC
mov r1, r8
ldrb r2, [r1]
lsls r1, r2, 2
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r3, [r1]
lsls r0, r3, 30
cmp r0, 0
bge _0801D9EC
movs r0, 0x3
negs r0, r0
ands r0, r3
strb r0, [r1]
ldr r4, _0801D9E0 @ =gLastUsedAbility
movs r0, 0x1F
strb r0, [r4]
bl BattleScriptPushCursor
ldr r1, _0801D9E4 @ =gUnknown_2023D74
ldr r0, _0801D9E8 @ =gUnknown_81D938D
str r0, [r1]
mov r1, r8
ldrb r0, [r1]
ldrb r1, [r4]
bl sub_80C71D0
b _0801DAFC
.align 2, 0
_0801D9C8: .4byte gBattlersCount
_0801D9CC: .4byte gUnknown_2023E8C
_0801D9D0: .4byte gBattleMoves
_0801D9D4: .4byte gUnknown_2023BDE
_0801D9D8: .4byte gCurrentMove
_0801D9DC: .4byte gUnknown_2023ECC
_0801D9E0: .4byte gLastUsedAbility
_0801D9E4: .4byte gUnknown_2023D74
_0801D9E8: .4byte gUnknown_81D938D
_0801D9EC:
lsls r0, r2, 4
add r0, r9
ldrb r0, [r0]
lsls r0, 31
cmp r0, 0
bne _0801D9FA
b _0801DAF4
_0801D9FA:
ldr r1, _0801DA90 @ =gBattleMoves
ldr r2, _0801DA94 @ =gCurrentMove
ldrh r3, [r2]
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r0, r1
ldrb r1, [r0, 0x8]
movs r0, 0x2
ands r0, r1
adds r4, r2, 0
cmp r0, 0
beq _0801DAF4
cmp r3, 0xAE
bne _0801DA38
ldr r2, _0801DA98 @ =gBattleMons
ldr r0, _0801DA9C @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r1, r0, r2
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0x7
beq _0801DA38
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0x7
bne _0801DAF4
_0801DA38:
ldrh r0, [r4]
bl IsTwoTurnsMove
lsls r0, 24
cmp r0, 0
beq _0801DA5E
ldr r1, _0801DA98 @ =gBattleMons
ldr r0, _0801DA9C @ =sBattler_AI
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 5
ands r0, r1
cmp r0, 0
beq _0801DAF4
_0801DA5E:
ldr r0, _0801DA9C @ =sBattler_AI
ldrb r0, [r0]
bl CancelMultiTurnMoves
ldr r2, _0801DAA0 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _0801DAA4 @ =gUnknown_2023DA0
ldr r3, _0801DAA8 @ =gBattlerTarget
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
movs r2, 0
strh r2, [r0]
ldr r1, _0801DAAC @ =gUnknown_2023DA8
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
strh r2, [r0]
ldr r1, _0801DAB0 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x6]
b _0801DAF4
.align 2, 0
_0801DA90: .4byte gBattleMoves
_0801DA94: .4byte gCurrentMove
_0801DA98: .4byte gBattleMons
_0801DA9C: .4byte sBattler_AI
_0801DAA0: .4byte gMoveResultFlags
_0801DAA4: .4byte gUnknown_2023DA0
_0801DAA8: .4byte gBattlerTarget
_0801DAAC: .4byte gUnknown_2023DA8
_0801DAB0: .4byte gUnknown_2023E82
_0801DAB4:
ldr r0, _0801DAE0 @ =sBattler_AI
ldrb r0, [r0]
ldr r2, _0801DAE4 @ =0x00000121
adds r1, r3, 0
bl PressurePPLose
ldrb r1, [r4]
lsls r1, 4
adds r1, r6
ldrb r2, [r1]
movs r0, 0x21
negs r0, r0
ands r0, r2
strb r0, [r1]
ldr r1, _0801DAE8 @ =gBattleScripting
ldrb r0, [r4]
strb r0, [r1, 0x17]
bl BattleScriptPushCursor
ldr r1, _0801DAEC @ =gUnknown_2023D74
ldr r0, _0801DAF0 @ =gUnknown_81D8FC2
b _0801DAFA
.align 2, 0
_0801DAE0: .4byte sBattler_AI
_0801DAE4: .4byte 0x00000121
_0801DAE8: .4byte gBattleScripting
_0801DAEC: .4byte gUnknown_2023D74
_0801DAF0: .4byte gUnknown_81D8FC2
_0801DAF4:
ldr r1, _0801DB0C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
_0801DAFA:
str r0, [r1]
_0801DAFC:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801DB0C: .4byte gUnknown_2023D74
thumb_func_end atk00_attackcanceler
thumb_func_start JumpIfMoveFailed
JumpIfMoveFailed: @ 801DB10
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
lsls r1, 16
lsrs r6, r1, 16
ldr r1, _0801DB5C @ =gUnknown_2023D74
ldr r5, [r1]
adds r4, r5, r0
ldr r0, _0801DB60 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _0801DB70
ldr r1, _0801DB64 @ =gUnknown_2023DA0
ldr r3, _0801DB68 @ =gBattlerTarget
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
movs r2, 0
strh r2, [r0]
ldr r1, _0801DB6C @ =gUnknown_2023DA8
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
strh r2, [r0]
ldrb r4, [r5, 0x1]
ldrb r0, [r5, 0x2]
lsls r0, 8
orrs r4, r0
ldrb r0, [r5, 0x3]
lsls r0, 16
orrs r4, r0
ldrb r0, [r5, 0x4]
lsls r0, 24
orrs r4, r0
b _0801DB8A
.align 2, 0
_0801DB5C: .4byte gUnknown_2023D74
_0801DB60: .4byte gMoveResultFlags
_0801DB64: .4byte gUnknown_2023DA0
_0801DB68: .4byte gBattlerTarget
_0801DB6C: .4byte gUnknown_2023DA8
_0801DB70:
bl TrySetDestinyBondToHappen
ldr r0, _0801DB98 @ =gBattlerTarget
ldrb r1, [r0]
str r6, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _0801DB8E
_0801DB8A:
ldr r0, _0801DB9C @ =gUnknown_2023D74
str r4, [r0]
_0801DB8E:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801DB98: .4byte gBattlerTarget
_0801DB9C: .4byte gUnknown_2023D74
thumb_func_end JumpIfMoveFailed
thumb_func_start atk40_jumpifaffectedbyprotect
atk40_jumpifaffectedbyprotect: @ 801DBA0
push {lr}
ldr r1, _0801DBE8 @ =gUnknown_2023E8C
ldr r0, _0801DBEC @ =gBattlerTarget
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 31
cmp r0, 0
beq _0801DC00
ldr r2, _0801DBF0 @ =gBattleMoves
ldr r0, _0801DBF4 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x8]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0801DC00
ldr r2, _0801DBF8 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
movs r0, 0x5
movs r1, 0
bl JumpIfMoveFailed
ldr r1, _0801DBFC @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x6]
b _0801DC08
.align 2, 0
_0801DBE8: .4byte gUnknown_2023E8C
_0801DBEC: .4byte gBattlerTarget
_0801DBF0: .4byte gBattleMoves
_0801DBF4: .4byte gCurrentMove
_0801DBF8: .4byte gMoveResultFlags
_0801DBFC: .4byte gUnknown_2023E82
_0801DC00:
ldr r1, _0801DC0C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0801DC08:
pop {r0}
bx r0
.align 2, 0
_0801DC0C: .4byte gUnknown_2023D74
thumb_func_end atk40_jumpifaffectedbyprotect
thumb_func_start JumpIfMoveAffectedByProtect
JumpIfMoveAffectedByProtect: @ 801DC10
push {r4,lr}
lsls r0, 16
lsrs r3, r0, 16
movs r4, 0
ldr r1, _0801DC64 @ =gUnknown_2023E8C
ldr r0, _0801DC68 @ =gBattlerTarget
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 31
cmp r0, 0
beq _0801DC5C
ldr r2, _0801DC6C @ =gBattleMoves
ldr r0, _0801DC70 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x8]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0801DC5C
ldr r2, _0801DC74 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
movs r0, 0x7
adds r1, r3, 0
bl JumpIfMoveFailed
ldr r1, _0801DC78 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x6]
movs r4, 0x1
_0801DC5C:
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0801DC64: .4byte gUnknown_2023E8C
_0801DC68: .4byte gBattlerTarget
_0801DC6C: .4byte gBattleMoves
_0801DC70: .4byte gCurrentMove
_0801DC74: .4byte gMoveResultFlags
_0801DC78: .4byte gUnknown_2023E82
thumb_func_end JumpIfMoveAffectedByProtect
thumb_func_start AccuracyCalcHelper
AccuracyCalcHelper: @ 801DC7C
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldr r2, _0801DCDC @ =gStatuses3
ldr r3, _0801DCE0 @ =gBattlerTarget
ldrb r4, [r3]
lsls r0, r4, 2
adds r0, r2
ldr r1, [r0]
movs r0, 0x18
ands r1, r0
adds r6, r2, 0
cmp r1, 0
beq _0801DCAE
ldr r1, _0801DCE4 @ =gDisableStructs
lsls r0, r4, 3
subs r0, r4
lsls r0, 2
adds r0, r1
ldr r1, _0801DCE8 @ =sBattler_AI
ldrb r0, [r0, 0x15]
ldrb r1, [r1]
cmp r0, r1
beq _0801DD98
_0801DCAE:
ldr r0, _0801DCEC @ =gUnknown_2023DD0
ldr r1, [r0]
movs r2, 0x80
lsls r2, 9
ands r1, r2
adds r2, r0, 0
cmp r1, 0
bne _0801DCF4
ldrb r0, [r3]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _0801DCF4
_0801DCCE:
ldr r0, _0801DCF0 @ =gMoveResultFlags
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
strb r1, [r0]
b _0801DD98
.align 2, 0
_0801DCDC: .4byte gStatuses3
_0801DCE0: .4byte gBattlerTarget
_0801DCE4: .4byte gDisableStructs
_0801DCE8: .4byte sBattler_AI
_0801DCEC: .4byte gUnknown_2023DD0
_0801DCF0: .4byte gMoveResultFlags
_0801DCF4:
ldr r0, [r2]
ldr r1, _0801DDA4 @ =0xfffeffff
ands r0, r1
str r0, [r2]
movs r1, 0x80
lsls r1, 10
ands r0, r1
cmp r0, 0
bne _0801DD16
ldrb r0, [r3]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
movs r1, 0x80
ands r0, r1
cmp r0, 0
bne _0801DCCE
_0801DD16:
ldr r0, [r2]
ldr r1, _0801DDA8 @ =0xfffdffff
ands r0, r1
str r0, [r2]
movs r1, 0x80
lsls r1, 11
ands r0, r1
cmp r0, 0
bne _0801DD36
ldrb r0, [r3]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
ands r0, r1
cmp r0, 0
bne _0801DCCE
_0801DD36:
ldr r0, [r2]
ldr r1, _0801DDAC @ =0xfffbffff
ands r0, r1
str r0, [r2]
movs r0, 0
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0xD
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
lsls r4, r5, 1
cmp r0, 0
bne _0801DD86
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _0801DD86
ldr r0, _0801DDB0 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x7
ands r0, r1
cmp r0, 0
beq _0801DD86
ldr r0, _0801DDB4 @ =gBattleMoves
adds r1, r4, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
cmp r0, 0x98
beq _0801DD98
_0801DD86:
ldr r1, _0801DDB4 @ =gBattleMoves
adds r0, r4, r5
lsls r0, 2
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x11
beq _0801DD98
cmp r0, 0x4E
bne _0801DDB8
_0801DD98:
movs r0, 0x7
adds r1, r5, 0
bl JumpIfMoveFailed
movs r0, 0x1
b _0801DDBA
.align 2, 0
_0801DDA4: .4byte 0xfffeffff
_0801DDA8: .4byte 0xfffdffff
_0801DDAC: .4byte 0xfffbffff
_0801DDB0: .4byte gBattleWeather
_0801DDB4: .4byte gBattleMoves
_0801DDB8:
movs r0, 0
_0801DDBA:
add sp, 0x4
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end AccuracyCalcHelper
thumb_func_start sub_801DDC4
sub_801DDC4: @ 801DDC4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r0, _0801DE60 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r6, [r0, 0x5]
ldrb r0, [r0, 0x6]
lsls r0, 8
orrs r6, r0
ldr r0, _0801DE64 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x10
ands r0, r1
cmp r0, 0
beq _0801DE48
movs r0, 0x1
bl sub_80EB2E0
lsls r0, 24
cmp r0, 0
bne _0801DE12
ldr r0, _0801DE68 @ =gBattleMoves
lsls r1, r6, 1
adds r1, r6
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
cmp r0, 0
beq _0801DE12
ldr r0, _0801DE6C @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0801DE56
_0801DE12:
ldr r0, _0801DE64 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x10
ands r0, r1
cmp r0, 0
beq _0801DE48
movs r0, 0x2
bl sub_80EB2E0
lsls r0, 24
cmp r0, 0
bne _0801DE48
ldr r0, _0801DE68 @ =gBattleMoves
lsls r1, r6, 1
adds r1, r6
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
cmp r0, 0
bne _0801DE48
ldr r0, _0801DE6C @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0801DE56
_0801DE48:
ldr r0, _0801DE64 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x80
lsls r1, 9
ands r0, r1
cmp r0, 0
beq _0801DE70
_0801DE56:
movs r0, 0x7
adds r1, r6, 0
bl JumpIfMoveFailed
b _0801E1C2
.align 2, 0
_0801DE60: .4byte gUnknown_2023D74
_0801DE64: .4byte gBattleTypeFlags
_0801DE68: .4byte gBattleMoves
_0801DE6C: .4byte sBattler_AI
_0801DE70:
adds r0, r6, 0x2
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bhi _0801DF0C
ldr r2, _0801DED4 @ =gStatuses3
ldr r3, _0801DED8 @ =gBattlerTarget
ldrb r4, [r3]
lsls r0, r4, 2
adds r0, r2
ldr r1, [r0]
movs r0, 0x18
ands r1, r0
cmp r1, 0
beq _0801DEA8
ldr r0, _0801DEDC @ =0x0000ffff
cmp r6, r0
bne _0801DEA8
ldr r1, _0801DEE0 @ =gDisableStructs
lsls r0, r4, 3
subs r0, r4
lsls r0, 2
adds r0, r1
ldr r1, _0801DEE4 @ =sBattler_AI
ldrb r0, [r0, 0x15]
ldrb r1, [r1]
cmp r0, r1
beq _0801DEFE
_0801DEA8:
ldrb r0, [r3]
lsls r0, 2
adds r0, r2
ldr r0, [r0]
ldr r1, _0801DEE8 @ =0x000400c0
ands r0, r1
cmp r0, 0
beq _0801DEF0
ldr r3, _0801DEEC @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0801E1C2
.align 2, 0
_0801DED4: .4byte gStatuses3
_0801DED8: .4byte gBattlerTarget
_0801DEDC: .4byte 0x0000ffff
_0801DEE0: .4byte gDisableStructs
_0801DEE4: .4byte sBattler_AI
_0801DEE8: .4byte 0x000400c0
_0801DEEC: .4byte gUnknown_2023D74
_0801DEF0:
movs r0, 0
bl JumpIfMoveAffectedByProtect
lsls r0, 24
cmp r0, 0
beq _0801DEFE
b _0801E1C2
_0801DEFE:
ldr r1, _0801DF08 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x7
str r0, [r1]
b _0801E1C2
.align 2, 0
_0801DF08: .4byte gUnknown_2023D74
_0801DF0C:
cmp r6, 0
bne _0801DF14
ldr r0, _0801DF2C @ =gCurrentMove
ldrh r6, [r0]
_0801DF14:
ldr r0, _0801DF30 @ =gBattleStruct
ldr r0, [r0]
ldrb r0, [r0, 0x13]
cmp r0, 0
beq _0801DF34
movs r1, 0x3F
mov r10, r1
mov r2, r10
ands r2, r0
mov r10, r2
b _0801DF42
.align 2, 0
_0801DF2C: .4byte gCurrentMove
_0801DF30: .4byte gBattleStruct
_0801DF34:
ldr r1, _0801DF88 @ =gBattleMoves
lsls r0, r6, 1
adds r0, r6
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x2]
mov r10, r0
_0801DF42:
adds r0, r6, 0
bl JumpIfMoveAffectedByProtect
lsls r0, 24
cmp r0, 0
beq _0801DF50
b _0801E1C2
_0801DF50:
adds r0, r6, 0
bl AccuracyCalcHelper
lsls r0, 24
cmp r0, 0
beq _0801DF5E
b _0801E1C2
_0801DF5E:
ldr r3, _0801DF8C @ =gBattleMons
ldr r0, _0801DF90 @ =gBattlerTarget
ldrb r0, [r0]
movs r2, 0x58
adds r4, r0, 0
muls r4, r2
adds r0, r3, 0
adds r0, 0x50
adds r0, r4, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 22
ands r0, r1
cmp r0, 0
beq _0801DF98
ldr r0, _0801DF94 @ =sBattler_AI
ldrb r0, [r0]
muls r0, r2
adds r0, r3
ldrb r5, [r0, 0x1E]
b _0801DFAE
.align 2, 0
_0801DF88: .4byte gBattleMoves
_0801DF8C: .4byte gBattleMons
_0801DF90: .4byte gBattlerTarget
_0801DF94: .4byte sBattler_AI
_0801DF98:
ldr r0, _0801E0FC @ =sBattler_AI
ldrb r0, [r0]
muls r0, r2
adds r0, r3
ldrb r0, [r0, 0x1E]
adds r0, 0x6
adds r1, r4, r3
ldrb r1, [r1, 0x1F]
subs r0, r1
lsls r0, 24
lsrs r5, r0, 24
_0801DFAE:
lsls r0, r5, 24
cmp r0, 0
bge _0801DFB6
movs r5, 0
_0801DFB6:
lsls r0, r5, 24
asrs r0, 24
cmp r0, 0xC
ble _0801DFC0
movs r5, 0xC
_0801DFC0:
ldr r1, _0801E100 @ =gBattleMoves
lsls r4, r6, 1
adds r0, r4, r6
lsls r0, 2
adds r7, r0, r1
ldrb r3, [r7, 0x3]
mov r8, r3
movs r0, 0
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0xD
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
str r4, [sp, 0x4]
cmp r0, 0
bne _0801E012
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _0801E012
ldr r0, _0801E104 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _0801E012
ldrb r0, [r7]
cmp r0, 0x98
bne _0801E012
movs r0, 0x32
mov r8, r0
_0801E012:
ldr r1, _0801E108 @ =gUnknown_82504FC
lsls r0, r5, 24
asrs r0, 22
adds r0, r1
ldrb r1, [r0]
mov r4, r8
muls r4, r1
ldrb r1, [r0, 0x1]
adds r0, r4, 0
bl __divsi3
lsls r0, 16
lsrs r4, r0, 16
ldr r7, _0801E10C @ =gBattleMons
ldr r0, _0801E0FC @ =sBattler_AI
ldrb r0, [r0]
movs r5, 0x58
muls r0, r5
adds r0, r7
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0xE
bne _0801E050
lsls r0, r4, 6
adds r0, r4
lsls r0, 1
movs r1, 0x64
bl __divsi3
lsls r0, 16
lsrs r4, r0, 16
_0801E050:
movs r0, 0
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0xD
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0801E0A8
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _0801E0A8
ldr r0, _0801E110 @ =gBattlerTarget
ldrb r0, [r0]
muls r0, r5
adds r0, r7
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x8
bne _0801E0A8
ldr r0, _0801E104 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x18
ands r0, r1
cmp r0, 0
beq _0801E0A8
lsls r0, r4, 2
adds r0, r4
lsls r0, 4
movs r1, 0x64
bl __divsi3
lsls r0, 16
lsrs r4, r0, 16
_0801E0A8:
ldr r2, _0801E10C @ =gBattleMons
ldr r0, _0801E0FC @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x20
ldrb r0, [r0]
mov r9, r2
cmp r0, 0x37
bne _0801E0D4
mov r1, r10
cmp r1, 0x8
bhi _0801E0D4
lsls r0, r4, 2
adds r0, r4
lsls r0, 4
movs r1, 0x64
bl __divsi3
lsls r0, 16
lsrs r4, r0, 16
_0801E0D4:
ldr r2, _0801E110 @ =gBattlerTarget
mov r8, r2
ldrb r2, [r2]
movs r7, 0x58
adds r0, r2, 0
muls r0, r7
mov r3, r9
adds r1, r0, r3
ldrh r0, [r1, 0x2E]
cmp r0, 0xAF
bne _0801E118
ldr r1, _0801E114 @ =gEnigmaBerries
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r5, [r0, 0x7]
ldrb r2, [r0, 0x1A]
b _0801E134
.align 2, 0
_0801E0FC: .4byte sBattler_AI
_0801E100: .4byte gBattleMoves
_0801E104: .4byte gBattleWeather
_0801E108: .4byte gUnknown_82504FC
_0801E10C: .4byte gBattleMons
_0801E110: .4byte gBattlerTarget
_0801E114: .4byte gEnigmaBerries
_0801E118:
ldrh r0, [r1, 0x2E]
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r5, r0, 24
mov r1, r8
ldrb r0, [r1]
muls r0, r7
add r0, r9
ldrh r0, [r0, 0x2E]
bl ItemId_GetHoldEffectParam
lsls r0, 24
lsrs r2, r0, 24
_0801E134:
ldr r0, _0801E198 @ =gPotentialItemEffectBattler
ldr r1, _0801E19C @ =gBattlerTarget
ldrb r1, [r1]
strb r1, [r0]
cmp r5, 0x16
bne _0801E150
movs r0, 0x64
subs r0, r2
muls r0, r4
movs r1, 0x64
bl __divsi3
lsls r0, 16
lsrs r4, r0, 16
_0801E150:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
adds r0, 0x1
cmp r0, r4
ble _0801E1BA
ldr r2, _0801E1A0 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r0, _0801E1A4 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0801E1B0
ldr r1, _0801E1A8 @ =gBattleMoves
ldr r2, [sp, 0x4]
adds r0, r2, r6
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x6]
cmp r0, 0x8
beq _0801E192
cmp r0, 0x20
bne _0801E1B0
_0801E192:
ldr r1, _0801E1AC @ =gUnknown_2023E82
movs r0, 0x2
b _0801E1B4
.align 2, 0
_0801E198: .4byte gPotentialItemEffectBattler
_0801E19C: .4byte gBattlerTarget
_0801E1A0: .4byte gMoveResultFlags
_0801E1A4: .4byte gBattleTypeFlags
_0801E1A8: .4byte gBattleMoves
_0801E1AC: .4byte gUnknown_2023E82
_0801E1B0:
ldr r1, _0801E1D4 @ =gUnknown_2023E82
movs r0, 0
_0801E1B4:
strb r0, [r1, 0x6]
bl CheckWonderGuardAndLevitate
_0801E1BA:
movs r0, 0x7
adds r1, r6, 0
bl JumpIfMoveFailed
_0801E1C2:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801E1D4: .4byte gUnknown_2023E82
thumb_func_end sub_801DDC4
thumb_func_start atk02_attackstring
atk02_attackstring: @ 801E1D8
push {r4,r5,lr}
ldr r0, _0801E218 @ =gUnknown_2023BC8
ldr r5, [r0]
cmp r5, 0
bne _0801E210
ldr r4, _0801E21C @ =gUnknown_2023DD0
ldr r0, [r4]
movs r1, 0xC0
lsls r1, 3
ands r0, r1
cmp r0, 0
bne _0801E204
ldr r0, _0801E220 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x4
bl PrepareStringBattle
ldr r0, [r4]
movs r1, 0x80
lsls r1, 3
orrs r0, r1
str r0, [r4]
_0801E204:
ldr r0, _0801E224 @ =gUnknown_2023D74
ldr r1, [r0]
adds r1, 0x1
str r1, [r0]
ldr r0, _0801E228 @ =gUnknown_2023E82
strb r5, [r0, 0x7]
_0801E210:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E218: .4byte gUnknown_2023BC8
_0801E21C: .4byte gUnknown_2023DD0
_0801E220: .4byte sBattler_AI
_0801E224: .4byte gUnknown_2023D74
_0801E228: .4byte gUnknown_2023E82
thumb_func_end atk02_attackstring
thumb_func_start atk03_ppreduce
atk03_ppreduce: @ 801E22C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
movs r6, 0x1
ldr r0, _0801E27C @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _0801E244
b _0801E3DE
_0801E244:
ldr r1, _0801E280 @ =gUnknown_2023ECC
ldr r2, _0801E284 @ =sBattler_AI
ldrb r3, [r2]
lsls r0, r3, 2
adds r0, r3
lsls r0, 2
adds r0, r1
ldrb r0, [r0]
lsls r0, 26
lsrs r4, r0, 31
mov r9, r2
cmp r4, 0
bne _0801E2E6
ldr r2, _0801E288 @ =gBattleMoves
ldr r0, _0801E28C @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x6]
cmp r0, 0x20
beq _0801E296
cmp r0, 0x20
bgt _0801E290
cmp r0, 0x8
beq _0801E2AC
b _0801E2C6
.align 2, 0
_0801E27C: .4byte gUnknown_2023BC8
_0801E280: .4byte gUnknown_2023ECC
_0801E284: .4byte sBattler_AI
_0801E288: .4byte gBattleMoves
_0801E28C: .4byte gCurrentMove
_0801E290:
cmp r0, 0x40
beq _0801E2AC
b _0801E2C6
_0801E296:
str r4, [sp]
movs r0, 0x12
adds r1, r3, 0
movs r2, 0x2E
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0x1
b _0801E2E6
_0801E2AC:
mov r0, r9
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x10
movs r2, 0x2E
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
adds r6, r0
b _0801E2E6
_0801E2C6:
ldr r1, _0801E348 @ =gBattlerTarget
mov r2, r9
ldrb r0, [r2]
ldrb r7, [r1]
cmp r0, r7
beq _0801E2E6
ldr r2, _0801E34C @ =gBattleMons
ldrb r1, [r1]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x2E
bne _0801E2E6
adds r6, 0x1
_0801E2E6:
ldr r0, _0801E350 @ =gUnknown_2023DD0
ldr r4, [r0]
movs r0, 0xA0
lsls r0, 4
ands r4, r0
cmp r4, 0
bne _0801E3CC
ldr r2, _0801E34C @ =gBattleMons
ldr r3, _0801E354 @ =gUnknown_2023D48
ldr r1, _0801E358 @ =sBattler_AI
ldrb r5, [r1]
movs r0, 0x58
mov r8, r0
mov r0, r8
muls r0, r5
ldrb r7, [r3]
adds r0, r7
movs r7, 0x24
adds r7, r2
mov r12, r7
add r0, r12
ldrb r0, [r0]
mov r9, r1
mov r10, r2
adds r7, r3, 0
cmp r0, 0
beq _0801E3CC
ldr r0, _0801E35C @ =gUnknown_2023E8C
lsls r1, r5, 4
adds r1, r0
ldrb r0, [r1, 0x2]
movs r2, 0x8
orrs r0, r2
strb r0, [r1, 0x2]
mov r1, r9
ldrb r0, [r1]
mov r2, r8
muls r2, r0
adds r0, r2, 0
ldrb r1, [r7]
adds r0, r1
mov r1, r12
adds r2, r0, r1
ldrb r0, [r2]
cmp r0, r6
ble _0801E360
subs r0, r6
strb r0, [r2]
b _0801E362
.align 2, 0
_0801E348: .4byte gBattlerTarget
_0801E34C: .4byte gBattleMons
_0801E350: .4byte gUnknown_2023DD0
_0801E354: .4byte gUnknown_2023D48
_0801E358: .4byte sBattler_AI
_0801E35C: .4byte gUnknown_2023E8C
_0801E360:
strb r4, [r2]
_0801E362:
mov r2, r9
ldrb r3, [r2]
movs r4, 0x58
adds r0, r3, 0
muls r0, r4
mov r1, r10
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 14
ands r0, r1
cmp r0, 0
bne _0801E3CC
ldr r1, _0801E3F0 @ =gDisableStructs
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
adds r0, r1
ldrb r1, [r0, 0x18]
lsrs r1, 4
ldr r2, _0801E3F4 @ =gBitTable
ldrb r0, [r7]
lsls r0, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0801E3CC
ldr r0, _0801E3F8 @ =gActiveBattler
strb r3, [r0]
ldrb r1, [r7]
adds r1, 0x9
lsls r1, 24
lsrs r1, 24
mov r2, r9
ldrb r0, [r2]
muls r0, r4
mov r2, r10
adds r2, 0x24
adds r0, r2
ldrb r7, [r7]
adds r0, r7
str r0, [sp]
movs r0, 0
movs r2, 0
movs r3, 0x1
bl EmitSetMonData
mov r7, r9
ldrb r0, [r7]
bl MarkBufferBankForExecution
_0801E3CC:
ldr r2, _0801E3FC @ =gUnknown_2023DD0
ldr r0, [r2]
ldr r1, _0801E400 @ =0xfffff7ff
ands r0, r1
str r0, [r2]
ldr r1, _0801E404 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0801E3DE:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801E3F0: .4byte gDisableStructs
_0801E3F4: .4byte gBitTable
_0801E3F8: .4byte gActiveBattler
_0801E3FC: .4byte gUnknown_2023DD0
_0801E400: .4byte 0xfffff7ff
_0801E404: .4byte gUnknown_2023D74
thumb_func_end atk03_ppreduce
thumb_func_start sub_801E408
sub_801E408: @ 801E408
push {r4-r7,lr}
ldr r1, _0801E42C @ =gBattleMons
ldr r0, _0801E430 @ =sBattler_AI
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r0, r1
ldrh r0, [r0, 0x2E]
cmp r0, 0xAF
bne _0801E438
ldr r1, _0801E434 @ =gEnigmaBerries
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r6, [r0, 0x7]
b _0801E440
.align 2, 0
_0801E42C: .4byte gBattleMons
_0801E430: .4byte sBattler_AI
_0801E434: .4byte gEnigmaBerries
_0801E438:
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r6, r0, 24
_0801E440:
ldr r1, _0801E4CC @ =gPotentialItemEffectBattler
ldr r3, _0801E4D0 @ =sBattler_AI
ldrb r0, [r3]
strb r0, [r1]
ldr r4, _0801E4D4 @ =gBattleMons
ldrb r1, [r3]
movs r0, 0x58
adds r7, r1, 0
muls r7, r0
adds r0, r4, 0
adds r0, 0x50
adds r0, r7, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 13
ands r0, r1
negs r0, r0
asrs r5, r0, 31
movs r0, 0x2
ands r5, r0
ldr r2, _0801E4D8 @ =gBattleMoves
ldr r0, _0801E4DC @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
mov r12, r3
cmp r1, 0x2B
bne _0801E480
adds r5, 0x1
_0801E480:
adds r0, r5, 0
cmp r1, 0x4B
bne _0801E488
adds r0, 0x1
_0801E488:
cmp r1, 0xC8
bne _0801E48E
adds r0, 0x1
_0801E48E:
adds r2, r0, 0
cmp r1, 0xD1
bne _0801E496
adds r2, 0x1
_0801E496:
movs r1, 0
cmp r6, 0x3F
bne _0801E4A6
adds r0, r7, r4
ldrh r0, [r0]
cmp r0, 0x71
bne _0801E4A6
movs r1, 0x1
_0801E4A6:
lsls r5, r1, 1
movs r3, 0
cmp r6, 0x42
bne _0801E4C0
mov r0, r12
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r4
ldrh r0, [r0]
cmp r0, 0x53
bne _0801E4C0
movs r3, 0x1
_0801E4C0:
lsls r1, r3, 1
cmp r6, 0x29
bne _0801E4E0
adds r0, r5, 0x1
adds r0, r2, r0
b _0801E4E2
.align 2, 0
_0801E4CC: .4byte gPotentialItemEffectBattler
_0801E4D0: .4byte sBattler_AI
_0801E4D4: .4byte gBattleMons
_0801E4D8: .4byte gBattleMoves
_0801E4DC: .4byte gCurrentMove
_0801E4E0:
adds r0, r2, r5
_0801E4E2:
adds r0, r1
lsls r0, 16
lsrs r0, 16
adds r5, r0, 0
cmp r5, 0x4
bls _0801E4F0
movs r5, 0x4
_0801E4F0:
ldr r0, _0801E56C @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r4
adds r0, 0x20
ldrb r4, [r0]
cmp r4, 0x4
beq _0801E580
cmp r4, 0x4B
beq _0801E580
ldr r1, _0801E570 @ =gStatuses3
mov r2, r12
ldrb r0, [r2]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
bne _0801E580
ldr r4, _0801E574 @ =gBattleTypeFlags
ldr r0, [r4]
movs r1, 0x80
lsls r1, 2
ands r0, r1
cmp r0, 0
bne _0801E580
bl Random
ldr r2, _0801E578 @ =gUnknown_8250530
lsls r1, r5, 1
adds r1, r2
lsls r0, 16
lsrs r0, 16
ldrh r1, [r1]
bl __umodsi3
lsls r0, 16
cmp r0, 0
bne _0801E580
ldr r0, [r4]
movs r1, 0x10
ands r0, r1
cmp r0, 0
beq _0801E55A
movs r0, 0x1
bl sub_80EB2E0
lsls r0, 24
cmp r0, 0
beq _0801E580
_0801E55A:
ldr r0, [r4]
movs r1, 0x80
lsls r1, 9
ands r0, r1
cmp r0, 0
bne _0801E580
ldr r1, _0801E57C @ =gCritMultiplier
movs r0, 0x2
b _0801E584
.align 2, 0
_0801E56C: .4byte gBattlerTarget
_0801E570: .4byte gStatuses3
_0801E574: .4byte gBattleTypeFlags
_0801E578: .4byte gUnknown_8250530
_0801E57C: .4byte gCritMultiplier
_0801E580:
ldr r1, _0801E594 @ =gCritMultiplier
movs r0, 0x1
_0801E584:
strb r0, [r1]
ldr r1, _0801E598 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801E594: .4byte gCritMultiplier
_0801E598: .4byte gUnknown_2023D74
thumb_func_end sub_801E408
thumb_func_start atk05_damagecalc
atk05_damagecalc: @ 801E59C
push {r4-r7,lr}
sub sp, 0x10
ldr r4, _0801E654 @ =gSideAffecting
ldr r5, _0801E658 @ =gBattlerTarget
ldrb r0, [r5]
bl GetBattlerPosition
movs r1, 0x1
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
ldr r6, _0801E65C @ =sBattler_AI
ldrb r0, [r6]
movs r4, 0x58
muls r0, r4
ldr r2, _0801E660 @ =gBattleMons
adds r0, r2
ldrb r1, [r5]
muls r1, r4
adds r1, r2
ldr r7, _0801E664 @ =gCurrentMove
ldrh r2, [r7]
ldr r4, _0801E668 @ =gDynamicBasePower
ldrh r4, [r4]
str r4, [sp]
ldr r4, _0801E66C @ =gBattleStruct
ldr r4, [r4]
ldrb r4, [r4, 0x13]
str r4, [sp, 0x4]
ldrb r4, [r6]
str r4, [sp, 0x8]
ldrb r4, [r5]
str r4, [sp, 0xC]
bl CalculateBaseDamage
ldr r4, _0801E670 @ =gBattleMoveDamage
ldr r1, _0801E674 @ =gCritMultiplier
ldrb r1, [r1]
muls r1, r0
ldr r0, _0801E678 @ =gBattleScripting
ldrb r0, [r0, 0xE]
adds r3, r1, 0
muls r3, r0
str r3, [r4]
ldr r1, _0801E67C @ =gStatuses3
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 2
ands r0, r1
cmp r0, 0
beq _0801E620
ldr r2, _0801E680 @ =gBattleMoves
ldrh r1, [r7]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x2]
cmp r0, 0xD
bne _0801E620
lsls r0, r3, 1
str r0, [r4]
_0801E620:
ldr r1, _0801E684 @ =gUnknown_2023E8C
ldr r0, _0801E65C @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
bge _0801E642
ldr r4, _0801E670 @ =gBattleMoveDamage
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
movs r1, 0xA
bl __divsi3
str r0, [r4]
_0801E642:
ldr r1, _0801E688 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x10
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801E654: .4byte gSideAffecting
_0801E658: .4byte gBattlerTarget
_0801E65C: .4byte sBattler_AI
_0801E660: .4byte gBattleMons
_0801E664: .4byte gCurrentMove
_0801E668: .4byte gDynamicBasePower
_0801E66C: .4byte gBattleStruct
_0801E670: .4byte gBattleMoveDamage
_0801E674: .4byte gCritMultiplier
_0801E678: .4byte gBattleScripting
_0801E67C: .4byte gStatuses3
_0801E680: .4byte gBattleMoves
_0801E684: .4byte gUnknown_2023E8C
_0801E688: .4byte gUnknown_2023D74
thumb_func_end atk05_damagecalc
thumb_func_start AI_CalcDmg
AI_CalcDmg: @ 801E68C
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
adds r5, r1, 0
lsls r0, 24
lsrs r7, r0, 24
lsls r5, 24
lsrs r5, 24
ldr r4, _0801E744 @ =gSideAffecting
adds r0, r5, 0
bl GetBattlerPosition
movs r1, 0x1
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
movs r1, 0x58
adds r0, r7, 0
muls r0, r1
ldr r2, _0801E748 @ =gBattleMons
adds r0, r2
muls r1, r5
adds r1, r2
ldr r2, _0801E74C @ =gCurrentMove
mov r8, r2
ldrh r2, [r2]
ldr r6, _0801E750 @ =gDynamicBasePower
ldrh r4, [r6]
str r4, [sp]
ldr r4, _0801E754 @ =gBattleStruct
ldr r4, [r4]
ldrb r4, [r4, 0x13]
str r4, [sp, 0x4]
str r7, [sp, 0x8]
str r5, [sp, 0xC]
bl CalculateBaseDamage
ldr r4, _0801E758 @ =gBattleMoveDamage
movs r1, 0
strh r1, [r6]
ldr r1, _0801E75C @ =gCritMultiplier
ldrb r1, [r1]
muls r1, r0
ldr r0, _0801E760 @ =gBattleScripting
ldrb r0, [r0, 0xE]
adds r3, r1, 0
muls r3, r0
str r3, [r4]
ldr r1, _0801E764 @ =gStatuses3
lsls r0, r7, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 2
ands r0, r1
cmp r0, 0
beq _0801E71A
ldr r2, _0801E768 @ =gBattleMoves
mov r0, r8
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x2]
cmp r0, 0xD
bne _0801E71A
lsls r0, r3, 1
str r0, [r4]
_0801E71A:
ldr r0, _0801E76C @ =gUnknown_2023E8C
lsls r1, r7, 4
adds r1, r0
ldrb r0, [r1]
lsls r0, 28
cmp r0, 0
bge _0801E738
ldr r4, _0801E758 @ =gBattleMoveDamage
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
movs r1, 0xA
bl __divsi3
str r0, [r4]
_0801E738:
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801E744: .4byte gSideAffecting
_0801E748: .4byte gBattleMons
_0801E74C: .4byte gCurrentMove
_0801E750: .4byte gDynamicBasePower
_0801E754: .4byte gBattleStruct
_0801E758: .4byte gBattleMoveDamage
_0801E75C: .4byte gCritMultiplier
_0801E760: .4byte gBattleScripting
_0801E764: .4byte gStatuses3
_0801E768: .4byte gBattleMoves
_0801E76C: .4byte gUnknown_2023E8C
thumb_func_end AI_CalcDmg
thumb_func_start ModulateDmgByType
ModulateDmgByType: @ 801E770
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r5, _0801E7A0 @ =gBattleMoveDamage
ldr r0, [r5]
muls r0, r4
movs r1, 0xA
bl __divsi3
str r0, [r5]
cmp r0, 0
bne _0801E790
cmp r4, 0
beq _0801E790
movs r0, 0x1
str r0, [r5]
_0801E790:
cmp r4, 0x5
beq _0801E7C0
cmp r4, 0x5
bgt _0801E7A4
cmp r4, 0
beq _0801E7AA
b _0801E842
.align 2, 0
_0801E7A0: .4byte gBattleMoveDamage
_0801E7A4:
cmp r4, 0x14
beq _0801E800
b _0801E842
_0801E7AA:
ldr r2, _0801E7BC @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x8
orrs r0, r1
movs r1, 0xFB
ands r0, r1
movs r1, 0xFD
ands r0, r1
b _0801E840
.align 2, 0
_0801E7BC: .4byte gMoveResultFlags
_0801E7C0:
ldr r2, _0801E7F0 @ =gBattleMoves
ldr r0, _0801E7F4 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _0801E842
ldr r2, _0801E7F8 @ =gMoveResultFlags
ldrb r1, [r2]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801E842
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0801E7FC
movs r0, 0xFD
ands r0, r1
b _0801E840
.align 2, 0
_0801E7F0: .4byte gBattleMoves
_0801E7F4: .4byte gCurrentMove
_0801E7F8: .4byte gMoveResultFlags
_0801E7FC:
movs r0, 0x4
b _0801E83E
_0801E800:
ldr r2, _0801E830 @ =gBattleMoves
ldr r0, _0801E834 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _0801E842
ldr r2, _0801E838 @ =gMoveResultFlags
ldrb r1, [r2]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801E842
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0801E83C
movs r0, 0xFB
ands r0, r1
b _0801E840
.align 2, 0
_0801E830: .4byte gBattleMoves
_0801E834: .4byte gCurrentMove
_0801E838: .4byte gMoveResultFlags
_0801E83C:
movs r0, 0x2
_0801E83E:
orrs r0, r1
_0801E840:
strb r0, [r2]
_0801E842:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end ModulateDmgByType
thumb_func_start atk06_typecalc
atk06_typecalc: @ 801E848
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
movs r3, 0
ldr r1, _0801E870 @ =gCurrentMove
ldrh r0, [r1]
cmp r0, 0xA5
bne _0801E85C
b _0801EA70
_0801E85C:
ldr r0, _0801E874 @ =gBattleStruct
ldr r0, [r0]
ldrb r0, [r0, 0x13]
cmp r0, 0
beq _0801E878
movs r1, 0x3F
mov r8, r1
ands r1, r0
mov r8, r1
b _0801E888
.align 2, 0
_0801E870: .4byte gCurrentMove
_0801E874: .4byte gBattleStruct
_0801E878:
ldr r2, _0801E910 @ =gBattleMoves
ldrh r1, [r1]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x2]
mov r8, r0
_0801E888:
ldr r2, _0801E914 @ =gBattleMons
ldr r0, _0801E918 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r1, r0, r2
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
adds r5, r2, 0
cmp r0, r8
beq _0801E8AA
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, r8
bne _0801E8C0
_0801E8AA:
ldr r4, _0801E91C @ =gBattleMoveDamage
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
str r0, [r4]
movs r1, 0xA
str r3, [sp, 0x4]
bl __divsi3
str r0, [r4]
ldr r3, [sp, 0x4]
_0801E8C0:
ldr r2, _0801E920 @ =gBattlerTarget
ldrb r1, [r2]
movs r0, 0x58
muls r0, r1
adds r0, r5
adds r0, 0x20
ldrb r0, [r0]
adds r4, r2, 0
cmp r0, 0x1A
bne _0801E938
mov r1, r8
cmp r1, 0x4
bne _0801E938
ldr r3, _0801E924 @ =gLastUsedAbility
strb r0, [r3]
ldr r2, _0801E928 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x9
orrs r0, r1
strb r0, [r2]
ldr r1, _0801E92C @ =gUnknown_2023DA0
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
movs r2, 0
strh r2, [r0]
ldr r1, _0801E930 @ =gUnknown_2023DA8
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
strh r2, [r0]
ldr r0, _0801E934 @ =gUnknown_2023E82
mov r1, r8
strb r1, [r0, 0x6]
ldrb r0, [r4]
ldrb r1, [r3]
bl sub_80C71D0
b _0801E9D4
.align 2, 0
_0801E910: .4byte gBattleMoves
_0801E914: .4byte gBattleMons
_0801E918: .4byte sBattler_AI
_0801E91C: .4byte gBattleMoveDamage
_0801E920: .4byte gBattlerTarget
_0801E924: .4byte gLastUsedAbility
_0801E928: .4byte gMoveResultFlags
_0801E92C: .4byte gUnknown_2023DA0
_0801E930: .4byte gUnknown_2023DA8
_0801E934: .4byte gUnknown_2023E82
_0801E938:
ldr r1, _0801E944 @ =gUnknown_824F050
adds r0, r3, r1
ldrb r0, [r0]
adds r2, r1, 0
b _0801E9B4
.align 2, 0
_0801E944: .4byte gUnknown_824F050
_0801E948:
adds r3, 0x3
b _0801E9B0
_0801E94C:
ldr r5, _0801EA84 @ =gUnknown_824F050
adds r0, r3, r5
ldrb r0, [r0]
cmp r0, r8
bne _0801E9A8
adds r1, r3, 0x1
adds r1, r5
ldr r2, _0801EA88 @ =gBattleMons
ldr r7, _0801EA8C @ =gBattlerTarget
ldrb r0, [r7]
movs r6, 0x58
muls r0, r6
adds r0, r2
adds r0, 0x21
ldrb r4, [r1]
ldrb r0, [r0]
cmp r4, r0
bne _0801E982
adds r0, r3, 0x2
adds r0, r5
ldrb r0, [r0]
str r2, [sp]
str r3, [sp, 0x4]
bl ModulateDmgByType
ldr r3, [sp, 0x4]
ldr r2, [sp]
_0801E982:
ldrb r0, [r7]
muls r0, r6
adds r0, r2
adds r1, r0, 0
adds r1, 0x22
ldrb r1, [r1]
cmp r4, r1
bne _0801E9A8
adds r0, 0x21
ldrb r0, [r0]
cmp r0, r4
beq _0801E9A8
adds r0, r3, 0x2
adds r0, r5
ldrb r0, [r0]
str r3, [sp, 0x4]
bl ModulateDmgByType
ldr r3, [sp, 0x4]
_0801E9A8:
adds r3, 0x3
ldr r5, _0801EA88 @ =gBattleMons
ldr r4, _0801EA8C @ =gBattlerTarget
ldr r2, _0801EA84 @ =gUnknown_824F050
_0801E9B0:
adds r0, r3, r2
ldrb r0, [r0]
_0801E9B4:
cmp r0, 0xFF
beq _0801E9D4
cmp r0, 0xFE
bne _0801E94C
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
adds r1, r5, 0
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 22
ands r0, r1
cmp r0, 0
beq _0801E948
_0801E9D4:
ldr r2, _0801EA88 @ =gBattleMons
ldr r5, _0801EA8C @ =gBattlerTarget
ldrb r1, [r5]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x20
ldrb r6, [r0]
cmp r6, 0x19
bne _0801EA52
ldr r0, _0801EA90 @ =sBattler_AI
ldrb r0, [r0]
ldr r7, _0801EA94 @ =gCurrentMove
ldrh r1, [r7]
bl AttacksThisTurn
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _0801EA52
ldr r1, _0801EA98 @ =gMoveResultFlags
mov r8, r1
ldrb r4, [r1]
ands r0, r4
cmp r0, 0
beq _0801EA10
movs r0, 0x6
ands r0, r4
cmp r0, 0x6
bne _0801EA52
_0801EA10:
ldr r2, _0801EA9C @ =gBattleMoves
ldrh r1, [r7]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _0801EA52
ldr r3, _0801EAA0 @ =gLastUsedAbility
strb r6, [r3]
movs r0, 0x1
orrs r0, r4
mov r1, r8
strb r0, [r1]
ldr r1, _0801EAA4 @ =gUnknown_2023DA0
ldrb r0, [r5]
lsls r0, 1
adds r0, r1
movs r2, 0
strh r2, [r0]
ldr r1, _0801EAA8 @ =gUnknown_2023DA8
ldrb r0, [r5]
lsls r0, 1
adds r0, r1
strh r2, [r0]
ldr r1, _0801EAAC @ =gUnknown_2023E82
movs r0, 0x3
strb r0, [r1, 0x6]
ldrb r0, [r5]
ldrb r1, [r3]
bl sub_80C71D0
_0801EA52:
ldr r0, _0801EA98 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0801EA70
ldr r2, _0801EAB0 @ =gUnknown_2023E8C
ldr r0, _0801EA90 @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 4
adds r1, r2
ldrb r0, [r1, 0x1]
movs r2, 0x2
orrs r0, r2
strb r0, [r1, 0x1]
_0801EA70:
ldr r1, _0801EAB4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801EA84: .4byte gUnknown_824F050
_0801EA88: .4byte gBattleMons
_0801EA8C: .4byte gBattlerTarget
_0801EA90: .4byte sBattler_AI
_0801EA94: .4byte gCurrentMove
_0801EA98: .4byte gMoveResultFlags
_0801EA9C: .4byte gBattleMoves
_0801EAA0: .4byte gLastUsedAbility
_0801EAA4: .4byte gUnknown_2023DA0
_0801EAA8: .4byte gUnknown_2023DA8
_0801EAAC: .4byte gUnknown_2023E82
_0801EAB0: .4byte gUnknown_2023E8C
_0801EAB4: .4byte gUnknown_2023D74
thumb_func_end atk06_typecalc
thumb_func_start CheckWonderGuardAndLevitate
CheckWonderGuardAndLevitate: @ 801EAB8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r6, 0
movs r5, 0
ldr r0, _0801EAF8 @ =gCurrentMove
ldrh r1, [r0]
mov r9, r0
cmp r1, 0xA5
bne _0801EAD0
b _0801ED18
_0801EAD0:
ldr r2, _0801EAFC @ =gBattleMoves
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r1, r0, r2
ldrb r0, [r1, 0x1]
cmp r0, 0
bne _0801EAE2
b _0801ED18
_0801EAE2:
ldr r0, _0801EB00 @ =gBattleStruct
ldr r0, [r0]
ldrb r0, [r0, 0x13]
cmp r0, 0
beq _0801EB04
movs r1, 0x3F
mov r12, r1
mov r2, r12
ands r2, r0
mov r12, r2
b _0801EB08
.align 2, 0
_0801EAF8: .4byte gCurrentMove
_0801EAFC: .4byte gBattleMoves
_0801EB00: .4byte gBattleStruct
_0801EB04:
ldrb r1, [r1, 0x2]
mov r12, r1
_0801EB08:
ldr r2, _0801EB3C @ =gBattleMons
ldr r3, _0801EB40 @ =gBattlerTarget
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x20
ldrb r1, [r0]
adds r7, r2, 0
mov r8, r3
cmp r1, 0x1A
bne _0801EB4C
mov r0, r12
cmp r0, 0x4
bne _0801EB4C
ldr r0, _0801EB44 @ =gLastUsedAbility
strb r1, [r0]
ldr r0, _0801EB48 @ =gUnknown_2023E82
mov r1, r12
strb r1, [r0, 0x6]
ldrb r0, [r3]
movs r1, 0x1A
bl sub_80C71D0
b _0801ED18
.align 2, 0
_0801EB3C: .4byte gBattleMons
_0801EB40: .4byte gBattlerTarget
_0801EB44: .4byte gLastUsedAbility
_0801EB48: .4byte gUnknown_2023E82
_0801EB4C:
ldr r1, _0801EB58 @ =gUnknown_824F050
adds r0, r5, r1
ldrb r0, [r0]
adds r4, r1, 0
b _0801EC9E
.align 2, 0
_0801EB58: .4byte gUnknown_824F050
_0801EB5C:
adds r0, r5, r4
ldrb r0, [r0]
cmp r0, r12
beq _0801EB66
b _0801EC98
_0801EB66:
adds r2, r5, 0x1
adds r3, r2, r4
mov r0, r8
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r7
adds r0, 0x21
ldrb r1, [r3]
adds r3, r2, 0
ldrb r0, [r0]
cmp r1, r0
bne _0801EBA6
adds r0, r5, 0x2
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
bne _0801EBA6
ldr r2, _0801ED24 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x8
orrs r0, r1
strb r0, [r2]
ldr r1, _0801ED28 @ =gUnknown_2023E8C
ldr r0, _0801ED2C @ =sBattler_AI
ldrb r2, [r0]
lsls r2, 4
adds r2, r1
ldrb r0, [r2, 0x1]
movs r1, 0x2
orrs r0, r1
strb r0, [r2, 0x1]
_0801EBA6:
adds r2, r3, r4
mov r0, r8
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r7
adds r1, r0, 0
adds r1, 0x22
ldrb r2, [r2]
ldrb r1, [r1]
cmp r2, r1
bne _0801EBEC
adds r0, 0x21
ldrb r0, [r0]
cmp r0, r2
beq _0801EBEC
adds r0, r5, 0x2
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
bne _0801EBEC
ldr r2, _0801ED24 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x8
orrs r0, r1
strb r0, [r2]
ldr r1, _0801ED28 @ =gUnknown_2023E8C
ldr r0, _0801ED2C @ =sBattler_AI
ldrb r2, [r0]
lsls r2, 4
adds r2, r1
ldrb r0, [r2, 0x1]
movs r1, 0x2
orrs r0, r1
strb r0, [r2, 0x1]
_0801EBEC:
adds r2, r3, r4
mov r0, r8
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r7
adds r0, 0x21
ldrb r1, [r2]
ldrb r0, [r0]
cmp r1, r0
bne _0801EC10
adds r0, r5, 0x2
adds r0, r4
ldrb r0, [r0]
cmp r0, 0x14
bne _0801EC10
movs r0, 0x1
orrs r6, r0
_0801EC10:
adds r2, r3, r4
mov r0, r8
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r7
adds r1, r0, 0
adds r1, 0x22
ldrb r2, [r2]
ldrb r1, [r1]
cmp r2, r1
bne _0801EC3E
adds r0, 0x21
ldrb r0, [r0]
cmp r0, r2
beq _0801EC3E
adds r0, r5, 0x2
adds r0, r4
ldrb r0, [r0]
cmp r0, 0x14
bne _0801EC3E
movs r0, 0x1
orrs r6, r0
_0801EC3E:
adds r2, r3, r4
mov r0, r8
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r7
adds r0, 0x21
ldrb r1, [r2]
ldrb r0, [r0]
cmp r1, r0
bne _0801EC66
adds r0, r5, 0x2
adds r0, r4
ldrb r0, [r0]
cmp r0, 0x5
bne _0801EC66
movs r0, 0x2
orrs r6, r0
lsls r0, r6, 24
lsrs r6, r0, 24
_0801EC66:
adds r2, r3, r4
mov r0, r8
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r7
adds r1, r0, 0
adds r1, 0x22
ldrb r2, [r2]
ldrb r1, [r1]
cmp r2, r1
bne _0801EC98
adds r0, 0x21
ldrb r0, [r0]
cmp r0, r2
beq _0801EC98
adds r0, r5, 0x2
adds r0, r4
ldrb r0, [r0]
cmp r0, 0x5
bne _0801EC98
movs r0, 0x2
orrs r6, r0
lsls r0, r6, 24
lsrs r6, r0, 24
_0801EC98:
adds r5, 0x3
adds r0, r5, r4
ldrb r0, [r0]
_0801EC9E:
cmp r0, 0xFF
beq _0801ECC2
cmp r0, 0xFE
beq _0801ECA8
b _0801EB5C
_0801ECA8:
mov r2, r8
ldrb r1, [r2]
movs r0, 0x58
muls r0, r1
adds r1, r7, 0
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 22
ands r0, r1
cmp r0, 0
beq _0801EC98
_0801ECC2:
mov r0, r8
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r7
adds r0, 0x20
ldrb r4, [r0]
cmp r4, 0x19
bne _0801ED18
ldr r0, _0801ED2C @ =sBattler_AI
ldrb r0, [r0]
mov r2, r9
ldrh r1, [r2]
bl AttacksThisTurn
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _0801ED18
movs r0, 0x3
ands r6, r0
cmp r6, 0x1
beq _0801ED18
ldr r2, _0801ED30 @ =gBattleMoves
mov r0, r9
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _0801ED18
ldr r0, _0801ED34 @ =gLastUsedAbility
strb r4, [r0]
ldr r1, _0801ED38 @ =gUnknown_2023E82
movs r0, 0x3
strb r0, [r1, 0x6]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x19
bl sub_80C71D0
_0801ED18:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801ED24: .4byte gMoveResultFlags
_0801ED28: .4byte gUnknown_2023E8C
_0801ED2C: .4byte sBattler_AI
_0801ED30: .4byte gBattleMoves
_0801ED34: .4byte gLastUsedAbility
_0801ED38: .4byte gUnknown_2023E82
thumb_func_end CheckWonderGuardAndLevitate
thumb_func_start ModulateDmgByType2
ModulateDmgByType2: @ 801ED3C
push {r4-r7,lr}
adds r6, r2, 0
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 16
lsrs r5, r1, 16
ldr r7, _0801ED70 @ =gBattleMoveDamage
ldr r0, [r7]
muls r0, r4
movs r1, 0xA
bl __divsi3
str r0, [r7]
cmp r0, 0
bne _0801ED62
cmp r4, 0
beq _0801ED62
movs r0, 0x1
str r0, [r7]
_0801ED62:
cmp r4, 0x5
beq _0801ED8A
cmp r4, 0x5
bgt _0801ED74
cmp r4, 0
beq _0801ED7A
b _0801EDEE
.align 2, 0
_0801ED70: .4byte gBattleMoveDamage
_0801ED74:
cmp r4, 0x14
beq _0801EDBC
b _0801EDEE
_0801ED7A:
ldrb r0, [r6]
movs r1, 0x8
orrs r0, r1
movs r1, 0xFB
ands r0, r1
movs r1, 0xFD
ands r0, r1
b _0801EDEC
_0801ED8A:
ldr r0, _0801EDB4 @ =gBattleMoves
lsls r1, r5, 1
adds r1, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
cmp r0, 0
beq _0801EDEE
ldrb r1, [r6]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801EDEE
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0801EDB8
movs r0, 0xFD
ands r0, r1
b _0801EDEC
.align 2, 0
_0801EDB4: .4byte gBattleMoves
_0801EDB8:
movs r0, 0x4
b _0801EDEA
_0801EDBC:
ldr r0, _0801EDE4 @ =gBattleMoves
lsls r1, r5, 1
adds r1, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
cmp r0, 0
beq _0801EDEE
ldrb r1, [r6]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801EDEE
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0801EDE8
movs r0, 0xFB
ands r0, r1
b _0801EDEC
.align 2, 0
_0801EDE4: .4byte gBattleMoves
_0801EDE8:
movs r0, 0x2
_0801EDEA:
orrs r0, r1
_0801EDEC:
strb r0, [r6]
_0801EDEE:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end ModulateDmgByType2
thumb_func_start TypeCalc
TypeCalc: @ 801EDF4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
lsls r0, 16
lsrs r0, 16
mov r10, r0
lsls r1, 24
lsrs r1, 24
str r1, [sp, 0x4]
lsls r2, 24
lsrs r2, 24
mov r9, r2
movs r0, 0
mov r8, r0
mov r0, sp
mov r1, r8
strb r1, [r0]
mov r2, r10
cmp r2, 0xA5
bne _0801EE26
movs r0, 0
b _0801EFAE
_0801EE26:
ldr r1, _0801EE94 @ =gBattleMoves
mov r3, r10
lsls r2, r3, 1
adds r0, r2, r3
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x2]
str r0, [sp, 0x8]
ldr r1, _0801EE98 @ =gBattleMons
movs r0, 0x58
ldr r3, [sp, 0x4]
muls r0, r3
adds r3, r0, r1
adds r0, r3, 0
adds r0, 0x21
ldrb r0, [r0]
str r2, [sp, 0xC]
adds r5, r1, 0
ldr r1, [sp, 0x8]
cmp r0, r1
beq _0801EE5A
adds r0, r3, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, r1
bne _0801EE6C
_0801EE5A:
ldr r4, _0801EE9C @ =gBattleMoveDamage
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
str r0, [r4]
movs r1, 0xA
bl __divsi3
str r0, [r4]
_0801EE6C:
movs r0, 0x58
mov r2, r9
muls r2, r0
adds r0, r2, 0
adds r0, r5
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x1A
bne _0801EEA0
ldr r3, [sp, 0x8]
cmp r3, 0x4
bne _0801EEA0
movs r1, 0x9
mov r0, sp
ldrb r0, [r0]
orrs r0, r1
mov r1, sp
strb r0, [r1]
b _0801EF50
.align 2, 0
_0801EE94: .4byte gBattleMoves
_0801EE98: .4byte gBattleMons
_0801EE9C: .4byte gBattleMoveDamage
_0801EEA0:
ldr r1, _0801EEBC @ =gUnknown_824F050
mov r2, r8
adds r0, r2, r1
ldrb r0, [r0]
adds r2, r1, 0
cmp r0, 0xFF
beq _0801EF50
cmp r0, 0xFE
bne _0801EEC6
movs r0, 0x58
mov r3, r9
muls r3, r0
adds r0, r3, 0
b _0801EF3E
.align 2, 0
_0801EEBC: .4byte gUnknown_824F050
_0801EEC0:
movs r0, 0x3
add r8, r0
b _0801EF28
_0801EEC6:
ldr r7, _0801EFC0 @ =gUnknown_824F050
mov r1, r8
adds r0, r1, r7
ldrb r0, [r0]
ldr r2, [sp, 0x8]
cmp r0, r2
bne _0801EF20
adds r1, 0x1
adds r1, r7
ldr r2, _0801EFC4 @ =gBattleMons
movs r0, 0x58
mov r3, r9
muls r3, r0
adds r0, r3, 0
adds r5, r0, r2
adds r6, r5, 0
adds r6, 0x21
ldrb r4, [r1]
ldrb r0, [r6]
cmp r4, r0
bne _0801EF00
mov r0, r8
adds r0, 0x2
adds r0, r7
ldrb r0, [r0]
mov r1, r10
mov r2, sp
bl ModulateDmgByType2
_0801EF00:
adds r0, r5, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r4, r0
bne _0801EF20
ldrb r0, [r6]
cmp r0, r4
beq _0801EF20
mov r0, r8
adds r0, 0x2
adds r0, r7
ldrb r0, [r0]
mov r1, r10
mov r2, sp
bl ModulateDmgByType2
_0801EF20:
movs r1, 0x3
add r8, r1
ldr r5, _0801EFC4 @ =gBattleMons
ldr r2, _0801EFC0 @ =gUnknown_824F050
_0801EF28:
mov r3, r8
adds r0, r3, r2
ldrb r0, [r0]
cmp r0, 0xFF
beq _0801EF50
cmp r0, 0xFE
bne _0801EEC6
movs r0, 0x58
mov r1, r9
muls r1, r0
adds r0, r1, 0
_0801EF3E:
adds r1, r5, 0
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 22
ands r0, r1
cmp r0, 0
beq _0801EEC0
_0801EF50:
movs r0, 0x58
mov r2, r9
muls r2, r0
adds r0, r2, 0
adds r0, r5
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x19
bne _0801EFAA
mov r0, sp
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0801EFAA
ldr r0, [sp, 0x4]
mov r1, r10
bl AttacksThisTurn
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x2
bne _0801EFAA
mov r0, sp
ldrb r3, [r0]
adds r0, r1, 0
ands r0, r3
cmp r0, 0
beq _0801EF92
movs r0, 0x6
ands r0, r3
cmp r0, 0x6
bne _0801EFAA
_0801EF92:
ldr r0, _0801EFC8 @ =gBattleMoves
ldr r1, [sp, 0xC]
add r1, r10
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
cmp r0, 0
beq _0801EFAA
mov r0, sp
movs r1, 0x1
orrs r1, r3
strb r1, [r0]
_0801EFAA:
mov r0, sp
ldrb r0, [r0]
_0801EFAE:
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0801EFC0: .4byte gUnknown_824F050
_0801EFC4: .4byte gBattleMons
_0801EFC8: .4byte gBattleMoves
thumb_func_end TypeCalc
thumb_func_start AI_TypeCalc
AI_TypeCalc: @ 801EFCC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
lsls r0, 16
lsrs r6, r0, 16
lsls r1, 16
lsrs r1, 16
lsls r2, 24
lsrs r2, 24
str r2, [sp, 0x4]
movs r7, 0
mov r0, sp
strb r7, [r0]
ldr r2, _0801F008 @ =gBaseStats
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x6]
mov r9, r1
ldrb r0, [r0, 0x7]
mov r8, r0
cmp r6, 0xA5
bne _0801F00C
movs r0, 0
b _0801F0B0
.align 2, 0
_0801F008: .4byte gBaseStats
_0801F00C:
ldr r2, _0801F030 @ =gBattleMoves
lsls r1, r6, 1
adds r0, r1, r6
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x2]
mov r10, r0
str r1, [sp, 0x8]
ldr r3, [sp, 0x4]
cmp r3, 0x1A
bne _0801F034
cmp r0, 0x4
bne _0801F034
movs r1, 0x9
mov r0, sp
strb r1, [r0]
b _0801F07A
.align 2, 0
_0801F030: .4byte gBattleMoves
_0801F034:
ldr r0, _0801F0C0 @ =gUnknown_824F050
adds r1, r7, r0
ldrb r0, [r1]
cmp r0, 0xFF
beq _0801F07A
adds r4, r1, 0
_0801F040:
ldrb r0, [r4]
cmp r0, 0xFE
beq _0801F06C
cmp r0, r10
bne _0801F06C
ldrb r5, [r4, 0x1]
cmp r5, r9
bne _0801F05A
ldrb r0, [r4, 0x2]
adds r1, r6, 0
mov r2, sp
bl ModulateDmgByType2
_0801F05A:
cmp r5, r8
bne _0801F06C
cmp r9, r8
beq _0801F06C
ldrb r0, [r4, 0x2]
adds r1, r6, 0
mov r2, sp
bl ModulateDmgByType2
_0801F06C:
adds r4, 0x3
adds r7, 0x3
ldr r1, _0801F0C0 @ =gUnknown_824F050
adds r0, r7, r1
ldrb r0, [r0]
cmp r0, 0xFF
bne _0801F040
_0801F07A:
ldr r3, [sp, 0x4]
cmp r3, 0x19
bne _0801F0AC
mov r0, sp
ldrb r2, [r0]
movs r0, 0x2
ands r0, r2
cmp r0, 0
beq _0801F094
movs r0, 0x6
ands r0, r2
cmp r0, 0x6
bne _0801F0AC
_0801F094:
ldr r0, _0801F0C4 @ =gBattleMoves
ldr r3, [sp, 0x8]
adds r1, r3, r6
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
cmp r0, 0
beq _0801F0AC
mov r0, sp
movs r1, 0x8
orrs r1, r2
strb r1, [r0]
_0801F0AC:
mov r0, sp
ldrb r0, [r0]
_0801F0B0:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0801F0C0: .4byte gUnknown_824F050
_0801F0C4: .4byte gBattleMoves
thumb_func_end AI_TypeCalc
thumb_func_start Unused_ApplyRandomDmgMultiplier
Unused_ApplyRandomDmgMultiplier: @ 801F0C8
push {r4,lr}
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0xF
ands r0, r1
movs r1, 0x64
subs r1, r0
lsls r1, 16
lsrs r1, 16
ldr r4, _0801F100 @ =gBattleMoveDamage
ldr r0, [r4]
cmp r0, 0
beq _0801F0FA
muls r0, r1
str r0, [r4]
movs r1, 0x64
bl __divsi3
str r0, [r4]
cmp r0, 0
bne _0801F0FA
movs r0, 0x1
str r0, [r4]
_0801F0FA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0801F100: .4byte gBattleMoveDamage
thumb_func_end Unused_ApplyRandomDmgMultiplier
thumb_func_start atk07_adjustnormaldamage
atk07_adjustnormaldamage: @ 801F104
push {r4-r7,lr}
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0xF
ands r0, r1
movs r1, 0x64
subs r1, r0
lsls r1, 16
lsrs r1, 16
ldr r4, _0801F15C @ =gBattleMoveDamage
ldr r0, [r4]
cmp r0, 0
beq _0801F136
muls r0, r1
str r0, [r4]
movs r1, 0x64
bl __divsi3
str r0, [r4]
cmp r0, 0
bne _0801F136
movs r0, 0x1
str r0, [r4]
_0801F136:
ldr r7, _0801F160 @ =gBattleMons
ldr r6, _0801F164 @ =gBattlerTarget
ldrb r2, [r6]
movs r5, 0x58
adds r0, r2, 0
muls r0, r5
adds r1, r0, r7
ldrh r0, [r1, 0x2E]
cmp r0, 0xAF
bne _0801F16C
ldr r1, _0801F168 @ =gEnigmaBerries
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r4, [r0, 0x7]
ldrb r6, [r0, 0x1A]
b _0801F186
.align 2, 0
_0801F15C: .4byte gBattleMoveDamage
_0801F160: .4byte gBattleMons
_0801F164: .4byte gBattlerTarget
_0801F168: .4byte gEnigmaBerries
_0801F16C:
ldrh r0, [r1, 0x2E]
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r6]
muls r0, r5
adds r0, r7
ldrh r0, [r0, 0x2E]
bl ItemId_GetHoldEffectParam
lsls r0, 24
lsrs r6, r0, 24
_0801F186:
ldr r1, _0801F248 @ =gPotentialItemEffectBattler
ldr r5, _0801F24C @ =gBattlerTarget
ldrb r0, [r5]
strb r0, [r1]
cmp r4, 0x27
bne _0801F1C4
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
cmp r0, r6
bcs _0801F1C4
ldrb r0, [r5]
movs r1, 0x27
bl sub_80C7208
ldr r2, _0801F250 @ =gUnknown_2023ECC
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
_0801F1C4:
ldr r2, _0801F254 @ =gBattleMons
ldr r3, _0801F24C @ =gBattlerTarget
ldrb r4, [r3]
movs r0, 0x58
muls r0, r4
adds r1, r2, 0
adds r1, 0x50
adds r0, r1
ldr r1, [r0]
movs r0, 0x80
lsls r0, 17
ands r1, r0
adds r5, r2, 0
cmp r1, 0
bne _0801F294
ldr r2, _0801F258 @ =gBattleMoves
ldr r0, _0801F25C @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0x65
beq _0801F216
ldr r0, _0801F260 @ =gUnknown_2023E8C
lsls r1, r4, 4
adds r1, r0
ldrb r0, [r1]
lsls r0, 30
cmp r0, 0
blt _0801F216
ldr r0, _0801F250 @ =gUnknown_2023ECC
lsls r1, r4, 2
adds r1, r4
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
lsrs r0, 7
cmp r0, 0
beq _0801F294
_0801F216:
ldrb r0, [r3]
movs r4, 0x58
muls r0, r4
adds r0, r5
ldrh r1, [r0, 0x28]
ldr r2, _0801F264 @ =gBattleMoveDamage
ldr r0, [r2]
cmp r1, r0
bgt _0801F294
subs r0, r1, 0x1
str r0, [r2]
ldr r1, _0801F260 @ =gUnknown_2023E8C
ldrb r3, [r3]
lsls r0, r3, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 30
cmp r0, 0
bge _0801F26C
ldr r0, _0801F268 @ =gMoveResultFlags
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
b _0801F294
.align 2, 0
_0801F248: .4byte gPotentialItemEffectBattler
_0801F24C: .4byte gBattlerTarget
_0801F250: .4byte gUnknown_2023ECC
_0801F254: .4byte gBattleMons
_0801F258: .4byte gBattleMoves
_0801F25C: .4byte gCurrentMove
_0801F260: .4byte gUnknown_2023E8C
_0801F264: .4byte gBattleMoveDamage
_0801F268: .4byte gMoveResultFlags
_0801F26C:
ldr r0, _0801F2A4 @ =gUnknown_2023ECC
lsls r1, r3, 2
adds r1, r3
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
lsrs r0, 7
cmp r0, 0
beq _0801F294
ldr r2, _0801F2A8 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldr r1, _0801F2AC @ =gUnknown_2023D68
adds r0, r3, 0
muls r0, r4
adds r0, r5
ldrh r0, [r0, 0x2E]
strh r0, [r1]
_0801F294:
ldr r1, _0801F2B0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801F2A4: .4byte gUnknown_2023ECC
_0801F2A8: .4byte gMoveResultFlags
_0801F2AC: .4byte gUnknown_2023D68
_0801F2B0: .4byte gUnknown_2023D74
thumb_func_end atk07_adjustnormaldamage
thumb_func_start atk08_adjustnormaldamage2
atk08_adjustnormaldamage2: @ 801F2B4
push {r4-r7,lr}
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0xF
ands r0, r1
movs r1, 0x64
subs r1, r0
lsls r1, 16
lsrs r1, 16
ldr r4, _0801F30C @ =gBattleMoveDamage
ldr r0, [r4]
cmp r0, 0
beq _0801F2E6
muls r0, r1
str r0, [r4]
movs r1, 0x64
bl __divsi3
str r0, [r4]
cmp r0, 0
bne _0801F2E6
movs r0, 0x1
str r0, [r4]
_0801F2E6:
ldr r7, _0801F310 @ =gBattleMons
ldr r6, _0801F314 @ =gBattlerTarget
ldrb r2, [r6]
movs r5, 0x58
adds r0, r2, 0
muls r0, r5
adds r1, r0, r7
ldrh r0, [r1, 0x2E]
cmp r0, 0xAF
bne _0801F31C
ldr r1, _0801F318 @ =gEnigmaBerries
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r4, [r0, 0x7]
ldrb r6, [r0, 0x1A]
b _0801F336
.align 2, 0
_0801F30C: .4byte gBattleMoveDamage
_0801F310: .4byte gBattleMons
_0801F314: .4byte gBattlerTarget
_0801F318: .4byte gEnigmaBerries
_0801F31C:
ldrh r0, [r1, 0x2E]
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r6]
muls r0, r5
adds r0, r7
ldrh r0, [r0, 0x2E]
bl ItemId_GetHoldEffectParam
lsls r0, 24
lsrs r6, r0, 24
_0801F336:
ldr r1, _0801F3DC @ =gPotentialItemEffectBattler
ldr r5, _0801F3E0 @ =gBattlerTarget
ldrb r0, [r5]
strb r0, [r1]
cmp r4, 0x27
bne _0801F374
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
cmp r0, r6
bcs _0801F374
ldrb r0, [r5]
movs r1, 0x27
bl sub_80C7208
ldr r2, _0801F3E4 @ =gUnknown_2023ECC
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
_0801F374:
ldr r4, _0801F3E8 @ =gBattleMons
ldr r6, _0801F3E0 @ =gBattlerTarget
ldrb r2, [r6]
movs r7, 0x58
adds r3, r2, 0
muls r3, r7
adds r0, r4, 0
adds r0, 0x50
adds r0, r3, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
cmp r0, 0
bne _0801F420
ldr r5, _0801F3EC @ =gUnknown_2023E8C
lsls r0, r2, 4
adds r0, r5
ldrb r0, [r0]
lsls r0, 30
cmp r0, 0
blt _0801F3B2
ldr r0, _0801F3E4 @ =gUnknown_2023ECC
lsls r1, r2, 2
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
lsrs r0, 7
cmp r0, 0
beq _0801F420
_0801F3B2:
adds r0, r3, r4
ldrh r1, [r0, 0x28]
ldr r2, _0801F3F0 @ =gBattleMoveDamage
ldr r0, [r2]
cmp r1, r0
bgt _0801F420
subs r0, r1, 0x1
str r0, [r2]
ldrb r3, [r6]
lsls r0, r3, 4
adds r0, r5
ldrb r0, [r0]
lsls r0, 30
cmp r0, 0
bge _0801F3F8
ldr r0, _0801F3F4 @ =gMoveResultFlags
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
b _0801F420
.align 2, 0
_0801F3DC: .4byte gPotentialItemEffectBattler
_0801F3E0: .4byte gBattlerTarget
_0801F3E4: .4byte gUnknown_2023ECC
_0801F3E8: .4byte gBattleMons
_0801F3EC: .4byte gUnknown_2023E8C
_0801F3F0: .4byte gBattleMoveDamage
_0801F3F4: .4byte gMoveResultFlags
_0801F3F8:
ldr r0, _0801F430 @ =gUnknown_2023ECC
lsls r1, r3, 2
adds r1, r3
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
lsrs r0, 7
cmp r0, 0
beq _0801F420
ldr r2, _0801F434 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldr r1, _0801F438 @ =gUnknown_2023D68
adds r0, r3, 0
muls r0, r7
adds r0, r4
ldrh r0, [r0, 0x2E]
strh r0, [r1]
_0801F420:
ldr r1, _0801F43C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801F430: .4byte gUnknown_2023ECC
_0801F434: .4byte gMoveResultFlags
_0801F438: .4byte gUnknown_2023D68
_0801F43C: .4byte gUnknown_2023D74
thumb_func_end atk08_adjustnormaldamage2
thumb_func_start atk09_attackanimation
atk09_attackanimation: @ 801F440
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0xC
ldr r0, _0801F488 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _0801F452
b _0801F572
_0801F452:
ldr r0, _0801F48C @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
ands r0, r1
ldr r3, _0801F490 @ =gCurrentMove
cmp r0, 0
beq _0801F4A0
ldrh r0, [r3]
cmp r0, 0x90
beq _0801F4A0
cmp r0, 0xA4
beq _0801F4A0
ldr r4, _0801F494 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _0801F498 @ =gUnknown_81D89F1
str r0, [r4]
ldr r1, _0801F49C @ =gBattleScripting
ldrb r0, [r1, 0x18]
adds r0, 0x1
strb r0, [r1, 0x18]
ldrb r0, [r1, 0x19]
adds r0, 0x1
strb r0, [r1, 0x19]
b _0801F572
.align 2, 0
_0801F488: .4byte gUnknown_2023BC8
_0801F48C: .4byte gUnknown_2023DD0
_0801F490: .4byte gCurrentMove
_0801F494: .4byte gUnknown_2023D74
_0801F498: .4byte gUnknown_81D89F1
_0801F49C: .4byte gBattleScripting
_0801F4A0:
ldr r2, _0801F53C @ =gBattleMoves
ldrh r1, [r3]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x6]
movs r0, 0x8
ands r0, r1
cmp r0, 0
bne _0801F4C6
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _0801F4C6
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0801F4CE
_0801F4C6:
ldr r0, _0801F540 @ =gBattleScripting
ldrb r0, [r0, 0x19]
cmp r0, 0
bne _0801F530
_0801F4CE:
ldr r0, _0801F544 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801F564
ldr r1, _0801F548 @ =gActiveBattler
ldr r0, _0801F54C @ =sBattler_AI
mov r8, r0
ldrb r0, [r0]
strb r0, [r1]
ldrh r1, [r3]
ldr r6, _0801F540 @ =gBattleScripting
ldrb r2, [r6, 0x18]
ldr r0, _0801F550 @ =gBattleMovePower
ldrh r3, [r0]
ldr r0, _0801F554 @ =gBattleMoveDamage
ldr r0, [r0]
str r0, [sp]
ldr r5, _0801F558 @ =gBattleMons
mov r0, r8
ldrb r4, [r0]
movs r0, 0x58
muls r0, r4
adds r0, r5
adds r0, 0x2B
ldrb r0, [r0]
str r0, [sp, 0x4]
mov r0, r8
ldrb r4, [r0]
lsls r0, r4, 3
subs r0, r4
lsls r0, 2
ldr r4, _0801F55C @ =gDisableStructs
adds r0, r4
str r0, [sp, 0x8]
movs r0, 0
bl EmitMoveAnimation
ldrb r0, [r6, 0x18]
adds r0, 0x1
strb r0, [r6, 0x18]
ldrb r0, [r6, 0x19]
adds r0, 0x1
strb r0, [r6, 0x19]
mov r1, r8
ldrb r0, [r1]
bl MarkBufferBankForExecution
_0801F530:
ldr r1, _0801F560 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
b _0801F572
.align 2, 0
_0801F53C: .4byte gBattleMoves
_0801F540: .4byte gBattleScripting
_0801F544: .4byte gMoveResultFlags
_0801F548: .4byte gActiveBattler
_0801F54C: .4byte sBattler_AI
_0801F550: .4byte gBattleMovePower
_0801F554: .4byte gBattleMoveDamage
_0801F558: .4byte gBattleMons
_0801F55C: .4byte gDisableStructs
_0801F560: .4byte gUnknown_2023D74
_0801F564:
ldr r4, _0801F580 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _0801F584 @ =gUnknown_81D89F1
str r0, [r4]
_0801F572:
add sp, 0xC
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801F580: .4byte gUnknown_2023D74
_0801F584: .4byte gUnknown_81D89F1
thumb_func_end atk09_attackanimation
thumb_func_start sub_801F588
sub_801F588: @ 801F588
push {lr}
ldr r0, _0801F5A0 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _0801F59A
ldr r1, _0801F5A4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0801F59A:
pop {r0}
bx r0
.align 2, 0
_0801F5A0: .4byte gUnknown_2023BC8
_0801F5A4: .4byte gUnknown_2023D74
thumb_func_end sub_801F588
thumb_func_start atk0B_healthbarupdate
atk0B_healthbarupdate: @ 801F5A8
push {r4,lr}
ldr r0, _0801F60C @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _0801F66A
ldr r0, _0801F610 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801F662
ldr r0, _0801F614 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r2, _0801F618 @ =gActiveBattler
strb r0, [r2]
ldr r1, _0801F61C @ =gBattleMons
ldrb r2, [r2]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
cmp r0, 0
beq _0801F628
ldr r0, _0801F620 @ =gDisableStructs
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
cmp r0, 0
beq _0801F628
ldr r0, _0801F624 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 1
ands r0, r1
cmp r0, 0
bne _0801F628
movs r0, 0x80
adds r1, r2, 0
bl PrepareStringBattle
b _0801F662
.align 2, 0
_0801F60C: .4byte gUnknown_2023BC8
_0801F610: .4byte gMoveResultFlags
_0801F614: .4byte gUnknown_2023D74
_0801F618: .4byte gActiveBattler
_0801F61C: .4byte gBattleMons
_0801F620: .4byte gDisableStructs
_0801F624: .4byte gUnknown_2023DD0
_0801F628:
ldr r0, _0801F670 @ =gBattleMoveDamage
ldr r0, [r0]
ldr r1, _0801F674 @ =0x00002710
cmp r0, r1
bgt _0801F636
lsls r0, 16
lsrs r1, r0, 16
_0801F636:
movs r0, 0
bl EmitHealthBarUpdate
ldr r4, _0801F678 @ =gActiveBattler
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0801F662
ldr r0, _0801F670 @ =gBattleMoveDamage
ldr r0, [r0]
cmp r0, 0
ble _0801F662
ldr r0, _0801F67C @ =gBattleResults
ldrb r1, [r0, 0x5]
movs r2, 0x1
orrs r1, r2
strb r1, [r0, 0x5]
_0801F662:
ldr r1, _0801F680 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
_0801F66A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0801F670: .4byte gBattleMoveDamage
_0801F674: .4byte 0x00002710
_0801F678: .4byte gActiveBattler
_0801F67C: .4byte gBattleResults
_0801F680: .4byte gUnknown_2023D74
thumb_func_end atk0B_healthbarupdate
thumb_func_start atk0C_datahpupdate
atk0C_datahpupdate: @ 801F684
push {r4-r7,lr}
sub sp, 0x4
ldr r0, _0801F6AC @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _0801F692
b _0801FA62
_0801F692:
ldr r0, _0801F6B0 @ =gBattleStruct
ldr r0, [r0]
ldrb r1, [r0, 0x13]
cmp r1, 0
beq _0801F6B4
movs r0, 0x40
ands r0, r1
cmp r0, 0
bne _0801F6B4
movs r6, 0x3F
ands r6, r1
b _0801F6C4
.align 2, 0
_0801F6AC: .4byte gUnknown_2023BC8
_0801F6B0: .4byte gBattleStruct
_0801F6B4:
ldr r2, _0801F750 @ =gBattleMoves
ldr r0, _0801F754 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r6, [r0, 0x2]
_0801F6C4:
ldr r0, _0801F758 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _0801F6D2
b _0801FA34
_0801F6D2:
ldr r0, _0801F75C @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r7, _0801F760 @ =gActiveBattler
strb r0, [r7]
ldr r1, _0801F764 @ =gBattleMons
ldrb r2, [r7]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
cmp r0, 0
beq _0801F7E8
ldr r0, _0801F768 @ =gDisableStructs
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r4, r1, r0
ldrb r1, [r4, 0xA]
mov r12, r0
cmp r1, 0
beq _0801F7E8
ldr r0, _0801F76C @ =gUnknown_2023DD0
ldr r3, [r0]
movs r0, 0x80
lsls r0, 1
ands r3, r0
cmp r3, 0
bne _0801F7E8
adds r5, r1, 0
ldr r6, _0801F770 @ =gBattleMoveDamage
ldr r4, [r6]
cmp r5, r4
blt _0801F77C
ldr r0, _0801F774 @ =gUnknown_2023ECC
lsls r1, r2, 2
adds r1, r2
lsls r1, 2
adds r0, 0x4
adds r1, r0
ldr r0, [r1]
cmp r0, 0
bne _0801F736
str r4, [r1]
_0801F736:
ldrb r0, [r7]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
add r1, r12
ldr r2, [r6]
ldrb r0, [r1, 0xA]
subs r0, r2
strb r0, [r1, 0xA]
ldr r1, _0801F778 @ =gUnknown_2023D54
ldr r0, [r6]
str r0, [r1]
b _0801F7AC
.align 2, 0
_0801F750: .4byte gBattleMoves
_0801F754: .4byte gCurrentMove
_0801F758: .4byte gMoveResultFlags
_0801F75C: .4byte gUnknown_2023D74
_0801F760: .4byte gActiveBattler
_0801F764: .4byte gBattleMons
_0801F768: .4byte gDisableStructs
_0801F76C: .4byte gUnknown_2023DD0
_0801F770: .4byte gBattleMoveDamage
_0801F774: .4byte gUnknown_2023ECC
_0801F778: .4byte gUnknown_2023D54
_0801F77C:
ldr r0, _0801F7D4 @ =gUnknown_2023ECC
lsls r1, r2, 2
adds r1, r2
lsls r1, 2
adds r0, 0x4
adds r1, r0
ldr r0, [r1]
cmp r0, 0
bne _0801F790
str r5, [r1]
_0801F790:
ldr r2, _0801F7D8 @ =gUnknown_2023D54
ldrb r1, [r7]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r12
ldrb r0, [r0, 0xA]
str r0, [r2]
ldrb r1, [r7]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r12
strb r3, [r0, 0xA]
_0801F7AC:
ldr r0, _0801F7DC @ =gActiveBattler
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r12
ldrb r0, [r0, 0xA]
cmp r0, 0
beq _0801F7C0
b _0801FA5A
_0801F7C0:
ldr r4, _0801F7E0 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x2
str r0, [r4]
bl BattleScriptPushCursor
ldr r0, _0801F7E4 @ =gUnknown_81D9526
str r0, [r4]
b _0801FA62
.align 2, 0
_0801F7D4: .4byte gUnknown_2023ECC
_0801F7D8: .4byte gUnknown_2023D54
_0801F7DC: .4byte gActiveBattler
_0801F7E0: .4byte gUnknown_2023D74
_0801F7E4: .4byte gUnknown_81D9526
_0801F7E8:
ldr r0, _0801F828 @ =gUnknown_2023DD0
ldr r2, [r0]
ldr r1, _0801F82C @ =0xfffffeff
ands r2, r1
str r2, [r0]
ldr r1, _0801F830 @ =gBattleMoveDamage
ldr r5, [r1]
mov r12, r0
adds r7, r1, 0
cmp r5, 0
bge _0801F83C
ldr r4, _0801F834 @ =gBattleMons
ldr r2, _0801F838 @ =gActiveBattler
ldrb r0, [r2]
movs r3, 0x58
adds r1, r0, 0
muls r1, r3
adds r1, r4
ldrh r0, [r1, 0x28]
subs r0, r5
strh r0, [r1, 0x28]
ldrb r0, [r2]
muls r0, r3
adds r1, r0, r4
ldrh r3, [r1, 0x2C]
ldrh r0, [r1, 0x28]
adds r5, r2, 0
cmp r0, r3
bhi _0801F824
b _0801F9FA
_0801F824:
strh r3, [r1, 0x28]
b _0801F9FA
.align 2, 0
_0801F828: .4byte gUnknown_2023DD0
_0801F82C: .4byte 0xfffffeff
_0801F830: .4byte gBattleMoveDamage
_0801F834: .4byte gBattleMons
_0801F838: .4byte gActiveBattler
_0801F83C:
movs r0, 0x20
ands r0, r2
cmp r0, 0
beq _0801F858
movs r0, 0x21
negs r0, r0
ands r2, r0
mov r0, r12
str r2, [r0]
ldr r5, _0801F854 @ =gActiveBattler
b _0801F8A0
.align 2, 0
_0801F854: .4byte gActiveBattler
_0801F858:
ldr r0, _0801F880 @ =gUnknown_2023D58
ldr r2, _0801F884 @ =gActiveBattler
ldrb r1, [r2]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
adds r0, r5
str r0, [r1]
ldr r0, _0801F888 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
adds r5, r2, 0
cmp r0, 0
bne _0801F894
ldr r1, _0801F88C @ =gUnknown_2023DD8
ldrb r0, [r5]
adds r0, r1
ldr r1, _0801F890 @ =sBattler_AI
b _0801F89C
.align 2, 0
_0801F880: .4byte gUnknown_2023D58
_0801F884: .4byte gActiveBattler
_0801F888: .4byte gUnknown_2023D74
_0801F88C: .4byte gUnknown_2023DD8
_0801F890: .4byte sBattler_AI
_0801F894:
ldr r1, _0801F8C0 @ =gUnknown_2023DD8
ldrb r0, [r5]
adds r0, r1
ldr r1, _0801F8C4 @ =gBattlerTarget
_0801F89C:
ldrb r1, [r1]
strb r1, [r0]
_0801F8A0:
ldr r4, _0801F8C8 @ =gBattleMons
ldrb r0, [r5]
movs r3, 0x58
muls r0, r3
adds r2, r0, r4
ldrh r0, [r2, 0x28]
ldr r1, [r7]
cmp r0, r1
ble _0801F8D0
subs r0, r1
strh r0, [r2, 0x28]
ldr r0, _0801F8CC @ =gUnknown_2023D54
str r1, [r0]
adds r7, r0, 0
b _0801F8E0
.align 2, 0
_0801F8C0: .4byte gUnknown_2023DD8
_0801F8C4: .4byte gBattlerTarget
_0801F8C8: .4byte gBattleMons
_0801F8CC: .4byte gUnknown_2023D54
_0801F8D0:
ldr r2, _0801F954 @ =gUnknown_2023D54
str r0, [r2]
ldrb r0, [r5]
muls r0, r3
adds r0, r4
movs r1, 0
strh r1, [r0, 0x28]
adds r7, r2, 0
_0801F8E0:
ldr r2, _0801F958 @ =gUnknown_2023ECC
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r1, r2, 0x4
adds r3, r0, r1
ldr r0, [r3]
adds r4, r2, 0
cmp r0, 0
bne _0801F908
mov r1, r12
ldr r0, [r1]
movs r1, 0x80
lsls r1, 13
ands r0, r1
cmp r0, 0
bne _0801F908
ldr r0, [r7]
str r0, [r3]
_0801F908:
cmp r6, 0x8
bhi _0801F990
mov r1, r12
ldr r0, [r1]
movs r1, 0x80
lsls r1, 13
ands r0, r1
cmp r0, 0
bne _0801F98C
ldr r0, _0801F95C @ =gCurrentMove
ldrh r0, [r0]
cmp r0, 0xDC
beq _0801F98C
ldr r3, _0801F960 @ =gUnknown_2023E8C
ldrb r0, [r5]
lsls r0, 4
adds r1, r3, 0x4
adds r0, r1
ldr r2, [r7]
str r2, [r0]
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r1, r4, 0
adds r1, 0x8
adds r0, r1
str r2, [r0]
ldr r0, _0801F964 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
cmp r0, 0
bne _0801F96C
ldrb r0, [r5]
lsls r0, 4
adds r0, r3
ldr r2, _0801F968 @ =sBattler_AI
b _0801F974
.align 2, 0
_0801F954: .4byte gUnknown_2023D54
_0801F958: .4byte gUnknown_2023ECC
_0801F95C: .4byte gCurrentMove
_0801F960: .4byte gUnknown_2023E8C
_0801F964: .4byte gUnknown_2023D74
_0801F968: .4byte sBattler_AI
_0801F96C:
ldrb r0, [r5]
lsls r0, 4
adds r0, r3
ldr r2, _0801F988 @ =gBattlerTarget
_0801F974:
ldrb r1, [r2]
strb r1, [r0, 0xC]
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r2]
strb r1, [r0, 0x10]
b _0801F9FA
.align 2, 0
_0801F988: .4byte gBattlerTarget
_0801F98C:
cmp r6, 0x8
bls _0801F9FA
_0801F990:
mov r1, r12
ldr r0, [r1]
movs r1, 0x80
lsls r1, 13
ands r0, r1
cmp r0, 0
bne _0801F9FA
ldr r3, _0801F9D4 @ =gUnknown_2023E8C
ldrb r0, [r5]
lsls r0, 4
adds r1, r3, 0
adds r1, 0x8
adds r0, r1
ldr r2, [r7]
str r2, [r0]
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r1, r4, 0
adds r1, 0xC
adds r0, r1
str r2, [r0]
ldr r0, _0801F9D8 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
cmp r0, 0
bne _0801F9E0
ldrb r0, [r5]
lsls r0, 4
adds r0, r3
ldr r2, _0801F9DC @ =sBattler_AI
b _0801F9E8
.align 2, 0
_0801F9D4: .4byte gUnknown_2023E8C
_0801F9D8: .4byte gUnknown_2023D74
_0801F9DC: .4byte sBattler_AI
_0801F9E0:
ldrb r0, [r5]
lsls r0, 4
adds r0, r3
ldr r2, _0801FA28 @ =gBattlerTarget
_0801F9E8:
ldrb r1, [r2]
strb r1, [r0, 0xD]
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r2]
strb r1, [r0, 0x11]
_0801F9FA:
mov r1, r12
ldr r0, [r1]
ldr r1, _0801FA2C @ =0xffefffff
ands r0, r1
mov r1, r12
str r0, [r1]
ldrb r1, [r5]
movs r0, 0x58
muls r0, r1
ldr r1, _0801FA30 @ =gUnknown_2023C0C
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x2A
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldrb r0, [r5]
bl MarkBufferBankForExecution
b _0801FA5A
.align 2, 0
_0801FA28: .4byte gBattlerTarget
_0801FA2C: .4byte 0xffefffff
_0801FA30: .4byte gUnknown_2023C0C
_0801FA34:
ldr r0, _0801FA6C @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r1, _0801FA70 @ =gActiveBattler
strb r0, [r1]
ldr r2, _0801FA74 @ =gUnknown_2023ECC
ldrb r1, [r1]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r2, 0x4
adds r1, r0, r2
ldr r0, [r1]
cmp r0, 0
bne _0801FA5A
ldr r0, _0801FA78 @ =0x0000ffff
str r0, [r1]
_0801FA5A:
ldr r1, _0801FA6C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
_0801FA62:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801FA6C: .4byte gUnknown_2023D74
_0801FA70: .4byte gActiveBattler
_0801FA74: .4byte gUnknown_2023ECC
_0801FA78: .4byte 0x0000ffff
thumb_func_end atk0C_datahpupdate
thumb_func_start atk0D_critmessage
atk0D_critmessage: @ 801FA7C
push {lr}
ldr r0, _0801FAB8 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _0801FAB2
ldr r0, _0801FABC @ =gCritMultiplier
ldrb r0, [r0]
cmp r0, 0x2
bne _0801FAAA
ldr r0, _0801FAC0 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801FAAA
ldr r0, _0801FAC4 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0xD9
bl PrepareStringBattle
ldr r1, _0801FAC8 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x7]
_0801FAAA:
ldr r1, _0801FACC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0801FAB2:
pop {r0}
bx r0
.align 2, 0
_0801FAB8: .4byte gUnknown_2023BC8
_0801FABC: .4byte gCritMultiplier
_0801FAC0: .4byte gMoveResultFlags
_0801FAC4: .4byte sBattler_AI
_0801FAC8: .4byte gUnknown_2023E82
_0801FACC: .4byte gUnknown_2023D74
thumb_func_end atk0D_critmessage
thumb_func_start atk0E_effectivenesssound
atk0E_effectivenesssound: @ 801FAD0
push {r4,lr}
ldr r0, _0801FB08 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _0801FB90
ldr r4, _0801FB0C @ =gActiveBattler
ldr r0, _0801FB10 @ =gBattlerTarget
ldrb r0, [r0]
strb r0, [r4]
ldr r1, _0801FB14 @ =gMoveResultFlags
ldrb r2, [r1]
movs r0, 0x1
ands r0, r2
cmp r0, 0
bne _0801FB88
movs r0, 0xFE
ands r0, r2
cmp r0, 0x10
beq _0801FB42
cmp r0, 0x10
bgt _0801FB1E
cmp r0, 0x4
beq _0801FB32
cmp r0, 0x4
bgt _0801FB18
cmp r0, 0x2
beq _0801FB2C
b _0801FB42
.align 2, 0
_0801FB08: .4byte gUnknown_2023BC8
_0801FB0C: .4byte gActiveBattler
_0801FB10: .4byte gBattlerTarget
_0801FB14: .4byte gMoveResultFlags
_0801FB18:
cmp r0, 0x8
beq _0801FB88
b _0801FB42
_0801FB1E:
cmp r0, 0x40
beq _0801FB42
cmp r0, 0x40
bgt _0801FB42
cmp r0, 0x20
beq _0801FB88
b _0801FB42
_0801FB2C:
movs r0, 0
movs r1, 0xE
b _0801FB36
_0801FB32:
movs r0, 0
movs r1, 0xC
_0801FB36:
bl EmitPlaySE
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _0801FB88
_0801FB42:
ldrb r1, [r1]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0801FB52
movs r0, 0
movs r1, 0xE
b _0801FB5E
_0801FB52:
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0801FB70
movs r0, 0
movs r1, 0xC
_0801FB5E:
bl EmitPlaySE
ldr r0, _0801FB6C @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
b _0801FB88
.align 2, 0
_0801FB6C: .4byte gActiveBattler
_0801FB70:
movs r0, 0x28
ands r0, r1
cmp r0, 0
bne _0801FB88
movs r0, 0
movs r1, 0xD
bl EmitPlaySE
ldr r0, _0801FB98 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
_0801FB88:
ldr r1, _0801FB9C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0801FB90:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0801FB98: .4byte gActiveBattler
_0801FB9C: .4byte gUnknown_2023D74
thumb_func_end atk0E_effectivenesssound
thumb_func_start atk0F_resultmessage
atk0F_resultmessage: @ 801FBA0
push {r4-r7,lr}
movs r3, 0
ldr r0, _0801FBDC @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _0801FBAE
b _0801FD40
_0801FBAE:
ldr r1, _0801FBE0 @ =gMoveResultFlags
ldrb r2, [r1]
movs r4, 0x1
adds r0, r4, 0
ands r0, r2
adds r6, r1, 0
ldr r7, _0801FBE4 @ =gUnknown_2023E82
cmp r0, 0
beq _0801FBEC
movs r0, 0x8
ands r0, r2
cmp r0, 0
beq _0801FBCE
ldrb r0, [r7, 0x6]
cmp r0, 0x2
bls _0801FBEC
_0801FBCE:
ldr r1, _0801FBE8 @ =gUnknown_83FE514
ldrb r0, [r7, 0x6]
lsls r0, 1
adds r0, r1
ldrh r3, [r0]
strb r4, [r7, 0x7]
b _0801FD2A
.align 2, 0
_0801FBDC: .4byte gUnknown_2023BC8
_0801FBE0: .4byte gMoveResultFlags
_0801FBE4: .4byte gUnknown_2023E82
_0801FBE8: .4byte gUnknown_83FE514
_0801FBEC:
movs r0, 0x1
strb r0, [r7, 0x7]
ldrb r5, [r6]
movs r0, 0xFE
ands r0, r5
cmp r0, 0x10
beq _0801FC30
cmp r0, 0x10
bgt _0801FC12
cmp r0, 0x4
beq _0801FC2C
cmp r0, 0x4
bgt _0801FC0C
cmp r0, 0x2
beq _0801FC28
b _0801FC78
_0801FC0C:
cmp r0, 0x8
beq _0801FC84
b _0801FC78
_0801FC12:
cmp r0, 0x40
beq _0801FC34
cmp r0, 0x40
bgt _0801FC22
cmp r0, 0x20
bne _0801FC20
b _0801FD24
_0801FC20:
b _0801FC78
_0801FC22:
cmp r0, 0x80
beq _0801FC38
b _0801FC78
_0801FC28:
movs r3, 0xDE
b _0801FD2E
_0801FC2C:
movs r3, 0xDD
b _0801FD2E
_0801FC30:
movs r3, 0xDA
b _0801FD2E
_0801FC34:
movs r3, 0x99
b _0801FD2E
_0801FC38:
ldr r4, _0801FC60 @ =gUnknown_2023D68
ldr r2, _0801FC64 @ =gBattleMons
ldr r3, _0801FC68 @ =gBattlerTarget
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x2E]
strh r0, [r4]
ldr r1, _0801FC6C @ =gPotentialItemEffectBattler
ldrb r0, [r3]
strb r0, [r1]
movs r0, 0x3F
ands r0, r5
strb r0, [r6]
bl BattleScriptPushCursor
ldr r1, _0801FC70 @ =gUnknown_2023D74
ldr r0, _0801FC74 @ =gUnknown_81D9641
b _0801FD3E
.align 2, 0
_0801FC60: .4byte gUnknown_2023D68
_0801FC64: .4byte gBattleMons
_0801FC68: .4byte gBattlerTarget
_0801FC6C: .4byte gPotentialItemEffectBattler
_0801FC70: .4byte gUnknown_2023D74
_0801FC74: .4byte gUnknown_81D9641
_0801FC78:
adds r2, r6, 0
ldrb r5, [r2]
movs r0, 0x8
ands r0, r5
cmp r0, 0
beq _0801FC88
_0801FC84:
movs r3, 0x1B
b _0801FD2E
_0801FC88:
movs r0, 0x10
ands r0, r5
cmp r0, 0
beq _0801FCB0
movs r0, 0xEF
ands r0, r5
movs r1, 0xFD
ands r0, r1
movs r1, 0xFB
ands r0, r1
strb r0, [r2]
bl BattleScriptPushCursor
ldr r1, _0801FCA8 @ =gUnknown_2023D74
ldr r0, _0801FCAC @ =gUnknown_81D8FE4
b _0801FD3E
.align 2, 0
_0801FCA8: .4byte gUnknown_2023D74
_0801FCAC: .4byte gUnknown_81D8FE4
_0801FCB0:
movs r0, 0x40
ands r0, r5
cmp r0, 0
beq _0801FCD0
movs r0, 0x3F
ands r0, r5
strb r0, [r2]
bl BattleScriptPushCursor
ldr r1, _0801FCC8 @ =gUnknown_2023D74
ldr r0, _0801FCCC @ =gUnknown_81D8FDD
b _0801FD3E
.align 2, 0
_0801FCC8: .4byte gUnknown_2023D74
_0801FCCC: .4byte gUnknown_81D8FDD
_0801FCD0:
movs r0, 0x80
ands r0, r5
cmp r0, 0
beq _0801FD18
ldr r4, _0801FD00 @ =gUnknown_2023D68
ldr r2, _0801FD04 @ =gBattleMons
ldr r3, _0801FD08 @ =gBattlerTarget
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x2E]
strh r0, [r4]
ldr r1, _0801FD0C @ =gPotentialItemEffectBattler
ldrb r0, [r3]
strb r0, [r1]
movs r0, 0x3F
ands r0, r5
strb r0, [r6]
bl BattleScriptPushCursor
ldr r1, _0801FD10 @ =gUnknown_2023D74
ldr r0, _0801FD14 @ =gUnknown_81D9641
b _0801FD3E
.align 2, 0
_0801FD00: .4byte gUnknown_2023D68
_0801FD04: .4byte gBattleMons
_0801FD08: .4byte gBattlerTarget
_0801FD0C: .4byte gPotentialItemEffectBattler
_0801FD10: .4byte gUnknown_2023D74
_0801FD14: .4byte gUnknown_81D9641
_0801FD18:
movs r0, 0x20
ands r0, r5
lsls r0, 24
lsrs r0, 24
cmp r0, 0
beq _0801FD28
_0801FD24:
movs r3, 0xE5
b _0801FD2E
_0801FD28:
strb r0, [r7, 0x7]
_0801FD2A:
cmp r3, 0
beq _0801FD38
_0801FD2E:
adds r0, r3, 0
ldr r1, _0801FD48 @ =sBattler_AI
ldrb r1, [r1]
bl PrepareStringBattle
_0801FD38:
ldr r1, _0801FD4C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
_0801FD3E:
str r0, [r1]
_0801FD40:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801FD48: .4byte sBattler_AI
_0801FD4C: .4byte gUnknown_2023D74
thumb_func_end atk0F_resultmessage
thumb_func_start atk10_printstring
atk10_printstring: @ 801FD50
push {r4,lr}
ldr r0, _0801FD80 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _0801FD7A
ldr r4, _0801FD84 @ =gUnknown_2023D74
ldr r1, [r4]
ldrb r0, [r1, 0x1]
ldrb r1, [r1, 0x2]
lsls r1, 8
orrs r0, r1
ldr r1, _0801FD88 @ =sBattler_AI
ldrb r1, [r1]
bl PrepareStringBattle
ldr r0, [r4]
adds r0, 0x3
str r0, [r4]
ldr r1, _0801FD8C @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x7]
_0801FD7A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0801FD80: .4byte gUnknown_2023BC8
_0801FD84: .4byte gUnknown_2023D74
_0801FD88: .4byte sBattler_AI
_0801FD8C: .4byte gUnknown_2023E82
thumb_func_end atk10_printstring
thumb_func_start atk11_printselectionstring
atk11_printselectionstring: @ 801FD90
push {r4,r5,lr}
ldr r5, _0801FDC4 @ =gActiveBattler
ldr r0, _0801FDC8 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r5]
ldr r4, _0801FDCC @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r1, [r0, 0x1]
ldrb r0, [r0, 0x2]
lsls r0, 8
orrs r1, r0
movs r0, 0
bl EmitPrintSelectionString
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r0, [r4]
adds r0, 0x3
str r0, [r4]
ldr r1, _0801FDD0 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x7]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801FDC4: .4byte gActiveBattler
_0801FDC8: .4byte sBattler_AI
_0801FDCC: .4byte gUnknown_2023D74
_0801FDD0: .4byte gUnknown_2023E82
thumb_func_end atk11_printselectionstring
thumb_func_start atk12_waitmessage
atk12_waitmessage: @ 801FDD4
push {r4-r6,lr}
ldr r0, _0801FDF0 @ =gUnknown_2023BC8
ldr r4, [r0]
cmp r4, 0
bne _0801FE22
ldr r6, _0801FDF4 @ =gUnknown_2023E82
ldrb r0, [r6, 0x7]
cmp r0, 0
bne _0801FDFC
ldr r1, _0801FDF8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x3
str r0, [r1]
b _0801FE22
.align 2, 0
_0801FDF0: .4byte gUnknown_2023BC8
_0801FDF4: .4byte gUnknown_2023E82
_0801FDF8: .4byte gUnknown_2023D74
_0801FDFC:
ldr r5, _0801FE28 @ =gUnknown_2023D74
ldr r2, [r5]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldr r3, _0801FE2C @ =gUnknown_2023E7C
ldrh r0, [r3]
adds r0, 0x1
strh r0, [r3]
lsls r0, 16
lsrs r0, 16
cmp r0, r1
bcc _0801FE22
movs r1, 0
strh r4, [r3]
adds r0, r2, 0x3
str r0, [r5]
strb r1, [r6, 0x7]
_0801FE22:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801FE28: .4byte gUnknown_2023D74
_0801FE2C: .4byte gUnknown_2023E7C
thumb_func_end atk12_waitmessage
thumb_func_start atk13_printfromtable
atk13_printfromtable: @ 801FE30
push {r4,r5,lr}
ldr r0, _0801FE74 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _0801FE6E
ldr r4, _0801FE78 @ =gUnknown_2023D74
ldr r2, [r4]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
ldr r5, _0801FE7C @ =gUnknown_2023E82
ldrb r0, [r5, 0x5]
lsls r0, 1
adds r1, r0
ldrh r0, [r1]
ldr r1, _0801FE80 @ =sBattler_AI
ldrb r1, [r1]
bl PrepareStringBattle
ldr r0, [r4]
adds r0, 0x5
str r0, [r4]
movs r0, 0x1
strb r0, [r5, 0x7]
_0801FE6E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801FE74: .4byte gUnknown_2023BC8
_0801FE78: .4byte gUnknown_2023D74
_0801FE7C: .4byte gUnknown_2023E82
_0801FE80: .4byte sBattler_AI
thumb_func_end atk13_printfromtable
thumb_func_start atk14_printselectionstringfromtable
atk14_printselectionstringfromtable: @ 801FE84
push {r4-r6,lr}
ldr r0, _0801FED4 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _0801FECE
ldr r5, _0801FED8 @ =gUnknown_2023D74
ldr r2, [r5]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
ldr r6, _0801FEDC @ =gUnknown_2023E82
ldrb r0, [r6, 0x5]
lsls r0, 1
adds r1, r0
ldr r4, _0801FEE0 @ =gActiveBattler
ldr r0, _0801FEE4 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r4]
ldrh r1, [r1]
movs r0, 0
bl EmitPrintSelectionString
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x5
str r0, [r5]
movs r0, 0x1
strb r0, [r6, 0x7]
_0801FECE:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801FED4: .4byte gUnknown_2023BC8
_0801FED8: .4byte gUnknown_2023D74
_0801FEDC: .4byte gUnknown_2023E82
_0801FEE0: .4byte gActiveBattler
_0801FEE4: .4byte sBattler_AI
thumb_func_end atk14_printselectionstringfromtable
thumb_func_start BankGetTurnOrder
BankGetTurnOrder: @ 801FEE8
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
ldr r0, _0801FF18 @ =gBattlersCount
ldrb r3, [r0]
cmp r1, r3
bge _0801FF0E
ldr r4, _0801FF1C @ =gUnknown_2023BDE
ldrb r0, [r4]
cmp r0, r2
beq _0801FF0E
_0801FF00:
adds r1, 0x1
cmp r1, r3
bge _0801FF0E
adds r0, r1, r4
ldrb r0, [r0]
cmp r0, r2
bne _0801FF00
_0801FF0E:
lsls r0, r1, 24
lsrs r0, 24
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0801FF18: .4byte gBattlersCount
_0801FF1C: .4byte gUnknown_2023BDE
thumb_func_end BankGetTurnOrder
thumb_func_start sub_801FF20
sub_801FF20: @ 801FF20
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 24
lsrs r5, r1, 24
movs r0, 0
mov r10, r0
movs r7, 0
movs r1, 0x1
str r1, [sp, 0x4]
ldr r1, _0801FF64 @ =gUnknown_2023E82
ldrb r3, [r1, 0x3]
movs r0, 0x40
ands r0, r3
adds r6, r1, 0
cmp r0, 0
beq _0801FF78
ldr r2, _0801FF68 @ =gUnknown_2023D6E
ldr r0, _0801FF6C @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r2]
movs r0, 0xBF
ands r0, r3
strb r0, [r6, 0x3]
movs r7, 0x40
ldr r1, _0801FF70 @ =gBattleScripting
ldr r0, _0801FF74 @ =gBattlerTarget
b _0801FF84
.align 2, 0
_0801FF64: .4byte gUnknown_2023E82
_0801FF68: .4byte gUnknown_2023D6E
_0801FF6C: .4byte sBattler_AI
_0801FF70: .4byte gBattleScripting
_0801FF74: .4byte gBattlerTarget
_0801FF78:
ldr r2, _08020094 @ =gUnknown_2023D6E
ldr r0, _08020098 @ =gBattlerTarget
ldrb r0, [r0]
strb r0, [r2]
ldr r1, _0802009C @ =gBattleScripting
ldr r0, _080200A0 @ =sBattler_AI
_0801FF84:
ldrb r0, [r0]
strb r0, [r1, 0x17]
mov r9, r2
ldr r0, _080200A4 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x80
lsls r1, 9
ands r0, r1
cmp r0, 0
beq _0801FFB2
ldrb r0, [r6, 0x3]
cmp r0, 0x1
beq _0801FFB2
mov r2, r9
ldrb r0, [r2]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0801FFB2
bl _080210EC
_0801FFB2:
ldr r3, _080200A8 @ =gBattleMons
ldr r2, _08020094 @ =gUnknown_2023D6E
ldrb r1, [r2]
movs r0, 0x58
muls r0, r1
adds r0, r3
adds r0, 0x20
ldrb r0, [r0]
mov r9, r2
cmp r0, 0x13
bne _0801FFE6
ldr r0, _080200AC @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 6
ands r0, r1
cmp r0, 0
bne _0801FFE6
cmp r4, 0
bne _0801FFE6
ldr r0, _080200B0 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
cmp r0, 0x9
bhi _0801FFE6
bl _080210EC
_0801FFE6:
mov r3, r9
ldrb r0, [r3]
bl GetBattlerPosition
ldr r2, _080200B4 @ =gSideAffecting
movs r1, 0x1
ands r1, r0
lsls r1, 1
adds r1, r2
ldrh r1, [r1]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _08020020
ldr r0, _080200AC @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 6
ands r0, r1
cmp r0, 0
bne _08020020
cmp r4, 0
bne _08020020
ldr r0, _080200B0 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
cmp r0, 0x7
bhi _08020020
bl _080210EC
_08020020:
ldr r3, _080200A8 @ =gBattleMons
ldr r2, _08020094 @ =gUnknown_2023D6E
ldrb r1, [r2]
movs r0, 0x58
muls r0, r1
adds r0, r3
ldrh r0, [r0, 0x28]
mov r9, r2
mov r8, r3
cmp r0, 0
bne _08020046
ldr r0, _080200B0 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
cmp r0, 0xB
beq _08020046
cmp r0, 0x1F
beq _08020046
bl _080210EC
_08020046:
mov r0, r9
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
mov r1, r8
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
cmp r0, 0
beq _08020068
cmp r7, 0x40
beq _08020068
bl _080210EC
_08020068:
ldr r0, _080200B0 @ =gUnknown_2023E82
ldrb r1, [r0, 0x3]
adds r6, r0, 0
cmp r1, 0x6
bls _08020074
b _080206A2
_08020074:
ldr r1, _080200B8 @ =gUnknown_825053C
ldrb r0, [r6, 0x3]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
cmp r0, 0x10
bne _08020084
b _08020270
_08020084:
cmp r0, 0x10
bhi _080200BC
cmp r0, 0x7
beq _080200D6
cmp r0, 0x8
bne _08020092
b _0802018C
_08020092:
b _08020570
.align 2, 0
_08020094: .4byte gUnknown_2023D6E
_08020098: .4byte gBattlerTarget
_0802009C: .4byte gBattleScripting
_080200A0: .4byte sBattler_AI
_080200A4: .4byte gBattleTypeFlags
_080200A8: .4byte gBattleMons
_080200AC: .4byte gUnknown_2023DD0
_080200B0: .4byte gUnknown_2023E82
_080200B4: .4byte gSideAffecting
_080200B8: .4byte gUnknown_825053C
_080200BC:
cmp r0, 0x40
bne _080200C2
b _080203E4
_080200C2:
cmp r0, 0x40
bhi _080200CE
cmp r0, 0x20
bne _080200CC
b _08020346
_080200CC:
b _08020570
_080200CE:
cmp r0, 0x80
bne _080200D4
b _08020440
_080200D4:
b _08020570
_080200D6:
mov r2, r9
ldrb r1, [r2]
movs r0, 0x58
muls r0, r1
add r0, r8
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x2B
beq _08020138
ldr r0, _08020130 @ =gActiveBattler
movs r1, 0
strb r1, [r0]
ldr r1, _08020134 @ =gBattlersCount
ldrb r3, [r1]
adds r7, r0, 0
mov r12, r1
cmp r3, 0
beq _08020144
mov r4, r8
ldr r0, [r4, 0x50]
movs r1, 0x70
ands r0, r1
cmp r0, 0
bne _08020144
adds r1, r7, 0
mov r6, r8
adds r6, 0x50
movs r5, 0x58
movs r4, 0x70
_08020110:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
cmp r0, r3
bcs _08020144
ldrb r0, [r7]
muls r0, r5
adds r0, r6
ldr r0, [r0]
ands r0, r4
cmp r0, 0
beq _08020110
b _08020144
.align 2, 0
_08020130: .4byte gActiveBattler
_08020134: .4byte gBattlersCount
_08020138:
ldr r0, _08020184 @ =gActiveBattler
ldr r2, _08020188 @ =gBattlersCount
ldrb r1, [r2]
strb r1, [r0]
adds r7, r0, 0
mov r12, r2
_08020144:
mov r0, r9
ldrb r2, [r0]
movs r0, 0x58
adds r1, r2, 0
muls r1, r0
mov r0, r8
adds r0, 0x4C
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
beq _0802015C
b _08020570
_0802015C:
ldrb r0, [r7]
mov r3, r12
ldrb r3, [r3]
cmp r0, r3
beq _08020168
b _08020570
_08020168:
mov r4, r8
adds r0, r1, r4
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x48
bne _08020176
b _08020570
_08020176:
cmp r0, 0xF
bne _0802017C
b _08020570
_0802017C:
adds r0, r2, 0
bl CancelMultiTurnMoves
b _08020560
.align 2, 0
_08020184: .4byte gActiveBattler
_08020188: .4byte gBattlersCount
_0802018C:
mov r2, r9
ldrb r1, [r2]
movs r0, 0x58
muls r0, r1
add r0, r8
adds r0, 0x20
ldrb r1, [r0]
cmp r1, 0x11
bne _080201E4
cmp r4, 0x1
beq _080201A6
cmp r5, 0x80
bne _080201E4
_080201A6:
ldr r0, _080201D4 @ =gLastUsedAbility
strb r1, [r0]
mov r3, r9
ldrb r0, [r3]
movs r1, 0x11
bl sub_80C71D0
ldr r4, _080201D8 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _080201DC @ =gUnknown_81D9438
_080201C0:
str r0, [r4]
ldr r2, _080201E0 @ =gUnknown_2023DD0
ldr r1, [r2]
movs r0, 0x80
lsls r0, 6
ands r0, r1
cmp r0, 0
beq _080201D2
b _08020484
_080201D2:
b _080204A8
.align 2, 0
_080201D4: .4byte gLastUsedAbility
_080201D8: .4byte gUnknown_2023D74
_080201DC: .4byte gUnknown_81D9438
_080201E0: .4byte gUnknown_2023DD0
_080201E4:
mov r1, r9
ldrb r0, [r1]
movs r1, 0x58
muls r0, r1
add r0, r8
adds r1, r0, 0
adds r1, 0x21
ldrb r1, [r1]
cmp r1, 0x3
beq _08020208
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0x3
beq _08020208
cmp r1, 0x8
beq _08020208
cmp r0, 0x8
bne _08020222
_08020208:
ldr r0, _0802026C @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 6
ands r0, r1
cmp r0, 0
beq _08020222
cmp r4, 0x1
bne _0802021C
b _080204E8
_0802021C:
cmp r5, 0x80
bne _08020222
b _080204E8
_08020222:
mov r2, r9
ldrb r1, [r2]
movs r0, 0x58
muls r1, r0
mov r4, r8
adds r3, r1, r4
adds r0, r3, 0
adds r0, 0x21
ldrb r4, [r0]
cmp r4, 0x3
bne _0802023A
b _08020570
_0802023A:
adds r0, 0x1
ldrb r0, [r0]
cmp r0, 0x3
bne _08020244
b _08020570
_08020244:
cmp r4, 0x8
bne _0802024A
b _08020570
_0802024A:
cmp r0, 0x8
bne _08020250
b _08020570
_08020250:
mov r0, r8
adds r0, 0x4C
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
beq _0802025E
b _08020570
_0802025E:
adds r0, r3, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x11
bne _0802026A
b _08020570
_0802026A:
b _08020560
.align 2, 0
_0802026C: .4byte gUnknown_2023DD0
_08020270:
mov r2, r9
ldrb r1, [r2]
movs r0, 0x58
muls r0, r1
add r0, r8
adds r0, 0x20
ldrb r1, [r0]
cmp r1, 0x29
bne _080202B4
cmp r4, 0x1
beq _0802028A
cmp r5, 0x80
bne _080202B4
_0802028A:
ldr r0, _080202A8 @ =gLastUsedAbility
strb r1, [r0]
mov r3, r9
ldrb r0, [r3]
movs r1, 0x29
bl sub_80C71D0
ldr r4, _080202AC @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _080202B0 @ =gUnknown_81D9420
b _080201C0
.align 2, 0
_080202A8: .4byte gLastUsedAbility
_080202AC: .4byte gUnknown_2023D74
_080202B0: .4byte gUnknown_81D9420
_080202B4:
mov r0, r9
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
mov r2, r8
adds r1, r0, r2
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0xA
beq _080202D4
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0xA
bne _08020304
_080202D4:
ldr r0, _080202F8 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 6
ands r0, r1
cmp r0, 0
beq _08020304
cmp r4, 0x1
beq _080202EA
cmp r5, 0x80
bne _08020304
_080202EA:
ldr r4, _080202FC @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020300 @ =gUnknown_81D9420
b _080204F4
.align 2, 0
_080202F8: .4byte gUnknown_2023DD0
_080202FC: .4byte gUnknown_2023D74
_08020300: .4byte gUnknown_81D9420
_08020304:
mov r3, r9
ldrb r0, [r3]
movs r1, 0x58
adds r2, r0, 0
muls r2, r1
mov r4, r8
adds r1, r2, r4
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0xA
bne _0802031E
b _08020570
_0802031E:
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0xA
bne _0802032A
b _08020570
_0802032A:
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x29
bne _08020336
b _08020570
_08020336:
mov r0, r8
adds r0, 0x4C
adds r0, r2, r0
ldr r0, [r0]
cmp r0, 0
beq _08020344
b _08020570
_08020344:
b _08020560
_08020346:
movs r0, 0
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0xD
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _08020382
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _08020382
ldr r0, _080203D8 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _08020382
movs r1, 0
str r1, [sp, 0x4]
_08020382:
ldr r4, _080203DC @ =gBattleMons
ldr r0, _080203E0 @ =gUnknown_2023D6E
ldrb r3, [r0]
movs r0, 0x58
adds r2, r3, 0
muls r2, r0
adds r1, r2, r4
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0xF
bne _0802039C
b _08020570
_0802039C:
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0xF
bne _080203A8
b _08020570
_080203A8:
adds r0, r4, 0
adds r0, 0x4C
adds r0, r2, r0
ldr r0, [r0]
cmp r0, 0
beq _080203B6
b _08020570
_080203B6:
ldr r2, [sp, 0x4]
cmp r2, 0
bne _080203BE
b _08020570
_080203BE:
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x28
bne _080203CA
b _08020570
_080203CA:
adds r0, r3, 0
bl CancelMultiTurnMoves
movs r3, 0x1
mov r10, r3
b _08020570
.align 2, 0
_080203D8: .4byte gBattleWeather
_080203DC: .4byte gBattleMons
_080203E0: .4byte gUnknown_2023D6E
_080203E4:
mov r0, r9
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
mov r2, r8
adds r0, r1, r2
adds r0, 0x20
ldrb r2, [r0]
cmp r2, 0x7
bne _0802042C
cmp r4, 0x1
beq _08020402
cmp r5, 0x80
beq _08020402
b _08020570
_08020402:
ldr r0, _08020420 @ =gLastUsedAbility
strb r2, [r0]
mov r3, r9
ldrb r0, [r3]
movs r1, 0x7
bl sub_80C71D0
ldr r4, _08020424 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020428 @ =gUnknown_81D942C
b _080201C0
.align 2, 0
_08020420: .4byte gLastUsedAbility
_08020424: .4byte gUnknown_2023D74
_08020428: .4byte gUnknown_81D942C
_0802042C:
mov r0, r8
adds r0, 0x4C
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
beq _0802043A
b _08020570
_0802043A:
movs r4, 0x1
mov r10, r4
b _08020570
_08020440:
mov r0, r9
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
add r0, r8
adds r0, 0x20
ldrb r1, [r0]
cmp r1, 0x11
bne _080204AE
cmp r4, 0x1
beq _0802045A
cmp r5, 0x80
bne _080204AE
_0802045A:
ldr r0, _08020494 @ =gLastUsedAbility
strb r1, [r0]
mov r1, r9
ldrb r0, [r1]
movs r1, 0x11
bl sub_80C71D0
ldr r4, _08020498 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _0802049C @ =gUnknown_81D9438
str r0, [r4]
ldr r2, _080204A0 @ =gUnknown_2023DD0
ldr r1, [r2]
movs r0, 0x80
lsls r0, 6
ands r0, r1
cmp r0, 0
beq _080204A8
_08020484:
movs r0, 0x1
strb r0, [r6, 0x5]
ldr r0, _080204A4 @ =0xffffdfff
ands r1, r0
str r1, [r2]
bl _0802110A
.align 2, 0
_08020494: .4byte gLastUsedAbility
_08020498: .4byte gUnknown_2023D74
_0802049C: .4byte gUnknown_81D9438
_080204A0: .4byte gUnknown_2023DD0
_080204A4: .4byte 0xffffdfff
_080204A8:
strb r0, [r6, 0x5]
bl _0802110A
_080204AE:
mov r2, r9
ldrb r0, [r2]
movs r1, 0x58
muls r0, r1
add r0, r8
adds r1, r0, 0
adds r1, 0x21
ldrb r1, [r1]
cmp r1, 0x3
beq _080204D2
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0x3
beq _080204D2
cmp r1, 0x8
beq _080204D2
cmp r0, 0x8
bne _08020510
_080204D2:
ldr r0, _08020500 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 6
ands r0, r1
cmp r0, 0
beq _08020510
cmp r4, 0x1
beq _080204E8
cmp r5, 0x80
bne _08020510
_080204E8:
ldr r4, _08020504 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020508 @ =gUnknown_81D9438
_080204F4:
str r0, [r4]
ldr r1, _0802050C @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
bl _0802110A
.align 2, 0
_08020500: .4byte gUnknown_2023DD0
_08020504: .4byte gUnknown_2023D74
_08020508: .4byte gUnknown_81D9438
_0802050C: .4byte gUnknown_2023E82
_08020510:
mov r3, r9
ldrb r0, [r3]
movs r6, 0x58
muls r0, r6
mov r2, r8
adds r2, 0x4C
adds r5, r0, r2
ldr r4, [r5]
cmp r4, 0
bne _08020570
mov r3, r8
adds r1, r0, r3
adds r0, r1, 0
adds r0, 0x21
ldrb r3, [r0]
cmp r3, 0x3
beq _08020566
adds r0, 0x1
ldrb r0, [r0]
cmp r0, 0x3
beq _08020566
cmp r3, 0x8
beq _08020566
cmp r0, 0x8
beq _08020566
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x11
beq _08020570
mov r4, r9
ldrb r0, [r4]
adds r1, r0, 0
muls r1, r6
adds r1, r2
ldr r0, [r1]
movs r2, 0x9
negs r2, r2
ands r0, r2
str r0, [r1]
_08020560:
movs r0, 0x1
mov r10, r0
b _08020570
_08020566:
ldr r0, _080205B4 @ =gMoveResultFlags
ldrb r1, [r0]
movs r2, 0x8
orrs r1, r2
strb r1, [r0]
_08020570:
mov r1, r10
cmp r1, 0x1
beq _08020578
b _08020694
_08020578:
ldr r0, _080205B8 @ =gUnknown_2023D74
ldr r0, [r0]
adds r0, 0x1
bl BattleScriptPush
ldr r1, _080205BC @ =gUnknown_825053C
ldr r0, _080205C0 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
lsls r0, 2
adds r0, r1
ldr r3, [r0]
cmp r3, 0x7
bne _080205CC
bl Random
ldr r2, _080205C4 @ =gBattleMons
ldr r1, _080205C8 @ =gUnknown_2023D6E
ldrb r3, [r1]
movs r1, 0x58
muls r3, r1
adds r2, 0x4C
adds r3, r2
movs r1, 0x3
ands r1, r0
adds r1, 0x2
ldr r0, [r3]
orrs r0, r1
str r0, [r3]
b _080205E0
.align 2, 0
_080205B4: .4byte gMoveResultFlags
_080205B8: .4byte gUnknown_2023D74
_080205BC: .4byte gUnknown_825053C
_080205C0: .4byte gUnknown_2023E82
_080205C4: .4byte gBattleMons
_080205C8: .4byte gUnknown_2023D6E
_080205CC:
ldr r2, _08020630 @ =gBattleMons
ldr r0, _08020634 @ =gUnknown_2023D6E
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r2, 0x4C
adds r1, r2
ldr r0, [r1]
orrs r0, r3
str r0, [r1]
_080205E0:
ldr r2, _08020638 @ =gUnknown_2023D74
ldr r1, _0802063C @ =gUnknown_825062C
ldr r5, _08020640 @ =gUnknown_2023E82
ldrb r0, [r5, 0x3]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
str r0, [r2]
ldr r4, _08020644 @ =gActiveBattler
ldr r1, _08020634 @ =gUnknown_2023D6E
ldrb r0, [r1]
strb r0, [r4]
ldrb r1, [r1]
movs r0, 0x58
muls r0, r1
ldr r1, _08020648 @ =gUnknown_2023C30
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r2, 0
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r2, _0802064C @ =gUnknown_2023DD0
ldr r1, [r2]
movs r0, 0x80
lsls r0, 6
ands r0, r1
cmp r0, 0
beq _08020654
movs r0, 0x1
strb r0, [r5, 0x5]
ldr r0, _08020650 @ =0xffffdfff
ands r1, r0
str r1, [r2]
b _08020656
.align 2, 0
_08020630: .4byte gBattleMons
_08020634: .4byte gUnknown_2023D6E
_08020638: .4byte gUnknown_2023D74
_0802063C: .4byte gUnknown_825062C
_08020640: .4byte gUnknown_2023E82
_08020644: .4byte gActiveBattler
_08020648: .4byte gUnknown_2023C30
_0802064C: .4byte gUnknown_2023DD0
_08020650: .4byte 0xffffdfff
_08020654:
strb r0, [r5, 0x5]
_08020656:
ldr r0, _08020688 @ =gUnknown_2023E82
ldrb r2, [r0, 0x3]
adds r6, r0, 0
cmp r2, 0x2
beq _08020670
cmp r2, 0x6
beq _08020670
cmp r2, 0x5
beq _08020670
cmp r2, 0x3
beq _08020670
bl _0802110A
_08020670:
ldr r0, _0802068C @ =gBattleStruct
ldr r0, [r0]
adds r0, 0xB4
ldrb r1, [r6, 0x3]
strb r1, [r0]
ldr r2, _08020690 @ =gUnknown_2023DD0
ldr r0, [r2]
movs r1, 0x80
lsls r1, 7
bl _08021008
.align 2, 0
_08020688: .4byte gUnknown_2023E82
_0802068C: .4byte gBattleStruct
_08020690: .4byte gUnknown_2023DD0
_08020694:
mov r2, r10
cmp r2, 0
beq _0802069E
bl _0802110A
_0802069E:
bl _080210EC
_080206A2:
mov r3, r9
ldrb r1, [r3]
movs r0, 0x58
muls r1, r0
mov r0, r8
adds r0, 0x50
adds r1, r0
ldr r2, _080206DC @ =gUnknown_825053C
ldrb r3, [r6, 0x3]
lsls r0, r3, 2
adds r0, r2
ldr r1, [r1]
ldr r0, [r0]
ands r1, r0
cmp r1, 0
beq _080206C6
bl _080210EC
_080206C6:
subs r0, r3, 0x7
cmp r0, 0x34
bls _080206D0
bl _0802110A
_080206D0:
lsls r0, 2
ldr r1, _080206E0 @ =_080206E4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080206DC: .4byte gUnknown_825053C
_080206E0: .4byte _080206E4
.align 2, 0
_080206E4:
.4byte _080207B8
.4byte _0802082C
.4byte _080209A0
.4byte _080208B8
.4byte _08020934
.4byte _080209D8
.4byte _08020A20
.4byte _08020AEC
.4byte _08020B30
.4byte _08020B30
.4byte _08020B30
.4byte _08020B30
.4byte _08020B30
.4byte _08020B30
.4byte _08020B30
.4byte _08020B74
.4byte _08020B74
.4byte _08020B74
.4byte _08020B74
.4byte _08020B74
.4byte _08020B74
.4byte _08020B74
.4byte _08020C40
.4byte _08020C88
.4byte _08020CA8
.4byte _08020E78
.4byte _08020EB4
.4byte _08020ED0
.4byte _08020EE8
.4byte _08020F00
.4byte _08020F60
.4byte _08020F78
.4byte _08020BB8
.4byte _08020BB8
.4byte _08020BB8
.4byte _08020BB8
.4byte _08020BB8
.4byte _08020BB8
.4byte _08020BB8
.4byte _08020BFC
.4byte _08020BFC
.4byte _08020BFC
.4byte _08020BFC
.4byte _08020BFC
.4byte _08020BFC
.4byte _08020BFC
.4byte _08020FBC
.4byte _08021018
.4byte _0802110A
.4byte _0802110A
.4byte _0802110A
.4byte _0802110A
.4byte _080210FC
_080207B8:
mov r4, r9
ldrb r0, [r4]
movs r5, 0x58
adds r1, r0, 0
muls r1, r5
mov r2, r8
adds r0, r1, r2
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x14
bne _080207D2
bl _080210EC
_080207D2:
mov r4, r8
adds r4, 0x50
adds r0, r1, r4
ldr r0, [r0]
movs r1, 0x7
ands r0, r1
cmp r0, 0
beq _080207E6
bl _080210EC
_080207E6:
bl Random
mov r3, r9
ldrb r1, [r3]
adds r2, r1, 0
muls r2, r5
adds r2, r4
lsls r0, 16
movs r1, 0xC0
lsls r1, 10
ands r1, r0
lsrs r1, 16
adds r1, 0x2
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
ldr r4, _08020820 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r1, _08020824 @ =gUnknown_825062C
ldr r0, _08020828 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
bl _08021108
.align 2, 0
_08020820: .4byte gUnknown_2023D74
_08020824: .4byte gUnknown_825062C
_08020828: .4byte gUnknown_2023E82
_0802082C:
mov r0, r9
ldrb r2, [r0]
movs r6, 0x58
adds r0, r2, 0
muls r0, r6
add r0, r8
adds r0, 0x20
ldrb r1, [r0]
cmp r1, 0x27
bne _08020870
cmp r4, 0x1
beq _0802084C
cmp r5, 0x80
beq _0802084C
bl _080210EC
_0802084C:
ldr r0, _08020864 @ =gLastUsedAbility
strb r1, [r0]
mov r1, r9
ldrb r0, [r1]
movs r1, 0x27
bl sub_80C71D0
ldr r1, _08020868 @ =gUnknown_2023D74
ldr r0, _0802086C @ =gUnknown_81D9452
str r0, [r1]
bl _0802110A
.align 2, 0
_08020864: .4byte gLastUsedAbility
_08020868: .4byte gUnknown_2023D74
_0802086C: .4byte gUnknown_81D9452
_08020870:
adds r0, r2, 0
bl BankGetTurnOrder
ldr r1, _080208AC @ =gUnknown_2023BE2
lsls r0, 24
lsrs r0, 24
ldrb r1, [r1]
cmp r0, r1
bhi _08020886
bl _080210EC
_08020886:
mov r2, r9
ldrb r0, [r2]
adds r2, r0, 0
muls r2, r6
mov r0, r8
adds r0, 0x50
adds r2, r0
ldr r1, _080208B0 @ =gUnknown_825053C
ldr r0, _080208B4 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
lsls r0, 2
adds r0, r1
ldr r1, [r2]
ldr r0, [r0]
orrs r1, r0
str r1, [r2]
bl _080210EC
.align 2, 0
_080208AC: .4byte gUnknown_2023BE2
_080208B0: .4byte gUnknown_825053C
_080208B4: .4byte gUnknown_2023E82
_080208B8:
mov r3, r9
ldrb r0, [r3]
movs r5, 0x58
muls r0, r5
mov r4, r8
adds r4, 0x50
adds r2, r0, r4
ldr r1, [r2]
movs r0, 0x70
ands r0, r1
cmp r0, 0
beq _080208D4
bl _080210EC
_080208D4:
movs r0, 0x80
lsls r0, 5
orrs r1, r0
str r1, [r2]
ldr r1, _08020920 @ =gUnknown_2023DB8
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
ldr r1, _08020924 @ =gCurrentMove
ldrh r1, [r1]
strh r1, [r0]
bl Random
mov r2, r9
ldrb r1, [r2]
adds r2, r1, 0
muls r2, r5
adds r2, r4
movs r1, 0x3
ands r1, r0
adds r1, 0x2
lsls r1, 4
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
ldr r4, _08020928 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r1, _0802092C @ =gUnknown_825062C
ldr r0, _08020930 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
bl _08021108
.align 2, 0
_08020920: .4byte gUnknown_2023DB8
_08020924: .4byte gCurrentMove
_08020928: .4byte gUnknown_2023D74
_0802092C: .4byte gUnknown_825062C
_08020930: .4byte gUnknown_2023E82
_08020934:
ldr r5, _08020984 @ =sBattler_AI
ldrb r0, [r5]
bl GetBattlerPosition
movs r1, 0x1
ands r1, r0
cmp r1, 0
bne _0802096C
ldr r4, _08020988 @ =gUnknown_2023E7E
ldrh r3, [r4]
ldr r2, _0802098C @ =gBattleMons
ldrb r1, [r5]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2A
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
adds r0, r3, r0
strh r0, [r4]
lsls r0, 16
lsrs r0, 16
cmp r3, r0
bls _0802096C
ldr r3, _08020990 @ =0x0000ffff
adds r0, r3, 0
strh r0, [r4]
_0802096C:
ldr r4, _08020994 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r1, _08020998 @ =gUnknown_825062C
ldr r0, _0802099C @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
b _08021108
.align 2, 0
_08020984: .4byte sBattler_AI
_08020988: .4byte gUnknown_2023E7E
_0802098C: .4byte gBattleMons
_08020990: .4byte 0x0000ffff
_08020994: .4byte gUnknown_2023D74
_08020998: .4byte gUnknown_825062C
_0802099C: .4byte gUnknown_2023E82
_080209A0:
mov r4, r9
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
mov r1, r8
adds r1, 0x4C
adds r0, r1
ldr r0, [r0]
cmp r0, 0
beq _080209B6
b _080210EC
_080209B6:
bl Random
ldr r4, _080209D4 @ =gUnknown_2023E82
lsls r0, 16
lsrs r0, 16
movs r1, 0x3
bl __umodsi3
adds r0, 0x3
strb r0, [r4, 0x3]
movs r0, 0
movs r1, 0
bl sub_801FF20
b _0802110A
.align 2, 0
_080209D4: .4byte gUnknown_2023E82
_080209D8:
mov r0, r9
ldrb r1, [r0]
movs r0, 0x58
adds r2, r1, 0
muls r2, r0
mov r0, r8
adds r0, 0x50
adds r2, r0
ldr r0, [r2]
movs r1, 0x80
lsls r1, 5
orrs r0, r1
str r0, [r2]
ldr r1, _08020A14 @ =gUnknown_2023DB8
mov r2, r9
ldrb r0, [r2]
lsls r0, 1
adds r0, r1
ldr r1, _08020A18 @ =gCurrentMove
ldrh r1, [r1]
strh r1, [r0]
ldr r0, _08020A1C @ =gUnknown_2023E8C
ldrb r1, [r2]
lsls r1, 4
adds r1, r0
ldrb r0, [r1, 0x1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1, 0x1]
b _080210EC
.align 2, 0
_08020A14: .4byte gUnknown_2023DB8
_08020A18: .4byte gCurrentMove
_08020A1C: .4byte gUnknown_2023E8C
_08020A20:
mov r3, r9
ldrb r0, [r3]
movs r6, 0x58
muls r0, r6
mov r4, r8
adds r4, 0x50
adds r0, r4
ldr r5, [r0]
movs r0, 0xE0
lsls r0, 8
ands r5, r0
cmp r5, 0
beq _08020A3C
b _080210EC
_08020A3C:
bl Random
mov r2, r9
ldrb r1, [r2]
adds r2, r1, 0
muls r2, r6
adds r2, r4
movs r1, 0x3
ands r1, r0
adds r1, 0x3
lsls r1, 13
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
mov r3, r9
ldrb r1, [r3]
ldr r2, _08020AD0 @ =gBattleStruct
ldr r0, [r2]
lsls r1, 1
adds r1, r0
ldr r6, _08020AD4 @ =gCurrentMove
ldrh r0, [r6]
strb r0, [r1, 0x4]
ldrb r1, [r3]
ldr r0, [r2]
lsls r1, 1
adds r1, r0
ldrh r0, [r6]
lsrs r0, 8
strb r0, [r1, 0x5]
ldrb r1, [r3]
ldr r0, [r2]
adds r1, r0
ldr r0, _08020AD8 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r1, 0x14]
ldr r4, _08020ADC @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r1, _08020AE0 @ =gUnknown_825062C
ldr r2, _08020AE4 @ =gUnknown_2023E82
ldrb r0, [r2, 0x3]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
str r0, [r4]
strb r5, [r2, 0x5]
ldr r3, _08020AE8 @ =gUnknown_83FE664
ldrh r0, [r3]
ldrh r4, [r6]
cmp r0, r4
bne _08020AAA
b _0802110A
_08020AAA:
adds r1, r2, 0
adds r2, r6, 0
_08020AAE:
ldrb r0, [r1, 0x5]
adds r0, 0x1
strb r0, [r1, 0x5]
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bls _08020ABE
b _0802110A
_08020ABE:
ldrb r0, [r1, 0x5]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
ldrh r4, [r2]
cmp r0, r4
bne _08020AAE
b _0802110A
.align 2, 0
_08020AD0: .4byte gBattleStruct
_08020AD4: .4byte gCurrentMove
_08020AD8: .4byte sBattler_AI
_08020ADC: .4byte gUnknown_2023D74
_08020AE0: .4byte gUnknown_825062C
_08020AE4: .4byte gUnknown_2023E82
_08020AE8: .4byte gUnknown_83FE664
_08020AEC:
ldr r1, _08020B1C @ =gBattleMoveDamage
ldr r0, _08020B20 @ =gUnknown_2023D54
ldr r0, [r0]
cmp r0, 0
bge _08020AF8
adds r0, 0x3
_08020AF8:
asrs r0, 2
str r0, [r1]
cmp r0, 0
bne _08020B04
movs r0, 0x1
str r0, [r1]
_08020B04:
ldr r4, _08020B24 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r1, _08020B28 @ =gUnknown_825062C
ldr r0, _08020B2C @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
b _08021108
.align 2, 0
_08020B1C: .4byte gBattleMoveDamage
_08020B20: .4byte gUnknown_2023D54
_08020B24: .4byte gUnknown_2023D74
_08020B28: .4byte gUnknown_825062C
_08020B2C: .4byte gUnknown_2023E82
_08020B30:
ldrb r1, [r6, 0x3]
adds r1, 0xF2
lsls r1, 24
lsrs r1, 24
movs r0, 0x10
adds r2, r7, 0
movs r3, 0
bl ChangeStatBuffs
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0
beq _08020B4C
b _080210EC
_08020B4C:
ldr r2, _08020B68 @ =gBattleScripting
ldrb r1, [r6, 0x3]
movs r0, 0x3F
ands r0, r1
strb r0, [r2, 0x10]
strb r3, [r2, 0x11]
ldr r4, _08020B6C @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020B70 @ =gUnknown_81D6BD1
b _08021108
.align 2, 0
_08020B68: .4byte gBattleScripting
_08020B6C: .4byte gUnknown_2023D74
_08020B70: .4byte gUnknown_81D6BD1
_08020B74:
movs r0, 0x70
negs r0, r0
ldrb r1, [r6, 0x3]
adds r1, 0xEB
lsls r1, 24
lsrs r1, 24
adds r2, r7, 0
movs r3, 0
bl ChangeStatBuffs
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0
beq _08020B92
b _080210EC
_08020B92:
ldr r2, _08020BAC @ =gBattleScripting
ldrb r1, [r6, 0x3]
movs r0, 0x3F
ands r0, r1
strb r0, [r2, 0x10]
strb r3, [r2, 0x11]
ldr r4, _08020BB0 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020BB4 @ =gUnknown_81D6C62
b _08021108
.align 2, 0
_08020BAC: .4byte gBattleScripting
_08020BB0: .4byte gUnknown_2023D74
_08020BB4: .4byte gUnknown_81D6C62
_08020BB8:
ldrb r1, [r6, 0x3]
adds r1, 0xDA
lsls r1, 24
lsrs r1, 24
movs r0, 0x20
adds r2, r7, 0
movs r3, 0
bl ChangeStatBuffs
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0
beq _08020BD4
b _080210EC
_08020BD4:
ldr r2, _08020BF0 @ =gBattleScripting
ldrb r1, [r6, 0x3]
movs r0, 0x3F
ands r0, r1
strb r0, [r2, 0x10]
strb r3, [r2, 0x11]
ldr r4, _08020BF4 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020BF8 @ =gUnknown_81D6BD1
b _08021108
.align 2, 0
_08020BF0: .4byte gBattleScripting
_08020BF4: .4byte gUnknown_2023D74
_08020BF8: .4byte gUnknown_81D6BD1
_08020BFC:
movs r0, 0x60
negs r0, r0
ldrb r1, [r6, 0x3]
adds r1, 0xD3
lsls r1, 24
lsrs r1, 24
adds r2, r7, 0
movs r3, 0
bl ChangeStatBuffs
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0
beq _08020C1A
b _080210EC
_08020C1A:
ldr r2, _08020C34 @ =gBattleScripting
ldrb r1, [r6, 0x3]
movs r0, 0x3F
ands r0, r1
strb r0, [r2, 0x10]
strb r3, [r2, 0x11]
ldr r4, _08020C38 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020C3C @ =gUnknown_81D6C62
b _08021108
.align 2, 0
_08020C34: .4byte gBattleScripting
_08020C38: .4byte gUnknown_2023D74
_08020C3C: .4byte gUnknown_81D6C62
_08020C40:
mov r0, r9
ldrb r1, [r0]
movs r0, 0x58
adds r2, r1, 0
muls r2, r0
mov r0, r8
adds r0, 0x50
adds r2, r0
ldr r0, [r2]
movs r1, 0x80
lsls r1, 15
orrs r0, r1
str r0, [r2]
ldr r2, _08020C7C @ =gDisableStructs
mov r3, r9
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2
strb r1, [r0, 0x19]
ldr r1, _08020C80 @ =gUnknown_2023DB8
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
ldr r1, _08020C84 @ =gCurrentMove
ldrh r1, [r1]
strh r1, [r0]
b _080210EC
.align 2, 0
_08020C7C: .4byte gDisableStructs
_08020C80: .4byte gUnknown_2023DB8
_08020C84: .4byte gCurrentMove
_08020C88:
ldr r0, _08020CA4 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
adds r2, r1, 0
muls r2, r0
mov r0, r8
adds r0, 0x50
adds r2, r0
ldr r0, [r2]
movs r1, 0x80
lsls r1, 16
_08020C9E:
orrs r0, r1
str r0, [r2]
b _080210EC
.align 2, 0
_08020CA4: .4byte sBattler_AI
_08020CA8:
ldr r5, _08020D64 @ =gBattleTypeFlags
ldr r0, [r5]
movs r1, 0x80
lsls r1, 12
ands r0, r1
cmp r0, 0
beq _08020CB8
b _080210EC
_08020CB8:
ldr r4, _08020D68 @ =sBattler_AI
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08020CEA
ldr r0, [r5]
ldr r1, _08020D6C @ =0x00000902
ands r0, r1
cmp r0, 0
bne _08020D26
ldr r0, _08020D70 @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
cmp r1, r0
beq _08020CEA
b _080210EC
_08020CEA:
ldr r0, _08020D64 @ =gBattleTypeFlags
ldr r0, [r0]
ldr r1, _08020D6C @ =0x00000902
ands r0, r1
cmp r0, 0
bne _08020D26
ldr r0, _08020D70 @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
cmp r1, r0
beq _08020D26
ldr r0, _08020D74 @ =gUnknown_2023F20
adds r0, 0x29
adds r0, r6, r0
ldrb r1, [r0]
ldr r3, _08020D78 @ =gBitTable
ldr r2, _08020D7C @ =gBattlerPartyIndexes
ldr r0, _08020D68 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
ands r1, r0
cmp r1, 0
beq _08020D26
b _080210EC
_08020D26:
ldr r2, _08020D80 @ =gBattleMons
ldr r1, _08020D84 @ =gBattlerTarget
ldrb r0, [r1]
movs r3, 0x58
muls r0, r3
adds r4, r0, r2
ldrh r0, [r4, 0x2E]
adds r7, r1, 0
mov r8, r2
cmp r0, 0
beq _08020D94
adds r0, r4, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x3C
bne _08020D94
ldr r1, _08020D88 @ =gUnknown_2023D74
ldr r0, _08020D8C @ =gUnknown_81D948E
str r0, [r1]
ldr r1, _08020D90 @ =gLastUsedAbility
ldrb r0, [r7]
muls r0, r3
add r0, r8
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldrb r0, [r7]
ldrb r1, [r1]
bl sub_80C71D0
b _0802110A
.align 2, 0
_08020D64: .4byte gBattleTypeFlags
_08020D68: .4byte sBattler_AI
_08020D6C: .4byte 0x00000902
_08020D70: .4byte gTrainerBattleOpponent_A
_08020D74: .4byte gUnknown_2023F20
_08020D78: .4byte gBitTable
_08020D7C: .4byte gBattlerPartyIndexes
_08020D80: .4byte gBattleMons
_08020D84: .4byte gBattlerTarget
_08020D88: .4byte gUnknown_2023D74
_08020D8C: .4byte gUnknown_81D948E
_08020D90: .4byte gLastUsedAbility
_08020D94:
ldr r4, _08020E60 @ =sBattler_AI
mov r10, r4
ldrb r2, [r4]
movs r0, 0x58
mov r9, r0
mov r0, r9
muls r0, r2
add r0, r8
ldrh r4, [r0, 0x2E]
cmp r4, 0
beq _08020DAC
b _080210EC
_08020DAC:
ldrb r0, [r7]
mov r1, r9
muls r1, r0
adds r0, r1, 0
add r0, r8
ldrh r3, [r0, 0x2E]
adds r1, r3, 0
cmp r1, 0xAF
bne _08020DC0
b _080210EC
_08020DC0:
adds r0, r3, 0
subs r0, 0x79
lsls r0, 16
lsrs r0, 16
cmp r0, 0xB
bhi _08020DCE
b _080210EC
_08020DCE:
cmp r1, 0
bne _08020DD4
b _080210EC
_08020DD4:
ldr r5, _08020E64 @ =gBattleStruct
lsls r0, r2, 1
adds r0, 0xD0
ldr r1, [r5]
adds r1, r0
ldr r2, _08020E68 @ =gUnknown_2023D68
strh r3, [r1]
strh r3, [r2]
ldrb r0, [r7]
mov r3, r9
muls r3, r0
adds r0, r3, 0
add r0, r8
movs r6, 0
strh r4, [r0, 0x2E]
ldr r4, _08020E6C @ =gActiveBattler
mov r1, r10
ldrb r0, [r1]
strb r0, [r4]
str r2, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
mov r2, r10
ldrb r0, [r2]
bl MarkBufferBankForExecution
ldrb r0, [r7]
strb r0, [r4]
ldrb r0, [r7]
mov r3, r9
muls r3, r0
adds r0, r3, 0
mov r1, r8
adds r1, 0x2E
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldrb r0, [r7]
bl MarkBufferBankForExecution
ldr r4, _08020E70 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020E74 @ =gUnknown_81D9271
str r0, [r4]
ldrb r0, [r7]
ldr r1, [r5]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
strb r6, [r0]
ldrb r0, [r7]
ldr r1, [r5]
lsls r0, 1
adds r0, r1
adds r0, 0xC9
strb r6, [r0]
b _0802110A
.align 2, 0
_08020E60: .4byte sBattler_AI
_08020E64: .4byte gBattleStruct
_08020E68: .4byte gUnknown_2023D68
_08020E6C: .4byte gActiveBattler
_08020E70: .4byte gUnknown_2023D74
_08020E74: .4byte gUnknown_81D9271
_08020E78:
ldr r3, _08020EA8 @ =gBattlerTarget
ldrb r1, [r3]
movs r0, 0x58
adds r2, r1, 0
muls r2, r0
mov r0, r8
adds r0, 0x50
adds r2, r0
ldr r0, [r2]
movs r1, 0x80
lsls r1, 19
orrs r0, r1
str r0, [r2]
ldr r2, _08020EAC @ =gDisableStructs
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
ldr r1, _08020EB0 @ =sBattler_AI
ldrb r1, [r1]
strb r1, [r0, 0x14]
b _080210EC
.align 2, 0
_08020EA8: .4byte gBattlerTarget
_08020EAC: .4byte gDisableStructs
_08020EB0: .4byte sBattler_AI
_08020EB4:
ldr r0, _08020ECC @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
adds r2, r1, 0
muls r2, r0
mov r0, r8
adds r0, 0x50
adds r2, r0
ldr r0, [r2]
movs r1, 0x80
lsls r1, 20
b _08020C9E
.align 2, 0
_08020ECC: .4byte gBattlerTarget
_08020ED0:
ldr r4, _08020EE0 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020EE4 @ =gUnknown_81D8D55
b _08021108
.align 2, 0
_08020EE0: .4byte gUnknown_2023D74
_08020EE4: .4byte gUnknown_81D8D55
_08020EE8:
ldr r4, _08020EF8 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020EFC @ =gUnknown_81D8DF1
b _08021108
.align 2, 0
_08020EF8: .4byte gUnknown_2023D74
_08020EFC: .4byte gUnknown_81D8DF1
_08020F00:
ldr r6, _08020F50 @ =gBattlerTarget
ldrb r0, [r6]
movs r2, 0x58
muls r0, r2
mov r1, r8
adds r1, 0x4C
adds r5, r0, r1
ldr r4, [r5]
movs r0, 0x40
ands r0, r4
cmp r0, 0
bne _08020F1A
b _080210EC
_08020F1A:
movs r0, 0x41
negs r0, r0
ands r4, r0
str r4, [r5]
ldr r4, _08020F54 @ =gActiveBattler
ldrb r0, [r6]
strb r0, [r4]
ldrb r0, [r4]
muls r0, r2
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r2, 0
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r4, _08020F58 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020F5C @ =gUnknown_81D9177
b _08021108
.align 2, 0
_08020F50: .4byte gBattlerTarget
_08020F54: .4byte gActiveBattler
_08020F58: .4byte gUnknown_2023D74
_08020F5C: .4byte gUnknown_81D9177
_08020F60:
ldr r4, _08020F70 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08020F74 @ =gUnknown_81D8F35
b _08021108
.align 2, 0
_08020F70: .4byte gUnknown_2023D74
_08020F74: .4byte gUnknown_81D8F35
_08020F78:
ldr r4, _08020FA8 @ =gBattleMoveDamage
ldr r0, _08020FAC @ =gUnknown_2023D54
ldr r0, [r0]
movs r1, 0x3
bl __divsi3
str r0, [r4]
cmp r0, 0
bne _08020F8E
movs r0, 0x1
str r0, [r4]
_08020F8E:
ldr r4, _08020FB0 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r1, _08020FB4 @ =gUnknown_825062C
ldr r0, _08020FB8 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
b _08021108
.align 2, 0
_08020FA8: .4byte gBattleMoveDamage
_08020FAC: .4byte gUnknown_2023D54
_08020FB0: .4byte gUnknown_2023D74
_08020FB4: .4byte gUnknown_825062C
_08020FB8: .4byte gUnknown_2023E82
_08020FBC:
mov r4, r9
ldrb r0, [r4]
movs r5, 0x58
muls r0, r5
mov r4, r8
adds r4, 0x50
adds r2, r0, r4
ldr r1, [r2]
movs r0, 0xC0
lsls r0, 4
ands r0, r1
cmp r0, 0
beq _08020FD8
b _080210EC
_08020FD8:
movs r0, 0x80
lsls r0, 5
orrs r1, r0
str r1, [r2]
ldr r1, _08021010 @ =gUnknown_2023DB8
mov r2, r9
ldrb r0, [r2]
lsls r0, 1
adds r0, r1
ldr r1, _08021014 @ =gCurrentMove
ldrh r1, [r1]
strh r1, [r0]
bl Random
mov r3, r9
ldrb r1, [r3]
adds r2, r1, 0
muls r2, r5
adds r2, r4
movs r1, 0x1
ands r1, r0
adds r1, 0x2
lsls r1, 10
ldr r0, [r2]
_08021008:
orrs r0, r1
str r0, [r2]
b _0802110A
.align 2, 0
_08021010: .4byte gUnknown_2023DB8
_08021014: .4byte gCurrentMove
_08021018:
mov r5, r9
ldrb r3, [r5]
movs r4, 0x58
adds r0, r3, 0
muls r0, r4
mov r2, r8
adds r1, r0, r2
adds r0, r1, 0
adds r0, 0x20
ldrb r2, [r0]
cmp r2, 0x3C
bne _08021058
ldrh r0, [r1, 0x2E]
cmp r0, 0
beq _080210EC
ldr r0, _0802104C @ =gLastUsedAbility
strb r2, [r0]
ldr r1, _08021050 @ =gUnknown_2023D74
ldr r0, _08021054 @ =gUnknown_81D948E
str r0, [r1]
ldrb r0, [r5]
movs r1, 0x3C
bl sub_80C71D0
b _0802110A
.align 2, 0
_0802104C: .4byte gLastUsedAbility
_08021050: .4byte gUnknown_2023D74
_08021054: .4byte gUnknown_81D948E
_08021058:
ldrh r0, [r1, 0x2E]
cmp r0, 0
beq _080210EC
adds r0, r3, 0
bl GetBattlerSide
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _080210D0 @ =gUnknown_2023D68
mov r3, r9
ldrb r0, [r3]
muls r0, r4
add r0, r8
ldrh r0, [r0, 0x2E]
strh r0, [r1]
ldrb r0, [r3]
muls r0, r4
add r0, r8
movs r5, 0
movs r1, 0
strh r1, [r0, 0x2E]
ldr r2, _080210D4 @ =gUnknown_2023F20
adds r2, 0x29
adds r2, r6, r2
ldr r3, _080210D8 @ =gBitTable
ldr r1, _080210DC @ =gBattlerPartyIndexes
mov r4, r9
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldr r4, _080210E0 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _080210E4 @ =gUnknown_81D8F86
str r0, [r4]
mov r1, r9
ldrb r0, [r1]
ldr r2, _080210E8 @ =gBattleStruct
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
strb r5, [r0]
mov r3, r9
ldrb r0, [r3]
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC9
strb r5, [r0]
b _0802110A
.align 2, 0
_080210D0: .4byte gUnknown_2023D68
_080210D4: .4byte gUnknown_2023F20
_080210D8: .4byte gBitTable
_080210DC: .4byte gBattlerPartyIndexes
_080210E0: .4byte gUnknown_2023D74
_080210E4: .4byte gUnknown_81D8F86
_080210E8: .4byte gBattleStruct
_080210EC:
ldr r1, _080210F8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
b _0802110A
.align 2, 0
_080210F8: .4byte gUnknown_2023D74
_080210FC:
ldr r4, _0802111C @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08021120 @ =gUnknown_81D8FEB
_08021108:
str r0, [r4]
_0802110A:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802111C: .4byte gUnknown_2023D74
_08021120: .4byte gUnknown_81D8FEB
thumb_func_end sub_801FF20
thumb_func_start atk15_seteffectwithchance
atk15_seteffectwithchance: @ 8021124
push {r4,lr}
ldr r2, _08021150 @ =gBattleMons
ldr r0, _08021154 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x20
bne _08021160
ldr r2, _08021158 @ =gBattleMoves
ldr r0, _0802115C @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x5]
lsls r4, r0, 1
b _08021170
.align 2, 0
_08021150: .4byte gBattleMons
_08021154: .4byte sBattler_AI
_08021158: .4byte gBattleMoves
_0802115C: .4byte gCurrentMove
_08021160:
ldr r2, _08021190 @ =gBattleMoves
ldr r0, _08021194 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r4, [r0, 0x5]
_08021170:
ldr r3, _08021198 @ =gUnknown_2023E82
ldrb r2, [r3, 0x3]
movs r0, 0x80
ands r0, r2
cmp r0, 0
beq _080211A0
ldr r0, _0802119C @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _080211A0
movs r0, 0x7F
ands r0, r2
strb r0, [r3, 0x3]
b _080211CE
.align 2, 0
_08021190: .4byte gBattleMoves
_08021194: .4byte gCurrentMove
_08021198: .4byte gUnknown_2023E82
_0802119C: .4byte gMoveResultFlags
_080211A0:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
cmp r0, r4
bhi _080211EA
ldr r0, _080211D8 @ =gUnknown_2023E82
ldrb r0, [r0, 0x3]
cmp r0, 0
beq _080211EA
ldr r0, _080211DC @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _080211EA
cmp r4, 0x63
bls _080211E0
_080211CE:
movs r0, 0
movs r1, 0x80
bl sub_801FF20
b _080211F2
.align 2, 0
_080211D8: .4byte gUnknown_2023E82
_080211DC: .4byte gMoveResultFlags
_080211E0:
movs r0, 0
movs r1, 0
bl sub_801FF20
b _080211F2
_080211EA:
ldr r1, _08021204 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_080211F2:
ldr r0, _08021208 @ =gUnknown_2023E82
movs r1, 0
strb r1, [r0, 0x3]
ldr r0, _0802120C @ =gBattleScripting
strb r1, [r0, 0x16]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08021204: .4byte gUnknown_2023D74
_08021208: .4byte gUnknown_2023E82
_0802120C: .4byte gBattleScripting
thumb_func_end atk15_seteffectwithchance
thumb_func_start atk16_seteffectprimary
atk16_seteffectprimary: @ 8021210
push {lr}
movs r0, 0x1
movs r1, 0
bl sub_801FF20
pop {r0}
bx r0
thumb_func_end atk16_seteffectprimary
thumb_func_start atk17_seteffectsecondary
atk17_seteffectsecondary: @ 8021220
push {lr}
movs r0, 0
movs r1, 0
bl sub_801FF20
pop {r0}
bx r0
thumb_func_end atk17_seteffectsecondary
thumb_func_start atk18_clearstatusfromeffect
atk18_clearstatusfromeffect: @ 8021230
push {lr}
ldr r0, _08021254 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r2, _08021258 @ =gActiveBattler
strb r0, [r2]
ldr r3, _0802125C @ =gUnknown_2023E82
ldrb r0, [r3, 0x3]
cmp r0, 0x6
bhi _08021264
ldr r1, _08021260 @ =gBattleMons
ldrb r2, [r2]
movs r0, 0x58
muls r2, r0
adds r1, 0x4C
b _0802126E
.align 2, 0
_08021254: .4byte gUnknown_2023D74
_08021258: .4byte gActiveBattler
_0802125C: .4byte gUnknown_2023E82
_08021260: .4byte gBattleMons
_08021264:
ldr r1, _08021298 @ =gBattleMons
ldrb r2, [r2]
movs r0, 0x58
muls r2, r0
adds r1, 0x50
_0802126E:
adds r2, r1
ldr r1, _0802129C @ =gUnknown_825053C
ldrb r0, [r3, 0x3]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
ldr r0, [r2]
bics r0, r1
str r0, [r2]
ldr r0, _080212A0 @ =gUnknown_2023E82
movs r2, 0
strb r2, [r0, 0x3]
ldr r1, _080212A4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
ldr r0, _080212A8 @ =gBattleScripting
strb r2, [r0, 0x16]
pop {r0}
bx r0
.align 2, 0
_08021298: .4byte gBattleMons
_0802129C: .4byte gUnknown_825053C
_080212A0: .4byte gUnknown_2023E82
_080212A4: .4byte gUnknown_2023D74
_080212A8: .4byte gBattleScripting
thumb_func_end atk18_clearstatusfromeffect
thumb_func_start atk19_tryfaintmon
atk19_tryfaintmon: @ 80212AC
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
ldr r0, _08021318 @ =gUnknown_2023D74
ldr r2, [r0]
ldrb r1, [r2, 0x2]
adds r6, r0, 0
cmp r1, 0
beq _08021330
ldrb r0, [r2, 0x1]
bl sub_8016E24
ldr r5, _0802131C @ =gActiveBattler
strb r0, [r5]
ldr r2, _08021320 @ =gUnknown_2023DD0
ldr r1, _08021324 @ =gBitTable
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
lsls r1, 28
ldr r0, [r2]
ands r0, r1
cmp r0, 0
bne _080212E4
b _0802158C
_080212E4:
ldr r1, [r6]
ldrb r4, [r1, 0x3]
ldrb r0, [r1, 0x4]
lsls r0, 8
orrs r4, r0
ldrb r0, [r1, 0x5]
lsls r0, 16
orrs r4, r0
ldrb r0, [r1, 0x6]
lsls r0, 24
orrs r4, r0
bl BattleScriptPop
str r4, [r6]
ldrb r0, [r5]
bl GetBattlerSide
ldr r1, _08021328 @ =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r1
ldrh r2, [r0]
ldr r1, _0802132C @ =0x0000fdff
ands r1, r2
strh r1, [r0]
b _08021592
.align 2, 0
_08021318: .4byte gUnknown_2023D74
_0802131C: .4byte gActiveBattler
_08021320: .4byte gUnknown_2023DD0
_08021324: .4byte gBitTable
_08021328: .4byte gSideAffecting
_0802132C: .4byte 0x0000fdff
_08021330:
ldrb r0, [r2, 0x1]
cmp r0, 0x1
bne _08021358
ldr r1, _08021348 @ =gActiveBattler
ldr r0, _0802134C @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _08021350 @ =gBattlerTarget
ldrb r0, [r0]
mov r9, r0
ldr r4, _08021354 @ =gUnknown_81D8674
b _08021368
.align 2, 0
_08021348: .4byte gActiveBattler
_0802134C: .4byte sBattler_AI
_08021350: .4byte gBattlerTarget
_08021354: .4byte gUnknown_81D8674
_08021358:
ldr r1, _080213D0 @ =gActiveBattler
ldr r0, _080213D4 @ =gBattlerTarget
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _080213D8 @ =sBattler_AI
ldrb r0, [r0]
mov r9, r0
ldr r4, _080213DC @ =gUnknown_81D8684
_08021368:
mov r8, r1
ldr r0, _080213E0 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _080213E4 @ =gBitTable
mov r7, r8
ldrb r3, [r7]
lsls r0, r3, 2
adds r0, r2
ldr r2, [r0]
ands r1, r2
cmp r1, 0
beq _08021382
b _0802158C
_08021382:
ldr r1, _080213E8 @ =gBattleMons
movs r0, 0x58
muls r0, r3
adds r0, r1
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08021392
b _0802158C
_08021392:
ldr r5, _080213EC @ =gUnknown_2023DD0
lsls r1, r2, 28
ldr r0, [r5]
orrs r0, r1
str r0, [r5]
ldr r0, [r6]
adds r0, 0x7
bl BattleScriptPush
str r4, [r6]
ldrb r0, [r7]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080213F4
ldr r0, [r5]
movs r1, 0x80
lsls r1, 15
orrs r0, r1
str r0, [r5]
ldr r1, _080213F0 @ =gBattleResults
ldrb r0, [r1]
cmp r0, 0xFE
bhi _080213C8
adds r0, 0x1
strb r0, [r1]
_080213C8:
ldrb r0, [r7]
bl sub_802E228
b _0802142C
.align 2, 0
_080213D0: .4byte gActiveBattler
_080213D4: .4byte gBattlerTarget
_080213D8: .4byte sBattler_AI
_080213DC: .4byte gUnknown_81D8684
_080213E0: .4byte gAbsentBattlerFlags
_080213E4: .4byte gBitTable
_080213E8: .4byte gBattleMons
_080213EC: .4byte gUnknown_2023DD0
_080213F0: .4byte gBattleResults
_080213F4:
ldr r4, _0802154C @ =gBattleResults
ldrb r0, [r4, 0x1]
cmp r0, 0xFE
bhi _08021400
adds r0, 0x1
strb r0, [r4, 0x1]
_08021400:
ldr r1, _08021550 @ =gBattlerPartyIndexes
mov r2, r8
ldrb r0, [r2]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08021554 @ =gEnemyParty
adds r0, r1
movs r1, 0xB
bl GetMonData
strh r0, [r4, 0x20]
ldr r0, _08021558 @ =gBattleStruct
ldr r0, [r0]
movs r3, 0xC1
lsls r3, 1
adds r1, r0, r3
ldr r0, _0802155C @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r1]
_0802142C:
ldr r2, _08021560 @ =gUnknown_2023DD0
ldr r1, [r2]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0802146A
ldr r6, _08021564 @ =gBattleMons
ldr r0, _0802155C @ =sBattler_AI
ldrb r0, [r0]
movs r5, 0x58
muls r0, r5
adds r0, r6
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _0802146A
movs r0, 0x41
negs r0, r0
ands r1, r0
str r1, [r2]
ldr r4, _08021568 @ =gUnknown_2023D74
ldr r0, [r4]
bl BattleScriptPush
ldr r1, _0802156C @ =gBattleMoveDamage
mov r0, r9
muls r0, r5
adds r0, r6
ldrh r0, [r0, 0x28]
str r0, [r1]
ldr r0, _08021570 @ =gUnknown_81D8C6C
str r0, [r4]
_0802146A:
ldr r1, _08021574 @ =gStatuses3
ldr r6, _08021578 @ =gBattlerTarget
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 7
ands r0, r1
cmp r0, 0
bne _08021482
b _08021592
_08021482:
ldr r0, _08021560 @ =gUnknown_2023DD0
ldr r5, [r0]
movs r0, 0x80
lsls r0, 17
ands r5, r0
cmp r5, 0
beq _08021492
b _08021592
_08021492:
ldr r0, _0802155C @ =sBattler_AI
mov r8, r0
ldrb r0, [r0]
bl GetBattlerSide
adds r4, r0, 0
ldrb r0, [r6]
bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
beq _08021592
ldr r1, _08021564 @ =gBattleMons
mov r9, r1
mov r2, r8
ldrb r1, [r2]
movs r7, 0x58
adds r2, r1, 0
muls r2, r7
mov r3, r9
adds r0, r2, r3
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08021592
ldr r0, _0802157C @ =gCurrentMove
ldrh r0, [r0]
cmp r0, 0xA5
beq _08021592
ldr r0, _08021558 @ =gBattleStruct
ldr r0, [r0]
adds r0, r1, r0
adds r0, 0x80
ldrb r4, [r0]
adds r0, r4, r2
mov r6, r9
adds r6, 0x24
adds r0, r6
strb r5, [r0]
ldr r5, _08021568 @ =gUnknown_2023D74
ldr r0, [r5]
bl BattleScriptPush
ldr r0, _08021580 @ =gUnknown_81D8FA3
str r0, [r5]
ldr r5, _08021584 @ =gActiveBattler
mov r1, r8
ldrb r0, [r1]
strb r0, [r5]
adds r1, r4, 0
adds r1, 0x9
lsls r1, 24
lsrs r1, 24
ldrb r0, [r5]
muls r0, r7
adds r0, r6
adds r0, r4
str r0, [sp]
movs r0, 0
movs r2, 0
movs r3, 0x1
bl EmitSetMonData
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r1, _08021588 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
lsls r4, 1
mov r2, r8
ldrb r0, [r2]
muls r0, r7
adds r0, r4, r0
mov r2, r9
adds r2, 0xC
adds r0, r2
ldrh r0, [r0]
strb r0, [r1, 0x2]
mov r3, r8
ldrb r0, [r3]
muls r0, r7
adds r4, r0
adds r4, r2
ldrh r0, [r4]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
b _08021592
.align 2, 0
_0802154C: .4byte gBattleResults
_08021550: .4byte gBattlerPartyIndexes
_08021554: .4byte gEnemyParty
_08021558: .4byte gBattleStruct
_0802155C: .4byte sBattler_AI
_08021560: .4byte gUnknown_2023DD0
_08021564: .4byte gBattleMons
_08021568: .4byte gUnknown_2023D74
_0802156C: .4byte gBattleMoveDamage
_08021570: .4byte gUnknown_81D8C6C
_08021574: .4byte gStatuses3
_08021578: .4byte gBattlerTarget
_0802157C: .4byte gCurrentMove
_08021580: .4byte gUnknown_81D8FA3
_08021584: .4byte gActiveBattler
_08021588: .4byte gBattleTextBuff1
_0802158C:
ldr r0, [r6]
adds r0, 0x7
str r0, [r6]
_08021592:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atk19_tryfaintmon
thumb_func_start atk1A_faint_animation
atk1A_faint_animation: @ 80215A0
push {r4,r5,lr}
ldr r0, _080215D0 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _080215CA
ldr r5, _080215D4 @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _080215D8 @ =gActiveBattler
strb r0, [r4]
movs r0, 0
bl EmitFaintAnimation
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
_080215CA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080215D0: .4byte gUnknown_2023BC8
_080215D4: .4byte gUnknown_2023D74
_080215D8: .4byte gActiveBattler
thumb_func_end atk1A_faint_animation
thumb_func_start atk1B_faint_effects_clear
atk1B_faint_effects_clear: @ 80215DC
push {r4-r6,lr}
sub sp, 0x4
ldr r0, _08021630 @ =gUnknown_2023BC8
ldr r6, [r0]
cmp r6, 0
bne _08021628
ldr r5, _08021634 @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _08021638 @ =gActiveBattler
strb r0, [r4]
ldr r1, _0802163C @ =gBattleMons
ldrb r0, [r4]
movs r2, 0x58
muls r0, r2
adds r1, 0x4C
adds r0, r1
str r6, [r0]
ldrb r0, [r4]
muls r0, r2
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r2, 0
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
bl sub_8012BC8
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
_08021628:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08021630: .4byte gUnknown_2023BC8
_08021634: .4byte gUnknown_2023D74
_08021638: .4byte gActiveBattler
_0802163C: .4byte gBattleMons
thumb_func_end atk1B_faint_effects_clear
thumb_func_start atk1C_jumpifstatus
atk1C_jumpifstatus: @ 8021640
push {r4,r5,lr}
ldr r5, _0802169C @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
lsls r0, 24
lsrs r0, 24
ldr r2, [r5]
ldrb r4, [r2, 0x2]
ldrb r1, [r2, 0x3]
lsls r1, 8
adds r4, r1
ldrb r1, [r2, 0x4]
lsls r1, 16
adds r4, r1
ldrb r1, [r2, 0x5]
lsls r1, 24
adds r4, r1
ldrb r3, [r2, 0x6]
ldrb r1, [r2, 0x7]
lsls r1, 8
adds r3, r1
ldrb r1, [r2, 0x8]
lsls r1, 16
adds r3, r1
ldrb r1, [r2, 0x9]
lsls r1, 24
adds r3, r1
ldr r2, _080216A0 @ =gBattleMons
movs r1, 0x58
muls r1, r0
adds r0, r2, 0
adds r0, 0x4C
adds r0, r1, r0
ldr r0, [r0]
ands r0, r4
cmp r0, 0
beq _080216A4
adds r0, r1, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _080216A4
str r3, [r5]
b _080216AC
.align 2, 0
_0802169C: .4byte gUnknown_2023D74
_080216A0: .4byte gBattleMons
_080216A4:
ldr r1, _080216B4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0xA
str r0, [r1]
_080216AC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080216B4: .4byte gUnknown_2023D74
thumb_func_end atk1C_jumpifstatus
thumb_func_start atk1D_jumpifstatus2
atk1D_jumpifstatus2: @ 80216B8
push {r4,r5,lr}
ldr r5, _08021714 @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
lsls r0, 24
lsrs r0, 24
ldr r2, [r5]
ldrb r4, [r2, 0x2]
ldrb r1, [r2, 0x3]
lsls r1, 8
adds r4, r1
ldrb r1, [r2, 0x4]
lsls r1, 16
adds r4, r1
ldrb r1, [r2, 0x5]
lsls r1, 24
adds r4, r1
ldrb r3, [r2, 0x6]
ldrb r1, [r2, 0x7]
lsls r1, 8
adds r3, r1
ldrb r1, [r2, 0x8]
lsls r1, 16
adds r3, r1
ldrb r1, [r2, 0x9]
lsls r1, 24
adds r3, r1
ldr r2, _08021718 @ =gBattleMons
movs r1, 0x58
muls r1, r0
adds r0, r2, 0
adds r0, 0x50
adds r0, r1, r0
ldr r0, [r0]
ands r0, r4
cmp r0, 0
beq _0802171C
adds r0, r1, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _0802171C
str r3, [r5]
b _08021724
.align 2, 0
_08021714: .4byte gUnknown_2023D74
_08021718: .4byte gBattleMons
_0802171C:
ldr r1, _0802172C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0xA
str r0, [r1]
_08021724:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802172C: .4byte gUnknown_2023D74
thumb_func_end atk1D_jumpifstatus2
thumb_func_start atk1E_jumpifability
atk1E_jumpifability: @ 8021730
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
ldr r6, _08021784 @ =gUnknown_2023D74
ldr r2, [r6]
ldrb r5, [r2, 0x2]
mov r8, r5
ldrb r1, [r2, 0x3]
ldrb r0, [r2, 0x4]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x6]
lsls r0, 24
adds r7, r1, r0
ldrb r0, [r2, 0x1]
cmp r0, 0x8
bne _08021790
ldr r0, _08021788 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0xD
adds r2, r5, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _08021804
ldr r1, _0802178C @ =gLastUsedAbility
strb r5, [r1]
str r7, [r6]
subs r4, 0x1
lsls r0, r4, 24
lsrs r0, 24
ldrb r1, [r1]
b _080217EC
.align 2, 0
_08021784: .4byte gUnknown_2023D74
_08021788: .4byte sBattler_AI
_0802178C: .4byte gLastUsedAbility
_08021790:
cmp r0, 0x9
bne _080217C8
ldr r0, _080217C0 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0xC
adds r2, r5, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _08021804
ldr r1, _080217C4 @ =gLastUsedAbility
strb r5, [r1]
str r7, [r6]
subs r4, 0x1
lsls r0, r4, 24
lsrs r0, 24
ldrb r1, [r1]
b _080217EC
.align 2, 0
_080217C0: .4byte sBattler_AI
_080217C4: .4byte gLastUsedAbility
_080217C8:
ldrb r0, [r2, 0x1]
bl sub_8016E24
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080217F8 @ =gBattleMons
movs r0, 0x58
muls r0, r4
adds r0, r1
adds r0, 0x20
ldrb r1, [r0]
cmp r1, r8
bne _08021804
ldr r0, _080217FC @ =gLastUsedAbility
strb r1, [r0]
str r7, [r6]
ldrb r1, [r0]
adds r0, r4, 0
_080217EC:
bl sub_80C71D0
ldr r0, _08021800 @ =gBattleScripting
strb r4, [r0, 0x15]
b _0802180A
.align 2, 0
_080217F8: .4byte gBattleMons
_080217FC: .4byte gLastUsedAbility
_08021800: .4byte gBattleScripting
_08021804:
ldr r0, [r6]
adds r0, 0x7
str r0, [r6]
_0802180A:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atk1E_jumpifability
thumb_func_start atk1F_jumpifsideaffecting
atk1F_jumpifsideaffecting: @ 8021818
push {r4-r6,lr}
ldr r0, _08021830 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r4, [r0, 0x1]
cmp r4, 0x1
bne _08021838
ldr r0, _08021834 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerPosition
b _08021842
.align 2, 0
_08021830: .4byte gUnknown_2023D74
_08021834: .4byte sBattler_AI
_08021838:
ldr r0, _08021878 @ =gBattlerTarget
ldrb r0, [r0]
bl GetBattlerPosition
movs r4, 0x1
_08021842:
ands r4, r0
ldr r6, _0802187C @ =gUnknown_2023D74
ldr r3, [r6]
ldrb r2, [r3, 0x2]
ldrb r0, [r3, 0x3]
lsls r0, 8
orrs r2, r0
ldrb r1, [r3, 0x4]
ldrb r0, [r3, 0x5]
lsls r0, 8
adds r1, r0
ldrb r0, [r3, 0x6]
lsls r0, 16
adds r1, r0
ldrb r0, [r3, 0x7]
lsls r0, 24
adds r5, r1, r0
ldr r1, _08021880 @ =gSideAffecting
lsls r0, r4, 1
adds r0, r1
ldrh r0, [r0]
ands r2, r0
cmp r2, 0
beq _08021884
str r5, [r6]
b _0802188A
.align 2, 0
_08021878: .4byte gBattlerTarget
_0802187C: .4byte gUnknown_2023D74
_08021880: .4byte gSideAffecting
_08021884:
adds r0, r3, 0
adds r0, 0x8
str r0, [r6]
_0802188A:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end atk1F_jumpifsideaffecting
thumb_func_start atk20_jumpifstat
atk20_jumpifstat: @ 8021890
push {r4,r5,lr}
movs r5, 0
ldr r4, _080218C4 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
lsls r0, 24
lsrs r0, 24
ldr r2, _080218C8 @ =gBattleMons
ldr r3, [r4]
movs r1, 0x58
muls r0, r1
ldrb r1, [r3, 0x3]
adds r0, r1
adds r2, 0x18
adds r0, r2
ldrb r2, [r0]
ldrb r0, [r3, 0x2]
cmp r0, 0x5
bhi _0802194E
lsls r0, 2
ldr r1, _080218CC @ =_080218D0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080218C4: .4byte gUnknown_2023D74
_080218C8: .4byte gBattleMons
_080218CC: .4byte _080218D0
.align 2, 0
_080218D0:
.4byte _080218E8
.4byte _080218F8
.4byte _08021908
.4byte _08021918
.4byte _08021928
.4byte _0802193C
_080218E8:
ldr r0, _080218F4 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r2, r0
bne _0802194E
b _08021948
.align 2, 0
_080218F4: .4byte gUnknown_2023D74
_080218F8:
ldr r0, _08021904 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r2, r0
beq _0802194E
b _08021948
.align 2, 0
_08021904: .4byte gUnknown_2023D74
_08021908:
ldr r0, _08021914 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r2, r0
bls _0802194E
b _08021948
.align 2, 0
_08021914: .4byte gUnknown_2023D74
_08021918:
ldr r0, _08021924 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r2, r0
bcs _0802194E
b _08021948
.align 2, 0
_08021924: .4byte gUnknown_2023D74
_08021928:
ldr r0, _08021938 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x4]
ands r2, r0
cmp r2, 0
beq _0802194E
b _08021948
.align 2, 0
_08021938: .4byte gUnknown_2023D74
_0802193C:
ldr r0, _08021970 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x4]
ands r2, r0
cmp r2, 0
bne _0802194E
_08021948:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
_0802194E:
cmp r5, 0
beq _08021974
ldr r3, _08021970 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x5]
ldrb r0, [r2, 0x6]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x7]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x8]
lsls r0, 24
adds r1, r0
str r1, [r3]
b _0802197C
.align 2, 0
_08021970: .4byte gUnknown_2023D74
_08021974:
ldr r1, _08021984 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x9
str r0, [r1]
_0802197C:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08021984: .4byte gUnknown_2023D74
thumb_func_end atk20_jumpifstat
thumb_func_start atk21_jumpifstatus3condition
atk21_jumpifstatus3condition: @ 8021988
push {r4-r6,lr}
ldr r4, _080219DC @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r5, _080219E0 @ =gActiveBattler
strb r0, [r5]
ldr r2, [r4]
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
adds r6, r1, r0
ldrb r1, [r2, 0x7]
ldrb r0, [r2, 0x8]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x9]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0xA]
lsls r0, 24
adds r3, r1, r0
ldrb r0, [r2, 0x6]
cmp r0, 0
beq _080219E8
ldr r0, _080219E4 @ =gStatuses3
ldrb r1, [r5]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
ands r0, r6
cmp r0, 0
bne _08021A00
b _080219F8
.align 2, 0
_080219DC: .4byte gUnknown_2023D74
_080219E0: .4byte gActiveBattler
_080219E4: .4byte gStatuses3
_080219E8:
ldr r0, _080219FC @ =gStatuses3
ldrb r1, [r5]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
ands r0, r6
cmp r0, 0
beq _08021A00
_080219F8:
str r3, [r4]
b _08021A06
.align 2, 0
_080219FC: .4byte gStatuses3
_08021A00:
adds r0, r2, 0
adds r0, 0xB
str r0, [r4]
_08021A06:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end atk21_jumpifstatus3condition
thumb_func_start atk22_jumpiftype
atk22_jumpiftype: @ 8021A0C
push {r4-r6,lr}
ldr r4, _08021A54 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
lsls r0, 24
lsrs r0, 24
ldr r3, [r4]
ldrb r5, [r3, 0x2]
ldrb r2, [r3, 0x3]
ldrb r1, [r3, 0x4]
lsls r1, 8
adds r2, r1
ldrb r1, [r3, 0x5]
lsls r1, 16
adds r2, r1
ldrb r1, [r3, 0x6]
lsls r1, 24
adds r6, r2, r1
ldr r2, _08021A58 @ =gBattleMons
movs r1, 0x58
muls r0, r1
adds r1, r0, r2
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, r5
beq _08021A50
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, r5
bne _08021A5C
_08021A50:
str r6, [r4]
b _08021A60
.align 2, 0
_08021A54: .4byte gUnknown_2023D74
_08021A58: .4byte gBattleMons
_08021A5C:
adds r0, r3, 0x7
str r0, [r4]
_08021A60:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end atk22_jumpiftype
thumb_func_start sub_8021A68
sub_8021A68: @ 8021A68
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r6, 0
ldr r0, _08021AB0 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x50
mov r9, r0
ldr r0, _08021AB4 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r1, _08021AB8 @ =gUnknown_2023D6D
strb r0, [r1]
ldr r2, _08021ABC @ =gUnknown_2023F4E
movs r1, 0x2
ands r1, r0
lsls r1, 24
lsrs r1, 25
adds r1, r2
ldrb r1, [r1]
mov r8, r1
ldr r0, _08021AC0 @ =gBattleScripting
ldrb r0, [r0, 0x1C]
cmp r0, 0x6
bls _08021AA4
bl _080223DA
_08021AA4:
lsls r0, 2
ldr r1, _08021AC4 @ =_08021AC8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08021AB0: .4byte gBattleStruct
_08021AB4: .4byte gUnknown_2023D74
_08021AB8: .4byte gUnknown_2023D6D
_08021ABC: .4byte gUnknown_2023F4E
_08021AC0: .4byte gBattleScripting
_08021AC4: .4byte _08021AC8
.align 2, 0
_08021AC8:
.4byte _08021AE4
.4byte _08021B50
.4byte _08021C6A
.4byte _08021F78
.4byte _0802207C
.4byte _08022368
.4byte _080223B0
_08021AE4:
ldr r4, _08021B34 @ =gUnknown_2023D6D
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08021AF8
bl _080223A4
_08021AF8:
ldr r0, _08021B38 @ =gBattleTypeFlags
ldr r0, [r0]
ldr r1, _08021B3C @ =0x00080982
ands r0, r1
cmp r0, 0
beq _08021B08
bl _080223A4
_08021B08:
ldr r1, _08021B40 @ =gBattleScripting
ldrb r0, [r1, 0x1C]
adds r0, 0x1
strb r0, [r1, 0x1C]
ldr r0, _08021B44 @ =gBattleStruct
ldr r2, [r0]
adds r2, 0xDF
ldr r3, _08021B48 @ =gBitTable
ldr r1, _08021B4C @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
bl _080223DA
.align 2, 0
_08021B34: .4byte gUnknown_2023D6D
_08021B38: .4byte gBattleTypeFlags
_08021B3C: .4byte 0x00080982
_08021B40: .4byte gBattleScripting
_08021B44: .4byte gBattleStruct
_08021B48: .4byte gBitTable
_08021B4C: .4byte gBattlerPartyIndexes
_08021B50:
movs r5, 0
movs r7, 0
_08021B54:
movs r0, 0x64
adds r1, r7, 0
muls r1, r0
ldr r0, _08021BA4 @ =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _08021BC2
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _08021BC2
ldr r0, _08021BA8 @ =gBitTable
lsls r1, r7, 2
adds r1, r0
ldr r0, [r1]
mov r1, r8
ands r0, r1
cmp r0, 0
beq _08021B88
adds r5, 0x1
_08021B88:
adds r0, r4, 0
movs r1, 0xC
bl GetMonData
lsls r0, 16
lsrs r0, 16
cmp r0, 0xAF
bne _08021BB4
ldr r0, _08021BAC @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r2, _08021BB0 @ =0x0000311a
adds r0, r2
ldrb r4, [r0]
b _08021BBC
.align 2, 0
_08021BA4: .4byte gPlayerParty
_08021BA8: .4byte gBitTable
_08021BAC: .4byte gSaveBlock1Ptr
_08021BB0: .4byte 0x0000311a
_08021BB4:
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r4, r0, 24
_08021BBC:
cmp r4, 0x19
bne _08021BC2
adds r6, 0x1
_08021BC2:
adds r7, 0x1
cmp r7, 0x5
ble _08021B54
ldr r3, _08021C28 @ =gBaseStats
ldr r2, _08021C2C @ =gBattleMons
ldr r0, _08021C30 @ =gUnknown_2023D6D
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
ldrh r2, [r1]
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r3
ldrb r2, [r0, 0x9]
adds r1, 0x2A
ldrb r0, [r1]
muls r0, r2
movs r1, 0x7
bl __divsi3
lsls r0, 16
lsrs r1, r0, 16
cmp r6, 0
beq _08021C38
lsrs r4, r0, 17
adds r0, r4, 0
adds r1, r5, 0
bl __divsi3
mov r1, r9
strh r0, [r1]
lsls r0, 16
cmp r0, 0
bne _08021C0E
movs r0, 0x1
strh r0, [r1]
_08021C0E:
ldr r5, _08021C34 @ =gUnknown_2023F52
adds r0, r4, 0
adds r1, r6, 0
bl __divsi3
strh r0, [r5]
lsls r0, 16
cmp r0, 0
bne _08021C52
movs r0, 0x1
strh r0, [r5]
b _08021C52
.align 2, 0
_08021C28: .4byte gBaseStats
_08021C2C: .4byte gBattleMons
_08021C30: .4byte gUnknown_2023D6D
_08021C34: .4byte gUnknown_2023F52
_08021C38:
adds r0, r1, 0
adds r1, r5, 0
bl __divsi3
mov r2, r9
strh r0, [r2]
lsls r0, 16
cmp r0, 0
bne _08021C4E
movs r0, 0x1
strh r0, [r2]
_08021C4E:
ldr r0, _08021C9C @ =gUnknown_2023F52
strh r6, [r0]
_08021C52:
ldr r1, _08021CA0 @ =gBattleScripting
ldrb r0, [r1, 0x1C]
adds r0, 0x1
movs r2, 0
strb r0, [r1, 0x1C]
ldr r1, _08021CA4 @ =gBattleStruct
ldr r0, [r1]
strb r2, [r0, 0x10]
ldr r0, [r1]
adds r0, 0x53
mov r4, r8
strb r4, [r0]
_08021C6A:
ldr r0, _08021CA8 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _08021C74
b _080223DA
_08021C74:
ldr r0, _08021CA4 @ =gBattleStruct
ldr r0, [r0]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _08021CAC @ =gPlayerParty
adds r0, r1
movs r1, 0xC
bl GetMonData
lsls r0, 16
lsrs r0, 16
cmp r0, 0xAF
bne _08021CB8
ldr r0, _08021CB0 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08021CB4 @ =0x0000311a
adds r0, r1
ldrb r4, [r0]
b _08021CC0
.align 2, 0
_08021C9C: .4byte gUnknown_2023F52
_08021CA0: .4byte gBattleScripting
_08021CA4: .4byte gBattleStruct
_08021CA8: .4byte gUnknown_2023BC8
_08021CAC: .4byte gPlayerParty
_08021CB0: .4byte gSaveBlock1Ptr
_08021CB4: .4byte 0x0000311a
_08021CB8:
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r4, r0, 24
_08021CC0:
ldr r5, _08021CE0 @ =gBattleStruct
cmp r4, 0x19
beq _08021CE8
ldr r0, [r5]
adds r1, r0, 0
adds r1, 0x53
ldrb r0, [r1]
movs r2, 0x1
ands r2, r0
cmp r2, 0
bne _08021CE8
lsrs r0, 1
strb r0, [r1]
ldr r1, _08021CE4 @ =gBattleScripting
b _08021D0C
.align 2, 0
_08021CE0: .4byte gBattleStruct
_08021CE4: .4byte gBattleScripting
_08021CE8:
ldr r0, [r5]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _08021D18 @ =gPlayerParty
adds r0, r1
movs r1, 0x38
bl GetMonData
cmp r0, 0x64
bne _08021D24
ldr r1, [r5]
adds r1, 0x53
ldrb r0, [r1]
lsrs r0, 1
strb r0, [r1]
ldr r1, _08021D1C @ =gBattleScripting
movs r2, 0
_08021D0C:
movs r0, 0x5
strb r0, [r1, 0x1C]
ldr r0, _08021D20 @ =gBattleMoveDamage
str r2, [r0]
b _080223DA
.align 2, 0
_08021D18: .4byte gPlayerParty
_08021D1C: .4byte gBattleScripting
_08021D20: .4byte gBattleMoveDamage
_08021D24:
ldr r0, _08021D88 @ =gBattleTypeFlags
ldr r0, [r0]
ldr r1, _08021D8C @ =0x00010008
ands r0, r1
cmp r0, 0
bne _08021D52
ldr r0, _08021D90 @ =gBattleMons
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08021D52
ldr r0, [r5]
ldrb r0, [r0, 0x12]
cmp r0, 0
bne _08021D52
bl BattleStopLowHpSound
ldr r0, _08021D94 @ =0x00000137
bl PlayBGM
ldr r1, [r5]
ldrb r0, [r1, 0x12]
adds r0, 0x1
strb r0, [r1, 0x12]
_08021D52:
ldr r5, _08021D98 @ =gBattleStruct
ldr r0, [r5]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _08021D9C @ =gPlayerParty
adds r0, r1
movs r1, 0x39
bl GetMonData
cmp r0, 0
bne _08021D6C
b _08021F4C
_08021D6C:
ldr r0, [r5]
adds r0, 0x53
ldrb r0, [r0]
movs r3, 0x1
ands r3, r0
cmp r3, 0
beq _08021DA4
ldr r1, _08021DA0 @ =gBattleMoveDamage
mov r2, r9
ldrh r0, [r2]
str r0, [r1]
mov r9, r1
b _08021DAA
.align 2, 0
_08021D88: .4byte gBattleTypeFlags
_08021D8C: .4byte 0x00010008
_08021D90: .4byte gBattleMons
_08021D94: .4byte 0x00000137
_08021D98: .4byte gBattleStruct
_08021D9C: .4byte gPlayerParty
_08021DA0: .4byte gBattleMoveDamage
_08021DA4:
ldr r0, _08021E28 @ =gBattleMoveDamage
str r3, [r0]
mov r9, r0
_08021DAA:
cmp r4, 0x19
bne _08021DBA
ldr r0, _08021E2C @ =gUnknown_2023F52
ldrh r1, [r0]
mov r2, r9
ldr r0, [r2]
adds r0, r1
str r0, [r2]
_08021DBA:
cmp r4, 0x28
bne _08021DCE
mov r4, r9
ldr r1, [r4]
movs r0, 0x96
muls r0, r1
movs r1, 0x64
bl __divsi3
str r0, [r4]
_08021DCE:
ldr r5, _08021E30 @ =gBattleTypeFlags
ldr r0, [r5]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _08021DEA
ldr r4, _08021E28 @ =gBattleMoveDamage
ldr r1, [r4]
movs r0, 0x96
muls r0, r1
movs r1, 0x64
bl __divsi3
str r0, [r4]
_08021DEA:
ldr r0, _08021E34 @ =gBattleStruct
ldr r0, [r0]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _08021E38 @ =gPlayerParty
adds r0, r1
bl IsTradedMon
lsls r0, 24
cmp r0, 0
beq _08021E3C
ldr r0, [r5]
movs r1, 0x80
lsls r1, 9
ands r0, r1
cmp r0, 0
bne _08021E3C
ldr r4, _08021E28 @ =gBattleMoveDamage
ldr r1, [r4]
movs r0, 0x96
muls r0, r1
movs r1, 0x64
bl __divsi3
str r0, [r4]
movs r7, 0xA5
lsls r7, 1
mov r9, r4
b _08021E42
.align 2, 0
_08021E28: .4byte gBattleMoveDamage
_08021E2C: .4byte gUnknown_2023F52
_08021E30: .4byte gBattleTypeFlags
_08021E34: .4byte gBattleStruct
_08021E38: .4byte gPlayerParty
_08021E3C:
ldr r7, _08021E78 @ =0x00000149
ldr r0, _08021E7C @ =gBattleMoveDamage
mov r9, r0
_08021E42:
ldr r0, _08021E80 @ =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x1
ands r1, r0
cmp r1, 0
beq _08021EAE
ldr r0, _08021E84 @ =gBattlerPartyIndexes
ldr r1, _08021E88 @ =gBattleStruct
ldr r4, [r1]
ldrh r0, [r0, 0x4]
adds r5, r1, 0
ldr r3, _08021E8C @ =gBitTable
ldr r2, _08021E90 @ =gAbsentBattlerFlags
ldrb r1, [r4, 0x10]
cmp r0, r1
bne _08021E94
ldrb r1, [r2]
ldr r0, [r3, 0x8]
ands r1, r0
cmp r1, 0
bne _08021E94
adds r1, r4, 0
adds r1, 0x8F
movs r0, 0x2
strb r0, [r1]
b _08021EB6
.align 2, 0
_08021E78: .4byte 0x00000149
_08021E7C: .4byte gBattleMoveDamage
_08021E80: .4byte gBattleTypeFlags
_08021E84: .4byte gBattlerPartyIndexes
_08021E88: .4byte gBattleStruct
_08021E8C: .4byte gBitTable
_08021E90: .4byte gAbsentBattlerFlags
_08021E94:
ldrb r2, [r2]
ldr r0, [r3]
ands r2, r0
cmp r2, 0
bne _08021EA6
ldr r0, [r5]
adds r0, 0x8F
strb r2, [r0]
b _08021EB6
_08021EA6:
ldr r0, [r5]
adds r0, 0x8F
movs r1, 0x2
b _08021EB4
_08021EAE:
ldr r0, _08021F5C @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x8F
_08021EB4:
strb r1, [r0]
_08021EB6:
ldr r1, _08021F60 @ =gBattleTextBuff1
movs r2, 0
mov r12, r2
movs r3, 0xFD
strb r3, [r1]
movs r5, 0x4
strb r5, [r1, 0x1]
ldr r6, _08021F5C @ =gBattleStruct
ldr r2, [r6]
movs r4, 0x8F
adds r4, r2
mov r8, r4
ldrb r0, [r4]
strb r0, [r1, 0x2]
ldrb r0, [r2, 0x10]
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _08021F64 @ =gBattleTextBuff2
strb r3, [r1]
mov r0, r12
strb r0, [r1, 0x1]
strb r7, [r1, 0x2]
movs r4, 0xFF
lsls r4, 8
ands r7, r4
asrs r0, r7, 8
strb r0, [r1, 0x3]
movs r0, 0x1
negs r0, r0
strb r0, [r1, 0x4]
ldr r1, _08021F68 @ =gUnknown_2022AD8
strb r3, [r1]
movs r0, 0x1
strb r0, [r1, 0x1]
strb r5, [r1, 0x2]
movs r0, 0x5
strb r0, [r1, 0x3]
mov r0, r9
ldr r2, [r0]
strb r2, [r1, 0x4]
adds r0, r2, 0
ands r0, r4
asrs r0, 8
strb r0, [r1, 0x5]
movs r0, 0xFF
lsls r0, 16
ands r0, r2
asrs r0, 16
strb r0, [r1, 0x6]
lsrs r2, 24
strb r2, [r1, 0x7]
movs r0, 0x1
negs r0, r0
strb r0, [r1, 0x8]
mov r2, r8
ldrb r1, [r2]
movs r0, 0xD
bl PrepareStringBattle
ldr r0, [r6]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _08021F6C @ =gPlayerParty
adds r0, r1
ldr r3, _08021F70 @ =gBattleMons
ldr r1, _08021F74 @ =gUnknown_2023D6D
ldrb r2, [r1]
movs r1, 0x58
muls r1, r2
adds r1, r3
ldrh r1, [r1]
bl MonGainEVs
_08021F4C:
ldr r0, _08021F5C @ =gBattleStruct
ldr r1, [r0]
adds r1, 0x53
ldrb r0, [r1]
lsrs r0, 1
strb r0, [r1]
b _08022052
.align 2, 0
_08021F5C: .4byte gBattleStruct
_08021F60: .4byte gBattleTextBuff1
_08021F64: .4byte gBattleTextBuff2
_08021F68: .4byte gUnknown_2022AD8
_08021F6C: .4byte gPlayerParty
_08021F70: .4byte gBattleMons
_08021F74: .4byte gUnknown_2023D6D
_08021F78:
ldr r0, _0802205C @ =gUnknown_2023BC8
ldr r2, [r0]
cmp r2, 0
beq _08021F82
b _080223DA
_08021F82:
ldr r1, _08022060 @ =gUnknown_20233C4
ldr r7, _08022064 @ =gBattleStruct
ldr r0, [r7]
adds r0, 0x8F
ldrb r0, [r0]
lsls r0, 9
adds r0, r1
strb r2, [r0]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
movs r6, 0x64
muls r0, r6
ldr r5, _08022068 @ =gPlayerParty
adds r0, r5
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _08022052
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r6
adds r0, r5
movs r1, 0x38
bl GetMonData
cmp r0, 0x64
beq _08022052
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r6
adds r0, r5
movs r1, 0x3A
bl GetMonData
ldr r4, _0802206C @ =gBattleResources
ldr r1, [r4]
ldr r1, [r1, 0x10]
strh r0, [r1]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r6
adds r0, r5
movs r1, 0x3B
bl GetMonData
ldr r1, [r4]
ldr r1, [r1, 0x10]
strh r0, [r1, 0x2]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r6
adds r0, r5
movs r1, 0x3C
bl GetMonData
ldr r1, [r4]
ldr r1, [r1, 0x10]
strh r0, [r1, 0x4]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r6
adds r0, r5
movs r1, 0x3D
bl GetMonData
ldr r1, [r4]
ldr r1, [r1, 0x10]
strh r0, [r1, 0x6]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r6
adds r0, r5
movs r1, 0x3E
bl GetMonData
ldr r1, [r4]
ldr r1, [r1, 0x10]
strh r0, [r1, 0x8]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r6
adds r0, r5
movs r1, 0x3F
bl GetMonData
ldr r1, [r4]
ldr r1, [r1, 0x10]
strh r0, [r1, 0xA]
ldr r4, _08022070 @ =gActiveBattler
ldr r1, [r7]
adds r0, r1, 0
adds r0, 0x8F
ldrb r0, [r0]
strb r0, [r4]
ldrb r1, [r1, 0x10]
ldr r0, _08022074 @ =gBattleMoveDamage
ldrh r2, [r0]
movs r0, 0
bl EmitExpUpdate
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08022052:
ldr r1, _08022078 @ =gBattleScripting
ldrb r0, [r1, 0x1C]
adds r0, 0x1
strb r0, [r1, 0x1C]
b _080223DA
.align 2, 0
_0802205C: .4byte gUnknown_2023BC8
_08022060: .4byte gUnknown_20233C4
_08022064: .4byte gBattleStruct
_08022068: .4byte gPlayerParty
_0802206C: .4byte gBattleResources
_08022070: .4byte gActiveBattler
_08022074: .4byte gBattleMoveDamage
_08022078: .4byte gBattleScripting
_0802207C:
ldr r0, _08022314 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _08022086
b _080223DA
_08022086:
ldr r1, _08022318 @ =gActiveBattler
ldr r0, _0802231C @ =gBattleStruct
ldr r4, [r0]
adds r0, r4, 0
adds r0, 0x8F
ldrb r0, [r0]
strb r0, [r1]
ldr r3, _08022320 @ =gUnknown_20233C4
ldrb r2, [r1]
lsls r1, r2, 9
adds r0, r1, r3
ldrb r0, [r0]
cmp r0, 0x21
beq _080220A4
b _08022350
_080220A4:
adds r0, r3, 0x1
adds r0, r1, r0
ldrb r0, [r0]
cmp r0, 0xB
beq _080220B0
b _08022350
_080220B0:
ldr r0, _08022324 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _080220DA
ldr r0, _08022328 @ =gBattlerPartyIndexes
lsls r1, r2, 1
adds r1, r0
ldrh r0, [r1]
ldrb r4, [r4, 0x10]
cmp r0, r4
bne _080220DA
adds r1, r0, 0
movs r0, 0x64
muls r0, r1
ldr r1, _0802232C @ =gPlayerParty
adds r0, r1
adds r1, r2, 0
bl HandleLowHpMusicChange
_080220DA:
ldr r1, _08022330 @ =gBattleTextBuff1
movs r3, 0xFD
strb r3, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r6, _08022318 @ =gActiveBattler
ldrb r0, [r6]
strb r0, [r1, 0x2]
ldr r4, _0802231C @ =gBattleStruct
mov r9, r4
ldr r2, [r4]
ldrb r0, [r2, 0x10]
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r4, _08022334 @ =gBattleTextBuff2
strb r3, [r4]
movs r0, 0x1
strb r0, [r4, 0x1]
strb r0, [r4, 0x2]
movs r0, 0x3
strb r0, [r4, 0x3]
ldrb r0, [r2, 0x10]
movs r1, 0x64
mov r8, r1
mov r2, r8
muls r2, r0
adds r0, r2, 0
ldr r7, _0802232C @ =gPlayerParty
adds r0, r7
movs r1, 0x38
bl GetMonData
strb r0, [r4, 0x4]
movs r0, 0x1
negs r0, r0
strb r0, [r4, 0x5]
bl BattleScriptPushCursor
ldr r2, _08022338 @ =gUnknown_3004FD4
ldr r1, _0802233C @ =gBitTable
mov r4, r9
ldr r5, [r4]
ldrb r0, [r5, 0x10]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldr r1, _08022340 @ =gUnknown_2023D74
ldr r0, _08022344 @ =gUnknown_81D89F5
str r0, [r1]
ldr r4, _08022348 @ =gBattleMoveDamage
ldr r2, _08022320 @ =gUnknown_20233C4
ldrb r1, [r6]
lsls r1, 9
adds r0, r2, 0x2
adds r0, r1, r0
ldrb r3, [r0]
adds r2, 0x3
adds r1, r2
ldrb r0, [r1]
lsls r0, 8
orrs r3, r0
str r3, [r4]
ldrb r0, [r5, 0x10]
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r0, r7
movs r1, 0
bl AdjustFriendship
ldr r1, _08022328 @ =gBattlerPartyIndexes
mov r2, r9
ldr r0, [r2]
ldrb r2, [r0, 0x10]
ldrh r0, [r1]
cmp r0, r2
bne _08022246
ldr r4, _0802234C @ =gBattleMons
ldrh r0, [r4, 0x28]
cmp r0, 0
beq _08022246
mov r0, r8
muls r0, r2
adds r0, r7
movs r1, 0x38
bl GetMonData
adds r1, r4, 0
adds r1, 0x2A
strb r0, [r1]
mov r1, r9
ldr r0, [r1]
ldrb r0, [r0, 0x10]
mov r2, r8
muls r2, r0
adds r0, r2, 0
adds r0, r7
movs r1, 0x39
bl GetMonData
strh r0, [r4, 0x28]
mov r1, r9
ldr r0, [r1]
ldrb r0, [r0, 0x10]
mov r2, r8
muls r2, r0
adds r0, r2, 0
adds r0, r7
movs r1, 0x3A
bl GetMonData
strh r0, [r4, 0x2C]
mov r1, r9
ldr r0, [r1]
ldrb r0, [r0, 0x10]
mov r2, r8
muls r2, r0
adds r0, r2, 0
adds r0, r7
movs r1, 0x3B
bl GetMonData
strh r0, [r4, 0x2]
mov r1, r9
ldr r0, [r1]
ldrb r0, [r0, 0x10]
mov r2, r8
muls r2, r0
adds r0, r2, 0
adds r0, r7
movs r1, 0x3C
bl GetMonData
strh r0, [r4, 0x4]
mov r1, r9
ldr r0, [r1]
ldrb r0, [r0, 0x10]
mov r2, r8
muls r2, r0
adds r0, r2, 0
adds r0, r7
movs r1, 0x3D
bl GetMonData
strh r0, [r4, 0x6]
mov r1, r9
ldr r0, [r1]
ldrb r0, [r0, 0x10]
mov r2, r8
muls r2, r0
adds r0, r2, 0
adds r0, r7
movs r1, 0x3D
bl GetMonData
strh r0, [r4, 0x6]
mov r1, r9
ldr r0, [r1]
ldrb r0, [r0, 0x10]
mov r2, r8
muls r2, r0
adds r0, r2, 0
adds r0, r7
movs r1, 0x3E
bl GetMonData
strh r0, [r4, 0x8]
mov r1, r9
ldr r0, [r1]
ldrb r0, [r0, 0x10]
mov r2, r8
muls r2, r0
adds r0, r2, 0
adds r0, r7
movs r1, 0x3F
bl GetMonData
strh r0, [r4, 0xA]
_08022246:
ldr r0, _08022328 @ =gBattlerPartyIndexes
ldr r7, _0802231C @ =gBattleStruct
ldr r1, [r7]
ldrb r2, [r1, 0x10]
ldrh r0, [r0, 0x4]
cmp r0, r2
beq _08022256
b _08022356
_08022256:
ldr r6, _0802234C @ =gBattleMons
movs r4, 0xD8
adds r4, r6
mov r8, r4
ldrh r0, [r4]
cmp r0, 0
beq _08022356
ldr r0, _08022324 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08022356
movs r5, 0x64
adds r0, r2, 0
muls r0, r5
ldr r4, _0802232C @ =gPlayerParty
adds r0, r4
movs r1, 0x38
bl GetMonData
adds r1, r6, 0
adds r1, 0xDA
strb r0, [r1]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
movs r1, 0x39
bl GetMonData
mov r1, r8
strh r0, [r1]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
movs r1, 0x3A
bl GetMonData
adds r1, r6, 0
adds r1, 0xDC
strh r0, [r1]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
movs r1, 0x3B
bl GetMonData
adds r1, r6, 0
adds r1, 0xB2
strh r0, [r1]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
movs r1, 0x3C
bl GetMonData
adds r1, r6, 0
adds r1, 0xB4
strh r0, [r1]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
movs r1, 0x3D
bl GetMonData
movs r2, 0xB6
adds r2, r6
mov r8, r2
strh r0, [r2]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
movs r1, 0x3D
bl GetMonData
mov r1, r8
strh r0, [r1]
ldr r0, [r7]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
movs r1, 0x3E
bl GetMonData
adds r1, r6, 0
adds r1, 0xB8
strh r0, [r1]
b _08022356
.align 2, 0
_08022314: .4byte gUnknown_2023BC8
_08022318: .4byte gActiveBattler
_0802231C: .4byte gBattleStruct
_08022320: .4byte gUnknown_20233C4
_08022324: .4byte gBattleTypeFlags
_08022328: .4byte gBattlerPartyIndexes
_0802232C: .4byte gPlayerParty
_08022330: .4byte gBattleTextBuff1
_08022334: .4byte gBattleTextBuff2
_08022338: .4byte gUnknown_3004FD4
_0802233C: .4byte gBitTable
_08022340: .4byte gUnknown_2023D74
_08022344: .4byte gUnknown_81D89F5
_08022348: .4byte gBattleMoveDamage
_0802234C: .4byte gBattleMons
_08022350:
ldr r1, _08022360 @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
_08022356:
ldr r1, _08022364 @ =gBattleScripting
movs r0, 0x5
strb r0, [r1, 0x1C]
b _080223DA
.align 2, 0
_08022360: .4byte gBattleMoveDamage
_08022364: .4byte gBattleScripting
_08022368:
ldr r0, _08022378 @ =gBattleMoveDamage
ldr r0, [r0]
cmp r0, 0
beq _08022380
ldr r1, _0802237C @ =gBattleScripting
movs r0, 0x3
strb r0, [r1, 0x1C]
b _080223DA
.align 2, 0
_08022378: .4byte gBattleMoveDamage
_0802237C: .4byte gBattleScripting
_08022380:
ldr r2, _0802239C @ =gBattleStruct
ldr r1, [r2]
ldrb r0, [r1, 0x10]
adds r0, 0x1
strb r0, [r1, 0x10]
ldr r0, [r2]
ldrb r0, [r0, 0x10]
cmp r0, 0x5
bhi _080223A4
ldr r1, _080223A0 @ =gBattleScripting
movs r0, 0x2
strb r0, [r1, 0x1C]
b _080223DA
.align 2, 0
_0802239C: .4byte gBattleStruct
_080223A0: .4byte gBattleScripting
_080223A4:
ldr r1, _080223AC @ =gBattleScripting
movs r0, 0x6
strb r0, [r1, 0x1C]
b _080223DA
.align 2, 0
_080223AC: .4byte gBattleScripting
_080223B0:
ldr r0, _080223E8 @ =gUnknown_2023BC8
ldr r5, [r0]
cmp r5, 0
bne _080223DA
ldr r4, _080223EC @ =gBattleMons
ldr r2, _080223F0 @ =gUnknown_2023D6D
ldrb r0, [r2]
movs r1, 0x58
muls r0, r1
adds r0, r4
movs r3, 0
strh r5, [r0, 0x2E]
ldrb r0, [r2]
muls r0, r1
adds r0, r4
adds r0, 0x20
strb r3, [r0]
ldr r1, _080223F4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
_080223DA:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080223E8: .4byte gUnknown_2023BC8
_080223EC: .4byte gBattleMons
_080223F0: .4byte gUnknown_2023D6D
_080223F4: .4byte gUnknown_2023D74
thumb_func_end sub_8021A68
thumb_func_start sub_80223F8
sub_80223F8: @ 80223F8
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r6, 0
ldr r0, _08022534 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _0802240A
b _0802258A
_0802240A:
movs r5, 0
_0802240C:
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _08022538 @ =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _0802243C
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0
bne _0802243C
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
adds r0, r6, r0
lsls r0, 16
lsrs r6, r0, 16
_0802243C:
adds r5, 0x1
cmp r5, 0x5
ble _0802240C
cmp r6, 0
bne _08022450
ldr r0, _0802253C @ =gBattleOutcome
ldrb r1, [r0]
movs r2, 0x2
orrs r1, r2
strb r1, [r0]
_08022450:
movs r6, 0
movs r5, 0
_08022454:
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _08022540 @ =gEnemyParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _08022484
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0
bne _08022484
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
adds r0, r6, r0
lsls r0, 16
lsrs r6, r0, 16
_08022484:
adds r5, 0x1
cmp r5, 0x5
ble _08022454
ldr r2, _0802253C @ =gBattleOutcome
cmp r6, 0
bne _08022498
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
_08022498:
ldrb r0, [r2]
cmp r0, 0
bne _08022582
ldr r0, _08022544 @ =gBattleTypeFlags
ldr r1, [r0]
movs r2, 0x2
ands r1, r2
mov r8, r0
cmp r1, 0
beq _08022582
movs r3, 0
movs r5, 0
ldr r0, _08022548 @ =gBattlersCount
ldrb r1, [r0]
mov r12, r0
ldr r7, _0802254C @ =gUnknown_2023D74
cmp r3, r1
bge _080224E4
ldr r0, _08022550 @ =gUnknown_2023DD0
movs r6, 0x80
lsls r6, 21
ldr r4, [r0]
adds r2, r1, 0
ldr r1, _08022554 @ =gUnknown_2023ECC
_080224C8:
adds r0, r6, 0
lsls r0, r5
ands r0, r4
cmp r0, 0
beq _080224DC
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _080224DC
adds r3, 0x1
_080224DC:
adds r1, 0x28
adds r5, 0x2
cmp r5, r2
blt _080224C8
_080224E4:
movs r2, 0
movs r5, 0x1
mov r0, r12
ldrb r1, [r0]
cmp r5, r1
bge _0802251E
ldr r0, _08022550 @ =gUnknown_2023DD0
movs r4, 0x80
lsls r4, 21
mov r12, r4
ldr r6, [r0]
ldr r0, _08022554 @ =gUnknown_2023ECC
adds r4, r1, 0
adds r1, r0, 0
adds r1, 0x14
_08022502:
mov r0, r12
lsls r0, r5
ands r0, r6
cmp r0, 0
beq _08022516
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _08022516
adds r2, 0x1
_08022516:
adds r1, 0x28
adds r5, 0x2
cmp r5, r4
blt _08022502
_0802251E:
mov r1, r8
ldr r0, [r1]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _08022558
adds r0, r2, r3
cmp r0, 0x1
bgt _08022560
b _0802257A
.align 2, 0
_08022534: .4byte gUnknown_2023BC8
_08022538: .4byte gPlayerParty
_0802253C: .4byte gBattleOutcome
_08022540: .4byte gEnemyParty
_08022544: .4byte gBattleTypeFlags
_08022548: .4byte gBattlersCount
_0802254C: .4byte gUnknown_2023D74
_08022550: .4byte gUnknown_2023DD0
_08022554: .4byte gUnknown_2023ECC
_08022558:
cmp r2, 0
beq _0802257A
cmp r3, 0
beq _0802257A
_08022560:
ldr r2, [r7]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r1, r0
str r1, [r7]
b _0802258A
_0802257A:
ldr r0, [r7]
adds r0, 0x5
str r0, [r7]
b _0802258A
_08022582:
ldr r1, _08022594 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802258A:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08022594: .4byte gUnknown_2023D74
thumb_func_end sub_80223F8
thumb_func_start MoveValuesCleanUp
MoveValuesCleanUp: @ 8022598
ldr r1, _080225C0 @ =gMoveResultFlags
movs r0, 0
strb r0, [r1]
ldr r0, _080225C4 @ =gBattleScripting
movs r2, 0
movs r1, 0x1
strb r1, [r0, 0xE]
ldr r0, _080225C8 @ =gCritMultiplier
strb r1, [r0]
ldr r0, _080225CC @ =gUnknown_2023E82
strb r2, [r0, 0x3]
strb r2, [r0, 0x6]
ldr r2, _080225D0 @ =gUnknown_2023DD0
ldr r0, [r2]
subs r1, 0x42
ands r0, r1
ldr r1, _080225D4 @ =0xffffbfff
ands r0, r1
str r0, [r2]
bx lr
.align 2, 0
_080225C0: .4byte gMoveResultFlags
_080225C4: .4byte gBattleScripting
_080225C8: .4byte gCritMultiplier
_080225CC: .4byte gUnknown_2023E82
_080225D0: .4byte gUnknown_2023DD0
_080225D4: .4byte 0xffffbfff
thumb_func_end MoveValuesCleanUp
thumb_func_start atk25_movevaluescleanup
atk25_movevaluescleanup: @ 80225D8
push {lr}
bl MoveValuesCleanUp
ldr r1, _080225EC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080225EC: .4byte gUnknown_2023D74
thumb_func_end atk25_movevaluescleanup
thumb_func_start atk26_setmultihit
atk26_setmultihit: @ 80225F0
ldr r3, _08022600 @ =gUnknown_2023D72
ldr r2, _08022604 @ =gUnknown_2023D74
ldr r0, [r2]
ldrb r1, [r0, 0x1]
strb r1, [r3]
adds r0, 0x2
str r0, [r2]
bx lr
.align 2, 0
_08022600: .4byte gUnknown_2023D72
_08022604: .4byte gUnknown_2023D74
thumb_func_end atk26_setmultihit
thumb_func_start atk27_decrementmultihit
atk27_decrementmultihit: @ 8022608
push {lr}
ldr r1, _08022624 @ =gUnknown_2023D72
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
lsls r0, 24
cmp r0, 0
bne _0802262C
ldr r1, _08022628 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08022646
.align 2, 0
_08022624: .4byte gUnknown_2023D72
_08022628: .4byte gUnknown_2023D74
_0802262C:
ldr r3, _0802264C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r1, r0
str r1, [r3]
_08022646:
pop {r0}
bx r0
.align 2, 0
_0802264C: .4byte gUnknown_2023D74
thumb_func_end atk27_decrementmultihit
thumb_func_start atk28_goto
atk28_goto: @ 8022650
ldr r3, _0802266C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r1, r0
str r1, [r3]
bx lr
.align 2, 0
_0802266C: .4byte gUnknown_2023D74
thumb_func_end atk28_goto
thumb_func_start atk29_jumpifbyte
atk29_jumpifbyte: @ 8022670
push {r4-r6,lr}
ldr r3, _080226B4 @ =gUnknown_2023D74
ldr r1, [r3]
ldrb r6, [r1, 0x1]
ldrb r2, [r1, 0x2]
ldrb r0, [r1, 0x3]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x5]
lsls r0, 24
adds r5, r2, r0
ldrb r4, [r1, 0x6]
ldrb r2, [r1, 0x7]
ldrb r0, [r1, 0x8]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x9]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0xA]
lsls r0, 24
adds r2, r0
adds r1, 0xB
str r1, [r3]
cmp r6, 0x5
bhi _08022708
lsls r0, r6, 2
ldr r1, _080226B8 @ =_080226BC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080226B4: .4byte gUnknown_2023D74
_080226B8: .4byte _080226BC
.align 2, 0
_080226BC:
.4byte _080226D4
.4byte _080226DC
.4byte _080226E4
.4byte _080226EC
.4byte _080226F4
.4byte _080226FE
_080226D4:
ldrb r0, [r5]
cmp r0, r4
bne _08022708
b _08022706
_080226DC:
ldrb r0, [r5]
cmp r0, r4
beq _08022708
b _08022706
_080226E4:
ldrb r0, [r5]
cmp r0, r4
bls _08022708
b _08022706
_080226EC:
ldrb r0, [r5]
cmp r0, r4
bcs _08022708
b _08022706
_080226F4:
ldrb r0, [r5]
ands r4, r0
cmp r4, 0
beq _08022708
b _08022706
_080226FE:
ldrb r0, [r5]
ands r4, r0
cmp r4, 0
bne _08022708
_08022706:
str r2, [r3]
_08022708:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end atk29_jumpifbyte
thumb_func_start atk2A_jumpifhalfword
atk2A_jumpifhalfword: @ 8022710
push {r4-r6,lr}
ldr r3, _0802275C @ =gUnknown_2023D74
ldr r1, [r3]
ldrb r6, [r1, 0x1]
ldrb r2, [r1, 0x2]
ldrb r0, [r1, 0x3]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x5]
lsls r0, 24
adds r5, r2, r0
ldrb r4, [r1, 0x6]
ldrb r0, [r1, 0x7]
lsls r0, 8
orrs r4, r0
ldrb r2, [r1, 0x8]
ldrb r0, [r1, 0x9]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0xA]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0xB]
lsls r0, 24
adds r2, r0
adds r1, 0xC
str r1, [r3]
cmp r6, 0x5
bhi _080227B0
lsls r0, r6, 2
ldr r1, _08022760 @ =_08022764
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802275C: .4byte gUnknown_2023D74
_08022760: .4byte _08022764
.align 2, 0
_08022764:
.4byte _0802277C
.4byte _08022784
.4byte _0802278C
.4byte _08022794
.4byte _0802279C
.4byte _080227A6
_0802277C:
ldrh r0, [r5]
cmp r0, r4
bne _080227B0
b _080227AE
_08022784:
ldrh r0, [r5]
cmp r0, r4
beq _080227B0
b _080227AE
_0802278C:
ldrh r0, [r5]
cmp r0, r4
bls _080227B0
b _080227AE
_08022794:
ldrh r0, [r5]
cmp r0, r4
bcs _080227B0
b _080227AE
_0802279C:
ldrh r0, [r5]
ands r4, r0
cmp r4, 0
beq _080227B0
b _080227AE
_080227A6:
ldrh r0, [r5]
ands r4, r0
cmp r4, 0
bne _080227B0
_080227AE:
str r2, [r3]
_080227B0:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end atk2A_jumpifhalfword
thumb_func_start atk2B_jumpifword
atk2B_jumpifword: @ 80227B8
push {r4-r6,lr}
ldr r3, _08022810 @ =gUnknown_2023D74
ldr r1, [r3]
ldrb r6, [r1, 0x1]
ldrb r2, [r1, 0x2]
ldrb r0, [r1, 0x3]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x5]
lsls r0, 24
adds r5, r2, r0
ldrb r4, [r1, 0x6]
ldrb r0, [r1, 0x7]
lsls r0, 8
orrs r4, r0
ldrb r0, [r1, 0x8]
lsls r0, 16
orrs r4, r0
ldrb r0, [r1, 0x9]
lsls r0, 24
orrs r4, r0
ldrb r2, [r1, 0xA]
ldrb r0, [r1, 0xB]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0xC]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0xD]
lsls r0, 24
adds r2, r0
adds r1, 0xE
str r1, [r3]
cmp r6, 0x5
bhi _08022864
lsls r0, r6, 2
ldr r1, _08022814 @ =_08022818
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08022810: .4byte gUnknown_2023D74
_08022814: .4byte _08022818
.align 2, 0
_08022818:
.4byte _08022830
.4byte _08022838
.4byte _08022840
.4byte _08022848
.4byte _08022850
.4byte _0802285A
_08022830:
ldr r0, [r5]
cmp r0, r4
bne _08022864
b _08022862
_08022838:
ldr r0, [r5]
cmp r0, r4
beq _08022864
b _08022862
_08022840:
ldr r0, [r5]
cmp r0, r4
bls _08022864
b _08022862
_08022848:
ldr r0, [r5]
cmp r0, r4
bcs _08022864
b _08022862
_08022850:
ldr r0, [r5]
ands r0, r4
cmp r0, 0
beq _08022864
b _08022862
_0802285A:
ldr r0, [r5]
ands r0, r4
cmp r0, 0
bne _08022864
_08022862:
str r2, [r3]
_08022864:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end atk2B_jumpifword
thumb_func_start atk2C_jumpifarrayequal
atk2C_jumpifarrayequal: @ 802286C
push {r4-r7,lr}
ldr r2, _080228C4 @ =gUnknown_2023D74
ldr r3, [r2]
ldrb r1, [r3, 0x1]
ldrb r0, [r3, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r3, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r3, 0x4]
lsls r0, 24
adds r5, r1, r0
ldrb r1, [r3, 0x5]
ldrb r0, [r3, 0x6]
lsls r0, 8
adds r1, r0
ldrb r0, [r3, 0x7]
lsls r0, 16
adds r1, r0
ldrb r0, [r3, 0x8]
lsls r0, 24
adds r4, r1, r0
ldrb r6, [r3, 0x9]
ldrb r1, [r3, 0xA]
ldrb r0, [r3, 0xB]
lsls r0, 8
adds r1, r0
ldrb r0, [r3, 0xC]
lsls r0, 16
adds r1, r0
ldrb r0, [r3, 0xD]
lsls r0, 24
adds r1, r0
mov r12, r1
movs r1, 0
cmp r1, r6
bcs _080228E4
ldrb r0, [r5]
ldrb r7, [r4]
cmp r0, r7
beq _080228C8
adds r0, r3, 0
b _080228E0
.align 2, 0
_080228C4: .4byte gUnknown_2023D74
_080228C8:
adds r5, 0x1
adds r4, 0x1
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, r6
bcs _080228E4
ldrb r0, [r5]
ldrb r3, [r4]
cmp r0, r3
beq _080228C8
ldr r0, [r2]
_080228E0:
adds r0, 0xE
str r0, [r2]
_080228E4:
cmp r1, r6
bne _080228EC
mov r7, r12
str r7, [r2]
_080228EC:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atk2C_jumpifarrayequal
thumb_func_start atk2D_jumpifarraynotequal
atk2D_jumpifarraynotequal: @ 80228F4
push {r4-r7,lr}
movs r7, 0
ldr r3, _08022968 @ =gUnknown_2023D74
ldr r1, [r3]
ldrb r2, [r1, 0x1]
ldrb r0, [r1, 0x2]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x3]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 24
adds r5, r2, r0
ldrb r2, [r1, 0x5]
ldrb r0, [r1, 0x6]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x7]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x8]
lsls r0, 24
adds r4, r2, r0
ldrb r6, [r1, 0x9]
ldrb r2, [r1, 0xA]
ldrb r0, [r1, 0xB]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0xC]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0xD]
lsls r0, 24
adds r2, r0
mov r12, r2
movs r1, 0
cmp r7, r6
bcs _0802295E
_08022942:
ldrb r0, [r5]
ldrb r2, [r4]
cmp r0, r2
bne _08022950
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
_08022950:
adds r5, 0x1
adds r4, 0x1
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, r6
bcc _08022942
_0802295E:
cmp r7, r6
beq _0802296C
mov r0, r12
b _08022970
.align 2, 0
_08022968: .4byte gUnknown_2023D74
_0802296C:
ldr r0, [r3]
adds r0, 0xE
_08022970:
str r0, [r3]
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atk2D_jumpifarraynotequal
thumb_func_start atk2E_setbyte
atk2E_setbyte: @ 8022978
ldr r3, _0802299C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r1, r0
ldrb r0, [r2, 0x5]
strb r0, [r1]
ldr r0, [r3]
adds r0, 0x6
str r0, [r3]
bx lr
.align 2, 0
_0802299C: .4byte gUnknown_2023D74
thumb_func_end atk2E_setbyte
thumb_func_start atk2F_addbyte
atk2F_addbyte: @ 80229A0
ldr r3, _080229C8 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r1, r0
ldrb r0, [r2, 0x5]
ldrb r2, [r1]
adds r0, r2
strb r0, [r1]
ldr r0, [r3]
adds r0, 0x6
str r0, [r3]
bx lr
.align 2, 0
_080229C8: .4byte gUnknown_2023D74
thumb_func_end atk2F_addbyte
thumb_func_start atk30_subbyte
atk30_subbyte: @ 80229CC
ldr r3, _080229F4 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r1, r0
ldrb r0, [r1]
ldrb r2, [r2, 0x5]
subs r0, r2
strb r0, [r1]
ldr r0, [r3]
adds r0, 0x6
str r0, [r3]
bx lr
.align 2, 0
_080229F4: .4byte gUnknown_2023D74
thumb_func_end atk30_subbyte
thumb_func_start atk31_copyarray
atk31_copyarray: @ 80229F8
push {r4-r6,lr}
ldr r3, _08022A48 @ =gUnknown_2023D74
ldr r1, [r3]
ldrb r2, [r1, 0x1]
ldrb r0, [r1, 0x2]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x3]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 24
adds r6, r2, r0
ldrb r2, [r1, 0x5]
ldrb r0, [r1, 0x6]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x7]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x8]
lsls r0, 24
adds r5, r2, r0
ldrb r4, [r1, 0x9]
movs r2, 0
cmp r2, r4
bge _08022A3C
_08022A2E:
adds r0, r6, r2
adds r1, r5, r2
ldrb r1, [r1]
strb r1, [r0]
adds r2, 0x1
cmp r2, r4
blt _08022A2E
_08022A3C:
ldr r0, [r3]
adds r0, 0xA
str r0, [r3]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08022A48: .4byte gUnknown_2023D74
thumb_func_end atk31_copyarray
thumb_func_start atk32_copyarraywithindex
atk32_copyarraywithindex: @ 8022A4C
push {r4-r7,lr}
ldr r3, _08022AB4 @ =gUnknown_2023D74
ldr r1, [r3]
ldrb r2, [r1, 0x1]
ldrb r0, [r1, 0x2]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x3]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 24
adds r7, r2, r0
ldrb r2, [r1, 0x5]
ldrb r0, [r1, 0x6]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0x7]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0x8]
lsls r0, 24
adds r6, r2, r0
ldrb r2, [r1, 0x9]
ldrb r0, [r1, 0xA]
lsls r0, 8
adds r2, r0
ldrb r0, [r1, 0xB]
lsls r0, 16
adds r2, r0
ldrb r0, [r1, 0xC]
lsls r0, 24
adds r5, r2, r0
ldrb r4, [r1, 0xD]
movs r2, 0
cmp r2, r4
bge _08022AA8
_08022A96:
adds r0, r7, r2
ldrb r1, [r5]
adds r1, r2, r1
adds r1, r6, r1
ldrb r1, [r1]
strb r1, [r0]
adds r2, 0x1
cmp r2, r4
blt _08022A96
_08022AA8:
ldr r0, [r3]
adds r0, 0xE
str r0, [r3]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08022AB4: .4byte gUnknown_2023D74
thumb_func_end atk32_copyarraywithindex
thumb_func_start atk33_orbyte
atk33_orbyte: @ 8022AB8
ldr r3, _08022AE0 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r1, r0
ldrb r0, [r1]
ldrb r2, [r2, 0x5]
orrs r0, r2
strb r0, [r1]
ldr r0, [r3]
adds r0, 0x6
str r0, [r3]
bx lr
.align 2, 0
_08022AE0: .4byte gUnknown_2023D74
thumb_func_end atk33_orbyte
thumb_func_start atk34_orhalfword
atk34_orhalfword: @ 8022AE4
push {r4,lr}
ldr r4, _08022B18 @ =gUnknown_2023D74
ldr r3, [r4]
ldrb r2, [r3, 0x1]
ldrb r0, [r3, 0x2]
lsls r0, 8
adds r2, r0
ldrb r0, [r3, 0x3]
lsls r0, 16
adds r2, r0
ldrb r0, [r3, 0x4]
lsls r0, 24
adds r2, r0
ldrb r1, [r3, 0x5]
ldrb r0, [r3, 0x6]
lsls r0, 8
orrs r1, r0
ldrh r0, [r2]
orrs r1, r0
strh r1, [r2]
ldr r0, [r4]
adds r0, 0x7
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08022B18: .4byte gUnknown_2023D74
thumb_func_end atk34_orhalfword
thumb_func_start atk35_orword
atk35_orword: @ 8022B1C
push {r4,lr}
ldr r4, _08022B5C @ =gUnknown_2023D74
ldr r2, [r4]
ldrb r3, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r3, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r3, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r3, r0
ldrb r1, [r2, 0x5]
ldrb r0, [r2, 0x6]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x7]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x8]
lsls r0, 24
adds r1, r0
ldr r0, [r3]
orrs r0, r1
str r0, [r3]
ldr r0, [r4]
adds r0, 0x9
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08022B5C: .4byte gUnknown_2023D74
thumb_func_end atk35_orword
thumb_func_start atk36_bicbyte
atk36_bicbyte: @ 8022B60
ldr r3, _08022B88 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r1, r0
ldrb r2, [r2, 0x5]
ldrb r0, [r1]
bics r0, r2
strb r0, [r1]
ldr r0, [r3]
adds r0, 0x6
str r0, [r3]
bx lr
.align 2, 0
_08022B88: .4byte gUnknown_2023D74
thumb_func_end atk36_bicbyte
thumb_func_start atk37_bichalfword
atk37_bichalfword: @ 8022B8C
push {r4,lr}
ldr r4, _08022BC0 @ =gUnknown_2023D74
ldr r3, [r4]
ldrb r1, [r3, 0x1]
ldrb r0, [r3, 0x2]
lsls r0, 8
adds r1, r0
ldrb r0, [r3, 0x3]
lsls r0, 16
adds r1, r0
ldrb r0, [r3, 0x4]
lsls r0, 24
adds r1, r0
ldrb r2, [r3, 0x5]
ldrb r0, [r3, 0x6]
lsls r0, 8
orrs r2, r0
ldrh r0, [r1]
bics r0, r2
strh r0, [r1]
ldr r0, [r4]
adds r0, 0x7
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08022BC0: .4byte gUnknown_2023D74
thumb_func_end atk37_bichalfword
thumb_func_start atk38_bicword
atk38_bicword: @ 8022BC4
push {r4,lr}
ldr r4, _08022C04 @ =gUnknown_2023D74
ldr r2, [r4]
ldrb r3, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
adds r3, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
adds r3, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
adds r3, r0
ldrb r1, [r2, 0x5]
ldrb r0, [r2, 0x6]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x7]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x8]
lsls r0, 24
adds r1, r0
ldr r0, [r3]
bics r0, r1
str r0, [r3]
ldr r0, [r4]
adds r0, 0x9
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08022C04: .4byte gUnknown_2023D74
thumb_func_end atk38_bicword
thumb_func_start atk39_pause
atk39_pause: @ 8022C08
push {r4,r5,lr}
ldr r0, _08022C3C @ =gUnknown_2023BC8
ldr r4, [r0]
cmp r4, 0
bne _08022C34
ldr r5, _08022C40 @ =gUnknown_2023D74
ldr r2, [r5]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldr r3, _08022C44 @ =gUnknown_2023E7C
ldrh r0, [r3]
adds r0, 0x1
strh r0, [r3]
lsls r0, 16
lsrs r0, 16
cmp r0, r1
bcc _08022C34
strh r4, [r3]
adds r0, r2, 0x3
str r0, [r5]
_08022C34:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08022C3C: .4byte gUnknown_2023BC8
_08022C40: .4byte gUnknown_2023D74
_08022C44: .4byte gUnknown_2023E7C
thumb_func_end atk39_pause
thumb_func_start sub_8022C48
sub_8022C48: @ 8022C48
push {lr}
ldr r0, _08022C60 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _08022C5A
ldr r1, _08022C64 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_08022C5A:
pop {r0}
bx r0
.align 2, 0
_08022C60: .4byte gUnknown_2023BC8
_08022C64: .4byte gUnknown_2023D74
thumb_func_end sub_8022C48
thumb_func_start atk3B_healthbar_update
atk3B_healthbar_update: @ 8022C68
push {lr}
ldr r0, _08022C7C @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
cmp r0, 0
bne _08022C88
ldr r0, _08022C80 @ =gActiveBattler
ldr r1, _08022C84 @ =gBattlerTarget
b _08022C8C
.align 2, 0
_08022C7C: .4byte gUnknown_2023D74
_08022C80: .4byte gActiveBattler
_08022C84: .4byte gBattlerTarget
_08022C88:
ldr r0, _08022CB0 @ =gActiveBattler
ldr r1, _08022CB4 @ =sBattler_AI
_08022C8C:
ldrb r1, [r1]
strb r1, [r0]
ldr r0, _08022CB8 @ =gBattleMoveDamage
ldrh r1, [r0]
movs r0, 0
bl EmitHealthBarUpdate
ldr r0, _08022CB0 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r1, _08022CBC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08022CB0: .4byte gActiveBattler
_08022CB4: .4byte sBattler_AI
_08022CB8: .4byte gBattleMoveDamage
_08022CBC: .4byte gUnknown_2023D74
thumb_func_end atk3B_healthbar_update
thumb_func_start atk3C_return
atk3C_return: @ 8022CC0
push {lr}
bl BattleScriptPop
pop {r0}
bx r0
thumb_func_end atk3C_return
thumb_func_start atk3D_end
atk3D_end: @ 8022CCC
ldr r0, _08022CE0 @ =gMoveResultFlags
movs r1, 0
strb r1, [r0]
ldr r0, _08022CE4 @ =gActiveBattler
strb r1, [r0]
ldr r1, _08022CE8 @ =gUnknown_2023BE3
movs r0, 0xB
strb r0, [r1]
bx lr
.align 2, 0
_08022CE0: .4byte gMoveResultFlags
_08022CE4: .4byte gActiveBattler
_08022CE8: .4byte gUnknown_2023BE3
thumb_func_end atk3D_end
thumb_func_start atk3E_end2
atk3E_end2: @ 8022CEC
ldr r1, _08022CFC @ =gActiveBattler
movs r0, 0
strb r0, [r1]
ldr r1, _08022D00 @ =gUnknown_2023BE3
movs r0, 0xB
strb r0, [r1]
bx lr
.align 2, 0
_08022CFC: .4byte gActiveBattler
_08022D00: .4byte gUnknown_2023BE3
thumb_func_end atk3E_end2
thumb_func_start atk3F_end3
atk3F_end3: @ 8022D04
push {lr}
bl BattleScriptPop
ldr r3, _08022D38 @ =gBattleResources
ldr r0, [r3]
ldr r0, [r0, 0xC]
adds r1, r0, 0
adds r1, 0x20
ldrb r0, [r1]
cmp r0, 0
beq _08022D1E
subs r0, 0x1
strb r0, [r1]
_08022D1E:
ldr r2, _08022D3C @ =gUnknown_3004F84
ldr r0, [r3]
ldr r1, [r0, 0xC]
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
lsls r0, 2
adds r1, r0
ldr r0, [r1]
str r0, [r2]
pop {r0}
bx r0
.align 2, 0
_08022D38: .4byte gBattleResources
_08022D3C: .4byte gUnknown_3004F84
thumb_func_end atk3F_end3
thumb_func_start atk41_call
atk41_call: @ 8022D40
push {r4,lr}
ldr r4, _08022D6C @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x5
bl BattleScriptPush
ldr r2, [r4]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08022D6C: .4byte gUnknown_2023D74
thumb_func_end atk41_call
thumb_func_start atk42_jumpiftype2
atk42_jumpiftype2: @ 8022D70
push {r4,lr}
ldr r4, _08022DB8 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
lsls r0, 24
lsrs r0, 24
ldr r3, [r4]
ldr r2, _08022DBC @ =gBattleMons
movs r1, 0x58
muls r0, r1
adds r0, r2
adds r1, r0, 0
adds r1, 0x21
ldrb r2, [r3, 0x2]
ldrb r1, [r1]
cmp r2, r1
beq _08022D9E
adds r0, 0x22
ldrb r0, [r0]
cmp r2, r0
bne _08022DC0
_08022D9E:
ldrb r1, [r3, 0x3]
ldrb r0, [r3, 0x4]
lsls r0, 8
orrs r1, r0
ldrb r0, [r3, 0x5]
lsls r0, 16
orrs r1, r0
ldrb r0, [r3, 0x6]
lsls r0, 24
orrs r1, r0
str r1, [r4]
b _08022DC4
.align 2, 0
_08022DB8: .4byte gUnknown_2023D74
_08022DBC: .4byte gBattleMons
_08022DC0:
adds r0, r3, 0x7
str r0, [r4]
_08022DC4:
pop {r4}
pop {r0}
bx r0
thumb_func_end atk42_jumpiftype2
thumb_func_start atk43_jumpifabilitypresent
atk43_jumpifabilitypresent: @ 8022DCC
push {r4,lr}
sub sp, 0x4
ldr r4, _08022E04 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r2, [r0, 0x1]
movs r0, 0
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
beq _08022E08
ldr r2, [r4]
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
str r1, [r4]
b _08022E0E
.align 2, 0
_08022E04: .4byte gUnknown_2023D74
_08022E08:
ldr r0, [r4]
adds r0, 0x6
str r0, [r4]
_08022E0E:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end atk43_jumpifabilitypresent
thumb_func_start atk44_endselectionscript
atk44_endselectionscript: @ 8022E18
ldr r0, _08022E2C @ =sBattler_AI
ldrb r0, [r0]
ldr r1, _08022E30 @ =gBattleStruct
ldr r1, [r1]
adds r0, r1
adds r0, 0x54
movs r1, 0x1
strb r1, [r0]
bx lr
.align 2, 0
_08022E2C: .4byte sBattler_AI
_08022E30: .4byte gBattleStruct
thumb_func_end atk44_endselectionscript
thumb_func_start sub_8022E34
sub_8022E34: @ 8022E34
push {r4-r6,lr}
ldr r4, _08022E84 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r6, _08022E88 @ =gActiveBattler
strb r0, [r6]
ldr r2, [r4]
ldrb r1, [r2, 0x3]
ldrb r0, [r2, 0x4]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x6]
lsls r0, 24
adds r3, r1, r0
ldrb r5, [r2, 0x2]
adds r0, r5, 0
cmp r0, 0x1
beq _08022E6E
cmp r0, 0x11
beq _08022E6E
cmp r0, 0x2
beq _08022E6E
cmp r0, 0x19
bne _08022E8C
_08022E6E:
ldr r4, _08022E84 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r1, [r0, 0x2]
ldrh r2, [r3]
movs r0, 0
bl EmitBattleAnimation
ldr r0, _08022E88 @ =gActiveBattler
ldrb r0, [r0]
b _08022EE4
.align 2, 0
_08022E84: .4byte gUnknown_2023D74
_08022E88: .4byte gActiveBattler
_08022E8C:
ldr r0, _08022EA4 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
ands r0, r1
cmp r0, 0
beq _08022EAC
adds r0, r2, 0x7
bl BattleScriptPush
ldr r0, _08022EA8 @ =gUnknown_81D89F1
b _08022EEC
.align 2, 0
_08022EA4: .4byte gUnknown_2023DD0
_08022EA8: .4byte gUnknown_81D89F1
_08022EAC:
adds r0, r5, 0
subs r0, 0xA
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bls _08022ED8
ldr r1, _08022ED0 @ =gStatuses3
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
ldr r1, _08022ED4 @ =0x000400c0
ands r0, r1
cmp r0, 0
beq _08022ED8
adds r0, r2, 0x7
b _08022EEC
.align 2, 0
_08022ED0: .4byte gStatuses3
_08022ED4: .4byte 0x000400c0
_08022ED8:
ldrb r1, [r2, 0x2]
ldrh r2, [r3]
movs r0, 0
bl EmitBattleAnimation
ldrb r0, [r6]
_08022EE4:
bl MarkBufferBankForExecution
ldr r0, [r4]
adds r0, 0x7
_08022EEC:
str r0, [r4]
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8022E34
thumb_func_start atk46_playanimation2
atk46_playanimation2: @ 8022EF4
push {r4-r7,lr}
ldr r6, _08022F5C @ =gUnknown_2023D74
ldr r0, [r6]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r7, _08022F60 @ =gActiveBattler
strb r0, [r7]
ldr r2, [r6]
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
adds r3, r1, r0
ldrb r1, [r2, 0x6]
ldrb r0, [r2, 0x7]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x8]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x9]
lsls r0, 24
adds r4, r1, r0
ldrb r5, [r3]
adds r0, r5, 0
cmp r0, 0x1
beq _08022F3E
cmp r0, 0x11
beq _08022F3E
cmp r0, 0x2
bne _08022F64
_08022F3E:
ldrb r1, [r3]
ldrh r2, [r4]
movs r0, 0
bl EmitBattleAnimation
ldr r0, _08022F60 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r1, _08022F5C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0xA
str r0, [r1]
b _08022FBA
.align 2, 0
_08022F5C: .4byte gUnknown_2023D74
_08022F60: .4byte gActiveBattler
_08022F64:
ldr r0, _08022F74 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
ands r0, r1
cmp r0, 0
beq _08022F78
adds r0, r2, 0
b _08022FB6
.align 2, 0
_08022F74: .4byte gUnknown_2023DD0
_08022F78:
adds r0, r5, 0
subs r0, 0xA
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bls _08022FA4
ldr r1, _08022F9C @ =gStatuses3
ldrb r0, [r7]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
ldr r1, _08022FA0 @ =0x000400c0
ands r0, r1
cmp r0, 0
beq _08022FA4
adds r0, r2, 0
b _08022FB6
.align 2, 0
_08022F9C: .4byte gStatuses3
_08022FA0: .4byte 0x000400c0
_08022FA4:
ldrb r1, [r3]
ldrh r2, [r4]
movs r0, 0
bl EmitBattleAnimation
ldrb r0, [r7]
bl MarkBufferBankForExecution
ldr r0, [r6]
_08022FB6:
adds r0, 0xA
str r0, [r6]
_08022FBA:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atk46_playanimation2
thumb_func_start atk47_setgraphicalstatchangevalues
atk47_setgraphicalstatchangevalues: @ 8022FC0
push {r4,lr}
movs r3, 0
ldr r1, _08022FDC @ =gBattleScripting
ldrb r0, [r1, 0x1A]
movs r2, 0xF0
ands r2, r0
adds r4, r1, 0
cmp r2, 0x20
beq _08022FEE
cmp r2, 0x20
bgt _08022FE0
cmp r2, 0x10
beq _08022FEA
b _08022FF8
.align 2, 0
_08022FDC: .4byte gBattleScripting
_08022FE0:
cmp r2, 0x90
beq _08022FF2
cmp r2, 0xA0
beq _08022FF6
b _08022FF8
_08022FEA:
movs r3, 0xF
b _08022FF8
_08022FEE:
movs r3, 0x27
b _08022FF8
_08022FF2:
movs r3, 0x16
b _08022FF8
_08022FF6:
movs r3, 0x2E
_08022FF8:
ldrb r1, [r4, 0x1A]
movs r0, 0xF
ands r0, r1
adds r0, r3, r0
subs r0, 0x1
movs r1, 0
strb r0, [r4, 0x10]
strb r1, [r4, 0x11]
ldr r1, _08023018 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08023018: .4byte gUnknown_2023D74
thumb_func_end atk47_setgraphicalstatchangevalues
thumb_func_start atk48_playstatchangeanimation
atk48_playstatchangeanimation: @ 802301C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
movs r7, 0
movs r0, 0
mov r8, r0
movs r3, 0
ldr r5, _08023090 @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
str r3, [sp]
bl sub_8016E24
ldr r2, _08023094 @ =gActiveBattler
strb r0, [r2]
ldr r0, [r5]
ldrb r4, [r0, 0x2]
ldrb r1, [r0, 0x3]
movs r0, 0x1
ands r0, r1
ldr r3, [sp]
cmp r0, 0
beq _08023130
movs r0, 0x2
ands r0, r1
movs r1, 0x15
cmp r0, 0
beq _0802305C
movs r1, 0x2D
_0802305C:
cmp r4, 0
beq _08023104
movs r0, 0x1
mov r10, r0
ldr r0, _08023098 @ =gUnknown_2023BFC
mov r9, r0
lsls r5, r1, 16
_0802306A:
adds r0, r4, 0
mov r1, r10
ands r0, r1
cmp r0, 0
beq _080230F6
ldr r0, _08023090 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r1, [r0, 0x3]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0802309C
ldr r0, _08023094 @ =gActiveBattler
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r7, r0
b _080230E4
.align 2, 0
_08023090: .4byte gUnknown_2023D74
_08023094: .4byte gActiveBattler
_08023098: .4byte gUnknown_2023BFC
_0802309C:
ldr r6, _08023120 @ =gActiveBattler
ldrb r0, [r6]
str r3, [sp]
bl GetBattlerPosition
mov r1, r10
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _08023124 @ =gSideTimers
adds r0, r1
ldrb r0, [r0, 0x4]
ldr r3, [sp]
cmp r0, 0
bne _080230F6
ldr r0, _08023128 @ =gBattleMons
ldrb r2, [r6]
movs r1, 0x58
muls r2, r1
adds r0, r2, r0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x1D
beq _080230F6
cmp r0, 0x49
beq _080230F6
cmp r0, 0x33
bne _080230DA
cmp r7, 0x6
beq _080230F6
_080230DA:
cmp r0, 0x34
bne _080230E2
cmp r7, 0x1
beq _080230F6
_080230E2:
adds r0, r7, r2
_080230E4:
add r0, r9
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r0, 0
ble _080230F6
lsrs r0, r5, 16
mov r8, r0
adds r3, 0x1
_080230F6:
lsrs r4, 1
movs r1, 0x80
lsls r1, 9
adds r5, r1
adds r7, 0x1
cmp r4, 0
bne _0802306A
_08023104:
ldr r0, _0802312C @ =gUnknown_2023D74
mov r9, r0
cmp r3, 0x1
ble _08023192
ldr r0, [r0]
ldrb r1, [r0, 0x3]
movs r0, 0x2
ands r0, r1
movs r1, 0x39
mov r8, r1
cmp r0, 0
beq _08023192
movs r0, 0x3A
b _08023190
.align 2, 0
_08023120: .4byte gActiveBattler
_08023124: .4byte gSideTimers
_08023128: .4byte gBattleMons
_0802312C: .4byte gUnknown_2023D74
_08023130:
movs r0, 0x2
ands r0, r1
movs r1, 0xE
cmp r0, 0
beq _0802313C
movs r1, 0x26
_0802313C:
mov r9, r5
cmp r4, 0
beq _08023178
ldr r6, _080231AC @ =gUnknown_2023BFC
adds r5, r2, 0
lsls r2, r1, 16
_08023148:
movs r0, 0x1
ands r0, r4
cmp r0, 0
beq _0802316A
ldrb r1, [r5]
movs r0, 0x58
muls r0, r1
adds r0, r7, r0
adds r0, r6
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r0, 0xB
bgt _0802316A
lsrs r1, r2, 16
mov r8, r1
adds r3, 0x1
_0802316A:
lsrs r4, 1
movs r0, 0x80
lsls r0, 9
adds r2, r0
adds r7, 0x1
cmp r4, 0
bne _08023148
_08023178:
cmp r3, 0x1
ble _08023192
mov r1, r9
ldr r0, [r1]
ldrb r1, [r0, 0x3]
movs r0, 0x2
ands r0, r1
movs r1, 0x37
mov r8, r1
cmp r0, 0
beq _08023192
movs r0, 0x38
_08023190:
mov r8, r0
_08023192:
mov r1, r9
ldr r2, [r1]
ldrb r1, [r2, 0x3]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080231B0
cmp r3, 0x1
bgt _080231B0
adds r0, r2, 0x4
mov r1, r9
b _080231FE
.align 2, 0
_080231AC: .4byte gUnknown_2023BFC
_080231B0:
cmp r3, 0
beq _080231F8
ldr r4, _080231EC @ =gBattleScripting
ldrb r0, [r4, 0x1B]
cmp r0, 0
bne _080231F8
movs r0, 0
movs r1, 0x1
mov r2, r8
str r3, [sp]
bl EmitBattleAnimation
ldr r0, _080231F0 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r0, _080231F4 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r1, [r0, 0x3]
movs r0, 0x4
ands r0, r1
ldr r3, [sp]
cmp r0, 0
beq _080231E8
cmp r3, 0x1
ble _080231E8
movs r0, 0x1
strb r0, [r4, 0x1B]
_080231E8:
ldr r1, _080231F4 @ =gUnknown_2023D74
b _080231FA
.align 2, 0
_080231EC: .4byte gBattleScripting
_080231F0: .4byte gActiveBattler
_080231F4: .4byte gUnknown_2023D74
_080231F8:
mov r1, r9
_080231FA:
ldr r0, [r1]
adds r0, 0x4
_080231FE:
str r0, [r1]
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atk48_playstatchangeanimation
thumb_func_start atk49_moveend
atk49_moveend: @ 8023210
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1C
movs r0, 0
mov r10, r0
ldr r2, _08023260 @ =gUnknown_2023D4C
ldrh r1, [r2]
ldr r0, _08023264 @ =0x0000ffff
movs r3, 0
str r3, [sp, 0x18]
cmp r1, r0
beq _08023232
ldrh r2, [r2]
str r2, [sp, 0x18]
_08023232:
ldr r0, _08023268 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r4, [r0, 0x1]
str r4, [sp, 0x10]
ldrb r0, [r0, 0x2]
str r0, [sp, 0x14]
ldr r1, _0802326C @ =gBattleMons
ldr r0, _08023270 @ =sBattler_AI
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, r0, r1
ldrh r0, [r1, 0x2E]
cmp r0, 0xAF
bne _08023278
ldr r1, _08023274 @ =gEnigmaBerries
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x7]
b _08023282
.align 2, 0
_08023260: .4byte gUnknown_2023D4C
_08023264: .4byte 0x0000ffff
_08023268: .4byte gUnknown_2023D74
_0802326C: .4byte gBattleMons
_08023270: .4byte sBattler_AI
_08023274: .4byte gEnigmaBerries
_08023278:
ldrh r0, [r1, 0x2E]
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r0, 24
_08023282:
str r0, [sp, 0x8]
ldr r1, _080232A4 @ =gBattleStruct
ldr r0, _080232A8 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 1
adds r0, 0xC8
ldr r1, [r1]
adds r0, r1, r0
str r0, [sp, 0xC]
ldrb r0, [r1, 0x13]
cmp r0, 0
beq _08023334
movs r5, 0x3F
ands r5, r0
str r5, [sp, 0x4]
b _08023346
.align 2, 0
_080232A4: .4byte gBattleStruct
_080232A8: .4byte sBattler_AI
_080232AC:
ldr r4, _080232C0 @ =gActiveBattler
strb r2, [r4]
movs r0, 0
movs r1, 0x1
bl EmitSpriteInvisibility
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _0802379E
.align 2, 0
_080232C0: .4byte gActiveBattler
_080232C4:
ldr r4, _080232E8 @ =gActiveBattler
strb r2, [r4]
movs r0, 0
movs r1, 0
bl EmitSpriteInvisibility
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldrb r1, [r6]
lsls r1, 2
adds r1, r5
ldr r0, [r1]
ldr r2, _080232EC @ =0xfffbff3f
ands r0, r2
str r0, [r1]
b _0802379E
.align 2, 0
_080232E8: .4byte gActiveBattler
_080232EC: .4byte 0xfffbff3f
_080232F0:
strb r2, [r7]
ldr r0, [r5]
orrs r0, r6
str r0, [r5]
ldr r0, _08023324 @ =gBattleScripting
strb r4, [r0, 0x14]
bl MoveValuesCleanUp
ldr r2, _08023328 @ =gUnknown_81D65A8
mov r0, r8
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
add r0, r9
ldrb r0, [r0]
lsls r0, 2
adds r0, r2
ldr r0, [r0]
bl BattleScriptPush
ldr r1, _0802332C @ =gUnknown_2023D74
ldr r0, _08023330 @ =gUnknown_81D96A8
bl _08023BFC
.align 2, 0
_08023324: .4byte gBattleScripting
_08023328: .4byte gUnknown_81D65A8
_0802332C: .4byte gUnknown_2023D74
_08023330: .4byte gUnknown_81D96A8
_08023334:
ldr r2, _0802334C @ =gBattleMoves
ldr r0, _08023350 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x2]
str r0, [sp, 0x4]
_08023346:
ldr r1, _08023354 @ =gBattleScripting
mov r12, r1
b _08023362
.align 2, 0
_0802334C: .4byte gBattleMoves
_08023350: .4byte gCurrentMove
_08023354: .4byte gBattleScripting
_08023358:
mov r2, r10
cmp r2, 0
beq _08023362
bl _08023BE8
_08023362:
mov r3, r12
ldrb r0, [r3, 0x14]
cmp r0, 0x11
bls _0802336E
bl _08023BB4
_0802336E:
lsls r0, 2
ldr r1, _08023378 @ =_0802337C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08023378: .4byte _0802337C
.align 2, 0
_0802337C:
.4byte _080233C4
.4byte _080234A0
.4byte _0802355C
.4byte _08023580
.4byte _08023598
.4byte _080235C0
.4byte _080235E4
.4byte _0802368C
.4byte _08023702
.4byte _08023738
.4byte _080237D8
.4byte _080236CC
.4byte _080236EC
.4byte _0802381C
.4byte _08023860
.4byte _08023A40
.4byte _08023B28
.4byte _08023BB4
_080233C4:
ldr r6, _0802347C @ =gBattleMons
ldr r5, _08023480 @ =gBattlerTarget
ldrb r3, [r5]
movs r7, 0x58
adds r2, r3, 0
muls r2, r7
adds r0, r6, 0
adds r0, 0x50
adds r0, r2, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 16
ands r0, r1
cmp r0, 0
bne _080233E4
b _080237C8
_080233E4:
adds r0, r2, r6
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _080233EE
b _080237C8
_080233EE:
ldr r0, _08023484 @ =sBattler_AI
ldrb r1, [r0]
cmp r1, r3
bne _080233F8
b _080237C8
_080233F8:
adds r0, r1, 0
bl GetBattlerSide
adds r4, r0, 0
ldrb r0, [r5]
bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _08023410
b _080237C8
_08023410:
ldr r0, _08023488 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _0802341E
b _080237C8
_0802341E:
ldr r2, _0802348C @ =gUnknown_2023ECC
ldrb r3, [r5]
lsls r0, r3, 2
adds r0, r3
lsls r1, r0, 2
adds r0, r2, 0
adds r0, 0x8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
bne _08023442
adds r0, r2, 0
adds r0, 0xC
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
bne _08023442
b _080237C8
_08023442:
ldr r2, _08023490 @ =gBattleMoves
ldr r0, _08023494 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
cmp r0, 0
bne _08023458
b _080237C8
_08023458:
adds r0, r3, 0
muls r0, r7
adds r1, r0, r6
ldrb r2, [r1, 0x19]
movs r0, 0x19
ldrsb r0, [r1, r0]
cmp r0, 0xB
ble _0802346A
b _080237C8
_0802346A:
adds r0, r2, 0x1
strb r0, [r1, 0x19]
bl BattleScriptPushCursor
ldr r1, _08023498 @ =gUnknown_2023D74
ldr r0, _0802349C @ =gUnknown_81D8C48
str r0, [r1]
b _080236FC
.align 2, 0
_0802347C: .4byte gBattleMons
_08023480: .4byte gBattlerTarget
_08023484: .4byte sBattler_AI
_08023488: .4byte gMoveResultFlags
_0802348C: .4byte gUnknown_2023ECC
_08023490: .4byte gBattleMoves
_08023494: .4byte gCurrentMove
_08023498: .4byte gUnknown_2023D74
_0802349C: .4byte gUnknown_81D8C48
_080234A0:
ldr r4, _0802353C @ =gBattleMons
ldr r6, _08023540 @ =gBattlerTarget
ldrb r2, [r6]
movs r5, 0x58
mov r12, r5
mov r1, r12
muls r1, r2
adds r7, r4, 0
adds r7, 0x4C
adds r5, r1, r7
ldr r3, [r5]
movs r0, 0x20
ands r0, r3
cmp r0, 0
bne _080234C0
b _080237C8
_080234C0:
adds r0, r1, r4
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _080234CA
b _080237C8
_080234CA:
ldr r0, _08023544 @ =sBattler_AI
ldrb r0, [r0]
cmp r0, r2
bne _080234D4
b _080237C8
_080234D4:
ldr r0, _08023548 @ =gUnknown_2023ECC
lsls r1, r2, 2
adds r1, r2
lsls r1, 2
adds r0, 0xC
adds r1, r0
ldr r0, [r1]
cmp r0, 0
bne _080234E8
b _080237C8
_080234E8:
ldr r0, _0802354C @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _080234F6
b _080237C8
_080234F6:
ldr r0, [sp, 0x4]
cmp r0, 0xA
beq _080234FE
b _080237C8
_080234FE:
movs r0, 0x21
negs r0, r0
ands r3, r0
str r3, [r5]
ldr r4, _08023550 @ =gActiveBattler
ldrb r0, [r6]
strb r0, [r4]
ldrb r0, [r6]
mov r1, r12
muls r1, r0
adds r0, r1, 0
adds r0, r7
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r2, 0
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
bl BattleScriptPushCursor
ldr r1, _08023554 @ =gUnknown_2023D74
ldr r0, _08023558 @ =gUnknown_81D9098
str r0, [r1]
movs r2, 0x1
mov r10, r2
b _080237C8
.align 2, 0
_0802353C: .4byte gBattleMons
_08023540: .4byte gBattlerTarget
_08023544: .4byte sBattler_AI
_08023548: .4byte gUnknown_2023ECC
_0802354C: .4byte gMoveResultFlags
_08023550: .4byte gActiveBattler
_08023554: .4byte gUnknown_2023D74
_08023558: .4byte gUnknown_81D9098
_0802355C:
ldr r0, _0802357C @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x7
movs r2, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _08023576
b _080237C8
_08023576:
movs r3, 0x1
mov r10, r3
b _080237C8
.align 2, 0
_0802357C: .4byte gBattlerTarget
_08023580:
ldr r0, _08023594 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
movs r2, 0
movs r3, 0
bl AbilityBattleEffects
b _080236F6
.align 2, 0
_08023594: .4byte gBattlerTarget
_08023598:
movs r0, 0
str r0, [sp]
movs r0, 0x5
movs r1, 0
movs r2, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _080235B0
b _080237C8
_080235B0:
movs r5, 0x1
mov r10, r5
ldr r0, _080235BC @ =gBattleScripting
mov r12, r0
b _08023BB4
.align 2, 0
_080235BC: .4byte gBattleScripting
_080235C0:
ldr r0, _080235E0 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x8
movs r2, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _080235DA
b _080237C8
_080235DA:
movs r1, 0x1
mov r10, r1
b _080237C8
.align 2, 0
_080235E0: .4byte sBattler_AI
_080235E4:
ldr r0, _08023674 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 18
ands r0, r1
cmp r0, 0
beq _08023628
ldr r2, [sp, 0x8]
cmp r2, 0x1D
bne _08023628
ldr r0, _08023678 @ =gUnknown_2023D4C
ldrh r2, [r0]
adds r3, r0, 0
cmp r2, 0xA5
beq _08023628
ldr r4, [sp, 0xC]
ldrh r1, [r4]
cmp r1, 0
beq _08023610
ldr r0, _0802367C @ =0x0000ffff
cmp r1, r0
bne _08023628
_08023610:
cmp r2, 0xE2
bne _08023622
ldr r0, _08023680 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _08023622
b _08023AFA
_08023622:
ldrh r0, [r3]
ldr r1, [sp, 0xC]
strh r0, [r1]
_08023628:
movs r4, 0
ldr r2, _08023684 @ =gBattleMons
ldr r3, _08023688 @ =sBattler_AI
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
adds r2, 0xC
adds r0, r2
ldrh r0, [r0]
ldr r5, [sp, 0xC]
ldrh r1, [r5]
mov r9, r3
cmp r0, r1
beq _08023660
mov r6, r9
movs r3, 0x58
adds r5, r1, 0
_0802364A:
adds r4, 0x1
cmp r4, 0x3
bgt _08023660
lsls r0, r4, 1
ldrb r1, [r6]
muls r1, r3
adds r0, r1
adds r0, r2
ldrh r0, [r0]
cmp r0, r5
bne _0802364A
_08023660:
cmp r4, 0x4
bne _0802366A
movs r0, 0
ldr r1, [sp, 0xC]
strh r0, [r1]
_0802366A:
mov r2, r12
ldrb r0, [r2, 0x14]
adds r0, 0x1
strb r0, [r2, 0x14]
b _08023BB4
.align 2, 0
_08023674: .4byte gUnknown_2023DD0
_08023678: .4byte gUnknown_2023D4C
_0802367C: .4byte 0x0000ffff
_08023680: .4byte gMoveResultFlags
_08023684: .4byte gBattleMons
_08023688: .4byte sBattler_AI
_0802368C:
movs r4, 0
ldr r0, _080236C0 @ =gBattlersCount
ldrb r3, [r0]
cmp r4, r3
blt _08023698
b _08023846
_08023698:
ldr r7, _080236C4 @ =gBattleStruct
movs r6, 0
movs r3, 0xD0
adds r5, r0, 0
ldr r2, _080236C8 @ =gBattleMons
_080236A2:
ldr r0, [r7]
adds r0, r3
ldrh r1, [r0]
cmp r1, 0
beq _080236B0
strh r1, [r2, 0x2E]
strh r6, [r0]
_080236B0:
adds r3, 0x2
adds r2, 0x58
adds r4, 0x1
ldrb r0, [r5]
cmp r4, r0
blt _080236A2
b _08023846
.align 2, 0
_080236C0: .4byte gBattlersCount
_080236C4: .4byte gBattleStruct
_080236C8: .4byte gBattleMons
_080236CC:
movs r0, 0x3
movs r1, 0
movs r2, 0
bl sub_801BC68
lsls r0, 24
cmp r0, 0
beq _080237C8
movs r2, 0x1
mov r10, r2
ldr r3, _080236E8 @ =gBattleScripting
mov r12, r3
b _08023BB4
.align 2, 0
_080236E8: .4byte gBattleScripting
_080236EC:
movs r0, 0x4
movs r1, 0
movs r2, 0
bl sub_801BC68
_080236F6:
lsls r0, 24
cmp r0, 0
beq _080237C8
_080236FC:
movs r4, 0x1
mov r10, r4
b _080237C8
_08023702:
ldr r1, _08023728 @ =gStatuses3
ldr r0, _0802372C @ =sBattler_AI
ldrb r2, [r0]
lsls r0, r2, 2
adds r0, r1
ldr r0, [r0]
ldr r1, _08023730 @ =0x000400c0
ands r0, r1
cmp r0, 0
bne _08023718
b _08023AFA
_08023718:
ldr r0, _08023734 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
ands r0, r1
cmp r0, 0
beq _08023726
b _080232AC
_08023726:
b _08023AFA
.align 2, 0
_08023728: .4byte gStatuses3
_0802372C: .4byte sBattler_AI
_08023730: .4byte 0x000400c0
_08023734: .4byte gUnknown_2023DD0
_08023738:
ldr r0, _080237A8 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _08023764
ldr r1, _080237AC @ =gStatuses3
ldr r0, _080237B0 @ =sBattler_AI
ldrb r2, [r0]
lsls r0, r2, 2
adds r0, r1
ldr r0, [r0]
ldr r1, _080237B4 @ =0x000400c0
ands r0, r1
cmp r0, 0
beq _08023764
adds r0, r2, 0
bl WasUnableToUseMove
lsls r0, 24
cmp r0, 0
beq _080237C8
_08023764:
ldr r4, _080237B8 @ =gActiveBattler
ldr r5, _080237B0 @ =sBattler_AI
ldrb r0, [r5]
strb r0, [r4]
movs r0, 0
movs r1, 0
bl EmitSpriteInvisibility
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, _080237AC @ =gStatuses3
ldrb r2, [r5]
lsls r2, 2
adds r2, r0
ldr r0, [r2]
ldr r1, _080237BC @ =0xfffbff3f
ands r0, r1
str r0, [r2]
ldr r2, _080237C0 @ =gUnknown_2023ECC
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
_0802379E:
ldr r1, _080237C4 @ =gBattleScripting
ldrb r0, [r1, 0x14]
adds r0, 0x1
strb r0, [r1, 0x14]
b _08023BFE
.align 2, 0
_080237A8: .4byte gMoveResultFlags
_080237AC: .4byte gStatuses3
_080237B0: .4byte sBattler_AI
_080237B4: .4byte 0x000400c0
_080237B8: .4byte gActiveBattler
_080237BC: .4byte 0xfffbff3f
_080237C0: .4byte gUnknown_2023ECC
_080237C4: .4byte gBattleScripting
_080237C8:
ldr r1, _080237D4 @ =gBattleScripting
ldrb r0, [r1, 0x14]
adds r0, 0x1
strb r0, [r1, 0x14]
mov r12, r1
b _08023BB4
.align 2, 0
_080237D4: .4byte gBattleScripting
_080237D8:
ldr r0, _08023808 @ =gUnknown_2023ECC
ldr r6, _0802380C @ =gBattlerTarget
ldrb r2, [r6]
lsls r3, r2, 2
adds r1, r3, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
lsls r0, 29
cmp r0, 0
blt _08023846
ldr r0, _08023810 @ =gBattlersCount
ldrb r0, [r0]
cmp r2, r0
bcs _08023846
ldr r5, _08023814 @ =gStatuses3
adds r0, r3, r5
ldr r0, [r0]
ldr r1, _08023818 @ =0x000400c0
ands r0, r1
cmp r0, 0
bne _08023806
b _080232C4
_08023806:
b _08023846
.align 2, 0
_08023808: .4byte gUnknown_2023ECC
_0802380C: .4byte gBattlerTarget
_08023810: .4byte gBattlersCount
_08023814: .4byte gStatuses3
_08023818: .4byte 0x000400c0
_0802381C:
movs r4, 0
ldr r0, _08023850 @ =gBattlersCount
ldrb r2, [r0]
cmp r4, r2
bge _08023846
ldr r2, _08023854 @ =gDisableStructs
ldr r5, _08023858 @ =0xfeffffff
adds r3, r0, 0
ldr r1, _0802385C @ =gUnknown_2023C34
_0802382E:
ldrb r0, [r2, 0xA]
cmp r0, 0
bne _0802383A
ldr r0, [r1]
ands r0, r5
str r0, [r1]
_0802383A:
adds r2, 0x1C
adds r1, 0x58
adds r4, 0x1
ldrb r0, [r3]
cmp r4, r0
blt _0802382E
_08023846:
mov r1, r12
ldrb r0, [r1, 0x14]
adds r0, 0x1
strb r0, [r1, 0x14]
b _08023BB4
.align 2, 0
_08023850: .4byte gBattlersCount
_08023854: .4byte gDisableStructs
_08023858: .4byte 0xfeffffff
_0802385C: .4byte gUnknown_2023C34
_08023860:
ldr r1, _08023914 @ =gUnknown_2023DD0
ldr r3, [r1]
movs r0, 0x80
lsls r0, 5
ands r0, r3
ldr r2, _08023918 @ =sBattler_AI
mov r9, r2
adds r5, r1, 0
cmp r0, 0
beq _0802388A
ldr r0, _0802391C @ =gActiveBattler
ldrb r2, [r2]
strb r2, [r0]
ldr r1, _08023920 @ =gBattlerTarget
ldrb r0, [r1]
mov r4, r9
strb r0, [r4]
strb r2, [r1]
ldr r0, _08023924 @ =0xffffefff
ands r3, r0
str r3, [r5]
_0802388A:
ldr r0, [r5]
movs r1, 0x80
lsls r1, 3
ands r0, r1
cmp r0, 0
beq _080238A6
ldr r0, _08023928 @ =gUnknown_2023D90
mov r2, r9
ldrb r1, [r2]
lsls r1, 1
adds r1, r0
ldr r0, _0802392C @ =gUnknown_2023D4C
ldrh r0, [r0]
strh r0, [r1]
_080238A6:
ldr r0, _08023930 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _08023934 @ =gBitTable
mov r3, r9
ldrb r4, [r3]
lsls r0, r4, 2
adds r0, r2
ldr r3, [r0]
ands r1, r3
adds r6, r2, 0
cmp r1, 0
beq _080238C0
b _08023A2C
_080238C0:
ldr r0, _08023938 @ =gBattleStruct
ldr r1, [r0]
adds r1, 0x91
ldrb r1, [r1]
ands r1, r3
adds r7, r0, 0
cmp r1, 0
beq _080238D2
b _08023A2C
_080238D2:
ldr r0, _0802393C @ =gBattleMoves
ldr r2, [sp, 0x18]
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r1, [r1]
mov r8, r0
cmp r1, 0x7F
bne _080238E8
b _08023A2C
_080238E8:
ldr r0, [r5]
movs r1, 0x80
lsls r1, 18
ands r0, r1
cmp r0, 0
beq _0802394C
ldr r0, _08023940 @ =gLastUsedMove
lsls r1, r4, 1
adds r1, r0
ldr r0, _0802392C @ =gUnknown_2023D4C
ldrh r0, [r0]
strh r0, [r1]
ldr r0, _08023944 @ =gUnknown_2023DB0
mov r3, r9
ldrb r1, [r3]
lsls r1, 1
adds r1, r0
ldr r0, _08023948 @ =gCurrentMove
ldrh r0, [r0]
strh r0, [r1]
b _08023966
.align 2, 0
_08023914: .4byte gUnknown_2023DD0
_08023918: .4byte sBattler_AI
_0802391C: .4byte gActiveBattler
_08023920: .4byte gBattlerTarget
_08023924: .4byte 0xffffefff
_08023928: .4byte gUnknown_2023D90
_0802392C: .4byte gUnknown_2023D4C
_08023930: .4byte gAbsentBattlerFlags
_08023934: .4byte gBitTable
_08023938: .4byte gBattleStruct
_0802393C: .4byte gBattleMoves
_08023940: .4byte gLastUsedMove
_08023944: .4byte gUnknown_2023DB0
_08023948: .4byte gCurrentMove
_0802394C:
ldr r1, _080239B4 @ =gLastUsedMove
lsls r0, r4, 1
adds r0, r1
ldr r1, _080239B8 @ =0x0000ffff
strh r1, [r0]
ldr r1, _080239BC @ =gUnknown_2023DB0
mov r4, r9
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
movs r1, 0x1
negs r1, r1
strh r1, [r0]
_08023966:
ldr r2, _080239C0 @ =gBattlerTarget
ldrb r3, [r2]
lsls r0, r3, 2
adds r0, r6
ldr r0, [r0]
lsls r0, 28
ldr r1, [r5]
ands r1, r0
cmp r1, 0
bne _08023984
ldr r0, _080239C4 @ =gUnknown_2023DC0
adds r0, r3, r0
mov r3, r9
ldrb r1, [r3]
strb r1, [r0]
_08023984:
ldr r0, [r5]
movs r1, 0x80
lsls r1, 18
ands r0, r1
cmp r0, 0
beq _08023A20
ldr r0, _080239C8 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _08023A20
ldr r0, _080239CC @ =gUnknown_2023D4C
ldrh r3, [r0]
ldr r0, _080239B8 @ =0x0000ffff
cmp r3, r0
bne _080239D4
ldr r1, _080239D0 @ =gUnknown_2023DA0
ldrb r0, [r2]
lsls r0, 1
adds r0, r1
strh r3, [r0]
b _08023A2C
.align 2, 0
_080239B4: .4byte gLastUsedMove
_080239B8: .4byte 0x0000ffff
_080239BC: .4byte gUnknown_2023DB0
_080239C0: .4byte gBattlerTarget
_080239C4: .4byte gUnknown_2023DC0
_080239C8: .4byte gMoveResultFlags
_080239CC: .4byte gUnknown_2023D4C
_080239D0: .4byte gUnknown_2023DA0
_080239D4:
ldr r0, _080239F8 @ =gUnknown_2023DA0
ldrb r1, [r2]
lsls r1, 1
adds r1, r0
ldr r4, _080239FC @ =gCurrentMove
ldrh r0, [r4]
strh r0, [r1]
ldr r0, [r7]
ldrb r3, [r0, 0x13]
cmp r3, 0
beq _08023A04
ldr r0, _08023A00 @ =gUnknown_2023DA8
ldrb r1, [r2]
lsls r1, 1
adds r1, r0
movs r0, 0x3F
ands r0, r3
b _08023A2A
.align 2, 0
_080239F8: .4byte gUnknown_2023DA0
_080239FC: .4byte gCurrentMove
_08023A00: .4byte gUnknown_2023DA8
_08023A04:
ldr r0, _08023A1C @ =gUnknown_2023DA8
ldrb r2, [r2]
lsls r2, 1
adds r2, r0
ldrh r1, [r4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
add r0, r8
ldrb r0, [r0, 0x2]
strh r0, [r2]
b _08023A2C
.align 2, 0
_08023A1C: .4byte gUnknown_2023DA8
_08023A20:
ldr r0, _08023A38 @ =gUnknown_2023DA0
ldrb r1, [r2]
lsls r1, 1
adds r1, r0
ldr r0, _08023A3C @ =0x0000ffff
_08023A2A:
strh r0, [r1]
_08023A2C:
mov r4, r12
ldrb r0, [r4, 0x14]
adds r0, 0x1
strb r0, [r4, 0x14]
b _08023BB4
.align 2, 0
_08023A38: .4byte gUnknown_2023DA0
_08023A3C: .4byte 0x0000ffff
_08023A40:
ldr r0, _08023B04 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r7, _08023B08 @ =gBitTable
ldr r2, _08023B0C @ =sBattler_AI
ldrb r3, [r2]
lsls r0, r3, 2
adds r0, r7
ldr r4, [r0]
ands r1, r4
mov r9, r2
cmp r1, 0
bne _08023AFA
ldr r6, _08023B10 @ =gBattleStruct
ldr r5, [r6]
adds r0, r5, 0
adds r0, 0x91
ldrb r0, [r0]
ands r0, r4
cmp r0, 0
bne _08023AFA
ldr r1, _08023B14 @ =gBattleMoves
ldr r2, [sp, 0x18]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
ldrb r1, [r0, 0x8]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08023AFA
ldr r0, _08023B18 @ =gUnknown_2023DD0
ldr r1, [r0]
movs r0, 0x80
lsls r0, 18
ands r0, r1
cmp r0, 0
beq _08023AFA
ldr r4, _08023B1C @ =gBattlerTarget
ldrb r0, [r4]
cmp r3, r0
beq _08023AFA
ldrb r2, [r4]
lsls r0, r2, 2
adds r0, r7
ldr r0, [r0]
lsls r0, 28
ands r1, r0
cmp r1, 0
bne _08023AFA
ldr r0, _08023B20 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _08023AFA
lsls r1, r2, 1
adds r1, r5
adds r1, 0x98
ldr r3, _08023B24 @ =gUnknown_2023D4C
ldrh r0, [r3]
strb r0, [r1]
ldrb r1, [r4]
ldr r0, [r6]
lsls r1, 1
adds r1, r0
adds r1, 0x99
ldrh r0, [r3]
lsrs r0, 8
strb r0, [r1]
ldrb r0, [r4]
mov r2, r9
ldrb r1, [r2]
ldr r2, [r6]
lsls r0, 3
lsls r1, 1
adds r0, r1
adds r0, r2
adds r0, 0xE0
ldrh r1, [r3]
strb r1, [r0]
ldrb r1, [r4]
mov r4, r9
ldrb r0, [r4]
ldr r2, [r6]
lsls r1, 3
lsls r0, 1
adds r1, r0
adds r1, r2
adds r1, 0xE1
ldrh r0, [r3]
lsrs r0, 8
strb r0, [r1]
_08023AFA:
mov r5, r12
ldrb r0, [r5, 0x14]
adds r0, 0x1
strb r0, [r5, 0x14]
b _08023BB4
.align 2, 0
_08023B04: .4byte gAbsentBattlerFlags
_08023B08: .4byte gBitTable
_08023B0C: .4byte sBattler_AI
_08023B10: .4byte gBattleStruct
_08023B14: .4byte gBattleMoves
_08023B18: .4byte gUnknown_2023DD0
_08023B1C: .4byte gBattlerTarget
_08023B20: .4byte gMoveResultFlags
_08023B24: .4byte gUnknown_2023D4C
_08023B28:
ldr r5, _08023C10 @ =gUnknown_2023DD0
ldr r2, [r5]
movs r0, 0x80
lsls r0, 12
ands r0, r2
cmp r0, 0
bne _08023BAC
ldr r0, _08023C14 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08023BAC
ldr r1, _08023C18 @ =gUnknown_2023E8C
ldr r0, _08023C1C @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
ldrb r0, [r0, 0x1]
lsls r0, 29
cmp r0, 0
blt _08023BAC
ldr r0, _08023C20 @ =gBattleMoves
mov r9, r0
ldr r1, _08023C24 @ =gCurrentMove
mov r8, r1
ldrh r0, [r1]
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
add r1, r9
ldrb r0, [r1, 0x6]
cmp r0, 0x8
bne _08023BAC
movs r6, 0x80
lsls r6, 2
adds r4, r6, 0
ands r4, r2
cmp r4, 0
bne _08023BAC
ldr r7, _08023C28 @ =gBattlerTarget
ldrb r0, [r7]
bl GetBattlerPosition
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
lsls r0, 24
lsrs r2, r0, 24
ldr r1, _08023C2C @ =gBattleMons
movs r0, 0x58
muls r0, r2
adds r0, r1
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08023BA2
bl _080232F0
_08023BA2:
ldr r0, [r5]
orrs r0, r6
str r0, [r5]
ldr r2, _08023C30 @ =gBattleScripting
mov r12, r2
_08023BAC:
mov r3, r12
ldrb r0, [r3, 0x14]
adds r0, 0x1
strb r0, [r3, 0x14]
_08023BB4:
ldr r4, [sp, 0x10]
cmp r4, 0x1
bne _08023BC6
mov r5, r10
cmp r5, 0
bne _08023BC6
movs r0, 0x11
mov r1, r12
strb r0, [r1, 0x14]
_08023BC6:
ldr r2, [sp, 0x10]
cmp r2, 0x2
bne _08023BDC
ldr r4, [sp, 0x14]
mov r3, r12
ldrb r3, [r3, 0x14]
cmp r4, r3
bne _08023BDC
movs r0, 0x11
mov r4, r12
strb r0, [r4, 0x14]
_08023BDC:
mov r5, r12
ldrb r0, [r5, 0x14]
cmp r0, 0x11
beq _08023BE8
bl _08023358
_08023BE8:
mov r1, r12
ldrb r0, [r1, 0x14]
cmp r0, 0x11
bne _08023BFE
mov r2, r10
cmp r2, 0
bne _08023BFE
ldr r1, _08023C34 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x3
_08023BFC:
str r0, [r1]
_08023BFE:
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08023C10: .4byte gUnknown_2023DD0
_08023C14: .4byte gBattleTypeFlags
_08023C18: .4byte gUnknown_2023E8C
_08023C1C: .4byte sBattler_AI
_08023C20: .4byte gBattleMoves
_08023C24: .4byte gCurrentMove
_08023C28: .4byte gBattlerTarget
_08023C2C: .4byte gBattleMons
_08023C30: .4byte gBattleScripting
_08023C34: .4byte gUnknown_2023D74
thumb_func_end atk49_moveend
thumb_func_start atk4A_typecalc2
atk4A_typecalc2: @ 8023C38
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r4, 0
movs r5, 0
ldr r2, _08023C9C @ =gBattleMoves
ldr r0, _08023CA0 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x2]
mov r8, r0
ldr r2, _08023CA4 @ =gBattleMons
ldr r3, _08023CA8 @ =gBattlerTarget
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x20
ldrb r0, [r0]
mov r12, r2
adds r7, r3, 0
cmp r0, 0x1A
bne _08023CCC
mov r1, r8
cmp r1, 0x4
bne _08023CCC
ldr r3, _08023CAC @ =gLastUsedAbility
strb r0, [r3]
ldr r2, _08023CB0 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x9
orrs r0, r1
strb r0, [r2]
ldr r1, _08023CB4 @ =gUnknown_2023DA0
ldrb r0, [r7]
lsls r0, 1
adds r0, r1
strh r4, [r0]
ldr r0, _08023CB8 @ =gUnknown_2023E82
mov r2, r8
strb r2, [r0, 0x6]
ldrb r0, [r7]
ldrb r1, [r3]
bl sub_80C71D0
b _08023DAE
.align 2, 0
_08023C9C: .4byte gBattleMoves
_08023CA0: .4byte gCurrentMove
_08023CA4: .4byte gBattleMons
_08023CA8: .4byte gBattlerTarget
_08023CAC: .4byte gLastUsedAbility
_08023CB0: .4byte gMoveResultFlags
_08023CB4: .4byte gUnknown_2023DA0
_08023CB8: .4byte gUnknown_2023E82
_08023CBC:
ldr r0, _08023CC8 @ =gMoveResultFlags
ldrb r1, [r0]
movs r2, 0x8
orrs r1, r2
strb r1, [r0]
b _08023DAE
.align 2, 0
_08023CC8: .4byte gMoveResultFlags
_08023CCC:
ldr r1, _08023CD8 @ =gUnknown_824F050
adds r0, r5, r1
ldrb r0, [r0]
adds r6, r1, 0
b _08023D8E
.align 2, 0
_08023CD8: .4byte gUnknown_824F050
_08023CDC:
adds r0, r5, r6
ldrb r0, [r0]
cmp r0, r8
bne _08023D88
adds r2, r5, 0x1
adds r3, r2, r6
ldrb r1, [r7]
movs r0, 0x58
muls r0, r1
add r0, r12
adds r0, 0x21
ldrb r1, [r3]
adds r3, r2, 0
ldrb r0, [r0]
cmp r1, r0
bne _08023D1A
adds r0, r5, 0x2
adds r0, r6
ldrb r1, [r0]
cmp r1, 0
beq _08023CBC
cmp r1, 0x5
bne _08023D0E
movs r0, 0x4
orrs r4, r0
_08023D0E:
cmp r1, 0x14
bne _08023D1A
movs r0, 0x2
orrs r4, r0
lsls r0, r4, 24
lsrs r4, r0, 24
_08023D1A:
adds r2, r3, r6
ldrb r1, [r7]
movs r0, 0x58
muls r0, r1
add r0, r12
adds r1, r0, 0
adds r1, 0x22
ldrb r2, [r2]
ldrb r1, [r1]
cmp r2, r1
bne _08023D88
adds r0, 0x21
ldrb r1, [r0]
cmp r1, r2
beq _08023D42
adds r0, r5, 0x2
adds r0, r6
ldrb r0, [r0]
cmp r0, 0
beq _08023CBC
_08023D42:
cmp r1, r2
beq _08023D58
adds r0, r5, 0x2
adds r0, r6
ldrb r0, [r0]
cmp r0, 0x5
bne _08023D58
movs r0, 0x4
orrs r4, r0
lsls r0, r4, 24
lsrs r4, r0, 24
_08023D58:
adds r2, r3, r6
ldrb r1, [r7]
movs r0, 0x58
muls r0, r1
add r0, r12
adds r1, r0, 0
adds r1, 0x22
ldrb r2, [r2]
ldrb r1, [r1]
cmp r2, r1
bne _08023D88
adds r0, 0x21
ldrb r0, [r0]
cmp r0, r2
beq _08023D88
adds r0, r5, 0x2
adds r0, r6
ldrb r0, [r0]
cmp r0, 0x14
bne _08023D88
movs r0, 0x2
orrs r4, r0
lsls r0, r4, 24
lsrs r4, r0, 24
_08023D88:
adds r5, 0x3
adds r0, r5, r6
ldrb r0, [r0]
_08023D8E:
cmp r0, 0xFF
beq _08023DAE
cmp r0, 0xFE
bne _08023CDC
ldrb r1, [r7]
movs r0, 0x58
muls r0, r1
mov r1, r12
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 22
ands r0, r1
cmp r0, 0
beq _08023D88
_08023DAE:
ldr r2, _08023E5C @ =gBattleMons
ldr r0, _08023E60 @ =gBattlerTarget
mov r8, r0
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x20
ldrb r6, [r0]
cmp r6, 0x19
bne _08023E2A
movs r5, 0x29
ands r5, r4
cmp r5, 0
bne _08023E2A
ldr r0, _08023E64 @ =sBattler_AI
ldrb r0, [r0]
ldr r7, _08023E68 @ =gCurrentMove
ldrh r1, [r7]
bl AttacksThisTurn
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x2
bne _08023E2A
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _08023DF0
movs r0, 0x6
ands r4, r0
cmp r4, 0x6
bne _08023E2A
_08023DF0:
ldr r2, _08023E6C @ =gBattleMoves
ldrh r1, [r7]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _08023E2A
ldr r3, _08023E70 @ =gLastUsedAbility
strb r6, [r3]
ldr r2, _08023E74 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _08023E78 @ =gUnknown_2023DA0
mov r2, r8
ldrb r0, [r2]
lsls r0, 1
adds r0, r1
strh r5, [r0]
ldr r1, _08023E7C @ =gUnknown_2023E82
movs r0, 0x3
strb r0, [r1, 0x6]
ldrb r0, [r2]
ldrb r1, [r3]
bl sub_80C71D0
_08023E2A:
ldr r0, _08023E74 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08023E48
ldr r2, _08023E80 @ =gUnknown_2023E8C
ldr r0, _08023E64 @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 4
adds r1, r2
ldrb r0, [r1, 0x1]
movs r2, 0x2
orrs r0, r2
strb r0, [r1, 0x1]
_08023E48:
ldr r1, _08023E84 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08023E5C: .4byte gBattleMons
_08023E60: .4byte gBattlerTarget
_08023E64: .4byte sBattler_AI
_08023E68: .4byte gCurrentMove
_08023E6C: .4byte gBattleMoves
_08023E70: .4byte gLastUsedAbility
_08023E74: .4byte gMoveResultFlags
_08023E78: .4byte gUnknown_2023DA0
_08023E7C: .4byte gUnknown_2023E82
_08023E80: .4byte gUnknown_2023E8C
_08023E84: .4byte gUnknown_2023D74
thumb_func_end atk4A_typecalc2
thumb_func_start atk4B_returnatktoball
atk4B_returnatktoball: @ 8023E88
push {r4,lr}
ldr r4, _08023EC4 @ =gActiveBattler
ldr r0, _08023EC8 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r4]
ldr r2, _08023ECC @ =gUnknown_2023DD0
ldr r1, _08023ED0 @ =gBitTable
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
lsls r1, 28
ldr r0, [r2]
ands r0, r1
cmp r0, 0
bne _08023EB6
movs r0, 0
movs r1, 0
bl EmitReturnMonToBall
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08023EB6:
ldr r1, _08023ED4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08023EC4: .4byte gActiveBattler
_08023EC8: .4byte sBattler_AI
_08023ECC: .4byte gUnknown_2023DD0
_08023ED0: .4byte gBitTable
_08023ED4: .4byte gUnknown_2023D74
thumb_func_end atk4B_returnatktoball
thumb_func_start atk4C_getswitchedmondata
atk4C_getswitchedmondata: @ 8023ED8
push {r4,r5,lr}
ldr r0, _08023F30 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _08023F28
ldr r5, _08023F34 @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _08023F38 @ =gActiveBattler
strb r0, [r4]
ldr r3, _08023F3C @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r2, r0, 1
adds r2, r3
ldr r1, _08023F40 @ =gBattleStruct
ldr r1, [r1]
adds r0, r1
adds r0, 0x5C
ldrb r0, [r0]
strh r0, [r2]
ldr r1, _08023F44 @ =gBitTable
ldrb r0, [r4]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 2
adds r0, r1
ldrb r2, [r0]
movs r0, 0
movs r1, 0
bl BtlController_EmitGetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
_08023F28:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08023F30: .4byte gUnknown_2023BC8
_08023F34: .4byte gUnknown_2023D74
_08023F38: .4byte gActiveBattler
_08023F3C: .4byte gBattlerPartyIndexes
_08023F40: .4byte gBattleStruct
_08023F44: .4byte gBitTable
thumb_func_end atk4C_getswitchedmondata
thumb_func_start sub_8023F48
sub_8023F48: @ 8023F48
push {r4-r7,lr}
sub sp, 0x58
ldr r0, _080240A0 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _08023F56
b _08024098
_08023F56:
ldr r0, _080240A4 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _080240A8 @ =gActiveBattler
strb r0, [r4]
ldr r6, _080240AC @ =gBattleMons
ldrb r0, [r4]
movs r5, 0x58
adds r1, r0, 0
muls r1, r5
adds r1, r6
mov r0, sp
movs r2, 0x58
bl memcpy
ldrb r0, [r4]
muls r0, r5
adds r3, r0, r6
movs r2, 0
ldr r5, _080240B0 @ =gUnknown_20233C4
adds r7, r4, 0
_08023F84:
adds r0, r3, r2
ldrb r1, [r4]
lsls r1, 9
adds r1, 0x4
adds r1, r2, r1
adds r1, r5
ldrb r1, [r1]
strb r1, [r0]
adds r2, 0x1
cmp r2, 0x57
bls _08023F84
ldr r4, _080240AC @ =gBattleMons
ldrb r0, [r7]
movs r6, 0x58
adds r2, r0, 0
muls r2, r6
adds r2, r4
ldr r3, _080240B4 @ =gBaseStats
ldrh r1, [r2]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r3
ldrb r0, [r0, 0x6]
adds r2, 0x21
strb r0, [r2]
ldrb r0, [r7]
adds r1, r0, 0
muls r1, r6
adds r1, r4
ldrh r2, [r1]
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r3
ldrb r0, [r0, 0x7]
adds r1, 0x22
strb r0, [r1]
ldrb r0, [r7]
adds r1, r0, 0
muls r1, r6
adds r1, r4
ldrh r0, [r1]
ldrb r1, [r1, 0x17]
lsrs r1, 7
bl GetAbilityBySpecies
ldrb r1, [r7]
muls r1, r6
adds r1, r4
adds r1, 0x20
strb r0, [r1]
ldrb r0, [r7]
bl GetBattlerSide
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080240B8 @ =gUnknown_2023F20
adds r0, 0x29
adds r0, r2, r0
ldrb r1, [r0]
ldr r3, _080240BC @ =gBitTable
ldr r2, _080240C0 @ =gBattlerPartyIndexes
ldrb r5, [r7]
lsls r0, r5, 1
adds r0, r2
ldrh r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
ands r1, r0
mov r12, r4
cmp r1, 0
beq _08024022
adds r0, r5, 0
muls r0, r6
add r0, r12
movs r1, 0
strh r1, [r0, 0x2E]
_08024022:
ldr r2, _080240C4 @ =gBattleMoves
ldr r0, _080240C8 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0x7F
bne _08024068
movs r2, 0
adds r4, r7, 0
movs r6, 0x58
mov r5, r12
adds r5, 0x18
add r3, sp, 0x18
_08024042:
ldrb r0, [r4]
adds r1, r0, 0
muls r1, r6
adds r1, r2, r1
adds r1, r5
adds r0, r3, r2
ldrb r0, [r0]
strb r0, [r1]
adds r2, 0x1
cmp r2, 0x7
ble _08024042
ldrb r1, [r7]
movs r0, 0x58
muls r0, r1
mov r1, r12
adds r1, 0x50
adds r0, r1
ldr r1, [sp, 0x50]
str r1, [r0]
_08024068:
bl sub_8012760
ldr r0, _080240CC @ =gBattleScripting
ldr r3, _080240A8 @ =gActiveBattler
ldrb r2, [r3]
strb r2, [r0, 0x17]
ldr r1, _080240D0 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x7
strb r0, [r1, 0x1]
strb r2, [r1, 0x2]
ldr r2, _080240C0 @ =gBattlerPartyIndexes
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _080240A4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
_08024098:
add sp, 0x58
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080240A0: .4byte gUnknown_2023BC8
_080240A4: .4byte gUnknown_2023D74
_080240A8: .4byte gActiveBattler
_080240AC: .4byte gBattleMons
_080240B0: .4byte gUnknown_20233C4
_080240B4: .4byte gBaseStats
_080240B8: .4byte gUnknown_2023F20
_080240BC: .4byte gBitTable
_080240C0: .4byte gBattlerPartyIndexes
_080240C4: .4byte gBattleMoves
_080240C8: .4byte gCurrentMove
_080240CC: .4byte gBattleScripting
_080240D0: .4byte gBattleTextBuff1
thumb_func_end sub_8023F48
thumb_func_start sub_80240D4
sub_80240D4: @ 80240D4
push {r4-r6,lr}
ldr r0, _08024168 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _08024160
ldr r0, _0802416C @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r6, _08024170 @ =gActiveBattler
strb r0, [r6]
ldrb r0, [r6]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0802412A
ldr r0, _08024174 @ =gBattleTypeFlags
ldr r0, [r0]
ldr r1, _08024178 @ =0x0001aa02
ands r0, r1
cmp r0, 0
bne _0802412A
ldr r4, _0802417C @ =gBattleMons
ldrb r0, [r6]
movs r5, 0x58
muls r0, r5
adds r0, r4
ldrh r0, [r0]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
ldrb r1, [r6]
muls r1, r5
adds r4, 0x48
adds r1, r4
ldr r2, [r1]
movs r1, 0x2
bl HandleSetPokedexFlag
_0802412A:
ldr r2, _08024180 @ =gAbsentBattlerFlags
ldr r1, _08024184 @ =gBitTable
ldr r5, _08024170 @ =gActiveBattler
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
ldrb r0, [r2]
bics r0, r1
strb r0, [r2]
ldr r1, _08024188 @ =gBattlerPartyIndexes
ldrb r0, [r5]
lsls r0, 1
adds r0, r1
ldrb r1, [r0]
ldr r4, _0802416C @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r2, [r0, 0x2]
movs r0, 0
bl EmitSwitchInAnim
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r0, [r4]
adds r0, 0x3
str r0, [r4]
_08024160:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08024168: .4byte gUnknown_2023BC8
_0802416C: .4byte gUnknown_2023D74
_08024170: .4byte gActiveBattler
_08024174: .4byte gBattleTypeFlags
_08024178: .4byte 0x0001aa02
_0802417C: .4byte gBattleMons
_08024180: .4byte gAbsentBattlerFlags
_08024184: .4byte gBitTable
_08024188: .4byte gBattlerPartyIndexes
thumb_func_end sub_80240D4
thumb_func_start sub_802418C
sub_802418C: @ 802418C
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r4, _080241F0 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r1, [r0, 0x1]
movs r0, 0x7F
ands r0, r1
bl sub_8016E24
ldr r3, _080241F4 @ =gActiveBattler
strb r0, [r3]
ldr r2, [r4]
ldrb r1, [r2, 0x1]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08024204
ldr r1, _080241F8 @ =gBattleMons
ldrb r3, [r3]
movs r0, 0x58
muls r0, r3
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
ldr r1, _080241FC @ =0x0400e000
ands r0, r1
cmp r0, 0
bne _080241D8
ldr r1, _08024200 @ =gStatuses3
lsls r0, r3, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 3
ands r0, r1
cmp r0, 0
beq _08024204
_080241D8:
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
str r1, [r4]
b _08024388
.align 2, 0
_080241F0: .4byte gUnknown_2023D74
_080241F4: .4byte gActiveBattler
_080241F8: .4byte gBattleMons
_080241FC: .4byte 0x0400e000
_08024200: .4byte gStatuses3
_08024204:
ldr r5, _08024290 @ =gBattleTypeFlags
ldr r0, [r5]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _080242A4
ldr r4, _08024294 @ =gActiveBattler
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
ldr r1, _08024298 @ =gPlayerParty
mov r8, r1
cmp r0, 0x1
bne _08024228
ldr r0, _0802429C @ =gEnemyParty
mov r8, r0
_08024228:
movs r5, 0
ldrb r0, [r4]
bl GetBankMultiplayerId
lsls r0, 24
lsrs r0, 24
bl GetLinkTrainerFlankId
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bne _08024242
movs r5, 0x3
_08024242:
adds r6, r5, 0x3
cmp r5, r6
bge _0802428A
ldr r7, _080242A0 @ =gBattlerPartyIndexes
_0802424A:
movs r0, 0x64
muls r0, r5
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _08024284
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0
bne _08024284
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _08024284
ldr r0, _08024294 @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
cmp r0, r5
bne _0802428A
_08024284:
adds r5, 0x1
cmp r5, r6
blt _0802424A
_0802428A:
cmp r5, r6
beq _08024358
b _08024380
.align 2, 0
_08024290: .4byte gBattleTypeFlags
_08024294: .4byte gActiveBattler
_08024298: .4byte gPlayerParty
_0802429C: .4byte gEnemyParty
_080242A0: .4byte gBattlerPartyIndexes
_080242A4:
ldr r0, _080242D4 @ =gActiveBattler
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x1
bne _080242E4
movs r0, 0x1
bl GetBattlerAtPosition
lsls r0, 24
lsrs r7, r0, 24
ldr r0, [r5]
ands r0, r4
cmp r0, 0
beq _080242D8
movs r0, 0x3
bl GetBattlerAtPosition
lsls r0, 24
lsrs r6, r0, 24
b _080242DA
.align 2, 0
_080242D4: .4byte gActiveBattler
_080242D8:
adds r6, r7, 0
_080242DA:
ldr r0, _080242E0 @ =gEnemyParty
mov r8, r0
b _0802430A
.align 2, 0
_080242E0: .4byte gEnemyParty
_080242E4:
movs r0, 0
bl GetBattlerAtPosition
lsls r0, 24
lsrs r7, r0, 24
ldr r0, [r5]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08024304
movs r0, 0x2
bl GetBattlerAtPosition
lsls r0, 24
lsrs r6, r0, 24
b _08024306
_08024304:
adds r6, r7, 0
_08024306:
ldr r1, _08024374 @ =gPlayerParty
mov r8, r1
_0802430A:
movs r5, 0
_0802430C:
movs r0, 0x64
muls r0, r5
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _0802434E
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _0802434E
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0
bne _0802434E
ldr r1, _08024378 @ =gBattlerPartyIndexes
lsls r0, r7, 1
adds r0, r1
ldrh r0, [r0]
cmp r5, r0
beq _0802434E
lsls r0, r6, 1
adds r0, r1
ldrh r0, [r0]
cmp r5, r0
bne _08024354
_0802434E:
adds r5, 0x1
cmp r5, 0x5
ble _0802430C
_08024354:
cmp r5, 0x6
bne _08024380
_08024358:
ldr r3, _0802437C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _08024388
.align 2, 0
_08024374: .4byte gPlayerParty
_08024378: .4byte gBattlerPartyIndexes
_0802437C: .4byte gUnknown_2023D74
_08024380:
ldr r1, _08024394 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x6
str r0, [r1]
_08024388:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08024394: .4byte gUnknown_2023D74
thumb_func_end sub_802418C
thumb_func_start sub_8024398
sub_8024398: @ 8024398
push {r4,r5,lr}
sub sp, 0x4
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
ldr r4, _080243E0 @ =gActiveBattler
ldrb r0, [r4]
ldr r5, _080243E4 @ =gBattleStruct
ldr r1, [r5]
adds r1, r0, r1
adds r1, 0x58
ldr r3, _080243E8 @ =gBattlerPartyIndexes
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
strb r0, [r1]
ldrb r0, [r4]
lsls r1, r0, 1
adds r1, r0
adds r1, 0x60
ldr r0, [r5]
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x1
movs r3, 0
bl EmitChoosePokemon
ldrb r0, [r4]
bl MarkBufferBankForExecution
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080243E0: .4byte gActiveBattler
_080243E4: .4byte gBattleStruct
_080243E8: .4byte gBattlerPartyIndexes
thumb_func_end sub_8024398
thumb_func_start sub_80243EC
sub_80243EC: @ 80243EC
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
movs r7, 0
movs r0, 0
mov r9, r0
ldr r6, _08024498 @ =gUnknown_2023D74
ldr r2, [r6]
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
mov r8, r1
ldrb r1, [r2, 0x1]
adds r0, r1, 0
mov r12, r6
cmp r0, 0x5
beq _08024422
b _080248B8
_08024422:
ldr r0, _0802449C @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x41
ands r1, r0
cmp r1, 0x1
beq _08024510
ldr r1, _080244A0 @ =gActiveBattler
strb r7, [r1]
ldr r0, _080244A4 @ =gBattlersCount
ldrb r0, [r0]
cmp r7, r0
bcc _0802443C
b _080248A6
_0802443C:
ldr r7, _080244A8 @ =gUnknown_2023DD0
ldr r6, _080244AC @ =gBitTable
adds r4, r1, 0
ldr r2, _080244B0 @ =gAbsentBattlerFlags
mov r8, r2
_08024446:
ldrb r2, [r4]
lsls r0, r2, 2
adds r0, r6
ldr r1, [r0]
lsls r1, 28
ldr r0, [r7]
ands r0, r1
cmp r0, 0
beq _080244E8
adds r0, r2, 0
movs r1, 0x6
movs r2, 0x6
bl sub_8019C10
lsls r0, 24
cmp r0, 0
beq _080244B4
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
mov r2, r8
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r1, [r0]
lsls r1, 28
ldr r0, [r7]
bics r0, r1
str r0, [r7]
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _080244F6
.align 2, 0
_08024498: .4byte gUnknown_2023D74
_0802449C: .4byte gBattleTypeFlags
_080244A0: .4byte gActiveBattler
_080244A4: .4byte gBattlersCount
_080244A8: .4byte gUnknown_2023DD0
_080244AC: .4byte gBitTable
_080244B0: .4byte gAbsentBattlerFlags
_080244B4:
ldr r5, _080244E4 @ =gUnknown_2023ECC
ldrb r0, [r4]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r5
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _080244F6
movs r0, 0x6
bl sub_8024398
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r5
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
b _080244F6
.align 2, 0
_080244E4: .4byte gUnknown_2023ECC
_080244E8:
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldrb r0, [r4]
bl MarkBufferBankForExecution
_080244F6:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
ldr r1, _0802450C @ =gBattlersCount
lsls r0, 24
lsrs r0, 24
ldrb r1, [r1]
cmp r0, r1
bcc _08024446
b _080248A6
.align 2, 0
_0802450C: .4byte gBattlersCount
_08024510:
ands r0, r1
cmp r0, 0
bne _08024518
b _080248A6
_08024518:
ldr r0, _08024570 @ =gUnknown_2023DD0
mov r8, r0
ldr r0, [r0]
lsrs r5, r0, 28
ldr r6, _08024574 @ =gBitTable
ldr r0, [r6]
ands r0, r5
cmp r0, 0
beq _080245CE
ldr r4, _08024578 @ =gActiveBattler
strb r7, [r4]
movs r0, 0
movs r1, 0x6
movs r2, 0x6
bl sub_8019C10
lsls r0, 24
cmp r0, 0
beq _08024580
ldr r2, _0802457C @ =gAbsentBattlerFlags
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r1, [r0]
lsls r1, 28
mov r2, r8
ldr r0, [r2]
bics r0, r1
str r0, [r2]
movs r0, 0
bl EmitCmd42
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _080245CE
.align 2, 0
_08024570: .4byte gUnknown_2023DD0
_08024574: .4byte gBitTable
_08024578: .4byte gActiveBattler
_0802457C: .4byte gAbsentBattlerFlags
_08024580:
ldr r6, _080245B4 @ =gUnknown_2023ECC
ldrb r0, [r4]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r6
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _080245BC
ldr r0, _080245B8 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x5E
ldrb r0, [r0]
bl sub_8024398
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r6
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
b _080245CE
.align 2, 0
_080245B4: .4byte gUnknown_2023ECC
_080245B8: .4byte gBattleStruct
_080245BC:
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldrb r0, [r4]
bl MarkBufferBankForExecution
movs r0, 0x1
mov r9, r0
_080245CE:
ldr r6, _08024628 @ =gBitTable
ldr r0, [r6, 0x8]
ands r0, r5
cmp r0, 0
beq _0802468C
ldr r0, [r6]
ands r0, r5
cmp r0, 0
bne _0802468C
ldr r4, _0802462C @ =gActiveBattler
movs r0, 0x2
strb r0, [r4]
movs r0, 0x2
movs r1, 0x6
movs r2, 0x6
bl sub_8019C10
lsls r0, 24
cmp r0, 0
beq _08024638
ldr r2, _08024630 @ =gAbsentBattlerFlags
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldr r2, _08024634 @ =gUnknown_2023DD0
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r1, [r0]
lsls r1, 28
ldr r0, [r2]
bics r0, r1
str r0, [r2]
movs r0, 0
bl EmitCmd42
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _0802468C
.align 2, 0
_08024628: .4byte gBitTable
_0802462C: .4byte gActiveBattler
_08024630: .4byte gAbsentBattlerFlags
_08024634: .4byte gUnknown_2023DD0
_08024638:
ldr r6, _0802466C @ =gUnknown_2023ECC
ldrb r0, [r4]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r6
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _08024674
ldr r0, _08024670 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x5C
ldrb r0, [r0]
bl sub_8024398
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r6
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
b _0802468C
.align 2, 0
_0802466C: .4byte gUnknown_2023ECC
_08024670: .4byte gBattleStruct
_08024674:
movs r0, 0x1
mov r1, r9
ands r0, r1
cmp r0, 0
bne _0802468C
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldrb r0, [r4]
bl MarkBufferBankForExecution
_0802468C:
ldr r6, _080246DC @ =gBitTable
ldr r0, [r6, 0x4]
ands r0, r5
cmp r0, 0
beq _0802473E
ldr r4, _080246E0 @ =gActiveBattler
movs r0, 0x1
strb r0, [r4]
movs r0, 0x1
movs r1, 0x6
movs r2, 0x6
bl sub_8019C10
lsls r0, 24
cmp r0, 0
beq _080246EC
ldr r2, _080246E4 @ =gAbsentBattlerFlags
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldr r2, _080246E8 @ =gUnknown_2023DD0
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r1, [r0]
lsls r1, 28
ldr r0, [r2]
bics r0, r1
str r0, [r2]
movs r0, 0
bl EmitCmd42
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _0802473E
.align 2, 0
_080246DC: .4byte gBitTable
_080246E0: .4byte gActiveBattler
_080246E4: .4byte gAbsentBattlerFlags
_080246E8: .4byte gUnknown_2023DD0
_080246EC:
ldr r6, _08024720 @ =gUnknown_2023ECC
ldrb r0, [r4]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r6
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _08024728
ldr r0, _08024724 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x5F
ldrb r0, [r0]
bl sub_8024398
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r6
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
b _0802473E
.align 2, 0
_08024720: .4byte gUnknown_2023ECC
_08024724: .4byte gBattleStruct
_08024728:
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldrb r0, [r4]
bl MarkBufferBankForExecution
movs r0, 0x2
mov r2, r9
orrs r2, r0
mov r9, r2
_0802473E:
ldr r6, _08024798 @ =gBitTable
ldr r0, [r6, 0xC]
ands r0, r5
cmp r0, 0
beq _080247FC
ldr r0, [r6, 0x4]
ands r0, r5
cmp r0, 0
bne _080247FC
ldr r4, _0802479C @ =gActiveBattler
movs r0, 0x3
strb r0, [r4]
movs r0, 0x3
movs r1, 0x6
movs r2, 0x6
bl sub_8019C10
lsls r0, 24
cmp r0, 0
beq _080247A8
ldr r2, _080247A0 @ =gAbsentBattlerFlags
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldr r2, _080247A4 @ =gUnknown_2023DD0
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r1, [r0]
lsls r1, 28
ldr r0, [r2]
bics r0, r1
str r0, [r2]
movs r0, 0
bl EmitCmd42
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _080247FC
.align 2, 0
_08024798: .4byte gBitTable
_0802479C: .4byte gActiveBattler
_080247A0: .4byte gAbsentBattlerFlags
_080247A4: .4byte gUnknown_2023DD0
_080247A8:
ldr r6, _080247DC @ =gUnknown_2023ECC
ldrb r0, [r4]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r6
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _080247E4
ldr r0, _080247E0 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x5D
ldrb r0, [r0]
bl sub_8024398
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r6
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
b _080247FC
.align 2, 0
_080247DC: .4byte gUnknown_2023ECC
_080247E0: .4byte gBattleStruct
_080247E4:
movs r0, 0x2
mov r1, r9
ands r1, r0
cmp r1, 0
bne _080247FC
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldrb r0, [r4]
bl MarkBufferBankForExecution
_080247FC:
ldr r1, _0802482C @ =gUnknown_2023ECC
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _08024850
adds r0, r1, 0
adds r0, 0x28
ldrb r0, [r0]
lsls r0, 25
cmp r0, 0
blt _08024850
cmp r5, 0
beq _08024850
ldr r0, _08024830 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r0, _08024834 @ =gBitTable
ldr r0, [r0]
ands r1, r0
cmp r1, 0
beq _0802483C
ldr r1, _08024838 @ =gActiveBattler
movs r0, 0x2
strb r0, [r1]
b _08024840
.align 2, 0
_0802482C: .4byte gUnknown_2023ECC
_08024830: .4byte gAbsentBattlerFlags
_08024834: .4byte gBitTable
_08024838: .4byte gActiveBattler
_0802483C:
ldr r0, _08024880 @ =gActiveBattler
strb r1, [r0]
_08024840:
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldr r0, _08024880 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
_08024850:
ldr r1, _08024884 @ =gUnknown_2023ECC
ldrb r0, [r1, 0x14]
lsls r0, 25
cmp r0, 0
blt _080248A6
adds r0, r1, 0
adds r0, 0x3C
ldrb r0, [r0]
lsls r0, 25
cmp r0, 0
blt _080248A6
cmp r5, 0
beq _080248A6
ldr r0, _08024888 @ =gAbsentBattlerFlags
ldrb r0, [r0]
ldr r1, _0802488C @ =gBitTable
ldr r1, [r1, 0x4]
ands r0, r1
cmp r0, 0
beq _08024890
ldr r1, _08024880 @ =gActiveBattler
movs r0, 0x3
b _08024894
.align 2, 0
_08024880: .4byte gActiveBattler
_08024884: .4byte gUnknown_2023ECC
_08024888: .4byte gAbsentBattlerFlags
_0802488C: .4byte gBitTable
_08024890:
ldr r1, _080248B0 @ =gActiveBattler
movs r0, 0x1
_08024894:
strb r0, [r1]
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldr r0, _080248B0 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
_080248A6:
ldr r1, _080248B4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x6
str r0, [r1]
b _08024C2E
.align 2, 0
_080248B0: .4byte gActiveBattler
_080248B4: .4byte gUnknown_2023D74
_080248B8:
cmp r0, 0x6
beq _080248BE
b _08024AAC
_080248BE:
ldr r0, _08024934 @ =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _080248CC
b _08024A48
_080248CC:
movs r0, 0x1
ands r1, r0
cmp r1, 0
bne _080248D6
b _08024A48
_080248D6:
ldr r7, _08024938 @ =gUnknown_2023DD0
ldr r0, [r7]
lsrs r5, r0, 28
ldr r4, _0802493C @ =gBitTable
ldr r0, [r4, 0x8]
ands r0, r5
cmp r0, 0
beq _0802497E
ldr r0, [r4]
ands r0, r5
cmp r0, 0
beq _0802497E
ldr r6, _08024940 @ =gActiveBattler
movs r0, 0x2
strb r0, [r6]
ldr r0, _08024944 @ =gUnknown_20233C4
ldrb r1, [r0, 0x1]
movs r0, 0x2
movs r2, 0x6
bl sub_8019C10
lsls r0, 24
cmp r0, 0
beq _0802494C
ldr r2, _08024948 @ =gAbsentBattlerFlags
ldrb r0, [r6]
lsls r0, 2
adds r0, r4
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldrb r0, [r6]
lsls r0, 2
adds r0, r4
ldr r1, [r0]
lsls r1, 28
ldr r0, [r7]
bics r0, r1
str r0, [r7]
movs r0, 0
bl EmitCmd42
ldrb r0, [r6]
bl MarkBufferBankForExecution
b _0802497E
.align 2, 0
_08024934: .4byte gBattleTypeFlags
_08024938: .4byte gUnknown_2023DD0
_0802493C: .4byte gBitTable
_08024940: .4byte gActiveBattler
_08024944: .4byte gUnknown_20233C4
_08024948: .4byte gAbsentBattlerFlags
_0802494C:
ldr r4, _080249DC @ =gUnknown_2023ECC
ldrb r0, [r6]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _0802497E
ldr r0, _080249E0 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x5C
ldrb r0, [r0]
bl sub_8024398
ldrb r1, [r6]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
_0802497E:
ldr r4, _080249E4 @ =gBitTable
ldr r0, [r4, 0xC]
ands r0, r5
cmp r0, 0
beq _08024A2E
ldr r0, [r4, 0x4]
ands r5, r0
cmp r5, 0
beq _08024A2E
ldr r5, _080249E8 @ =gActiveBattler
movs r0, 0x3
strb r0, [r5]
ldr r0, _080249EC @ =gUnknown_20233C4
ldr r2, _080249F0 @ =0x00000201
adds r0, r2
ldrb r1, [r0]
movs r0, 0x3
movs r2, 0x6
bl sub_8019C10
lsls r0, 24
cmp r0, 0
beq _080249FC
ldr r2, _080249F4 @ =gAbsentBattlerFlags
ldrb r0, [r5]
lsls r0, 2
adds r0, r4
ldr r0, [r0]
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
ldr r2, _080249F8 @ =gUnknown_2023DD0
ldrb r0, [r5]
lsls r0, 2
adds r0, r4
ldr r1, [r0]
lsls r1, 28
ldr r0, [r2]
bics r0, r1
str r0, [r2]
movs r0, 0
bl EmitCmd42
ldrb r0, [r5]
bl MarkBufferBankForExecution
b _08024A2E
.align 2, 0
_080249DC: .4byte gUnknown_2023ECC
_080249E0: .4byte gBattleStruct
_080249E4: .4byte gBitTable
_080249E8: .4byte gActiveBattler
_080249EC: .4byte gUnknown_20233C4
_080249F0: .4byte 0x00000201
_080249F4: .4byte gAbsentBattlerFlags
_080249F8: .4byte gUnknown_2023DD0
_080249FC:
ldr r4, _08024A3C @ =gUnknown_2023ECC
ldrb r0, [r5]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r0, [r1]
lsls r0, 25
cmp r0, 0
blt _08024A2E
ldr r0, _08024A40 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x5D
ldrb r0, [r0]
bl sub_8024398
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
_08024A2E:
ldr r1, _08024A44 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x6
str r0, [r1]
mov r12, r1
b _08024A4C
.align 2, 0
_08024A3C: .4byte gUnknown_2023ECC
_08024A40: .4byte gBattleStruct
_08024A44: .4byte gUnknown_2023D74
_08024A48:
adds r0, r2, 0x6
str r0, [r6]
_08024A4C:
ldr r0, _08024A9C @ =gUnknown_2023DD0
ldr r0, [r0]
lsrs r5, r0, 28
ldr r1, _08024AA0 @ =gUnknown_2023D6D
movs r0, 0
strb r0, [r1]
ldr r4, _08024AA4 @ =gBitTable
ldr r2, [r4]
ands r2, r5
ldr r6, _08024AA8 @ =gBattlersCount
cmp r2, 0
bne _08024A88
adds r7, r6, 0
ldrb r0, [r6]
cmp r2, r0
bcs _08024A88
adds r3, r1, 0
_08024A6E:
ldrb r0, [r3]
adds r0, 0x1
strb r0, [r3]
ldrb r2, [r3]
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
ands r0, r5
cmp r0, 0
bne _08024A88
ldrb r0, [r7]
cmp r2, r0
bcc _08024A6E
_08024A88:
ldrb r0, [r1]
ldrb r6, [r6]
cmp r0, r6
beq _08024A92
b _08024C2E
_08024A92:
mov r1, r8
mov r2, r12
str r1, [r2]
b _08024C2E
.align 2, 0
_08024A9C: .4byte gUnknown_2023DD0
_08024AA0: .4byte gUnknown_2023D6D
_08024AA4: .4byte gBitTable
_08024AA8: .4byte gBattlersCount
_08024AAC:
movs r0, 0x80
ands r0, r1
movs r5, 0x1
cmp r0, 0
beq _08024AB8
movs r5, 0
_08024AB8:
movs r0, 0x7F
ands r0, r1
bl sub_8016E24
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _08024AE0 @ =gUnknown_2023ECC
lsls r0, r7, 2
adds r0, r7
lsls r0, 2
adds r0, r1
ldrb r0, [r0]
lsls r0, 25
cmp r0, 0
bge _08024AE4
ldr r0, [r6]
adds r0, 0x6
str r0, [r6]
b _08024C2E
.align 2, 0
_08024AE0: .4byte gUnknown_2023ECC
_08024AE4:
adds r0, r7, 0
movs r1, 0x6
movs r2, 0x6
bl sub_8019C10
lsls r0, 24
cmp r0, 0
beq _08024B34
ldr r2, _08024B24 @ =gActiveBattler
strb r7, [r2]
ldr r3, _08024B28 @ =gAbsentBattlerFlags
ldr r4, _08024B2C @ =gBitTable
ldrb r0, [r2]
lsls r0, 2
adds r0, r4
ldr r0, [r0]
ldrb r1, [r3]
orrs r0, r1
strb r0, [r3]
ldr r3, _08024B30 @ =gUnknown_2023DD0
ldrb r0, [r2]
lsls r0, 2
adds r0, r4
ldr r1, [r0]
lsls r1, 28
ldr r0, [r3]
bics r0, r1
str r0, [r3]
mov r0, r8
str r0, [r6]
b _08024C2E
.align 2, 0
_08024B24: .4byte gActiveBattler
_08024B28: .4byte gAbsentBattlerFlags
_08024B2C: .4byte gBitTable
_08024B30: .4byte gUnknown_2023DD0
_08024B34:
ldr r4, _08024BD8 @ =gActiveBattler
strb r7, [r4]
ldrb r0, [r4]
ldr r3, _08024BDC @ =gBattleStruct
ldr r1, [r3]
adds r1, r0, r1
adds r1, 0x58
ldr r2, _08024BE0 @ =gBattlerPartyIndexes
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strb r0, [r1]
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
ldr r3, [r3]
adds r0, r3
adds r0, 0x5C
ldrb r2, [r0]
ldrb r1, [r4]
lsls r0, r1, 1
adds r0, r1
adds r0, 0x60
adds r3, r0
str r3, [sp]
movs r0, 0
adds r1, r5, 0
movs r3, 0
bl EmitChoosePokemon
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r6]
adds r0, 0x6
str r0, [r6]
ldrb r0, [r4]
bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
bne _08024B94
ldr r1, _08024BE4 @ =gBattleResults
ldrb r0, [r1, 0x2]
cmp r0, 0xFE
bhi _08024B94
adds r0, 0x1
strb r0, [r1, 0x2]
_08024B94:
ldr r0, _08024BE8 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _08024BF0
ldr r1, _08024BD8 @ =gActiveBattler
movs r0, 0
strb r0, [r1]
ldr r0, _08024BEC @ =gBattlersCount
ldrb r0, [r0]
cmp r0, 0
beq _08024C2E
adds r4, r1, 0
_08024BB0:
ldrb r0, [r4]
cmp r0, r7
beq _08024BC4
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08024BC4:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
ldr r1, _08024BEC @ =gBattlersCount
lsls r0, 24
lsrs r0, 24
ldrb r1, [r1]
cmp r0, r1
bcc _08024BB0
b _08024C2E
.align 2, 0
_08024BD8: .4byte gActiveBattler
_08024BDC: .4byte gBattleStruct
_08024BE0: .4byte gBattlerPartyIndexes
_08024BE4: .4byte gBattleResults
_08024BE8: .4byte gBattleTypeFlags
_08024BEC: .4byte gBattlersCount
_08024BF0:
adds r0, r7, 0
bl GetBattlerPosition
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
ldr r4, _08024C3C @ =gActiveBattler
strb r0, [r4]
ldr r0, _08024C40 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _08024C44 @ =gBitTable
ldrb r3, [r4]
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
beq _08024C20
movs r0, 0x2
eors r3, r0
strb r3, [r4]
_08024C20:
movs r0, 0
movs r1, 0x2
bl EmitLinkStandbyMsg
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08024C2E:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08024C3C: .4byte gActiveBattler
_08024C40: .4byte gAbsentBattlerFlags
_08024C44: .4byte gBitTable
thumb_func_end sub_80243EC
thumb_func_start sub_8024C48
sub_8024C48: @ 8024C48
push {r4-r7,lr}
ldr r0, _08024C74 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _08024C54
b _08024E16
_08024C54:
ldr r4, _08024C78 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r7, _08024C7C @ =gActiveBattler
strb r0, [r7]
ldr r0, [r4]
ldrb r0, [r0, 0x2]
cmp r0, 0x1
beq _08024CC4
cmp r0, 0x1
bgt _08024C80
cmp r0, 0
beq _08024C86
b _08024E0E
.align 2, 0
_08024C74: .4byte gUnknown_2023BC8
_08024C78: .4byte gUnknown_2023D74
_08024C7C: .4byte gActiveBattler
_08024C80:
cmp r0, 0x2
beq _08024CE0
b _08024E0E
_08024C86:
movs r3, 0
ldr r0, _08024CB8 @ =gBattlersCount
ldrb r1, [r0]
cmp r3, r1
blt _08024C92
b _08024E0E
_08024C92:
ldr r6, _08024CBC @ =gBattleStruct
ldr r2, _08024CC0 @ =gUnknown_20233C4
movs r5, 0x80
lsls r5, 2
adds r4, r0, 0
_08024C9C:
ldrb r0, [r2]
cmp r0, 0x22
bne _08024CAC
ldr r0, [r6]
adds r0, r3, r0
adds r0, 0x5C
ldrb r1, [r2, 0x1]
strb r1, [r0]
_08024CAC:
adds r2, r5
adds r3, 0x1
ldrb r0, [r4]
cmp r3, r0
blt _08024C9C
b _08024E0E
.align 2, 0
_08024CB8: .4byte gBattlersCount
_08024CBC: .4byte gBattleStruct
_08024CC0: .4byte gUnknown_20233C4
_08024CC4:
ldr r0, _08024CDC @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _08024CD2
b _08024E0E
_08024CD2:
ldrb r0, [r7]
bl sub_8013F6C
b _08024E0E
.align 2, 0
_08024CDC: .4byte gBattleTypeFlags
_08024CE0:
ldr r1, _08024DAC @ =gUnknown_2023E82
ldr r4, _08024DB0 @ =gUnknown_20233C4
ldrb r0, [r7]
lsls r0, 9
adds r2, r4, 0x1
adds r0, r2
ldrb r0, [r0]
strb r0, [r1]
ldrb r0, [r7]
ldr r6, _08024DB4 @ =gBattleStruct
ldr r1, [r6]
adds r1, r0, r1
adds r1, 0x5C
lsls r0, 9
adds r0, r2
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _08024DB8 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _08024DBC
ldrb r0, [r7]
ldr r2, [r6]
lsls r1, r0, 1
adds r1, r0
adds r1, r2
adds r1, 0x60
ldrb r2, [r1]
movs r0, 0xF
ands r0, r2
strb r0, [r1]
ldrb r0, [r7]
ldr r2, [r6]
lsls r1, r0, 1
adds r1, r0
adds r1, r2
adds r1, 0x60
lsls r0, 9
adds r5, r4, 0x2
adds r0, r5
ldrb r2, [r0]
movs r3, 0xF0
adds r0, r3, 0
ands r0, r2
ldrb r2, [r1]
orrs r0, r2
strb r0, [r1]
ldrb r1, [r7]
ldr r2, [r6]
lsls r0, r1, 1
adds r0, r1
adds r0, r2
adds r0, 0x61
lsls r1, 9
adds r4, 0x3
mov r12, r4
add r1, r12
ldrb r1, [r1]
strb r1, [r0]
ldrb r0, [r7]
movs r4, 0x2
eors r0, r4
ldr r2, [r6]
lsls r1, r0, 1
adds r1, r0
adds r1, r2
adds r1, 0x60
ldrb r2, [r1]
adds r0, r3, 0
ands r0, r2
strb r0, [r1]
ldrb r0, [r7]
eors r0, r4
ldr r2, [r6]
lsls r1, r0, 1
adds r1, r0
adds r1, r2
adds r1, 0x60
ldrb r0, [r7]
lsls r0, 9
adds r0, r5
ldrb r0, [r0]
ands r3, r0
lsrs r3, 4
ldrb r0, [r1]
orrs r3, r0
strb r3, [r1]
ldrb r0, [r7]
eors r4, r0
ldr r0, [r6]
lsls r1, r4, 1
adds r1, r4
adds r1, r0
adds r1, 0x62
ldrb r0, [r7]
lsls r0, 9
add r0, r12
ldrb r0, [r0]
strb r0, [r1]
b _08024DC2
.align 2, 0
_08024DAC: .4byte gUnknown_2023E82
_08024DB0: .4byte gUnknown_20233C4
_08024DB4: .4byte gBattleStruct
_08024DB8: .4byte gBattleTypeFlags
_08024DBC:
ldrb r0, [r7]
bl sub_8013F6C
_08024DC2:
ldr r1, _08024E1C @ =gBattleTextBuff1
movs r5, 0xFD
strb r5, [r1]
movs r0, 0x6
strb r0, [r1, 0x1]
ldr r4, _08024E20 @ =gBattleMons
ldr r3, _08024E24 @ =sBattler_AI
ldrb r0, [r3]
movs r2, 0x58
muls r0, r2
adds r0, r4
ldrh r0, [r0]
strb r0, [r1, 0x2]
ldrb r0, [r3]
muls r0, r2
adds r0, r4
ldrh r0, [r0]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r2, _08024E28 @ =gBattleTextBuff2
strb r5, [r2]
movs r0, 0x7
strb r0, [r2, 0x1]
ldr r3, _08024E2C @ =gActiveBattler
ldrb r0, [r3]
strb r0, [r2, 0x2]
ldr r1, _08024E30 @ =gUnknown_20233C4
ldrb r0, [r3]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
strb r0, [r2, 0x3]
movs r0, 0x1
negs r0, r0
strb r0, [r2, 0x4]
_08024E0E:
ldr r1, _08024E34 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x3
str r0, [r1]
_08024E16:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08024E1C: .4byte gBattleTextBuff1
_08024E20: .4byte gBattleMons
_08024E24: .4byte sBattler_AI
_08024E28: .4byte gBattleTextBuff2
_08024E2C: .4byte gActiveBattler
_08024E30: .4byte gUnknown_20233C4
_08024E34: .4byte gUnknown_2023D74
thumb_func_end sub_8024C48
thumb_func_start sub_8024E38
sub_8024E38: @ 8024E38
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
ldr r6, _08024F40 @ =gUnknown_2023D74
ldr r0, [r6]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _08024F44 @ =gActiveBattler
strb r0, [r4]
ldrb r0, [r4]
bl sub_80174B8
ldr r2, _08024F48 @ =gUnknown_2023DD0
ldr r1, _08024F4C @ =gBitTable
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
lsls r1, 28
ldr r0, [r2]
bics r0, r1
str r0, [r2]
ldr r2, _08024F50 @ =gUnknown_2023ECC
ldrb r0, [r4]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r2, [r1]
movs r0, 0x41
negs r0, r0
ands r0, r2
strb r0, [r1]
ldrb r0, [r4]
bl GetBattlerSide
ldr r5, _08024F54 @ =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r5
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 2
mov r8, r0
ands r0, r1
cmp r0, 0
bne _08024F88
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 23
adds r0, r5
ldrh r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08024F88
ldr r1, _08024F58 @ =gBattleMons
mov r9, r1
ldrb r2, [r4]
movs r7, 0x58
adds r0, r2, 0
muls r0, r7
adds r1, r0, r1
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0x2
beq _08024F88
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0x2
beq _08024F88
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x1A
beq _08024F88
adds r0, r2, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 23
adds r0, r5
ldrh r2, [r0]
mov r1, r8
orrs r1, r2
strh r1, [r0]
ldrb r0, [r4]
bl GetBattlerSide
ldr r2, _08024F5C @ =gSideTimers
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0xA]
movs r1, 0x5
subs r1, r0
lsls r1, 25
lsrs r1, 24
ldr r5, _08024F60 @ =gBattleMoveDamage
ldrb r0, [r4]
muls r0, r7
add r0, r9
ldrh r0, [r0, 0x2C]
bl __divsi3
str r0, [r5]
cmp r0, 0
bne _08024F28
movs r0, 0x1
str r0, [r5]
_08024F28:
ldr r0, _08024F64 @ =gBattleScripting
ldrb r1, [r4]
strb r1, [r0, 0x17]
bl BattleScriptPushCursor
ldr r0, [r6]
ldrb r0, [r0, 0x1]
cmp r0, 0
bne _08024F6C
ldr r0, _08024F68 @ =gUnknown_81D8CBE
str r0, [r6]
b _080250C6
.align 2, 0
_08024F40: .4byte gUnknown_2023D74
_08024F44: .4byte gActiveBattler
_08024F48: .4byte gUnknown_2023DD0
_08024F4C: .4byte gBitTable
_08024F50: .4byte gUnknown_2023ECC
_08024F54: .4byte gSideAffecting
_08024F58: .4byte gBattleMons
_08024F5C: .4byte gSideTimers
_08024F60: .4byte gBattleMoveDamage
_08024F64: .4byte gBattleScripting
_08024F68: .4byte gUnknown_81D8CBE
_08024F6C:
cmp r0, 0x1
bne _08024F7C
ldr r0, _08024F78 @ =gUnknown_81D8C87
str r0, [r6]
b _080250C6
.align 2, 0
_08024F78: .4byte gUnknown_81D8C87
_08024F7C:
ldr r0, _08024F84 @ =gUnknown_81D8CF5
str r0, [r6]
b _080250C6
.align 2, 0
_08024F84: .4byte gUnknown_81D8CF5
_08024F88:
ldr r1, _08025064 @ =gBattleMons
ldr r5, _08025068 @ =gActiveBattler
ldrb r2, [r5]
movs r0, 0x58
muls r0, r2
adds r0, r1
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x36
bne _08024FAE
ldr r1, _0802506C @ =gDisableStructs
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r1, [r0, 0x18]
movs r2, 0x1
orrs r1, r2
strb r1, [r0, 0x18]
_08024FAE:
ldrb r1, [r5]
movs r0, 0
str r0, [sp]
movs r2, 0
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
beq _08024FC4
b _080250C6
_08024FC4:
ldrb r1, [r5]
movs r0, 0
movs r2, 0
bl sub_801BC68
lsls r0, 24
cmp r0, 0
bne _080250C6
ldrb r0, [r5]
bl GetBattlerSide
ldr r1, _08025070 @ =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r1
ldrh r2, [r0]
ldr r1, _08025074 @ =0x0000fdff
ands r1, r2
strh r1, [r0]
movs r4, 0
ldr r0, _08025078 @ =gBattlersCount
ldrb r3, [r0]
cmp r4, r3
bge _08025012
ldr r6, _0802507C @ =gUnknown_2023BDE
ldr r3, _08025080 @ =gUnknown_2023BDA
movs r2, 0xC
adds r1, r0, 0
_08024FFC:
adds r0, r4, r6
ldrb r0, [r0]
ldrb r7, [r5]
cmp r0, r7
bne _0802500A
adds r0, r4, r3
strb r2, [r0]
_0802500A:
adds r4, 0x1
ldrb r0, [r1]
cmp r4, r0
blt _08024FFC
_08025012:
movs r4, 0
ldr r0, _08025078 @ =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
bge _08025046
ldr r6, _08025084 @ =gBattleStruct
ldr r5, _08025064 @ =gBattleMons
_08025020:
lsls r0, r4, 24
lsrs r0, 24
bl GetBattlerSide
lsls r0, 24
lsrs r0, 23
adds r0, 0xA8
ldr r1, [r6]
adds r1, r0
movs r0, 0x58
muls r0, r4
adds r0, r5
ldrh r0, [r0, 0x28]
strh r0, [r1]
adds r4, 0x1
ldr r0, _08025078 @ =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
blt _08025020
_08025046:
ldr r0, _08025088 @ =gUnknown_2023D74
ldr r1, [r0]
ldrb r1, [r1, 0x1]
adds r5, r0, 0
cmp r1, 0x5
bne _080250C0
ldr r0, _0802508C @ =gUnknown_2023DD0
ldr r0, [r0]
lsrs r4, r0, 28
ldr r1, _08025090 @ =gUnknown_2023D6D
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
ldr r2, _08025094 @ =gBitTable
b _080250A6
.align 2, 0
_08025064: .4byte gBattleMons
_08025068: .4byte gActiveBattler
_0802506C: .4byte gDisableStructs
_08025070: .4byte gSideAffecting
_08025074: .4byte 0x0000fdff
_08025078: .4byte gBattlersCount
_0802507C: .4byte gUnknown_2023BDE
_08025080: .4byte gUnknown_2023BDA
_08025084: .4byte gBattleStruct
_08025088: .4byte gUnknown_2023D74
_0802508C: .4byte gUnknown_2023DD0
_08025090: .4byte gUnknown_2023D6D
_08025094: .4byte gBitTable
_08025098:
ldr r0, _080250D4 @ =gBattlersCount
ldrb r3, [r1]
ldrb r0, [r0]
cmp r3, r0
bcs _080250C0
adds r0, r3, 0x1
strb r0, [r1]
_080250A6:
ldrb r0, [r1]
lsls r0, 2
adds r0, r2
ldr r3, [r0]
adds r0, r4, 0
ands r0, r3
cmp r0, 0
beq _08025098
ldr r0, _080250D8 @ =gAbsentBattlerFlags
ldrb r0, [r0]
ands r0, r3
cmp r0, 0
bne _08025098
_080250C0:
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
_080250C6:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080250D4: .4byte gBattlersCount
_080250D8: .4byte gAbsentBattlerFlags
thumb_func_end sub_8024E38
thumb_func_start atk53_trainer_slide
atk53_trainer_slide: @ 80250DC
push {lr}
ldr r0, _080250EC @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
cmp r0, 0
bne _080250F0
movs r0, 0
b _080250F2
.align 2, 0
_080250EC: .4byte gUnknown_2023D74
_080250F0:
movs r0, 0x1
_080250F2:
bl GetBattlerAtPosition
ldr r1, _08025114 @ =gActiveBattler
strb r0, [r1]
movs r0, 0
bl EmitTrainerSlide
ldr r0, _08025114 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r1, _08025118 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08025114: .4byte gActiveBattler
_08025118: .4byte gUnknown_2023D74
thumb_func_end atk53_trainer_slide
thumb_func_start atk54_playse
atk54_playse: @ 802511C
push {r4,r5,lr}
ldr r5, _0802514C @ =gActiveBattler
ldr r0, _08025150 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r5]
ldr r4, _08025154 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r1, [r0, 0x1]
ldrb r0, [r0, 0x2]
lsls r0, 8
orrs r1, r0
movs r0, 0
bl EmitPlaySE
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r0, [r4]
adds r0, 0x3
str r0, [r4]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802514C: .4byte gActiveBattler
_08025150: .4byte sBattler_AI
_08025154: .4byte gUnknown_2023D74
thumb_func_end atk54_playse
thumb_func_start atk55_play_sound
atk55_play_sound: @ 8025158
push {r4,r5,lr}
ldr r5, _08025188 @ =gActiveBattler
ldr r0, _0802518C @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r5]
ldr r4, _08025190 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r1, [r0, 0x1]
ldrb r0, [r0, 0x2]
lsls r0, 8
orrs r1, r0
movs r0, 0
bl Emitcmd44
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r0, [r4]
adds r0, 0x3
str r0, [r4]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08025188: .4byte gActiveBattler
_0802518C: .4byte sBattler_AI
_08025190: .4byte gUnknown_2023D74
thumb_func_end atk55_play_sound
thumb_func_start atk56_playfaintcry
atk56_playfaintcry: @ 8025194
push {r4,r5,lr}
ldr r5, _080251BC @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _080251C0 @ =gActiveBattler
strb r0, [r4]
movs r0, 0
bl EmitFaintingCry
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080251BC: .4byte gUnknown_2023D74
_080251C0: .4byte gActiveBattler
thumb_func_end atk56_playfaintcry
thumb_func_start atk57
atk57: @ 80251C4
push {r4,lr}
movs r0, 0
bl GetBattlerAtPosition
ldr r4, _080251F0 @ =gActiveBattler
strb r0, [r4]
ldr r0, _080251F4 @ =gBattleOutcome
ldrb r1, [r0]
movs r0, 0
bl EmitCmd55
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, _080251F8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080251F0: .4byte gActiveBattler
_080251F4: .4byte gBattleOutcome
_080251F8: .4byte gUnknown_2023D74
thumb_func_end atk57
thumb_func_start atk58_returntoball
atk58_returntoball: @ 80251FC
push {r4,r5,lr}
ldr r5, _08025228 @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _0802522C @ =gActiveBattler
strb r0, [r4]
movs r0, 0
movs r1, 0x1
bl EmitReturnMonToBall
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08025228: .4byte gUnknown_2023D74
_0802522C: .4byte gActiveBattler
thumb_func_end atk58_returntoball
thumb_func_start atk59_handlelearnnewmove
atk59_handlelearnnewmove: @ 8025230
push {r4-r7,lr}
ldr r0, _080252A4 @ =gUnknown_2023D74
ldr r2, [r0]
ldrb r6, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r6, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r6, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r6, r0
ldrb r4, [r2, 0x5]
ldrb r0, [r2, 0x6]
lsls r0, 8
orrs r4, r0
ldrb r0, [r2, 0x7]
lsls r0, 16
orrs r4, r0
ldrb r0, [r2, 0x8]
lsls r0, 24
orrs r4, r0
ldr r0, _080252A8 @ =gBattleStruct
ldr r0, [r0]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _080252AC @ =gPlayerParty
adds r0, r1
ldrb r1, [r2, 0x9]
bl MonTryLearningNewMove
lsls r0, 16
lsrs r5, r0, 16
ldr r0, _080252B0 @ =0x0000fffe
cmp r5, r0
bne _0802529A
adds r7, r5, 0
_0802527E:
ldr r0, _080252A8 @ =gBattleStruct
ldr r0, [r0]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _080252AC @ =gPlayerParty
adds r0, r1
movs r1, 0
bl MonTryLearningNewMove
lsls r0, 16
lsrs r5, r0, 16
cmp r5, r7
beq _0802527E
_0802529A:
cmp r5, 0
bne _080252B4
ldr r0, _080252A4 @ =gUnknown_2023D74
str r4, [r0]
b _0802535C
.align 2, 0
_080252A4: .4byte gUnknown_2023D74
_080252A8: .4byte gBattleStruct
_080252AC: .4byte gPlayerParty
_080252B0: .4byte 0x0000fffe
_080252B4:
ldr r0, _080252C4 @ =0x0000ffff
cmp r5, r0
bne _080252CC
ldr r1, _080252C8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0xA
str r0, [r1]
b _0802535C
.align 2, 0
_080252C4: .4byte 0x0000ffff
_080252C8: .4byte gUnknown_2023D74
_080252CC:
movs r0, 0
bl GetBattlerAtPosition
ldr r1, _08025364 @ =gActiveBattler
strb r0, [r1]
ldr r2, _08025368 @ =gBattlerPartyIndexes
ldrb r3, [r1]
lsls r0, r3, 1
adds r0, r2
ldr r1, _0802536C @ =gBattleStruct
ldr r1, [r1]
ldrh r0, [r0]
ldrb r1, [r1, 0x10]
cmp r0, r1
bne _0802530C
ldr r4, _08025370 @ =gBattleMons
movs r0, 0x58
adds r2, r3, 0
muls r2, r0
adds r0, r4, 0
adds r0, 0x50
adds r0, r2, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 14
ands r0, r1
cmp r0, 0
bne _0802530C
adds r0, r2, r4
adds r1, r5, 0
bl GiveMoveToBattleMon
_0802530C:
ldr r0, _08025374 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08025358
movs r0, 0x2
bl GetBattlerAtPosition
ldr r1, _08025364 @ =gActiveBattler
strb r0, [r1]
ldr r2, _08025368 @ =gBattlerPartyIndexes
ldrb r3, [r1]
lsls r0, r3, 1
adds r0, r2
ldr r1, _0802536C @ =gBattleStruct
ldr r1, [r1]
ldrh r0, [r0]
ldrb r1, [r1, 0x10]
cmp r0, r1
bne _08025358
ldr r4, _08025370 @ =gBattleMons
movs r0, 0x58
adds r2, r3, 0
muls r2, r0
adds r0, r4, 0
adds r0, 0x50
adds r0, r2, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 14
ands r0, r1
cmp r0, 0
bne _08025358
adds r0, r2, r4
adds r1, r5, 0
bl GiveMoveToBattleMon
_08025358:
ldr r0, _08025378 @ =gUnknown_2023D74
str r6, [r0]
_0802535C:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08025364: .4byte gActiveBattler
_08025368: .4byte gBattlerPartyIndexes
_0802536C: .4byte gBattleStruct
_08025370: .4byte gBattleMons
_08025374: .4byte gBattleTypeFlags
_08025378: .4byte gUnknown_2023D74
thumb_func_end atk59_handlelearnnewmove
thumb_func_start sub_802537C
sub_802537C: @ 802537C
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
ldr r0, _080253A0 @ =gActiveBattler
movs r1, 0
strb r1, [r0]
ldr r0, _080253A4 @ =gBattleScripting
ldrb r1, [r0, 0x1F]
adds r2, r0, 0
cmp r1, 0x5
bls _08025396
b _080256D0
_08025396:
lsls r0, r1, 2
ldr r1, _080253A8 @ =_080253AC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080253A0: .4byte gActiveBattler
_080253A4: .4byte gBattleScripting
_080253A8: .4byte _080253AC
.align 2, 0
_080253AC:
.4byte _080253C4
.4byte _080253FC
.4byte _080254A8
.4byte _08025500
.4byte _080256A4
.4byte _080256C4
_080253C4:
movs r4, 0
str r4, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
ldr r0, _080253F0 @ =gUnknown_83FE791
movs r1, 0xE
bl sub_80D87BC
ldr r1, _080253F4 @ =gBattleScripting
ldrb r0, [r1, 0x1F]
adds r0, 0x1
strb r0, [r1, 0x1F]
ldr r0, _080253F8 @ =gUnknown_2023E82
strb r4, [r0, 0x1]
bl sub_802DCB8
b _080256D0
.align 2, 0
_080253F0: .4byte gUnknown_83FE791
_080253F4: .4byte gBattleScripting
_080253F8: .4byte gUnknown_2023E82
_080253FC:
ldr r0, _08025484 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08025422
ldr r4, _08025488 @ =gUnknown_2023E82
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _08025422
movs r0, 0x5
bl PlaySE
bl sub_802DCF8
movs r0, 0
strb r0, [r4, 0x1]
bl sub_802DCB8
_08025422:
ldr r0, _08025484 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08025448
ldr r4, _08025488 @ =gUnknown_2023E82
ldrb r0, [r4, 0x1]
cmp r0, 0
bne _08025448
movs r0, 0x5
bl PlaySE
bl sub_802DCF8
movs r0, 0x1
strb r0, [r4, 0x1]
bl sub_802DCB8
_08025448:
ldr r0, _08025484 @ =gMain
ldrh r1, [r0, 0x2E]
movs r5, 0x1
adds r0, r5, 0
ands r0, r1
cmp r0, 0
beq _0802548C
movs r0, 0x5
bl PlaySE
ldr r0, _08025488 @ =gUnknown_2023E82
ldrb r4, [r0, 0x1]
cmp r4, 0
bne _0802549C
str r5, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
movs r0, 0x1
negs r0, r0
str r4, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
b _080254D8
.align 2, 0
_08025484: .4byte gMain
_08025488: .4byte gUnknown_2023E82
_0802548C:
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _08025496
b _080256D0
_08025496:
movs r0, 0x5
bl PlaySE
_0802549C:
ldr r1, _080254A4 @ =gBattleScripting
movs r0, 0x4
strb r0, [r1, 0x1F]
b _080256D0
.align 2, 0
_080254A4: .4byte gBattleScripting
_080254A8:
ldr r0, _080254E4 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _080254B6
b _080256D0
_080254B6:
bl FreeAllWindowBuffers
ldr r0, _080254E8 @ =gPlayerParty
ldr r1, _080254EC @ =gBattleStruct
ldr r1, [r1]
ldrb r1, [r1, 0x10]
ldr r2, _080254F0 @ =gPlayerPartyCount
ldrb r2, [r2]
subs r2, 0x1
lsls r2, 24
lsrs r2, 24
ldr r3, _080254F4 @ =sub_8077764
ldr r4, _080254F8 @ =gMoveToLearn
ldrh r4, [r4]
str r4, [sp]
bl sub_8134738
_080254D8:
ldr r1, _080254FC @ =gBattleScripting
ldrb r0, [r1, 0x1F]
adds r0, 0x1
strb r0, [r1, 0x1F]
b _080256D0
.align 2, 0
_080254E4: .4byte gPaletteFade
_080254E8: .4byte gPlayerParty
_080254EC: .4byte gBattleStruct
_080254F0: .4byte gPlayerPartyCount
_080254F4: .4byte sub_8077764
_080254F8: .4byte gMoveToLearn
_080254FC: .4byte gBattleScripting
_08025500:
ldr r0, _0802552C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802550E
b _080256D0
_0802550E:
ldr r0, _08025530 @ =gMain
ldr r1, [r0, 0x4]
ldr r0, _08025534 @ =sub_8011100
cmp r1, r0
beq _0802551A
b _080256D0
_0802551A:
bl sub_8138B2C
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x4
bne _0802553C
ldr r0, _08025538 @ =gBattleScripting
strb r5, [r0, 0x1F]
b _080256D0
.align 2, 0
_0802552C: .4byte gPaletteFade
_08025530: .4byte gMain
_08025534: .4byte sub_8011100
_08025538: .4byte gBattleScripting
_0802553C:
ldr r6, _08025578 @ =gBattleStruct
ldr r0, [r6]
ldrb r0, [r0, 0x10]
movs r1, 0x64
mov r8, r1
mov r1, r8
muls r1, r0
adds r0, r1, 0
ldr r7, _0802557C @ =gPlayerParty
adds r0, r7
adds r1, r5, 0
adds r1, 0xD
bl GetMonData
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
bl IsHMMove2
cmp r0, 0
beq _0802558C
ldr r0, _08025580 @ =0x0000013f
ldr r1, _08025584 @ =gActiveBattler
ldrb r1, [r1]
bl PrepareStringBattle
ldr r1, _08025588 @ =gBattleScripting
movs r0, 0x5
strb r0, [r1, 0x1F]
b _080256D0
.align 2, 0
_08025578: .4byte gBattleStruct
_0802557C: .4byte gPlayerParty
_08025580: .4byte 0x0000013f
_08025584: .4byte gActiveBattler
_08025588: .4byte gBattleScripting
_0802558C:
ldr r3, _08025680 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
ldr r1, _08025684 @ =gBattleTextBuff2
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
strb r4, [r1, 0x2]
lsrs r0, r4, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r0, [r6]
ldrb r0, [r0, 0x10]
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r0, r7
adds r1, r5, 0
bl RemoveMonPPBonus
ldr r0, [r6]
ldrb r0, [r0, 0x10]
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r0, r7
ldr r7, _08025688 @ =gMoveToLearn
ldrh r1, [r7]
adds r2, r5, 0
bl SetMonMoveSlot
ldr r0, _0802568C @ =gBattlerPartyIndexes
ldr r1, [r6]
ldrh r0, [r0]
ldrb r1, [r1, 0x10]
cmp r0, r1
bne _08025622
ldr r4, _08025690 @ =gBattleMons
ldr r0, [r4, 0x50]
movs r1, 0x80
lsls r1, 14
ands r0, r1
cmp r0, 0
bne _08025622
ldr r0, _08025694 @ =gDisableStructs
ldrb r1, [r0, 0x18]
lsrs r1, 4
ldr r2, _08025698 @ =gBitTable
lsls r0, r5, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _08025622
adds r0, r4, 0
adds r1, r5, 0
bl RemoveBattleMonPPBonus
ldrh r1, [r7]
adds r0, r4, 0
adds r2, r5, 0
bl SetBattleMonMoveSlot
_08025622:
ldr r0, _0802569C @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080256D0
ldr r2, _0802568C @ =gBattlerPartyIndexes
ldr r0, _080256A0 @ =gBattleStruct
ldr r1, [r0]
ldrh r0, [r2, 0x4]
ldrb r1, [r1, 0x10]
cmp r0, r1
bne _080256D0
ldr r4, _08025690 @ =gBattleMons
movs r1, 0x80
lsls r1, 1
adds r0, r4, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 14
ands r0, r1
cmp r0, 0
bne _080256D0
ldr r0, _08025694 @ =gDisableStructs
adds r0, 0x50
ldrb r1, [r0]
lsrs r1, 4
ldr r2, _08025698 @ =gBitTable
lsls r0, r5, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _080256D0
adds r4, 0xB0
adds r0, r4, 0
adds r1, r5, 0
bl RemoveBattleMonPPBonus
ldr r0, _08025688 @ =gMoveToLearn
ldrh r1, [r0]
adds r0, r4, 0
adds r2, r5, 0
bl SetBattleMonMoveSlot
b _080256D0
.align 2, 0
_08025680: .4byte gUnknown_2023D74
_08025684: .4byte gBattleTextBuff2
_08025688: .4byte gMoveToLearn
_0802568C: .4byte gBattlerPartyIndexes
_08025690: .4byte gBattleMons
_08025694: .4byte gDisableStructs
_08025698: .4byte gBitTable
_0802569C: .4byte gBattleTypeFlags
_080256A0: .4byte gBattleStruct
_080256A4:
movs r0, 0x1
str r0, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
ldr r1, _080256C0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _080256D0
.align 2, 0
_080256C0: .4byte gUnknown_2023D74
_080256C4:
ldr r0, _080256DC @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _080256D0
movs r0, 0x2
strb r0, [r2, 0x1F]
_080256D0:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080256DC: .4byte gUnknown_2023BC8
thumb_func_end sub_802537C
thumb_func_start sub_80256E0
sub_80256E0: @ 80256E0
push {r4,r5,lr}
sub sp, 0x4
ldr r5, _080256F4 @ =gBattleScripting
ldrb r4, [r5, 0x1F]
cmp r4, 0
beq _080256F8
cmp r4, 0x1
beq _08025728
b _0802580E
.align 2, 0
_080256F4: .4byte gBattleScripting
_080256F8:
str r4, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
ldr r0, _08025720 @ =gUnknown_83FE791
movs r1, 0xE
bl sub_80D87BC
ldrb r0, [r5, 0x1F]
adds r0, 0x1
strb r0, [r5, 0x1F]
ldr r0, _08025724 @ =gUnknown_2023E82
strb r4, [r0, 0x1]
bl sub_802DCB8
b _0802580E
.align 2, 0
_08025720: .4byte gUnknown_83FE791
_08025724: .4byte gUnknown_2023E82
_08025728:
ldr r0, _080257AC @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0802574E
ldr r4, _080257B0 @ =gUnknown_2023E82
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _0802574E
movs r0, 0x5
bl PlaySE
bl sub_802DCF8
movs r0, 0
strb r0, [r4, 0x1]
bl sub_802DCB8
_0802574E:
ldr r0, _080257AC @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08025774
ldr r4, _080257B0 @ =gUnknown_2023E82
ldrb r0, [r4, 0x1]
cmp r0, 0
bne _08025774
movs r0, 0x5
bl PlaySE
bl sub_802DCF8
movs r0, 0x1
strb r0, [r4, 0x1]
bl sub_802DCB8
_08025774:
ldr r0, _080257AC @ =gMain
ldrh r1, [r0, 0x2E]
movs r4, 0x1
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _080257D8
movs r0, 0x5
bl PlaySE
ldr r0, _080257B0 @ =gUnknown_2023E82
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _080257B8
ldr r3, _080257B4 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _080257C0
.align 2, 0
_080257AC: .4byte gMain
_080257B0: .4byte gUnknown_2023E82
_080257B4: .4byte gUnknown_2023D74
_080257B8:
ldr r1, _080257D4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_080257C0:
movs r0, 0x1
str r0, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
b _0802580E
.align 2, 0
_080257D4: .4byte gUnknown_2023D74
_080257D8:
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0802580E
movs r0, 0x5
bl PlaySE
ldr r3, _08025818 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
str r4, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
_0802580E:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08025818: .4byte gUnknown_2023D74
thumb_func_end sub_80256E0
thumb_func_start sub_802581C
sub_802581C: @ 802581C
push {r4,lr}
ldr r4, _08025888 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r2, _0802588C @ =gActiveBattler
strb r0, [r2]
ldr r0, _08025890 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _080258A0
ldr r0, _08025894 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 1
ands r0, r1
cmp r0, 0
beq _0802586E
ldr r1, _08025898 @ =gBattleMons
ldrb r2, [r2]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
cmp r0, 0
beq _0802586E
ldr r0, _0802589C @ =gDisableStructs
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
cmp r0, 0
bne _080258A0
_0802586E:
movs r0, 0
bl EmitHitAnimation
ldr r0, _0802588C @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r1, _08025888 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
b _080258A6
.align 2, 0
_08025888: .4byte gUnknown_2023D74
_0802588C: .4byte gActiveBattler
_08025890: .4byte gMoveResultFlags
_08025894: .4byte gUnknown_2023DD0
_08025898: .4byte gBattleMons
_0802589C: .4byte gDisableStructs
_080258A0:
ldr r0, [r4]
adds r0, 0x2
str r0, [r4]
_080258A6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_802581C
thumb_func_start sub_80258AC
sub_80258AC: @ 80258AC
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r6, 0
movs r5, 0
ldr r0, _080258F0 @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0x1
beq _080258C0
b _080259FA
_080258C0:
ldr r0, _080258F4 @ =gTrainerBattleOpponent_A
ldrh r2, [r0]
movs r1, 0x80
lsls r1, 3
cmp r2, r1
bne _08025904
ldr r0, _080258F8 @ =gBattleResources
ldr r0, [r0]
ldr r0, [r0]
adds r0, 0x94
ldrb r2, [r0]
ldr r0, _080258FC @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x4A
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r4, r2, 0
muls r4, r0
ldr r0, _08025900 @ =gSaveBlock1Ptr
mov r8, r0
b _080259E8
.align 2, 0
_080258F0: .4byte gBattleOutcome
_080258F4: .4byte gTrainerBattleOpponent_A
_080258F8: .4byte gBattleResources
_080258FC: .4byte gBattleStruct
_08025900: .4byte gSaveBlock1Ptr
_08025904:
ldr r2, _08025920 @ =gTrainers
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r3, r0, 3
adds r4, r3, r2
ldrb r1, [r4]
cmp r1, 0x1
beq _0802595A
cmp r1, 0x1
bgt _08025924
cmp r1, 0
beq _0802592E
b _08025970
.align 2, 0
_08025920: .4byte gTrainers
_08025924:
cmp r1, 0x2
beq _08025944
cmp r1, 0x3
beq _0802595A
b _08025970
_0802592E:
adds r0, r2, 0
adds r0, 0x24
adds r0, r3, r0
ldr r1, [r0]
adds r0, r4, 0
adds r0, 0x20
ldrb r0, [r0]
lsls r0, 3
adds r0, r1
subs r0, 0x8
b _0802596E
_08025944:
adds r0, r2, 0
adds r0, 0x24
adds r0, r3, r0
ldr r1, [r0]
adds r0, r4, 0
adds r0, 0x20
ldrb r0, [r0]
lsls r0, 3
adds r0, r1
subs r0, 0x8
b _0802596E
_0802595A:
adds r0, r2, 0
adds r0, 0x24
adds r0, r3, r0
ldr r1, [r0]
adds r0, r4, 0
adds r0, 0x20
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
subs r0, 0x10
_0802596E:
ldrb r5, [r0, 0x2]
_08025970:
ldr r0, _080259CC @ =gUnknown_824F220
lsls r1, r6, 2
adds r3, r1, r0
ldrb r1, [r3]
ldr r7, _080259D0 @ =gBattleStruct
mov r12, r0
lsls r4, r5, 2
ldr r5, _080259D4 @ =gBattleTypeFlags
ldr r0, _080259D8 @ =gSaveBlock1Ptr
mov r8, r0
cmp r1, 0xFF
beq _080259AA
ldr r2, _080259DC @ =gTrainers
ldr r0, _080259E0 @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrb r2, [r0, 0x1]
adds r1, r3, 0
_0802599A:
ldrb r0, [r1]
cmp r0, r2
beq _080259AA
adds r1, 0x4
adds r6, 0x1
ldrb r0, [r1]
cmp r0, 0xFF
bne _0802599A
_080259AA:
ldr r0, [r7]
adds r0, 0x4A
ldrb r0, [r0]
adds r3, r4, 0
muls r3, r0
lsls r0, r6, 2
add r0, r12
ldrb r2, [r0, 0x1]
ldr r0, [r5]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080259E4
lsls r0, r2, 1
adds r4, r3, 0
muls r4, r0
b _080259E8
.align 2, 0
_080259CC: .4byte gUnknown_824F220
_080259D0: .4byte gBattleStruct
_080259D4: .4byte gBattleTypeFlags
_080259D8: .4byte gSaveBlock1Ptr
_080259DC: .4byte gTrainers
_080259E0: .4byte gTrainerBattleOpponent_A
_080259E4:
adds r4, r3, 0
muls r4, r2
_080259E8:
mov r1, r8
ldr r0, [r1]
movs r1, 0xA4
lsls r1, 2
adds r0, r1
adds r1, r4, 0
bl AddMoney
b _08025A00
_080259FA:
bl sub_8054C04
adds r4, r0, 0
_08025A00:
ldr r1, _08025A40 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x1
strb r0, [r1, 0x1]
movs r0, 0x4
strb r0, [r1, 0x2]
movs r0, 0x5
strb r0, [r1, 0x3]
strb r4, [r1, 0x4]
movs r0, 0xFF
lsls r0, 8
ands r0, r4
lsrs r0, 8
strb r0, [r1, 0x5]
movs r0, 0xFF
lsls r0, 16
ands r0, r4
lsrs r0, 16
strb r0, [r1, 0x6]
lsrs r0, r4, 24
strb r0, [r1, 0x7]
movs r0, 0xFF
strb r0, [r1, 0x8]
cmp r4, 0
beq _08025A48
ldr r1, _08025A44 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08025A62
.align 2, 0
_08025A40: .4byte gBattleTextBuff1
_08025A44: .4byte gUnknown_2023D74
_08025A48:
ldr r3, _08025A6C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_08025A62:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08025A6C: .4byte gUnknown_2023D74
thumb_func_end sub_80258AC
thumb_func_start atk5E
atk5E: @ 8025A70
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r4, _08025A94 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r6, _08025A98 @ =gActiveBattler
strb r0, [r6]
ldr r5, _08025A9C @ =gUnknown_2023E82
ldrb r0, [r5]
mov r8, r4
cmp r0, 0
beq _08025AA0
cmp r0, 0x1
beq _08025AB8
b _08025B0C
.align 2, 0
_08025A94: .4byte gUnknown_2023D74
_08025A98: .4byte gActiveBattler
_08025A9C: .4byte gUnknown_2023E82
_08025AA0:
movs r0, 0
movs r1, 0
movs r2, 0
bl BtlController_EmitGetMonData
ldrb r0, [r6]
bl MarkBufferBankForExecution
ldrb r0, [r5]
adds r0, 0x1
strb r0, [r5]
b _08025B0C
_08025AB8:
ldr r0, _08025B18 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _08025B0C
ldrb r0, [r6]
lsls r0, 9
ldr r1, _08025B1C @ =gUnknown_20233C8
adds r0, r1
mov r12, r0
movs r2, 0
adds r4, r6, 0
movs r5, 0x58
ldr r6, _08025B20 @ =gUnknown_2023C08
adds r7, r6, 0
subs r7, 0x18
mov r3, r12
adds r3, 0xC
_08025ADA:
lsls r1, r2, 1
ldrb r0, [r4]
muls r0, r5
adds r1, r0
adds r1, r7
ldrh r0, [r3]
strh r0, [r1]
ldrb r0, [r4]
adds r1, r0, 0
muls r1, r5
adds r1, r2, r1
adds r1, r6
mov r0, r12
adds r0, 0x24
adds r0, r2
ldrb r0, [r0]
strb r0, [r1]
adds r3, 0x2
adds r2, 0x1
cmp r2, 0x3
ble _08025ADA
mov r1, r8
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
_08025B0C:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08025B18: .4byte gUnknown_2023BC8
_08025B1C: .4byte gUnknown_20233C8
_08025B20: .4byte gUnknown_2023C08
thumb_func_end atk5E
thumb_func_start atk5F
atk5F: @ 8025B24
push {lr}
ldr r0, _08025B4C @ =gActiveBattler
ldr r2, _08025B50 @ =sBattler_AI
ldrb r3, [r2]
strb r3, [r0]
ldr r1, _08025B54 @ =gBattlerTarget
ldrb r0, [r1]
strb r0, [r2]
strb r3, [r1]
ldr r2, _08025B58 @ =gUnknown_2023DD0
ldr r1, [r2]
movs r3, 0x80
lsls r3, 5
adds r0, r1, 0
ands r0, r3
cmp r0, 0
beq _08025B60
ldr r0, _08025B5C @ =0xffffefff
ands r1, r0
b _08025B62
.align 2, 0
_08025B4C: .4byte gActiveBattler
_08025B50: .4byte sBattler_AI
_08025B54: .4byte gBattlerTarget
_08025B58: .4byte gUnknown_2023DD0
_08025B5C: .4byte 0xffffefff
_08025B60:
orrs r1, r3
_08025B62:
str r1, [r2]
ldr r1, _08025B70 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08025B70: .4byte gUnknown_2023D74
thumb_func_end atk5F
thumb_func_start atk60_incrementgamestat
atk60_incrementgamestat: @ 8025B74
push {lr}
ldr r0, _08025B9C @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08025B8E
ldr r0, _08025BA0 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl IncrementGameStat
_08025B8E:
ldr r1, _08025BA0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08025B9C: .4byte sBattler_AI
_08025BA0: .4byte gUnknown_2023D74
thumb_func_end atk60_incrementgamestat
thumb_func_start atk61_drawpartystatussummary
atk61_drawpartystatussummary: @ 8025BA4
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x30
ldr r0, _08025C08 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _08025C58
ldr r0, _08025C0C @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r1, _08025C10 @ =gActiveBattler
strb r0, [r1]
ldrb r0, [r1]
bl GetBattlerSide
lsls r0, 24
ldr r1, _08025C14 @ =gEnemyParty
mov r8, r1
cmp r0, 0
bne _08025BD6
ldr r0, _08025C18 @ =gPlayerParty
mov r8, r0
_08025BD6:
movs r7, 0
add r6, sp, 0x4
mov r5, sp
_08025BDC:
movs r0, 0x64
muls r0, r7
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
cmp r0, 0
beq _08025C00
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
movs r1, 0xCE
lsls r1, 1
cmp r0, r1
bne _08025C20
_08025C00:
ldr r0, _08025C1C @ =0x0000ffff
strh r0, [r5]
movs r0, 0
b _08025C32
.align 2, 0
_08025C08: .4byte gUnknown_2023BC8
_08025C0C: .4byte gUnknown_2023D74
_08025C10: .4byte gActiveBattler
_08025C14: .4byte gEnemyParty
_08025C18: .4byte gPlayerParty
_08025C1C: .4byte 0x0000ffff
_08025C20:
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
strh r0, [r5]
adds r0, r4, 0
movs r1, 0x37
bl GetMonData
_08025C32:
str r0, [r6]
adds r6, 0x8
adds r5, 0x8
adds r7, 0x1
cmp r7, 0x5
ble _08025BDC
movs r0, 0
mov r1, sp
movs r2, 0x1
bl EmitDrawPartyStatusSummary
ldr r0, _08025C64 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r1, _08025C68 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
_08025C58:
add sp, 0x30
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08025C64: .4byte gActiveBattler
_08025C68: .4byte gUnknown_2023D74
thumb_func_end atk61_drawpartystatussummary
thumb_func_start atk62
atk62: @ 8025C6C
push {r4,r5,lr}
ldr r5, _08025C94 @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _08025C98 @ =gActiveBattler
strb r0, [r4]
movs r0, 0
bl EmitCmd49
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08025C94: .4byte gUnknown_2023D74
_08025C98: .4byte gActiveBattler
thumb_func_end atk62
thumb_func_start atk63_jumptorandomattack
atk63_jumptorandomattack: @ 8025C9C
push {r4,lr}
ldr r0, _08025CB4 @ =gUnknown_2023D74
ldr r1, [r0]
ldrb r1, [r1, 0x1]
adds r4, r0, 0
cmp r1, 0
beq _08025CC0
ldr r0, _08025CB8 @ =gCurrentMove
ldr r1, _08025CBC @ =gUnknown_2023D4E
ldrh r1, [r1]
strh r1, [r0]
b _08025CCE
.align 2, 0
_08025CB4: .4byte gUnknown_2023D74
_08025CB8: .4byte gCurrentMove
_08025CBC: .4byte gUnknown_2023D4E
_08025CC0:
ldr r2, _08025CEC @ =gUnknown_2023D4C
ldr r1, _08025CF0 @ =gCurrentMove
ldr r0, _08025CF4 @ =gUnknown_2023D4E
ldrh r0, [r0]
strh r0, [r1]
strh r0, [r2]
adds r0, r1, 0
_08025CCE:
ldr r3, _08025CF8 @ =gUnknown_81D65A8
ldr r2, _08025CFC @ =gBattleMoves
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08025CEC: .4byte gUnknown_2023D4C
_08025CF0: .4byte gCurrentMove
_08025CF4: .4byte gUnknown_2023D4E
_08025CF8: .4byte gUnknown_81D65A8
_08025CFC: .4byte gBattleMoves
thumb_func_end atk63_jumptorandomattack
thumb_func_start atk64_statusanimation
atk64_statusanimation: @ 8025D00
push {r4,lr}
ldr r0, _08025D70 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _08025D68
ldr r0, _08025D74 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _08025D78 @ =gActiveBattler
strb r0, [r4]
ldr r1, _08025D7C @ =gStatuses3
ldrb r2, [r4]
lsls r0, r2, 2
adds r0, r1
ldr r0, [r0]
ldr r1, _08025D80 @ =0x000400c0
ands r0, r1
cmp r0, 0
bne _08025D60
ldr r0, _08025D84 @ =gDisableStructs
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
cmp r0, 0
bne _08025D60
ldr r0, _08025D88 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
ands r0, r1
cmp r0, 0
bne _08025D60
ldr r1, _08025D8C @ =gBattleMons
movs r0, 0x58
muls r0, r2
adds r1, 0x4C
adds r0, r1
ldr r2, [r0]
movs r0, 0
movs r1, 0
bl EmitStatusAnimation
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08025D60:
ldr r1, _08025D74 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
_08025D68:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08025D70: .4byte gUnknown_2023BC8
_08025D74: .4byte gUnknown_2023D74
_08025D78: .4byte gActiveBattler
_08025D7C: .4byte gStatuses3
_08025D80: .4byte 0x000400c0
_08025D84: .4byte gDisableStructs
_08025D88: .4byte gUnknown_2023DD0
_08025D8C: .4byte gBattleMons
thumb_func_end atk64_statusanimation
thumb_func_start atk65_status2animation
atk65_status2animation: @ 8025D90
push {r4,r5,lr}
ldr r0, _08025E18 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _08025E10
ldr r4, _08025E1C @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r5, _08025E20 @ =gActiveBattler
strb r0, [r5]
ldr r1, [r4]
ldrb r3, [r1, 0x2]
ldrb r0, [r1, 0x3]
lsls r0, 8
orrs r3, r0
ldrb r0, [r1, 0x4]
lsls r0, 16
orrs r3, r0
ldrb r0, [r1, 0x5]
lsls r0, 24
orrs r3, r0
ldr r1, _08025E24 @ =gStatuses3
ldrb r2, [r5]
lsls r0, r2, 2
adds r0, r1
ldr r0, [r0]
ldr r1, _08025E28 @ =0x000400c0
ands r0, r1
cmp r0, 0
bne _08025E08
ldr r0, _08025E2C @ =gDisableStructs
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
cmp r0, 0
bne _08025E08
ldr r0, _08025E30 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
ands r0, r1
cmp r0, 0
bne _08025E08
ldr r1, _08025E34 @ =gBattleMons
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r2, [r0]
ands r2, r3
movs r0, 0
movs r1, 0x1
bl EmitStatusAnimation
ldrb r0, [r5]
bl MarkBufferBankForExecution
_08025E08:
ldr r1, _08025E1C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x6
str r0, [r1]
_08025E10:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08025E18: .4byte gUnknown_2023BC8
_08025E1C: .4byte gUnknown_2023D74
_08025E20: .4byte gActiveBattler
_08025E24: .4byte gStatuses3
_08025E28: .4byte 0x000400c0
_08025E2C: .4byte gDisableStructs
_08025E30: .4byte gUnknown_2023DD0
_08025E34: .4byte gBattleMons
thumb_func_end atk65_status2animation
thumb_func_start atk66_chosenstatusanimation
atk66_chosenstatusanimation: @ 8025E38
push {r4,r5,lr}
ldr r0, _08025EB0 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
bne _08025EAA
ldr r4, _08025EB4 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r5, _08025EB8 @ =gActiveBattler
strb r0, [r5]
ldr r4, [r4]
ldrb r2, [r4, 0x3]
ldrb r0, [r4, 0x4]
lsls r0, 8
orrs r2, r0
ldrb r0, [r4, 0x5]
lsls r0, 16
orrs r2, r0
ldrb r0, [r4, 0x6]
lsls r0, 24
orrs r2, r0
ldr r1, _08025EBC @ =gStatuses3
ldrb r3, [r5]
lsls r0, r3, 2
adds r0, r1
ldr r0, [r0]
ldr r1, _08025EC0 @ =0x000400c0
ands r0, r1
cmp r0, 0
bne _08025EA2
ldr r0, _08025EC4 @ =gDisableStructs
lsls r1, r3, 3
subs r1, r3
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
cmp r0, 0
bne _08025EA2
ldr r0, _08025EC8 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
ands r0, r1
cmp r0, 0
bne _08025EA2
ldrb r1, [r4, 0x2]
movs r0, 0
bl EmitStatusAnimation
ldrb r0, [r5]
bl MarkBufferBankForExecution
_08025EA2:
ldr r1, _08025EB4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x7
str r0, [r1]
_08025EAA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08025EB0: .4byte gUnknown_2023BC8
_08025EB4: .4byte gUnknown_2023D74
_08025EB8: .4byte gActiveBattler
_08025EBC: .4byte gStatuses3
_08025EC0: .4byte 0x000400c0
_08025EC4: .4byte gDisableStructs
_08025EC8: .4byte gUnknown_2023DD0
thumb_func_end atk66_chosenstatusanimation
thumb_func_start atk67_yesnobox
atk67_yesnobox: @ 8025ECC
push {r4,r5,lr}
sub sp, 0x4
ldr r5, _08025EE0 @ =gUnknown_2023E82
ldrb r4, [r5]
cmp r4, 0
beq _08025EE4
cmp r4, 0x1
beq _08025F0C
b _08025F9A
.align 2, 0
_08025EE0: .4byte gUnknown_2023E82
_08025EE4:
str r4, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
ldr r0, _08025F08 @ =gUnknown_83FE791
movs r1, 0xE
bl sub_80D87BC
ldrb r0, [r5]
adds r0, 0x1
strb r0, [r5]
strb r4, [r5, 0x1]
bl sub_802DCB8
b _08025F9A
.align 2, 0
_08025F08: .4byte gUnknown_83FE791
_08025F0C:
ldr r0, _08025F6C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08025F30
ldrb r0, [r5, 0x1]
cmp r0, 0
beq _08025F30
movs r0, 0x5
bl PlaySE
bl sub_802DCF8
movs r0, 0
strb r0, [r5, 0x1]
bl sub_802DCB8
_08025F30:
ldr r0, _08025F6C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08025F56
ldr r4, _08025F70 @ =gUnknown_2023E82
ldrb r0, [r4, 0x1]
cmp r0, 0
bne _08025F56
movs r0, 0x5
bl PlaySE
bl sub_802DCF8
movs r0, 0x1
strb r0, [r4, 0x1]
bl sub_802DCB8
_08025F56:
ldr r0, _08025F6C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08025F74
ldr r0, _08025F70 @ =gUnknown_2023E82
movs r4, 0x1
strb r4, [r0, 0x1]
b _08025F7E
.align 2, 0
_08025F6C: .4byte gMain
_08025F70: .4byte gUnknown_2023E82
_08025F74:
movs r4, 0x1
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _08025F9A
_08025F7E:
movs r0, 0x5
bl PlaySE
str r4, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
ldr r1, _08025FA4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_08025F9A:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08025FA4: .4byte gUnknown_2023D74
thumb_func_end atk67_yesnobox
thumb_func_start atk68_cancelallactions
atk68_cancelallactions: @ 8025FA8
push {r4,r5,lr}
movs r1, 0
ldr r2, _08025FD4 @ =gBattlersCount
ldr r5, _08025FD8 @ =gUnknown_2023D74
ldrb r0, [r2]
cmp r1, r0
bge _08025FC6
ldr r4, _08025FDC @ =gUnknown_2023BDA
movs r3, 0xC
_08025FBA:
adds r0, r1, r4
strb r3, [r0]
adds r1, 0x1
ldrb r0, [r2]
cmp r1, r0
blt _08025FBA
_08025FC6:
ldr r0, [r5]
adds r0, 0x1
str r0, [r5]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08025FD4: .4byte gBattlersCount
_08025FD8: .4byte gUnknown_2023D74
_08025FDC: .4byte gUnknown_2023BDA
thumb_func_end atk68_cancelallactions
thumb_func_start atk69_adjustsetdamage
atk69_adjustsetdamage: @ 8025FE0
push {r4-r7,lr}
ldr r7, _08026008 @ =gBattleMons
ldr r6, _0802600C @ =gBattlerTarget
ldrb r2, [r6]
movs r5, 0x58
adds r0, r2, 0
muls r0, r5
adds r1, r0, r7
ldrh r0, [r1, 0x2E]
cmp r0, 0xAF
bne _08026014
ldr r1, _08026010 @ =gEnigmaBerries
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r4, [r0, 0x7]
ldrb r6, [r0, 0x1A]
b _0802602E
.align 2, 0
_08026008: .4byte gBattleMons
_0802600C: .4byte gBattlerTarget
_08026010: .4byte gEnigmaBerries
_08026014:
ldrh r0, [r1, 0x2E]
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r6]
muls r0, r5
adds r0, r7
ldrh r0, [r0, 0x2E]
bl ItemId_GetHoldEffectParam
lsls r0, 24
lsrs r6, r0, 24
_0802602E:
ldr r1, _080260F0 @ =gPotentialItemEffectBattler
ldr r5, _080260F4 @ =gBattlerTarget
ldrb r0, [r5]
strb r0, [r1]
cmp r4, 0x27
bne _0802606C
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
cmp r0, r6
bcs _0802606C
ldrb r0, [r5]
movs r1, 0x27
bl sub_80C7208
ldr r2, _080260F8 @ =gUnknown_2023ECC
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
_0802606C:
ldr r2, _080260FC @ =gBattleMons
ldr r3, _080260F4 @ =gBattlerTarget
ldrb r4, [r3]
movs r0, 0x58
muls r0, r4
adds r1, r2, 0
adds r1, 0x50
adds r0, r1
ldr r1, [r0]
movs r0, 0x80
lsls r0, 17
ands r1, r0
adds r5, r2, 0
cmp r1, 0
bne _0802613C
ldr r2, _08026100 @ =gBattleMoves
ldr r0, _08026104 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0x65
beq _080260BE
ldr r0, _08026108 @ =gUnknown_2023E8C
lsls r1, r4, 4
adds r1, r0
ldrb r0, [r1]
lsls r0, 30
cmp r0, 0
blt _080260BE
ldr r0, _080260F8 @ =gUnknown_2023ECC
lsls r1, r4, 2
adds r1, r4
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
lsrs r0, 7
cmp r0, 0
beq _0802613C
_080260BE:
ldrb r0, [r3]
movs r4, 0x58
muls r0, r4
adds r0, r5
ldrh r1, [r0, 0x28]
ldr r2, _0802610C @ =gBattleMoveDamage
ldr r0, [r2]
cmp r1, r0
bgt _0802613C
subs r0, r1, 0x1
str r0, [r2]
ldr r1, _08026108 @ =gUnknown_2023E8C
ldrb r3, [r3]
lsls r0, r3, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 30
cmp r0, 0
bge _08026114
ldr r0, _08026110 @ =gMoveResultFlags
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
strb r1, [r0]
b _0802613C
.align 2, 0
_080260F0: .4byte gPotentialItemEffectBattler
_080260F4: .4byte gBattlerTarget
_080260F8: .4byte gUnknown_2023ECC
_080260FC: .4byte gBattleMons
_08026100: .4byte gBattleMoves
_08026104: .4byte gCurrentMove
_08026108: .4byte gUnknown_2023E8C
_0802610C: .4byte gBattleMoveDamage
_08026110: .4byte gMoveResultFlags
_08026114:
ldr r0, _0802614C @ =gUnknown_2023ECC
lsls r1, r3, 2
adds r1, r3
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
lsrs r0, 7
cmp r0, 0
beq _0802613C
ldr r2, _08026150 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldr r1, _08026154 @ =gUnknown_2023D68
adds r0, r3, 0
muls r0, r4
adds r0, r5
ldrh r0, [r0, 0x2E]
strh r0, [r1]
_0802613C:
ldr r1, _08026158 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802614C: .4byte gUnknown_2023ECC
_08026150: .4byte gMoveResultFlags
_08026154: .4byte gUnknown_2023D68
_08026158: .4byte gUnknown_2023D74
thumb_func_end atk69_adjustsetdamage
thumb_func_start atk6A_removeitem
atk6A_removeitem: @ 802615C
push {r4-r6,lr}
sub sp, 0x4
ldr r6, _080261BC @ =gUnknown_2023D74
ldr r0, [r6]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r5, _080261C0 @ =gActiveBattler
strb r0, [r5]
ldr r1, _080261C4 @ =gBattleStruct
ldrb r4, [r5]
lsls r0, r4, 1
adds r0, 0xB8
ldr r1, [r1]
adds r1, r0
ldr r2, _080261C8 @ =gBattleMons
movs r3, 0x58
adds r0, r4, 0
muls r0, r3
adds r0, r2
ldrh r0, [r0, 0x2E]
strh r0, [r1]
ldrb r0, [r5]
muls r0, r3
adds r0, r2
movs r1, 0
strh r1, [r0, 0x2E]
ldrb r0, [r5]
muls r0, r3
adds r2, 0x2E
adds r0, r2
str r0, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r0, [r6]
adds r0, 0x2
str r0, [r6]
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080261BC: .4byte gUnknown_2023D74
_080261C0: .4byte gActiveBattler
_080261C4: .4byte gBattleStruct
_080261C8: .4byte gBattleMons
thumb_func_end atk6A_removeitem
thumb_func_start atk6B_atknameinbuff1
atk6B_atknameinbuff1: @ 80261CC
ldr r1, _080261F8 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x7
strb r0, [r1, 0x1]
ldr r2, _080261FC @ =sBattler_AI
ldrb r0, [r2]
strb r0, [r1, 0x2]
ldr r3, _08026200 @ =gBattlerPartyIndexes
ldrb r0, [r2]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _08026204 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_080261F8: .4byte gBattleTextBuff1
_080261FC: .4byte sBattler_AI
_08026200: .4byte gBattlerPartyIndexes
_08026204: .4byte gUnknown_2023D74
thumb_func_end atk6B_atknameinbuff1
thumb_func_start atk6C_drawlvlupbox
atk6C_drawlvlupbox: @ 8026208
push {r4,lr}
sub sp, 0x4
ldr r0, _08026224 @ =gBattleScripting
ldrb r1, [r0, 0x1E]
adds r4, r0, 0
cmp r1, 0
bne _0802622C
bl IsMonGettingExpSentOut
cmp r0, 0
beq _08026228
movs r0, 0x3
b _0802622A
.align 2, 0
_08026224: .4byte gBattleScripting
_08026228:
movs r0, 0x1
_0802622A:
strb r0, [r4, 0x1E]
_0802622C:
ldrb r0, [r4, 0x1E]
subs r0, 0x1
cmp r0, 0x9
bls _08026236
b _080263F6
_08026236:
lsls r0, 2
ldr r1, _08026240 @ =_08026244
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08026240: .4byte _08026244
.align 2, 0
_08026244:
.4byte _0802626C
.4byte _08026298
.4byte _080262B0
.4byte _08026304
.4byte _08026318
.4byte _08026330
.4byte _08026318
.4byte _08026350
.4byte _08026380
.4byte _080263C4
_0802626C:
ldr r1, _08026290 @ =gBattle_BG2_Y
movs r0, 0x60
strh r0, [r1]
movs r0, 0x2
movs r1, 0x7
movs r2, 0
bl SetBgAttribute
movs r0, 0x2
bl ShowBg
bl sub_8026480
ldr r1, _08026294 @ =gBattleScripting
movs r0, 0x2
strb r0, [r1, 0x1E]
b _080263F6
.align 2, 0
_08026290: .4byte gBattle_BG2_Y
_08026294: .4byte gBattleScripting
_08026298:
bl sub_80264D0
lsls r0, 24
cmp r0, 0
beq _080262A4
b _080263F6
_080262A4:
ldr r1, _080262AC @ =gBattleScripting
movs r0, 0x3
strb r0, [r1, 0x1E]
b _080263F6
.align 2, 0
_080262AC: .4byte gBattleScripting
_080262B0:
ldr r1, _080262F8 @ =gBattle_BG1_X
movs r0, 0
strh r0, [r1]
ldr r1, _080262FC @ =gBattle_BG1_Y
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
movs r0, 0
movs r1, 0x7
movs r2, 0x1
bl SetBgAttribute
movs r0, 0x1
movs r1, 0x7
movs r2, 0
bl SetBgAttribute
movs r0, 0
bl ShowBg
movs r0, 0x1
bl ShowBg
movs r0, 0x80
str r0, [sp]
movs r0, 0x12
movs r1, 0x7
movs r2, 0x1D
movs r3, 0x13
bl sub_802DB7C
ldr r1, _08026300 @ =gBattleScripting
movs r0, 0x4
strb r0, [r1, 0x1E]
b _080263F6
.align 2, 0
_080262F8: .4byte gBattle_BG1_X
_080262FC: .4byte gBattle_BG1_Y
_08026300: .4byte gBattleScripting
_08026304:
bl sub_8026404
movs r0, 0xC
bl PutWindowTilemap
movs r0, 0xC
movs r1, 0x3
bl CopyWindowToVram
b _0802636E
_08026318:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _080263F6
ldr r0, _0802632C @ =gBattle_BG1_Y
strh r1, [r0]
b _0802636E
.align 2, 0
_0802632C: .4byte gBattle_BG1_Y
_08026330:
ldr r0, _0802634C @ =gMain
ldrh r0, [r0, 0x2E]
cmp r0, 0
beq _080263F6
movs r0, 0x5
bl PlaySE
bl sub_8026448
movs r0, 0xC
movs r1, 0x2
bl CopyWindowToVram
b _0802636E
.align 2, 0
_0802634C: .4byte gMain
_08026350:
ldr r0, _08026378 @ =gMain
ldrh r0, [r0, 0x2E]
cmp r0, 0
beq _080263F6
movs r0, 0x5
bl PlaySE
movs r0, 0x81
str r0, [sp]
movs r0, 0x12
movs r1, 0x7
movs r2, 0x1D
movs r3, 0x13
bl sub_802DB7C
_0802636E:
ldr r1, _0802637C @ =gBattleScripting
ldrb r0, [r1, 0x1E]
adds r0, 0x1
strb r0, [r1, 0x1E]
b _080263F6
.align 2, 0
_08026378: .4byte gMain
_0802637C: .4byte gBattleScripting
_08026380:
bl sub_8026648
lsls r0, 24
cmp r0, 0
bne _080263F6
movs r0, 0xD
bl ClearWindowTilemap
movs r0, 0xD
movs r1, 0x1
bl CopyWindowToVram
movs r0, 0xC
bl ClearWindowTilemap
movs r0, 0xC
movs r1, 0x1
bl CopyWindowToVram
movs r0, 0x2
movs r1, 0x7
movs r2, 0x2
bl SetBgAttribute
movs r0, 0x2
bl ShowBg
ldr r1, _080263C0 @ =gBattleScripting
movs r0, 0xA
strb r0, [r1, 0x1E]
b _080263F6
.align 2, 0
_080263C0: .4byte gBattleScripting
_080263C4:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _080263F6
movs r0, 0
movs r1, 0x7
movs r2, 0
bl SetBgAttribute
movs r0, 0x1
movs r1, 0x7
movs r2, 0x1
bl SetBgAttribute
movs r0, 0
bl ShowBg
movs r0, 0x1
bl ShowBg
ldr r1, _08026400 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_080263F6:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08026400: .4byte gUnknown_2023D74
thumb_func_end atk6C_drawlvlupbox
thumb_func_start sub_8026404
sub_8026404: @ 8026404
push {lr}
sub sp, 0x14
ldr r0, _0802643C @ =gBattleStruct
ldr r0, [r0]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _08026440 @ =gPlayerParty
adds r0, r1
add r1, sp, 0x8
bl sub_811D130
ldr r0, _08026444 @ =gBattleResources
ldr r0, [r0]
ldr r1, [r0, 0x10]
movs r0, 0xD
str r0, [sp]
movs r0, 0xF
str r0, [sp, 0x4]
movs r0, 0xC
add r2, sp, 0x8
movs r3, 0xE
bl sub_811E7F0
add sp, 0x14
pop {r0}
bx r0
.align 2, 0
_0802643C: .4byte gBattleStruct
_08026440: .4byte gPlayerParty
_08026444: .4byte gBattleResources
thumb_func_end sub_8026404
thumb_func_start sub_8026448
sub_8026448: @ 8026448
push {lr}
sub sp, 0x10
ldr r0, _08026478 @ =gBattleStruct
ldr r0, [r0]
ldrb r1, [r0, 0x10]
movs r0, 0x64
muls r0, r1
ldr r1, _0802647C @ =gPlayerParty
adds r0, r1
add r1, sp, 0x4
bl sub_811D130
movs r0, 0xF
str r0, [sp]
movs r0, 0xC
add r1, sp, 0x4
movs r2, 0xE
movs r3, 0xD
bl sub_811E93C
add sp, 0x10
pop {r0}
bx r0
.align 2, 0
_08026478: .4byte gBattleStruct
_0802647C: .4byte gPlayerParty
thumb_func_end sub_8026448
thumb_func_start sub_8026480
sub_8026480: @ 8026480
push {lr}
ldr r1, _080264C0 @ =gBattle_BG2_Y
movs r0, 0
strh r0, [r1]
ldr r1, _080264C4 @ =gBattle_BG2_X
movs r2, 0xD0
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
ldr r0, _080264C8 @ =gUnknown_82506D0
movs r1, 0x60
movs r2, 0x20
bl LoadPalette
ldr r1, _080264CC @ =gUnknown_82506F0
movs r0, 0xD
movs r2, 0
movs r3, 0
bl CopyToWindowPixelBuffer
movs r0, 0xD
bl PutWindowTilemap
movs r0, 0xD
movs r1, 0x3
bl CopyWindowToVram
bl PutMonIconOnLvlUpBox
pop {r0}
bx r0
.align 2, 0
_080264C0: .4byte gBattle_BG2_Y
_080264C4: .4byte gBattle_BG2_X
_080264C8: .4byte gUnknown_82506D0
_080264CC: .4byte gUnknown_82506F0
thumb_func_end sub_8026480
thumb_func_start sub_80264D0
sub_80264D0: @ 80264D0
push {r4,r5,lr}
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
beq _080264E0
movs r0, 0x1
b _0802651A
_080264E0:
ldr r4, _080264F0 @ =gBattle_BG2_X
ldrh r1, [r4]
movs r5, 0x80
lsls r5, 2
cmp r1, r5
bne _080264F4
movs r0, 0
b _0802651A
.align 2, 0
_080264F0: .4byte gBattle_BG2_X
_080264F4:
movs r0, 0xD0
lsls r0, 1
cmp r1, r0
bne _08026500
bl PutLevelAndGenderOnLvlUpBox
_08026500:
ldrh r0, [r4]
adds r0, 0x8
strh r0, [r4]
lsls r0, 16
ldr r1, _08026520 @ =0x01ff0000
cmp r0, r1
bls _08026510
strh r5, [r4]
_08026510:
ldrh r1, [r4]
eors r1, r5
negs r0, r1
orrs r0, r1
lsrs r0, 31
_0802651A:
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08026520: .4byte 0x01ff0000
thumb_func_end sub_80264D0
thumb_func_start PutLevelAndGenderOnLvlUpBox
PutLevelAndGenderOnLvlUpBox: @ 8026524
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
ldr r6, _080265F8 @ =gBattleStruct
ldr r0, [r6]
ldrb r0, [r0, 0x10]
movs r5, 0x64
muls r0, r5
ldr r4, _080265FC @ =gPlayerParty
adds r0, r4
movs r1, 0x38
bl GetMonData
mov r8, r0
lsls r0, 16
lsrs r0, 16
mov r8, r0
ldr r0, [r6]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
bl GetMonGender
lsls r0, 24
lsrs r7, r0, 24
ldr r0, [r6]
ldrb r0, [r0, 0x10]
muls r0, r5
adds r0, r4
ldr r6, _08026600 @ =gStringVar4
adds r1, r6, 0
bl GetMonNickname
str r6, [sp]
mov r1, sp
movs r4, 0
movs r0, 0xD
strb r0, [r1, 0x4]
mov r0, sp
strb r4, [r0, 0x5]
movs r5, 0x20
strb r5, [r0, 0x6]
strb r4, [r0, 0x7]
strb r5, [r0, 0x8]
strb r4, [r0, 0x9]
strb r4, [r0, 0xA]
strb r4, [r0, 0xB]
mov r3, sp
ldrb r2, [r3, 0xC]
movs r1, 0x10
negs r1, r1
adds r0, r1, 0
ands r0, r2
strb r0, [r3, 0xC]
mov r2, sp
movs r0, 0x10
strb r0, [r2, 0xC]
ldrb r0, [r2, 0xD]
ands r1, r0
strb r1, [r2, 0xD]
mov r0, sp
strb r5, [r0, 0xD]
movs r1, 0xFF
movs r2, 0
bl AddTextPrinter
movs r0, 0xF9
strb r0, [r6]
adds r6, 0x1
movs r0, 0x5
strb r0, [r6]
adds r6, 0x1
strb r4, [r6]
adds r6, 0x1
adds r4, r6, 0
adds r0, r4, 0
mov r1, r8
movs r2, 0
movs r3, 0x3
bl ConvertIntToDecimalStringN
adds r6, r0, 0
movs r1, 0
movs r2, 0x5
bl StringFill
adds r6, r4, 0x4
cmp r7, 0xFF
beq _08026624
cmp r7, 0
bne _08026604
adds r0, r6, 0
movs r1, 0
movs r2, 0xC
bl WriteColorChangeControlCode
adds r6, r0, 0
movs r1, 0x1
movs r2, 0xD
bl WriteColorChangeControlCode
adds r6, r0, 0
movs r0, 0xB5
b _0802661C
.align 2, 0
_080265F8: .4byte gBattleStruct
_080265FC: .4byte gPlayerParty
_08026600: .4byte gStringVar4
_08026604:
adds r0, r6, 0
movs r1, 0
movs r2, 0xE
bl WriteColorChangeControlCode
adds r6, r0, 0
movs r1, 0x1
movs r2, 0xF
bl WriteColorChangeControlCode
adds r6, r0, 0
movs r0, 0xB6
_0802661C:
strb r0, [r6]
adds r6, 0x1
movs r0, 0xFF
strb r0, [r6]
_08026624:
mov r0, sp
movs r1, 0xA
strb r1, [r0, 0x7]
strb r1, [r0, 0x9]
movs r1, 0xFF
movs r2, 0
bl AddTextPrinter
movs r0, 0xD
movs r1, 0x2
bl CopyWindowToVram
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end PutLevelAndGenderOnLvlUpBox
thumb_func_start sub_8026648
sub_8026648: @ 8026648
push {lr}
ldr r0, _0802665C @ =gBattle_BG2_X
ldrh r1, [r0]
movs r3, 0xD0
lsls r3, 1
adds r2, r0, 0
cmp r1, r3
bne _08026660
movs r0, 0
b _08026684
.align 2, 0
_0802665C: .4byte gBattle_BG2_X
_08026660:
ldrh r0, [r2]
adds r1, r0, 0
subs r1, 0x10
ldr r0, _08026670 @ =0x0000019f
cmp r1, r0
bgt _08026674
strh r3, [r2]
b _08026676
.align 2, 0
_08026670: .4byte 0x0000019f
_08026674:
strh r1, [r2]
_08026676:
ldrh r1, [r2]
movs r0, 0xD0
lsls r0, 1
eors r1, r0
negs r0, r1
orrs r0, r1
lsrs r0, 31
_08026684:
pop {r1}
bx r1
thumb_func_end sub_8026648
thumb_func_start PutMonIconOnLvlUpBox
PutMonIconOnLvlUpBox: @ 8026688
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x10
ldr r0, _08026730 @ =gBattleStruct
mov r8, r0
ldr r0, [r0]
ldrb r0, [r0, 0x10]
movs r6, 0x64
muls r0, r6
ldr r5, _08026734 @ =gPlayerParty
adds r0, r5
movs r1, 0xB
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
mov r1, r8
ldr r0, [r1]
ldrb r0, [r0, 0x10]
muls r0, r6
adds r0, r5
movs r1, 0
bl GetMonData
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0x1
bl GetMonIconPtr
str r0, [sp]
ldr r5, _08026738 @ =0xffff0000
ldr r0, [sp, 0x4]
ands r0, r5
movs r1, 0x80
lsls r1, 2
orrs r0, r1
ldr r1, _0802673C @ =0x0000ffff
ands r0, r1
ldr r1, _08026740 @ =0xd75a0000
orrs r0, r1
str r0, [sp, 0x4]
adds r0, r4, 0
bl GetValidMonIconPalettePtr
str r0, [sp, 0x8]
add r4, sp, 0x8
ldr r0, [r4, 0x4]
ands r0, r5
ldr r1, _08026744 @ =0x0000d75a
orrs r0, r1
str r0, [r4, 0x4]
mov r0, sp
bl LoadSpriteSheet
adds r0, r4, 0
bl LoadSpritePalette
ldr r0, _08026748 @ =gUnknown_82507C8
movs r1, 0x80
lsls r1, 1
movs r2, 0xA
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r2, _0802674C @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0
strh r0, [r1, 0x2E]
ldr r0, _08026750 @ =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r1, 0x30]
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08026730: .4byte gBattleStruct
_08026734: .4byte gPlayerParty
_08026738: .4byte 0xffff0000
_0802673C: .4byte 0x0000ffff
_08026740: .4byte 0xd75a0000
_08026744: .4byte 0x0000d75a
_08026748: .4byte gUnknown_82507C8
_0802674C: .4byte gSprites
_08026750: .4byte gBattle_BG2_X
thumb_func_end PutMonIconOnLvlUpBox
thumb_func_start SpriteCB_MonIconOnLvlUpBox
SpriteCB_MonIconOnLvlUpBox: @ 8026754
push {r4,lr}
adds r2, r0, 0
ldr r0, _08026770 @ =gBattle_BG2_X
ldrh r1, [r2, 0x30]
ldrh r0, [r0]
subs r1, r0
strh r1, [r2, 0x24]
lsls r1, 16
cmp r1, 0
beq _08026774
movs r0, 0x1
strh r0, [r2, 0x2E]
b _08026790
.align 2, 0
_08026770: .4byte gBattle_BG2_X
_08026774:
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0
beq _08026790
adds r0, r2, 0
bl DestroySprite
ldr r4, _08026798 @ =0x0000d75a
adds r0, r4, 0
bl FreeSpriteTilesByTag
adds r0, r4, 0
bl FreeSpritePaletteByTag
_08026790:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08026798: .4byte 0x0000d75a
thumb_func_end SpriteCB_MonIconOnLvlUpBox
thumb_func_start IsMonGettingExpSentOut
IsMonGettingExpSentOut: @ 802679C
push {lr}
ldr r3, _080267C4 @ =gBattlerPartyIndexes
ldr r0, _080267C8 @ =gBattleStruct
ldr r0, [r0]
ldrh r1, [r3]
ldrb r2, [r0, 0x10]
cmp r1, r2
beq _080267BE
ldr r0, _080267CC @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080267D0
ldrh r0, [r3, 0x4]
cmp r0, r2
bne _080267D0
_080267BE:
movs r0, 0x1
b _080267D2
.align 2, 0
_080267C4: .4byte gBattlerPartyIndexes
_080267C8: .4byte gBattleStruct
_080267CC: .4byte gBattleTypeFlags
_080267D0:
movs r0, 0
_080267D2:
pop {r1}
bx r1
thumb_func_end IsMonGettingExpSentOut
thumb_func_start atk6D_resetsentmonsvalue
atk6D_resetsentmonsvalue: @ 80267D8
push {lr}
bl ResetSentPokesToOpponentValue
ldr r1, _080267EC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080267EC: .4byte gUnknown_2023D74
thumb_func_end atk6D_resetsentmonsvalue
thumb_func_start atk6E_setatktoplayer0
atk6E_setatktoplayer0: @ 80267F0
push {lr}
movs r0, 0
bl GetBattlerAtPosition
ldr r1, _08026808 @ =sBattler_AI
strb r0, [r1]
ldr r1, _0802680C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08026808: .4byte sBattler_AI
_0802680C: .4byte gUnknown_2023D74
thumb_func_end atk6E_setatktoplayer0
thumb_func_start atk6F_makevisible
atk6F_makevisible: @ 8026810
push {r4,r5,lr}
ldr r5, _0802683C @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _08026840 @ =gActiveBattler
strb r0, [r4]
movs r0, 0
movs r1, 0
bl EmitSpriteInvisibility
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802683C: .4byte gUnknown_2023D74
_08026840: .4byte gActiveBattler
thumb_func_end atk6F_makevisible
thumb_func_start atk70_recordlastability
atk70_recordlastability: @ 8026844
push {r4,lr}
ldr r4, _0802686C @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r1, _08026870 @ =gActiveBattler
strb r0, [r1]
ldrb r0, [r1]
ldr r1, _08026874 @ =gLastUsedAbility
ldrb r1, [r1]
bl sub_80C71D0
ldr r0, [r4]
adds r0, 0x1
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802686C: .4byte gUnknown_2023D74
_08026870: .4byte gActiveBattler
_08026874: .4byte gLastUsedAbility
thumb_func_end atk70_recordlastability
thumb_func_start BufferMoveToLearnIntoBattleTextBuff2
BufferMoveToLearnIntoBattleTextBuff2: @ 8026878
ldr r2, _08026898 @ =gBattleTextBuff2
movs r0, 0xFD
strb r0, [r2]
movs r0, 0x2
strb r0, [r2, 0x1]
ldr r0, _0802689C @ =gMoveToLearn
ldrh r1, [r0]
strb r1, [r2, 0x2]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
lsrs r0, 8
strb r0, [r2, 0x3]
movs r0, 0xFF
strb r0, [r2, 0x4]
bx lr
.align 2, 0
_08026898: .4byte gBattleTextBuff2
_0802689C: .4byte gMoveToLearn
thumb_func_end BufferMoveToLearnIntoBattleTextBuff2
thumb_func_start atk71_buffermovetolearn
atk71_buffermovetolearn: @ 80268A0
push {lr}
bl BufferMoveToLearnIntoBattleTextBuff2
ldr r1, _080268B4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080268B4: .4byte gUnknown_2023D74
thumb_func_end atk71_buffermovetolearn
thumb_func_start atk72_jumpifplayerran
atk72_jumpifplayerran: @ 80268B8
push {lr}
ldr r0, _080268E4 @ =gUnknown_2023D6D
ldrb r0, [r0]
bl sub_8016748
lsls r0, 24
cmp r0, 0
beq _080268EC
ldr r3, _080268E8 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _080268F4
.align 2, 0
_080268E4: .4byte gUnknown_2023D6D
_080268E8: .4byte gUnknown_2023D74
_080268EC:
ldr r1, _080268F8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_080268F4:
pop {r0}
bx r0
.align 2, 0
_080268F8: .4byte gUnknown_2023D74
thumb_func_end atk72_jumpifplayerran
thumb_func_start atk73_hpthresholds
atk73_hpthresholds: @ 80268FC
push {r4-r6,lr}
ldr r0, _0802694C @ =gBattleTypeFlags
ldr r4, [r0]
movs r6, 0x1
ands r4, r6
cmp r4, 0
bne _08026992
ldr r0, _08026950 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r1, _08026954 @ =gActiveBattler
strb r0, [r1]
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r2, _08026958 @ =gBattleMons
movs r1, 0x58
muls r1, r0
adds r1, r2
ldrh r5, [r1, 0x28]
movs r0, 0x64
muls r0, r5
ldrh r1, [r1, 0x2C]
bl __divsi3
cmp r0, 0
bne _0802693A
movs r0, 0x1
_0802693A:
cmp r0, 0x45
bgt _08026942
cmp r5, 0
bne _08026960
_08026942:
ldr r0, _0802695C @ =gBattleStruct
ldr r0, [r0]
adds r0, 0xAD
strb r4, [r0]
b _08026992
.align 2, 0
_0802694C: .4byte gBattleTypeFlags
_08026950: .4byte gUnknown_2023D74
_08026954: .4byte gActiveBattler
_08026958: .4byte gBattleMons
_0802695C: .4byte gBattleStruct
_08026960:
cmp r0, 0x27
ble _08026974
ldr r0, _08026970 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0xAD
strb r6, [r0]
b _08026992
.align 2, 0
_08026970: .4byte gBattleStruct
_08026974:
cmp r0, 0x9
ble _08026988
ldr r0, _08026984 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0xAD
movs r1, 0x2
b _08026990
.align 2, 0
_08026984: .4byte gBattleStruct
_08026988:
ldr r0, _080269A0 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0xAD
movs r1, 0x3
_08026990:
strb r1, [r0]
_08026992:
ldr r1, _080269A4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080269A0: .4byte gBattleStruct
_080269A4: .4byte gUnknown_2023D74
thumb_func_end atk73_hpthresholds
thumb_func_start atk74_hpthresholds2
atk74_hpthresholds2: @ 80269A8
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _08026A0C @ =gBattleTypeFlags
ldr r7, [r0]
movs r0, 0x1
mov r8, r0
ands r7, r0
cmp r7, 0
bne _08026A42
ldr r0, _08026A10 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r0, [r0, 0x1]
bl sub_8016E24
adds r4, r0, 0
ldr r0, _08026A14 @ =gActiveBattler
strb r4, [r0]
movs r0, 0x1
eors r4, r0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
ldr r1, _08026A18 @ =gBattleStruct
ldr r6, [r1]
lsrs r0, 23
adds r0, r6
adds r0, 0xA8
ldrb r5, [r0]
ldr r1, _08026A1C @ =gBattleMons
movs r0, 0x58
muls r0, r4
adds r0, r1
ldrh r4, [r0, 0x28]
subs r1, r5, r4
movs r0, 0x64
muls r0, r1
adds r1, r5, 0
bl __divsi3
adds r1, r0, 0
cmp r4, r5
bcc _08026A20
adds r0, r6, 0
adds r0, 0xAD
strb r7, [r0]
b _08026A42
.align 2, 0
_08026A0C: .4byte gBattleTypeFlags
_08026A10: .4byte gUnknown_2023D74
_08026A14: .4byte gActiveBattler
_08026A18: .4byte gBattleStruct
_08026A1C: .4byte gBattleMons
_08026A20:
cmp r0, 0x1D
bgt _08026A2E
adds r0, r6, 0
adds r0, 0xAD
mov r1, r8
strb r1, [r0]
b _08026A42
_08026A2E:
cmp r1, 0x45
bgt _08026A3A
adds r1, r6, 0
adds r1, 0xAD
movs r0, 0x2
b _08026A40
_08026A3A:
adds r1, r6, 0
adds r1, 0xAD
movs r0, 0x3
_08026A40:
strb r0, [r1]
_08026A42:
ldr r1, _08026A54 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08026A54: .4byte gUnknown_2023D74
thumb_func_end atk74_hpthresholds2
thumb_func_start atk75_useitemonopponent
atk75_useitemonopponent: @ 8026A58
push {lr}
sub sp, 0x4
ldr r2, _08026A98 @ =gBattlerInMenuId
ldr r1, _08026A9C @ =sBattler_AI
ldrb r0, [r1]
strb r0, [r2]
ldr r2, _08026AA0 @ =gBattlerPartyIndexes
ldrb r0, [r1]
lsls r0, 1
adds r0, r2
ldrh r2, [r0]
movs r0, 0x64
muls r0, r2
ldr r1, _08026AA4 @ =gEnemyParty
adds r0, r1
ldr r1, _08026AA8 @ =gUnknown_2023D68
ldrh r1, [r1]
lsls r2, 24
lsrs r2, 24
movs r3, 0x1
str r3, [sp]
movs r3, 0
bl PokemonUseItemEffects
ldr r1, _08026AAC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_08026A98: .4byte gBattlerInMenuId
_08026A9C: .4byte sBattler_AI
_08026AA0: .4byte gBattlerPartyIndexes
_08026AA4: .4byte gEnemyParty
_08026AA8: .4byte gUnknown_2023D68
_08026AAC: .4byte gUnknown_2023D74
thumb_func_end atk75_useitemonopponent
thumb_func_start sub_8026AB0
sub_8026AB0: @ 8026AB0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x8
ldr r4, _08026ADC @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r1, _08026AE0 @ =gActiveBattler
strb r0, [r1]
ldr r0, [r4]
ldrb r0, [r0, 0x2]
cmp r0, 0xC
bls _08026AD2
b _08026F4E
_08026AD2:
lsls r0, 2
ldr r1, _08026AE4 @ =_08026AE8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08026ADC: .4byte gUnknown_2023D74
_08026AE0: .4byte gActiveBattler
_08026AE4: .4byte _08026AE8
.align 2, 0
_08026AE8:
.4byte _08026B1C
.4byte _08026B2C
.4byte _08026B8C
.4byte _08026B9C
.4byte _08026BB4
.4byte _08026BF0
.4byte _08026C28
.4byte _08026CB4
.4byte _08026CF4
.4byte _08026D50
.4byte _08026D64
.4byte _08026DA0
.4byte _08026F44
_08026B1C:
ldr r0, _08026B28 @ =gActiveBattler
ldrb r0, [r0]
bl CancelMultiTurnMoves
b _08026F4E
.align 2, 0
_08026B28: .4byte gActiveBattler
_08026B2C:
ldr r1, _08026B68 @ =sBattler_AI
ldr r4, _08026B6C @ =gBattlerTarget
ldrb r0, [r4]
strb r0, [r1]
ldrb r0, [r1]
bl GetBattlerSide
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r2, _08026B70 @ =gSideTimers
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r2, r1, r2
ldrb r0, [r2, 0x8]
cmp r0, 0
beq _08026B78
ldr r1, _08026B74 @ =gBattleMons
ldrb r2, [r2, 0x9]
movs r0, 0x58
muls r0, r2
adds r0, r1
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08026B78
strb r2, [r4]
b _08026F4E
.align 2, 0
_08026B68: .4byte sBattler_AI
_08026B6C: .4byte gBattlerTarget
_08026B70: .4byte gSideTimers
_08026B74: .4byte gBattleMons
_08026B78:
ldr r0, _08026B84 @ =gBattlerTarget
ldr r1, _08026B88 @ =gActiveBattler
ldrb r1, [r1]
strb r1, [r0]
b _08026F4E
.align 2, 0
_08026B84: .4byte gBattlerTarget
_08026B88: .4byte gActiveBattler
_08026B8C:
bl IsRunningFromBattleImpossible
ldr r1, _08026B98 @ =gUnknown_2023E82
strb r0, [r1]
b _08026F4E
.align 2, 0
_08026B98: .4byte gUnknown_2023E82
_08026B9C:
ldr r0, _08026BAC @ =gCurrentMove
ldrh r0, [r0]
movs r1, 0
bl GetMoveTarget
ldr r1, _08026BB0 @ =gBattlerTarget
strb r0, [r1]
b _08026F4E
.align 2, 0
_08026BAC: .4byte gCurrentMove
_08026BB0: .4byte gBattlerTarget
_08026BB4:
ldr r2, _08026BD4 @ =gUnknown_2023DD0
ldr r1, _08026BD8 @ =gBitTable
ldr r0, _08026BDC @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
lsls r0, 28
ldr r2, [r2]
ands r2, r0
cmp r2, 0
beq _08026BE4
ldr r1, _08026BE0 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1]
b _08026F4E
.align 2, 0
_08026BD4: .4byte gUnknown_2023DD0
_08026BD8: .4byte gBitTable
_08026BDC: .4byte gActiveBattler
_08026BE0: .4byte gUnknown_2023E82
_08026BE4:
ldr r0, _08026BEC @ =gUnknown_2023E82
strb r2, [r0]
b _08026F4E
.align 2, 0
_08026BEC: .4byte gUnknown_2023E82
_08026BF0:
ldr r4, _08026C20 @ =gUnknown_2023ECC
ldr r3, _08026C24 @ =gActiveBattler
ldrb r0, [r3]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r2, [r1]
movs r0, 0x9
negs r0, r0
ands r0, r2
strb r0, [r1]
ldrb r0, [r3]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r2, [r1]
movs r0, 0x11
negs r0, r0
ands r0, r2
strb r0, [r1]
b _08026F4E
.align 2, 0
_08026C20: .4byte gUnknown_2023ECC
_08026C24: .4byte gActiveBattler
_08026C28:
ldr r4, _08026C4C @ =gBattlerPartyIndexes
ldr r1, _08026C50 @ =gBattleStruct
ldr r0, [r1]
ldrh r3, [r4]
ldrb r2, [r0, 0x10]
adds r5, r1, 0
cmp r3, r2
beq _08026C44
ldrh r0, [r4, 0x4]
cmp r0, r2
beq _08026C40
b _08026F4E
_08026C40:
cmp r3, r0
bne _08026C58
_08026C44:
ldr r1, _08026C54 @ =gActiveBattler
movs r0, 0
b _08026C5C
.align 2, 0
_08026C4C: .4byte gBattlerPartyIndexes
_08026C50: .4byte gBattleStruct
_08026C54: .4byte gActiveBattler
_08026C58:
ldr r1, _08026CAC @ =gActiveBattler
movs r0, 0x2
_08026C5C:
strb r0, [r1]
mov r8, r1
mov r0, r8
ldrb r2, [r0]
lsls r0, r2, 1
adds r0, 0xC8
ldr r1, [r5]
adds r3, r1, r0
movs r7, 0
ldr r1, _08026CB0 @ =gBattleMons
movs r0, 0x58
muls r0, r2
adds r1, 0xC
adds r0, r1
ldrh r0, [r0]
ldrh r2, [r3]
cmp r0, r2
beq _08026C9E
mov r5, r8
movs r4, 0x58
adds r2, r1, 0
_08026C86:
adds r7, 0x1
cmp r7, 0x3
bgt _08026C9E
lsls r1, r7, 1
ldrb r0, [r5]
muls r0, r4
adds r1, r0
adds r1, r2
ldrh r0, [r1]
ldrh r1, [r3]
cmp r0, r1
bne _08026C86
_08026C9E:
cmp r7, 0x4
beq _08026CA4
b _08026F4E
_08026CA4:
movs r0, 0
strh r0, [r3]
b _08026F4E
.align 2, 0
_08026CAC: .4byte gActiveBattler
_08026CB0: .4byte gBattleMons
_08026CB4:
ldr r0, _08026CE4 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0xB
ands r0, r1
cmp r0, 0x8
beq _08026CC2
b _08026F4E
_08026CC2:
ldr r1, _08026CE8 @ =gBattleMons
ldrh r0, [r1, 0x28]
cmp r0, 0
bne _08026CCC
b _08026F4E
_08026CCC:
adds r0, r1, 0
adds r0, 0x80
ldrh r0, [r0]
cmp r0, 0
bne _08026CD8
b _08026F4E
_08026CD8:
ldr r0, _08026CEC @ =gUnknown_2023DD0
ldr r1, [r0]
ldr r2, _08026CF0 @ =0xffbfffff
ands r1, r2
str r1, [r0]
b _08026F4E
.align 2, 0
_08026CE4: .4byte gBattleTypeFlags
_08026CE8: .4byte gBattleMons
_08026CEC: .4byte gUnknown_2023DD0
_08026CF0: .4byte 0xffbfffff
_08026CF4:
movs r7, 0
ldr r2, _08026D3C @ =gUnknown_2023E82
strb r7, [r2, 0x5]
ldr r1, _08026D40 @ =gActiveBattler
movs r0, 0x1
strb r0, [r1]
mov r8, r1
ldr r0, _08026D44 @ =gBattlersCount
mov r4, r8
ldrb r5, [r0]
ldr r6, _08026D48 @ =gBattleMons
ldr r3, _08026D4C @ =gBitTable
_08026D0C:
ldrb r0, [r4]
cmp r0, r5
bcs _08026D2A
mov r0, r8
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r6
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08026D2A
ldr r0, [r3]
ldrb r1, [r2, 0x5]
orrs r0, r1
strb r0, [r2, 0x5]
_08026D2A:
adds r3, 0x4
ldrb r0, [r4]
adds r0, 0x2
strb r0, [r4]
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bls _08026D0C
b _08026F4E
.align 2, 0
_08026D3C: .4byte gUnknown_2023E82
_08026D40: .4byte gActiveBattler
_08026D44: .4byte gBattlersCount
_08026D48: .4byte gBattleMons
_08026D4C: .4byte gBitTable
_08026D50:
ldr r4, _08026D5C @ =gActiveBattler
movs r0, 0x1
strb r0, [r4]
ldr r0, _08026D60 @ =gBattleMons
adds r0, 0x58
b _08026D7C
.align 2, 0
_08026D5C: .4byte gActiveBattler
_08026D60: .4byte gBattleMons
_08026D64:
ldr r0, _08026D94 @ =gBattlersCount
ldrb r0, [r0]
cmp r0, 0x3
bhi _08026D6E
b _08026F4E
_08026D6E:
ldr r4, _08026D98 @ =gActiveBattler
movs r0, 0x3
strb r0, [r4]
ldr r0, _08026D9C @ =gBattleMons
movs r1, 0x84
lsls r1, 1
adds r0, r1
_08026D7C:
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _08026D84
b _08026F4E
_08026D84:
movs r0, 0
movs r1, 0
bl EmitReturnMonToBall
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _08026F4E
.align 2, 0
_08026D94: .4byte gBattlersCount
_08026D98: .4byte gActiveBattler
_08026D9C: .4byte gBattleMons
_08026DA0:
ldr r0, _08026F28 @ =gUnknown_2023E82
movs r1, 0
strb r1, [r0, 0x5]
mov r8, r1
movs r7, 0
ldr r0, _08026F2C @ =gBattlersCount
mov r12, r0
ldrb r2, [r0]
cmp r8, r2
bge _08026DEE
ldr r4, _08026F30 @ =gBattleMons
adds r3, r4, 0
adds r3, 0x50
adds r6, r4, 0
adds r6, 0x20
movs r5, 0
_08026DC0:
ldrb r0, [r6]
cmp r0, 0x2B
beq _08026DDE
adds r2, r4, 0
adds r2, 0x4C
adds r2, r5, r2
ldr r0, [r2]
movs r1, 0x8
negs r1, r1
ands r0, r1
str r0, [r2]
ldr r0, [r3]
ldr r1, _08026F34 @ =0xf7ffffff
ands r0, r1
str r0, [r3]
_08026DDE:
adds r3, 0x58
adds r6, 0x58
adds r5, 0x58
adds r7, 0x1
mov r0, r12
ldrb r0, [r0]
cmp r7, r0
blt _08026DC0
_08026DEE:
movs r7, 0
movs r1, 0xCE
lsls r1, 1
mov r9, r1
_08026DF6:
movs r0, 0x64
adds r4, r7, 0
muls r4, r0
ldr r0, _08026F38 @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0x2E
bl GetMonData
lsls r0, 24
lsrs r6, r0, 24
adds r0, r4, 0
movs r1, 0x37
bl GetMonData
adds r1, r0, 0
str r1, [sp, 0x4]
cmp r5, 0
beq _08026E4E
cmp r5, r9
beq _08026E4E
movs r0, 0x7
ands r0, r1
cmp r0, 0
beq _08026E4E
adds r0, r5, 0
adds r1, r6, 0
bl GetAbilityBySpecies
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2B
beq _08026E4E
movs r0, 0x1
lsls r0, r7
mov r2, r8
orrs r2, r0
mov r8, r2
_08026E4E:
adds r7, 0x1
cmp r7, 0x5
ble _08026DF6
mov r0, r8
cmp r0, 0
beq _08026E88
movs r0, 0
bl GetBattlerAtPosition
ldr r4, _08026F3C @ =gActiveBattler
strb r0, [r4]
movs r0, 0
str r0, [sp, 0x4]
mov r1, r8
lsls r2, r1, 24
lsrs r2, 24
add r0, sp, 0x4
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, _08026F28 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
_08026E88:
movs r1, 0
mov r8, r1
movs r7, 0
movs r2, 0xCE
lsls r2, 1
mov r9, r2
_08026E94:
movs r0, 0x64
adds r4, r7, 0
muls r4, r0
ldr r0, _08026F40 @ =gEnemyParty
adds r4, r0
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0x2E
bl GetMonData
lsls r0, 24
lsrs r6, r0, 24
adds r0, r4, 0
movs r1, 0x37
bl GetMonData
adds r1, r0, 0
str r1, [sp, 0x4]
cmp r5, 0
beq _08026EEC
cmp r5, r9
beq _08026EEC
movs r0, 0x7
ands r0, r1
cmp r0, 0
beq _08026EEC
adds r0, r5, 0
adds r1, r6, 0
bl GetAbilityBySpecies
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2B
beq _08026EEC
movs r0, 0x1
lsls r0, r7
mov r1, r8
orrs r1, r0
mov r8, r1
_08026EEC:
adds r7, 0x1
cmp r7, 0x5
ble _08026E94
mov r2, r8
cmp r2, 0
beq _08026F4E
movs r0, 0x1
bl GetBattlerAtPosition
ldr r4, _08026F3C @ =gActiveBattler
strb r0, [r4]
movs r0, 0
str r0, [sp, 0x4]
mov r0, r8
lsls r2, r0, 24
lsrs r2, 24
add r1, sp, 0x4
str r1, [sp]
movs r0, 0
movs r1, 0x28
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, _08026F28 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
b _08026F4E
.align 2, 0
_08026F28: .4byte gUnknown_2023E82
_08026F2C: .4byte gBattlersCount
_08026F30: .4byte gBattleMons
_08026F34: .4byte 0xf7ffffff
_08026F38: .4byte gPlayerParty
_08026F3C: .4byte gActiveBattler
_08026F40: .4byte gEnemyParty
_08026F44:
bl IsFanfareTaskInactive
lsls r0, 24
cmp r0, 0
beq _08026F56
_08026F4E:
ldr r1, _08026F64 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x3
str r0, [r1]
_08026F56:
add sp, 0x8
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08026F64: .4byte gUnknown_2023D74
thumb_func_end sub_8026AB0
thumb_func_start atk77_setprotectlike
atk77_setprotectlike: @ 8026F68
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r6, 0x1
ldr r2, _08027034 @ =gUnknown_2023DB0
ldr r1, _08027038 @ =sBattler_AI
ldrb r3, [r1]
lsls r0, r3, 1
adds r0, r2
ldrh r0, [r0]
mov r8, r1
ldr r7, _0802703C @ =gDisableStructs
cmp r0, 0xB6
beq _08026F98
cmp r0, 0xC5
beq _08026F98
cmp r0, 0xCB
beq _08026F98
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
adds r0, r7
movs r1, 0
strb r1, [r0, 0x8]
_08026F98:
ldr r0, _08027040 @ =gUnknown_2023BE2
ldrb r1, [r0]
ldr r0, _08027044 @ =gBattlersCount
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _08026FA8
movs r6, 0
_08026FA8:
ldr r2, _08027048 @ =gUnknown_82507E0
mov r5, r8
ldrb r1, [r5]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r7
ldrb r4, [r0, 0x8]
lsls r4, 1
adds r4, r2
bl Random
ldrh r1, [r4]
lsls r0, 16
lsrs r0, 16
cmp r1, r0
bcc _0802705C
cmp r6, 0
beq _0802705C
ldr r4, _0802704C @ =gBattleMoves
ldr r3, _08027050 @ =gCurrentMove
ldrh r0, [r3]
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r0, [r1]
cmp r0, 0x6F
bne _08026FF8
ldr r0, _08027054 @ =gUnknown_2023E8C
ldrb r1, [r5]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
movs r2, 0x1
orrs r0, r2
strb r0, [r1]
ldr r1, _08027058 @ =gUnknown_2023E82
movs r0, 0
strb r0, [r1, 0x5]
_08026FF8:
ldrh r0, [r3]
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r0, [r1]
cmp r0, 0x74
bne _0802701E
ldr r0, _08027054 @ =gUnknown_2023E8C
ldrb r1, [r5]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
movs r2, 0x2
orrs r0, r2
strb r0, [r1]
ldr r1, _08027058 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
_0802701E:
mov r1, r8
ldrb r0, [r1]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r7
ldrb r0, [r1, 0x8]
adds r0, 0x1
strb r0, [r1, 0x8]
b _0802707E
.align 2, 0
_08027034: .4byte gUnknown_2023DB0
_08027038: .4byte sBattler_AI
_0802703C: .4byte gDisableStructs
_08027040: .4byte gUnknown_2023BE2
_08027044: .4byte gBattlersCount
_08027048: .4byte gUnknown_82507E0
_0802704C: .4byte gBattleMoves
_08027050: .4byte gCurrentMove
_08027054: .4byte gUnknown_2023E8C
_08027058: .4byte gUnknown_2023E82
_0802705C:
ldr r2, _08027090 @ =gDisableStructs
ldr r0, _08027094 @ =sBattler_AI
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strb r1, [r0, 0x8]
ldr r1, _08027098 @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
ldr r2, _0802709C @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
_0802707E:
ldr r1, _080270A0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08027090: .4byte gDisableStructs
_08027094: .4byte sBattler_AI
_08027098: .4byte gUnknown_2023E82
_0802709C: .4byte gMoveResultFlags
_080270A0: .4byte gUnknown_2023D74
thumb_func_end atk77_setprotectlike
thumb_func_start atk78_faintifabilitynotdamp
atk78_faintifabilitynotdamp: @ 80270A4
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _08027160 @ =gUnknown_2023BC8
ldr r2, [r0]
cmp r2, 0
bne _080271A8
ldr r1, _08027164 @ =gBattlerTarget
strb r2, [r1]
ldr r0, _08027168 @ =gBattlersCount
ldrb r3, [r0]
adds r5, r1, 0
mov r8, r0
ldr r6, _0802716C @ =gBattleMons
cmp r2, r3
bcs _080270F0
adds r0, r6, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x6
beq _080270F0
adds r2, r3, 0
adds r4, r6, 0
movs r3, 0x58
_080270D4:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
cmp r0, r2
bcs _080270F0
ldrb r0, [r5]
muls r0, r3
adds r0, r4
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x6
bne _080270D4
_080270F0:
ldrb r0, [r5]
mov r1, r8
ldrb r1, [r1]
cmp r0, r1
bne _0802718C
ldr r4, _08027170 @ =gActiveBattler
ldr r7, _08027174 @ =sBattler_AI
ldrb r0, [r7]
strb r0, [r4]
ldr r2, _08027178 @ =gBattleMoveDamage
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
adds r0, r6
ldrh r0, [r0, 0x28]
str r0, [r2]
ldr r1, _0802717C @ =0x00007fff
movs r0, 0
bl EmitHealthBarUpdate
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, _08027180 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
movs r0, 0
strb r0, [r5]
mov r2, r8
ldrb r0, [r2]
cmp r0, 0
beq _080271A8
adds r3, r5, 0
ldrb r5, [r7]
ldr r7, _08027184 @ =gBitTable
adds r4, r0, 0
ldr r6, _08027188 @ =gAbsentBattlerFlags
_0802713C:
ldrb r2, [r3]
cmp r2, r5
beq _08027152
ldrb r0, [r6]
ldrb r1, [r3]
lsls r1, 2
adds r1, r7
ldr r1, [r1]
ands r0, r1
cmp r0, 0
beq _080271A8
_08027152:
adds r0, r2, 0x1
strb r0, [r3]
lsls r0, 24
lsrs r0, 24
cmp r0, r4
bcc _0802713C
b _080271A8
.align 2, 0
_08027160: .4byte gUnknown_2023BC8
_08027164: .4byte gBattlerTarget
_08027168: .4byte gBattlersCount
_0802716C: .4byte gBattleMons
_08027170: .4byte gActiveBattler
_08027174: .4byte sBattler_AI
_08027178: .4byte gBattleMoveDamage
_0802717C: .4byte 0x00007fff
_08027180: .4byte gUnknown_2023D74
_08027184: .4byte gBitTable
_08027188: .4byte gAbsentBattlerFlags
_0802718C:
ldr r1, _080271B4 @ =gLastUsedAbility
movs r0, 0x6
strb r0, [r1]
ldrb r0, [r5]
movs r1, 0x58
muls r1, r0
adds r1, r6
adds r1, 0x20
ldrb r1, [r1]
bl sub_80C71D0
ldr r1, _080271B8 @ =gUnknown_2023D74
ldr r0, _080271BC @ =gUnknown_81D93AF
str r0, [r1]
_080271A8:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080271B4: .4byte gLastUsedAbility
_080271B8: .4byte gUnknown_2023D74
_080271BC: .4byte gUnknown_81D93AF
thumb_func_end atk78_faintifabilitynotdamp
thumb_func_start atk79_setatkhptozero
atk79_setatkhptozero: @ 80271C0
push {r4,lr}
sub sp, 0x4
ldr r0, _0802720C @ =gUnknown_2023BC8
ldr r3, [r0]
cmp r3, 0
bne _08027204
ldr r4, _08027210 @ =gActiveBattler
ldr r0, _08027214 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r4]
ldr r1, _08027218 @ =gBattleMons
ldrb r0, [r4]
movs r2, 0x58
muls r0, r2
adds r0, r1
strh r3, [r0, 0x28]
ldrb r0, [r4]
muls r0, r2
adds r1, 0x28
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x2A
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, _0802721C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_08027204:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802720C: .4byte gUnknown_2023BC8
_08027210: .4byte gActiveBattler
_08027214: .4byte sBattler_AI
_08027218: .4byte gBattleMons
_0802721C: .4byte gUnknown_2023D74
thumb_func_end atk79_setatkhptozero
thumb_func_start atk7A_jumpifnexttargetvalid
atk7A_jumpifnexttargetvalid: @ 8027220
push {r4-r7,lr}
ldr r3, _08027298 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r4, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r4, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r4, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r4, r0
ldr r0, _0802729C @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
adds r7, r3, 0
cmp r0, 0
beq _080272B8
ldr r0, _080272A0 @ =gBattlerTarget
ldrb r1, [r0]
adds r1, 0x1
strb r1, [r0]
ldr r2, _080272A4 @ =sBattler_AI
lsls r1, 24
lsrs r1, 24
adds r3, r0, 0
ldr r6, _080272A8 @ =gAbsentBattlerFlags
ldr r5, _080272AC @ =gBitTable
ldr r0, _080272B0 @ =gBattlersCount
mov r12, r0
ldrb r0, [r2]
cmp r1, r0
bne _08027276
_08027266:
ldrb r0, [r3]
adds r0, 0x1
strb r0, [r3]
lsls r0, 24
lsrs r0, 24
ldrb r1, [r2]
cmp r0, r1
beq _08027266
_08027276:
ldrb r0, [r6]
ldrb r1, [r3]
lsls r1, 2
adds r1, r5
ldr r1, [r1]
ands r0, r1
cmp r0, 0
bne _08027266
ldrb r0, [r3]
mov r2, r12
ldrb r2, [r2]
cmp r0, r2
bcc _080272B4
ldr r0, [r7]
adds r0, 0x5
str r0, [r7]
b _080272BC
.align 2, 0
_08027298: .4byte gUnknown_2023D74
_0802729C: .4byte gBattleTypeFlags
_080272A0: .4byte gBattlerTarget
_080272A4: .4byte sBattler_AI
_080272A8: .4byte gAbsentBattlerFlags
_080272AC: .4byte gBitTable
_080272B0: .4byte gBattlersCount
_080272B4:
str r4, [r7]
b _080272BC
_080272B8:
adds r0, r2, 0x5
str r0, [r3]
_080272BC:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atk7A_jumpifnexttargetvalid
thumb_func_start atk7B_tryhealhalfhealth
atk7B_tryhealhalfhealth: @ 80272C4
push {r4-r6,lr}
ldr r4, _08027320 @ =gUnknown_2023D74
ldr r1, [r4]
ldrb r2, [r1, 0x1]
ldrb r0, [r1, 0x2]
lsls r0, 8
orrs r2, r0
ldrb r0, [r1, 0x3]
lsls r0, 16
orrs r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 24
orrs r2, r0
ldrb r0, [r1, 0x5]
ldr r3, _08027324 @ =gBattlerTarget
cmp r0, 0x1
bne _080272EC
ldr r0, _08027328 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r3]
_080272EC:
ldr r1, _0802732C @ =gBattleMoveDamage
ldr r6, _08027330 @ =gBattleMons
ldrb r0, [r3]
movs r5, 0x58
muls r0, r5
adds r0, r6
ldrh r0, [r0, 0x2C]
lsrs r0, 1
str r0, [r1]
cmp r0, 0
bne _08027306
movs r0, 0x1
str r0, [r1]
_08027306:
ldr r0, [r1]
negs r0, r0
str r0, [r1]
ldrb r0, [r3]
muls r0, r5
adds r0, r6
ldrh r1, [r0, 0x28]
ldrh r0, [r0, 0x2C]
cmp r1, r0
bne _08027334
str r2, [r4]
b _0802733A
.align 2, 0
_08027320: .4byte gUnknown_2023D74
_08027324: .4byte gBattlerTarget
_08027328: .4byte sBattler_AI
_0802732C: .4byte gBattleMoveDamage
_08027330: .4byte gBattleMons
_08027334:
ldr r0, [r4]
adds r0, 0x6
str r0, [r4]
_0802733A:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end atk7B_tryhealhalfhealth
thumb_func_start atk7C_trymirrormove
atk7C_trymirrormove: @ 8027340
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r2, _080273E0 @ =gBattlersCount
ldr r0, _080273E4 @ =gBattleStruct
mov r10, r0
movs r1, 0
add r0, sp, 0x4
_08027356:
strh r1, [r0]
subs r0, 0x2
cmp r0, sp
bge _08027356
movs r1, 0
mov r8, r1
movs r5, 0
ldrb r1, [r2]
cmp r5, r1
bge _080273AC
ldr r0, _080273E8 @ =sBattler_AI
ldrb r6, [r0]
ldr r2, _080273EC @ =0x0000ffff
mov r9, r2
lsls r4, r6, 3
mov r2, sp
ldr r0, _080273E4 @ =gBattleStruct
mov r12, r0
adds r7, r1, 0
_0802737C:
cmp r5, r6
beq _080273A4
mov r1, r12
ldr r0, [r1]
adds r0, r4, r0
adds r1, r0, 0
adds r1, 0xE0
ldrb r3, [r1]
adds r0, 0xE1
ldrb r0, [r0]
lsls r0, 8
orrs r3, r0
cmp r3, 0
beq _080273A4
cmp r3, r9
beq _080273A4
strh r3, [r2]
adds r2, 0x2
movs r0, 0x1
add r8, r0
_080273A4:
adds r4, 0x2
adds r5, 0x1
cmp r5, r7
blt _0802737C
_080273AC:
ldr r1, _080273E8 @ =sBattler_AI
ldrb r0, [r1]
mov r2, r10
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r1, r0, 0
adds r1, 0x98
ldrb r3, [r1]
adds r0, 0x99
ldrb r0, [r0]
lsls r0, 8
orrs r3, r0
cmp r3, 0
beq _080273FC
ldr r0, _080273EC @ =0x0000ffff
cmp r3, r0
beq _080273FC
ldr r2, _080273F0 @ =gUnknown_2023DD0
ldr r0, [r2]
ldr r1, _080273F4 @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, _080273F8 @ =gCurrentMove
strh r3, [r4]
b _08027426
.align 2, 0
_080273E0: .4byte gBattlersCount
_080273E4: .4byte gBattleStruct
_080273E8: .4byte sBattler_AI
_080273EC: .4byte 0x0000ffff
_080273F0: .4byte gUnknown_2023DD0
_080273F4: .4byte 0xfffffbff
_080273F8: .4byte gCurrentMove
_080273FC:
mov r0, r8
cmp r0, 0
beq _0802746C
ldr r2, _08027450 @ =gUnknown_2023DD0
ldr r0, [r2]
ldr r1, _08027454 @ =0xfffffbff
ands r0, r1
str r0, [r2]
bl Random
lsls r0, 16
lsrs r0, 16
mov r1, r8
bl __modsi3
adds r5, r0, 0
ldr r4, _08027458 @ =gCurrentMove
lsls r0, r5, 1
add r0, sp
ldrh r0, [r0]
strh r0, [r4]
_08027426:
ldrh r0, [r4]
movs r1, 0
bl GetMoveTarget
ldr r1, _0802745C @ =gBattlerTarget
strb r0, [r1]
ldr r5, _08027460 @ =gUnknown_2023D74
ldr r3, _08027464 @ =gUnknown_81D65A8
ldr r2, _08027468 @ =gBattleMoves
ldrh r1, [r4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
str r0, [r5]
b _0802748A
.align 2, 0
_08027450: .4byte gUnknown_2023DD0
_08027454: .4byte 0xfffffbff
_08027458: .4byte gCurrentMove
_0802745C: .4byte gBattlerTarget
_08027460: .4byte gUnknown_2023D74
_08027464: .4byte gUnknown_81D65A8
_08027468: .4byte gBattleMoves
_0802746C:
ldr r2, _0802749C @ =gUnknown_2023ECC
ldr r0, _080274A0 @ =sBattler_AI
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x20
orrs r1, r2
strb r1, [r0]
ldr r1, _080274A4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0802748A:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802749C: .4byte gUnknown_2023ECC
_080274A0: .4byte sBattler_AI
_080274A4: .4byte gUnknown_2023D74
thumb_func_end atk7C_trymirrormove
thumb_func_start atk7D_setrain
atk7D_setrain: @ 80274A8
push {lr}
ldr r2, _080274C8 @ =gBattleWeather
ldrh r0, [r2]
movs r1, 0x7
ands r1, r0
cmp r1, 0
beq _080274D4
ldr r2, _080274CC @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _080274D0 @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
b _080274E4
.align 2, 0
_080274C8: .4byte gBattleWeather
_080274CC: .4byte gMoveResultFlags
_080274D0: .4byte gUnknown_2023E82
_080274D4:
movs r0, 0x1
strh r0, [r2]
ldr r0, _080274F0 @ =gUnknown_2023E82
strb r1, [r0, 0x5]
ldr r0, _080274F4 @ =gUnknown_2023F20
adds r0, 0x28
movs r1, 0x5
strb r1, [r0]
_080274E4:
ldr r1, _080274F8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080274F0: .4byte gUnknown_2023E82
_080274F4: .4byte gUnknown_2023F20
_080274F8: .4byte gUnknown_2023D74
thumb_func_end atk7D_setrain
thumb_func_start atk7E_setreflect
atk7E_setreflect: @ 80274FC
push {r4-r6,lr}
ldr r6, _0802752C @ =sBattler_AI
ldrb r0, [r6]
bl GetBattlerPosition
ldr r4, _08027530 @ =gSideAffecting
movs r5, 0x1
adds r1, r5, 0
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r1, [r1]
adds r0, r5, 0
ands r0, r1
cmp r0, 0
beq _0802753C
ldr r2, _08027534 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _08027538 @ =gUnknown_2023E82
movs r0, 0
b _080275B0
.align 2, 0
_0802752C: .4byte sBattler_AI
_08027530: .4byte gSideAffecting
_08027534: .4byte gMoveResultFlags
_08027538: .4byte gUnknown_2023E82
_0802753C:
ldrb r0, [r6]
bl GetBattlerPosition
adds r1, r5, 0
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r0, [r1]
movs r2, 0x1
orrs r0, r2
strh r0, [r1]
ldrb r0, [r6]
bl GetBattlerPosition
ldr r4, _080275A0 @ =gSideTimers
adds r1, r5, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x5
strb r1, [r0]
ldrb r0, [r6]
bl GetBattlerPosition
adds r1, r5, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r6]
strb r1, [r0, 0x1]
ldr r0, _080275A4 @ =gBattleTypeFlags
ldr r0, [r0]
ands r0, r5
cmp r0, 0
beq _080275AC
movs r0, 0x1
bl CountAliveMonsInBattle
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x2
bne _080275AC
ldr r0, _080275A8 @ =gUnknown_2023E82
strb r1, [r0, 0x5]
b _080275B2
.align 2, 0
_080275A0: .4byte gSideTimers
_080275A4: .4byte gBattleTypeFlags
_080275A8: .4byte gUnknown_2023E82
_080275AC:
ldr r1, _080275C0 @ =gUnknown_2023E82
movs r0, 0x1
_080275B0:
strb r0, [r1, 0x5]
_080275B2:
ldr r1, _080275C4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080275C0: .4byte gUnknown_2023E82
_080275C4: .4byte gUnknown_2023D74
thumb_func_end atk7E_setreflect
thumb_func_start atk7F_setseeded
atk7F_setseeded: @ 80275C8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r7, _08027608 @ =gMoveResultFlags
ldrb r5, [r7]
movs r0, 0x29
ands r0, r5
cmp r0, 0
bne _080275FA
ldr r0, _0802760C @ =gStatuses3
mov r9, r0
ldr r1, _08027610 @ =gBattlerTarget
mov r8, r1
ldrb r4, [r1]
lsls r0, r4, 2
mov r2, r9
adds r6, r0, r2
ldr r2, [r6]
movs r0, 0x4
mov r12, r0
adds r3, r2, 0
ands r3, r0
cmp r3, 0
beq _08027618
_080275FA:
movs r0, 0x1
orrs r0, r5
strb r0, [r7]
ldr r1, _08027614 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
b _08027668
.align 2, 0
_08027608: .4byte gMoveResultFlags
_0802760C: .4byte gStatuses3
_08027610: .4byte gBattlerTarget
_08027614: .4byte gUnknown_2023E82
_08027618:
ldr r1, _08027644 @ =gBattleMons
movs r0, 0x58
muls r0, r4
adds r1, r0, r1
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0xC
beq _08027634
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0xC
bne _0802764C
_08027634:
movs r0, 0x1
orrs r0, r5
strb r0, [r7]
ldr r1, _08027648 @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
b _08027668
.align 2, 0
_08027644: .4byte gBattleMons
_08027648: .4byte gUnknown_2023E82
_0802764C:
ldr r0, _0802767C @ =sBattler_AI
ldrb r0, [r0]
orrs r2, r0
str r2, [r6]
mov r2, r8
ldrb r1, [r2]
lsls r1, 2
add r1, r9
ldr r0, [r1]
mov r2, r12
orrs r0, r2
str r0, [r1]
ldr r0, _08027680 @ =gUnknown_2023E82
strb r3, [r0, 0x5]
_08027668:
ldr r1, _08027684 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802767C: .4byte sBattler_AI
_08027680: .4byte gUnknown_2023E82
_08027684: .4byte gUnknown_2023D74
thumb_func_end atk7F_setseeded
thumb_func_start atk80_manipulatedamage
atk80_manipulatedamage: @ 8027688
push {r4,lr}
ldr r1, _080276A0 @ =gUnknown_2023D74
ldr r0, [r1]
ldrb r2, [r0, 0x1]
adds r4, r1, 0
cmp r2, 0x1
beq _080276B8
cmp r2, 0x1
bgt _080276A4
cmp r2, 0
beq _080276AA
b _080276F8
.align 2, 0
_080276A0: .4byte gUnknown_2023D74
_080276A4:
cmp r2, 0x2
beq _080276F0
b _080276F8
_080276AA:
ldr r1, _080276B4 @ =gBattleMoveDamage
ldr r0, [r1]
negs r0, r0
b _080276F6
.align 2, 0
_080276B4: .4byte gBattleMoveDamage
_080276B8:
ldr r3, _080276E4 @ =gBattleMoveDamage
ldr r0, [r3]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
str r0, [r3]
cmp r0, 0
bne _080276CA
str r2, [r3]
_080276CA:
ldr r2, _080276E8 @ =gBattleMons
ldr r0, _080276EC @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x2C]
lsrs r1, r0, 1
ldr r0, [r3]
cmp r1, r0
bge _080276F8
str r1, [r3]
b _080276F8
.align 2, 0
_080276E4: .4byte gBattleMoveDamage
_080276E8: .4byte gBattleMons
_080276EC: .4byte gBattlerTarget
_080276F0:
ldr r1, _08027704 @ =gBattleMoveDamage
ldr r0, [r1]
lsls r0, 1
_080276F6:
str r0, [r1]
_080276F8:
ldr r0, [r4]
adds r0, 0x2
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08027704: .4byte gBattleMoveDamage
thumb_func_end atk80_manipulatedamage
thumb_func_start atk81_trysetrest
atk81_trysetrest: @ 8027708
push {r4-r7,lr}
sub sp, 0x4
ldr r0, _08027760 @ =gUnknown_2023D74
mov r12, r0
ldr r1, [r0]
ldrb r6, [r1, 0x1]
ldrb r0, [r1, 0x2]
lsls r0, 8
orrs r6, r0
ldrb r0, [r1, 0x3]
lsls r0, 16
orrs r6, r0
ldrb r0, [r1, 0x4]
lsls r0, 24
orrs r6, r0
ldr r5, _08027764 @ =gActiveBattler
ldr r2, _08027768 @ =gBattlerTarget
ldr r0, _0802776C @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r2]
strb r0, [r5]
ldr r4, _08027770 @ =gBattleMoveDamage
ldr r1, _08027774 @ =gBattleMons
ldrb r0, [r2]
movs r3, 0x58
muls r0, r3
adds r0, r1
ldrh r0, [r0, 0x2C]
negs r0, r0
str r0, [r4]
ldrb r0, [r2]
adds r4, r0, 0
muls r4, r3
adds r0, r4, r1
ldrh r3, [r0, 0x28]
adds r7, r5, 0
adds r5, r2, 0
adds r2, r1, 0
ldrh r0, [r0, 0x2C]
cmp r3, r0
bne _08027778
mov r0, r12
str r6, [r0]
b _080277C8
.align 2, 0
_08027760: .4byte gUnknown_2023D74
_08027764: .4byte gActiveBattler
_08027768: .4byte gBattlerTarget
_0802776C: .4byte sBattler_AI
_08027770: .4byte gBattleMoveDamage
_08027774: .4byte gBattleMons
_08027778:
adds r0, r2, 0
adds r0, 0x4C
adds r0, r4, r0
ldr r1, [r0]
movs r0, 0xF8
ands r1, r0
cmp r1, 0
beq _08027794
ldr r1, _08027790 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
b _08027798
.align 2, 0
_08027790: .4byte gUnknown_2023E82
_08027794:
ldr r0, _080277D0 @ =gUnknown_2023E82
strb r1, [r0, 0x5]
_08027798:
ldrb r0, [r5]
movs r3, 0x58
muls r0, r3
adds r2, 0x4C
adds r0, r2
movs r1, 0x3
str r1, [r0]
ldrb r0, [r7]
muls r0, r3
adds r0, r2
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r2, 0
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r7]
bl MarkBufferBankForExecution
ldr r1, _080277D4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_080277C8:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080277D0: .4byte gUnknown_2023E82
_080277D4: .4byte gUnknown_2023D74
thumb_func_end atk81_trysetrest
thumb_func_start atk82_jumpifnotfirstturn
atk82_jumpifnotfirstturn: @ 80277D8
push {r4,r5,lr}
ldr r5, _0802780C @ =gUnknown_2023D74
ldr r4, [r5]
ldrb r3, [r4, 0x1]
ldrb r0, [r4, 0x2]
lsls r0, 8
orrs r3, r0
ldrb r0, [r4, 0x3]
lsls r0, 16
orrs r3, r0
ldrb r0, [r4, 0x4]
lsls r0, 24
orrs r3, r0
ldr r2, _08027810 @ =gDisableStructs
ldr r0, _08027814 @ =sBattler_AI
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x16]
cmp r0, 0
beq _08027818
adds r0, r4, 0x5
str r0, [r5]
b _0802781A
.align 2, 0
_0802780C: .4byte gUnknown_2023D74
_08027810: .4byte gDisableStructs
_08027814: .4byte sBattler_AI
_08027818:
str r3, [r5]
_0802781A:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end atk82_jumpifnotfirstturn
thumb_func_start atk83_nop
atk83_nop: @ 8027820
ldr r1, _0802782C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802782C: .4byte gUnknown_2023D74
thumb_func_end atk83_nop
thumb_func_start UproarWakeUpCheck
UproarWakeUpCheck: @ 8027830
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r3, r0, 24
movs r2, 0
ldr r0, _08027888 @ =gBattlersCount
ldrb r1, [r0]
mov r8, r0
cmp r2, r1
bge _080278A4
ldr r0, _0802788C @ =gBattleMons
mov r12, r0
movs r0, 0x58
muls r0, r3
add r0, r12
adds r5, r0, 0
adds r5, 0x20
adds r4, r1, 0
movs r3, 0
ldr r6, _08027890 @ =gBattleScripting
ldr r7, _08027894 @ =gUnknown_2023E82
_0802785C:
mov r0, r12
adds r0, 0x50
adds r0, r3, r0
ldr r0, [r0]
movs r1, 0x70
ands r0, r1
cmp r0, 0
beq _0802789C
ldrb r0, [r5]
cmp r0, 0x2B
beq _0802789C
movs r3, 0
strb r2, [r6, 0x17]
ldr r1, _08027898 @ =gBattlerTarget
ldrb r0, [r1]
cmp r0, 0xFF
beq _080278BC
cmp r0, r2
beq _080278B0
movs r0, 0x1
strb r0, [r7, 0x5]
b _080278A4
.align 2, 0
_08027888: .4byte gBattlersCount
_0802788C: .4byte gBattleMons
_08027890: .4byte gBattleScripting
_08027894: .4byte gUnknown_2023E82
_08027898: .4byte gBattlerTarget
_0802789C:
adds r3, 0x58
adds r2, 0x1
cmp r2, r4
blt _0802785C
_080278A4:
mov r1, r8
ldrb r1, [r1]
cmp r2, r1
beq _080278C0
movs r0, 0x1
b _080278C2
_080278B0:
ldr r0, _080278B8 @ =gUnknown_2023E82
strb r3, [r0, 0x5]
b _080278A4
.align 2, 0
_080278B8: .4byte gUnknown_2023E82
_080278BC:
strb r2, [r1]
b _080278A4
_080278C0:
movs r0, 0
_080278C2:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end UproarWakeUpCheck
thumb_func_start atk84_jumpifcantmakeasleep
atk84_jumpifcantmakeasleep: @ 80278CC
push {r4-r6,lr}
ldr r5, _080278F8 @ =gUnknown_2023D74
ldr r1, [r5]
ldrb r4, [r1, 0x1]
ldrb r0, [r1, 0x2]
lsls r0, 8
orrs r4, r0
ldrb r0, [r1, 0x3]
lsls r0, 16
orrs r4, r0
ldrb r0, [r1, 0x4]
lsls r0, 24
orrs r4, r0
ldr r6, _080278FC @ =gBattlerTarget
ldrb r0, [r6]
bl UproarWakeUpCheck
lsls r0, 24
cmp r0, 0
beq _08027900
str r4, [r5]
b _08027942
.align 2, 0
_080278F8: .4byte gUnknown_2023D74
_080278FC: .4byte gBattlerTarget
_08027900:
ldr r1, _08027930 @ =gBattleMons
ldrb r3, [r6]
movs r0, 0x58
muls r0, r3
adds r0, r1
adds r0, 0x20
ldrb r0, [r0]
adds r1, r0, 0
cmp r1, 0xF
beq _08027918
cmp r1, 0x48
bne _0802793C
_08027918:
ldr r2, _08027934 @ =gLastUsedAbility
strb r0, [r2]
ldr r1, _08027938 @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
str r4, [r5]
ldrb r1, [r2]
adds r0, r3, 0
bl sub_80C71D0
b _08027942
.align 2, 0
_08027930: .4byte gBattleMons
_08027934: .4byte gLastUsedAbility
_08027938: .4byte gUnknown_2023E82
_0802793C:
ldr r0, [r5]
adds r0, 0x5
str r0, [r5]
_08027942:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end atk84_jumpifcantmakeasleep
thumb_func_start atk85_stockpile
atk85_stockpile: @ 8027948
push {r4,r5,lr}
ldr r5, _08027970 @ =gDisableStructs
ldr r4, _08027974 @ =sBattler_AI
ldrb r1, [r4]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r1, r0, r5
ldrb r0, [r1, 0x9]
cmp r0, 0x3
bne _08027980
ldr r2, _08027978 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _0802797C @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
b _080279AA
.align 2, 0
_08027970: .4byte gDisableStructs
_08027974: .4byte sBattler_AI
_08027978: .4byte gMoveResultFlags
_0802797C: .4byte gUnknown_2023E82
_08027980:
adds r0, 0x1
movs r3, 0
strb r0, [r1, 0x9]
ldr r2, _080279B8 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r2]
movs r0, 0x1
strb r0, [r2, 0x1]
strb r0, [r2, 0x2]
strb r0, [r2, 0x3]
ldrb r1, [r4]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r5
ldrb r0, [r0, 0x9]
strb r0, [r2, 0x4]
movs r0, 0xFF
strb r0, [r2, 0x5]
ldr r0, _080279BC @ =gUnknown_2023E82
strb r3, [r0, 0x5]
_080279AA:
ldr r1, _080279C0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080279B8: .4byte gBattleTextBuff1
_080279BC: .4byte gUnknown_2023E82
_080279C0: .4byte gUnknown_2023D74
thumb_func_end atk85_stockpile
thumb_func_start atk86_stockpiletobasedamage
atk86_stockpiletobasedamage: @ 80279C4
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
ldr r3, _080279FC @ =gUnknown_2023D74
ldr r1, [r3]
ldrb r2, [r1, 0x1]
ldrb r0, [r1, 0x2]
lsls r0, 8
orrs r2, r0
ldrb r0, [r1, 0x3]
lsls r0, 16
orrs r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 24
orrs r2, r0
ldr r7, _08027A00 @ =gDisableStructs
ldr r6, _08027A04 @ =sBattler_AI
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r7
ldrb r0, [r0, 0x9]
cmp r0, 0
bne _08027A08
str r2, [r3]
b _08027AAA
.align 2, 0
_080279FC: .4byte gUnknown_2023D74
_08027A00: .4byte gDisableStructs
_08027A04: .4byte sBattler_AI
_08027A08:
ldr r0, _08027AB8 @ =gUnknown_2023E82
ldrb r0, [r0, 0x6]
cmp r0, 0x1
beq _08027A90
ldr r0, _08027ABC @ =gBattleMoveDamage
mov r8, r0
ldr r4, _08027AC0 @ =gSideAffecting
ldr r5, _08027AC4 @ =gBattlerTarget
ldrb r0, [r5]
bl GetBattlerPosition
movs r1, 0x1
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
ldrb r0, [r6]
movs r4, 0x58
muls r0, r4
ldr r2, _08027AC8 @ =gBattleMons
adds r0, r2
ldrb r1, [r5]
muls r1, r4
adds r1, r2
ldr r2, _08027ACC @ =gCurrentMove
ldrh r2, [r2]
movs r4, 0
str r4, [sp]
str r4, [sp, 0x4]
ldrb r4, [r6]
str r4, [sp, 0x8]
ldrb r4, [r5]
str r4, [sp, 0xC]
bl CalculateBaseDamage
ldrb r2, [r6]
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r1, r7
ldrb r1, [r1, 0x9]
adds r3, r0, 0
muls r3, r1
mov r1, r8
str r3, [r1]
ldr r2, _08027AD0 @ =gBattleScripting
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r7
ldrb r0, [r0, 0x9]
strb r0, [r2, 0x18]
ldr r1, _08027AD4 @ =gUnknown_2023E8C
ldrb r0, [r6]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
bge _08027A90
lsls r0, r3, 4
subs r0, r3
movs r1, 0xA
bl __divsi3
mov r1, r8
str r0, [r1]
_08027A90:
ldr r2, _08027AD8 @ =gDisableStructs
ldr r0, _08027ADC @ =sBattler_AI
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strb r1, [r0, 0x9]
ldr r1, _08027AE0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_08027AAA:
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08027AB8: .4byte gUnknown_2023E82
_08027ABC: .4byte gBattleMoveDamage
_08027AC0: .4byte gSideAffecting
_08027AC4: .4byte gBattlerTarget
_08027AC8: .4byte gBattleMons
_08027ACC: .4byte gCurrentMove
_08027AD0: .4byte gBattleScripting
_08027AD4: .4byte gUnknown_2023E8C
_08027AD8: .4byte gDisableStructs
_08027ADC: .4byte sBattler_AI
_08027AE0: .4byte gUnknown_2023D74
thumb_func_end atk86_stockpiletobasedamage
thumb_func_start atk87_stockpiletohpheal
atk87_stockpiletohpheal: @ 8027AE4
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r7, _08027B24 @ =gUnknown_2023D74
ldr r1, [r7]
ldrb r2, [r1, 0x1]
ldrb r0, [r1, 0x2]
lsls r0, 8
orrs r2, r0
ldrb r0, [r1, 0x3]
lsls r0, 16
orrs r2, r0
ldrb r0, [r1, 0x4]
lsls r0, 24
orrs r2, r0
ldr r0, _08027B28 @ =gDisableStructs
mov r8, r0
ldr r6, _08027B2C @ =sBattler_AI
ldrb r3, [r6]
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
mov r1, r8
adds r4, r0, r1
ldrb r1, [r4, 0x9]
cmp r1, 0
bne _08027B34
str r2, [r7]
ldr r0, _08027B30 @ =gUnknown_2023E82
strb r1, [r0, 0x5]
b _08027BB0
.align 2, 0
_08027B24: .4byte gUnknown_2023D74
_08027B28: .4byte gDisableStructs
_08027B2C: .4byte sBattler_AI
_08027B30: .4byte gUnknown_2023E82
_08027B34:
ldr r1, _08027B58 @ =gBattleMons
movs r0, 0x58
muls r0, r3
adds r1, r0, r1
ldrh r0, [r1, 0x2C]
ldrh r3, [r1, 0x28]
cmp r0, r3
bne _08027B64
movs r0, 0
strb r0, [r4, 0x9]
str r2, [r7]
ldr r1, _08027B5C @ =gBattlerTarget
ldrb r0, [r6]
strb r0, [r1]
ldr r1, _08027B60 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
b _08027BB0
.align 2, 0
_08027B58: .4byte gBattleMons
_08027B5C: .4byte gBattlerTarget
_08027B60: .4byte gUnknown_2023E82
_08027B64:
ldr r5, _08027BBC @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
ldrb r1, [r4, 0x9]
movs r2, 0x3
subs r2, r1
movs r4, 0x1
adds r1, r4, 0
lsls r1, r2
bl __divsi3
str r0, [r5]
cmp r0, 0
bne _08027B80
str r4, [r5]
_08027B80:
ldr r0, [r5]
negs r0, r0
str r0, [r5]
ldr r3, _08027BC0 @ =gBattleScripting
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r8
ldrb r0, [r0, 0x9]
movs r2, 0
strb r0, [r3, 0x18]
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r8
strb r2, [r0, 0x9]
ldr r0, [r7]
adds r0, 0x5
str r0, [r7]
ldr r1, _08027BC4 @ =gBattlerTarget
ldrb r0, [r6]
strb r0, [r1]
_08027BB0:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08027BBC: .4byte gBattleMoveDamage
_08027BC0: .4byte gBattleScripting
_08027BC4: .4byte gBattlerTarget
thumb_func_end atk87_stockpiletohpheal
thumb_func_start atk88_negativedamage
atk88_negativedamage: @ 8027BC8
push {lr}
ldr r2, _08027BF0 @ =gBattleMoveDamage
ldr r0, _08027BF4 @ =gUnknown_2023D54
ldr r0, [r0]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
negs r0, r0
str r0, [r2]
cmp r0, 0
bne _08027BE4
movs r0, 0x1
negs r0, r0
str r0, [r2]
_08027BE4:
ldr r1, _08027BF8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08027BF0: .4byte gBattleMoveDamage
_08027BF4: .4byte gUnknown_2023D54
_08027BF8: .4byte gUnknown_2023D74
thumb_func_end atk88_negativedamage
thumb_func_start ChangeStatBuffs
ChangeStatBuffs: @ 8027BFC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r8, r3
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsrs r7, r1, 24
lsls r2, 24
lsrs r5, r2, 24
movs r0, 0
mov r9, r0
mov r10, r0
movs r0, 0x40
ands r0, r5
cmp r0, 0
beq _08027C30
ldr r0, _08027C28 @ =gActiveBattler
ldr r1, _08027C2C @ =sBattler_AI
b _08027C34
.align 2, 0
_08027C28: .4byte gActiveBattler
_08027C2C: .4byte sBattler_AI
_08027C30:
ldr r0, _08027CD4 @ =gActiveBattler
ldr r1, _08027CD8 @ =gBattlerTarget
_08027C34:
ldrb r1, [r1]
strb r1, [r0]
movs r0, 0xBF
ands r5, r0
movs r0, 0x80
ands r0, r5
cmp r0, 0
beq _08027C4E
mov r0, r9
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
mov r9, r0
_08027C4E:
movs r0, 0x7F
ands r5, r0
movs r0, 0x20
ands r0, r5
cmp r0, 0
beq _08027C64
mov r0, r10
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
mov r10, r0
_08027C64:
movs r0, 0xDF
ands r5, r0
ldr r1, _08027CDC @ =gBattleTextBuff1
movs r4, 0
movs r2, 0xFD
strb r2, [r1]
movs r0, 0x5
strb r0, [r1, 0x1]
strb r7, [r1, 0x2]
movs r3, 0x1
negs r3, r3
mov r12, r3
movs r0, 0xFF
strb r0, [r1, 0x3]
lsls r0, r6, 24
cmp r0, 0
blt _08027C88
b _08027F6C
_08027C88:
ldr r4, _08027CE0 @ =gSideTimers
ldr r1, _08027CD4 @ =gActiveBattler
ldrb r0, [r1]
bl GetBattlerPosition
movs r1, 0x1
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _08027D28
mov r2, r9
cmp r2, 0
bne _08027D28
ldr r0, _08027CE4 @ =gCurrentMove
ldrh r0, [r0]
cmp r0, 0xAE
beq _08027D58
cmp r5, 0x1
bne _08027D48
ldr r4, _08027CE8 @ =gUnknown_2023ECC
ldr r3, _08027CD4 @ =gActiveBattler
ldrb r0, [r3]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r0, [r1]
lsls r0, 31
cmp r0, 0
beq _08027CF0
ldr r0, _08027CEC @ =gUnknown_2023D74
mov r4, r8
str r4, [r0]
b _08027D48
.align 2, 0
_08027CD4: .4byte gActiveBattler
_08027CD8: .4byte gBattlerTarget
_08027CDC: .4byte gBattleTextBuff1
_08027CE0: .4byte gSideTimers
_08027CE4: .4byte gCurrentMove
_08027CE8: .4byte gUnknown_2023ECC
_08027CEC: .4byte gUnknown_2023D74
_08027CF0:
mov r0, r8
bl BattleScriptPush
ldr r1, _08027D18 @ =gBattleScripting
ldr r6, _08027D1C @ =gActiveBattler
ldrb r0, [r6]
strb r0, [r1, 0x17]
ldr r1, _08027D20 @ =gUnknown_2023D74
ldr r0, _08027D24 @ =gUnknown_81D8C3E
str r0, [r1]
ldrb r1, [r6]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
strb r1, [r0]
b _08027D48
.align 2, 0
_08027D18: .4byte gBattleScripting
_08027D1C: .4byte gActiveBattler
_08027D20: .4byte gUnknown_2023D74
_08027D24: .4byte gUnknown_81D8C3E
_08027D28:
ldr r0, _08027D4C @ =gCurrentMove
ldrh r0, [r0]
cmp r0, 0xAE
beq _08027D58
mov r0, r10
cmp r0, 0x1
beq _08027D58
movs r0, 0
bl JumpIfMoveAffectedByProtect
lsls r0, 24
cmp r0, 0
beq _08027D58
ldr r1, _08027D50 @ =gUnknown_2023D74
ldr r0, _08027D54 @ =gUnknown_81D7DF2
str r0, [r1]
_08027D48:
movs r0, 0x1
b _08028060
.align 2, 0
_08027D4C: .4byte gCurrentMove
_08027D50: .4byte gUnknown_2023D74
_08027D54: .4byte gUnknown_81D7DF2
_08027D58:
ldr r2, _08027DA0 @ =gBattleMons
ldr r1, _08027DA4 @ =gActiveBattler
ldrb r3, [r1]
movs r4, 0x58
adds r0, r3, 0
muls r0, r4
adds r0, r2
adds r0, 0x20
ldrb r0, [r0]
mov r10, r2
cmp r0, 0x1D
beq _08027D74
cmp r0, 0x49
bne _08027E0C
_08027D74:
mov r0, r9
cmp r0, 0
bne _08027E0C
ldr r0, _08027DA8 @ =gCurrentMove
ldrh r0, [r0]
cmp r0, 0xAE
beq _08027E0C
cmp r5, 0x1
bne _08027D48
ldr r4, _08027DAC @ =gUnknown_2023ECC
lsls r0, r3, 2
adds r0, r3
lsls r0, 2
adds r0, r4
ldrb r0, [r0]
lsls r0, 31
cmp r0, 0
beq _08027DB4
ldr r0, _08027DB0 @ =gUnknown_2023D74
mov r1, r8
str r1, [r0]
b _08027D48
.align 2, 0
_08027DA0: .4byte gBattleMons
_08027DA4: .4byte gActiveBattler
_08027DA8: .4byte gCurrentMove
_08027DAC: .4byte gUnknown_2023ECC
_08027DB0: .4byte gUnknown_2023D74
_08027DB4:
mov r0, r8
bl BattleScriptPush
ldr r1, _08027DF8 @ =gBattleScripting
ldr r2, _08027DFC @ =gActiveBattler
ldrb r0, [r2]
strb r0, [r1, 0x17]
ldr r1, _08027E00 @ =gUnknown_2023D74
ldr r0, _08027E04 @ =gUnknown_81D9416
str r0, [r1]
ldr r1, _08027E08 @ =gLastUsedAbility
ldrb r0, [r2]
movs r3, 0x58
muls r0, r3
add r0, r10
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldrb r0, [r2]
ldrb r1, [r1]
bl sub_80C71D0
ldr r6, _08027DFC @ =gActiveBattler
ldrb r1, [r6]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
strb r1, [r0]
b _08027D48
.align 2, 0
_08027DF8: .4byte gBattleScripting
_08027DFC: .4byte gActiveBattler
_08027E00: .4byte gUnknown_2023D74
_08027E04: .4byte gUnknown_81D9416
_08027E08: .4byte gLastUsedAbility
_08027E0C:
ldr r1, _08027E58 @ =gActiveBattler
ldrb r0, [r1]
movs r4, 0x58
muls r0, r4
add r0, r10
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x33
bne _08027E6C
mov r2, r9
cmp r2, 0
bne _08027E6C
cmp r7, 0x6
bne _08027E6C
cmp r5, 0x1
bne _08027D48
mov r0, r8
bl BattleScriptPush
ldr r1, _08027E5C @ =gBattleScripting
ldr r3, _08027E58 @ =gActiveBattler
ldrb r0, [r3]
strb r0, [r1, 0x17]
ldr r1, _08027E60 @ =gUnknown_2023D74
ldr r0, _08027E64 @ =gUnknown_81D947E
str r0, [r1]
ldr r1, _08027E68 @ =gLastUsedAbility
ldrb r0, [r3]
muls r0, r4
add r0, r10
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldrb r0, [r3]
ldrb r1, [r1]
bl sub_80C71D0
b _08027D48
.align 2, 0
_08027E58: .4byte gActiveBattler
_08027E5C: .4byte gBattleScripting
_08027E60: .4byte gUnknown_2023D74
_08027E64: .4byte gUnknown_81D947E
_08027E68: .4byte gLastUsedAbility
_08027E6C:
ldr r4, _08027EBC @ =gActiveBattler
ldrb r0, [r4]
movs r4, 0x58
muls r0, r4
add r0, r10
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x34
bne _08027ED0
mov r0, r9
cmp r0, 0
bne _08027ED0
cmp r7, 0x1
bne _08027ED0
cmp r5, 0x1
beq _08027E8E
b _08027D48
_08027E8E:
mov r0, r8
bl BattleScriptPush
ldr r1, _08027EC0 @ =gBattleScripting
ldr r2, _08027EBC @ =gActiveBattler
ldrb r0, [r2]
strb r0, [r1, 0x17]
ldr r1, _08027EC4 @ =gUnknown_2023D74
ldr r0, _08027EC8 @ =gUnknown_81D947E
str r0, [r1]
ldr r1, _08027ECC @ =gLastUsedAbility
ldrb r0, [r2]
muls r0, r4
add r0, r10
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldrb r0, [r2]
ldrb r1, [r1]
bl sub_80C71D0
b _08027D48
.align 2, 0
_08027EBC: .4byte gActiveBattler
_08027EC0: .4byte gBattleScripting
_08027EC4: .4byte gUnknown_2023D74
_08027EC8: .4byte gUnknown_81D947E
_08027ECC: .4byte gLastUsedAbility
_08027ED0:
ldr r3, _08027F5C @ =gActiveBattler
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
add r0, r10
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x13
bne _08027EE8
cmp r5, 0
bne _08027EE8
b _08027D48
_08027EE8:
lsls r0, r6, 24
asrs r0, 28
movs r1, 0x7
ands r0, r1
negs r0, r0
lsls r0, 24
ldr r3, _08027F60 @ =gBattleTextBuff2
movs r4, 0
movs r1, 0xFD
strb r1, [r3]
movs r2, 0x1
lsrs r6, r0, 24
asrs r0, 24
subs r1, 0xFF
cmp r0, r1
bne _08027F12
strb r4, [r3, 0x1]
movs r0, 0xD3
strb r0, [r3, 0x2]
strb r4, [r3, 0x3]
movs r2, 0x4
_08027F12:
adds r0, r2, r3
strb r4, [r0]
adds r2, 0x1
adds r1, r2, r3
movs r0, 0xD4
strb r0, [r1]
adds r2, 0x1
adds r0, r2, r3
strb r4, [r0]
adds r2, 0x1
adds r1, r2, r3
movs r0, 0xFF
strb r0, [r1]
ldr r4, _08027F5C @ =gActiveBattler
ldrb r2, [r4]
movs r0, 0x58
muls r0, r2
adds r0, r7, r0
mov r1, r10
adds r1, 0x18
adds r0, r1
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r0, 0
beq _08027FC2
movs r1, 0
ldr r0, _08027F64 @ =gBattlerTarget
ldrb r0, [r0]
ldr r3, _08027F68 @ =gUnknown_2023E82
mov r8, r3
cmp r0, r2
bne _08027F56
movs r1, 0x1
_08027F56:
mov r4, r8
strb r1, [r4, 0x5]
b _08027FF0
.align 2, 0
_08027F5C: .4byte gActiveBattler
_08027F60: .4byte gBattleTextBuff2
_08027F64: .4byte gBattlerTarget
_08027F68: .4byte gUnknown_2023E82
_08027F6C:
asrs r6, r0, 28
movs r0, 0x7
ands r6, r0
ldr r3, _08027FCC @ =gBattleTextBuff2
strb r2, [r3]
movs r2, 0x1
cmp r6, 0x2
bne _08027F86
strb r4, [r3, 0x1]
movs r0, 0xD1
strb r0, [r3, 0x2]
strb r4, [r3, 0x3]
movs r2, 0x4
_08027F86:
adds r0, r2, r3
strb r4, [r0]
adds r2, 0x1
adds r1, r2, r3
movs r0, 0xD2
strb r0, [r1]
adds r2, 0x1
adds r0, r2, r3
strb r4, [r0]
adds r2, 0x1
adds r1, r2, r3
ldrb r0, [r1]
mov r2, r12
orrs r0, r2
strb r0, [r1]
ldr r2, _08027FD0 @ =gBattleMons
ldr r4, _08027FD4 @ =gActiveBattler
ldrb r3, [r4]
movs r0, 0x58
muls r0, r3
adds r0, r7, r0
adds r1, r2, 0
adds r1, 0x18
adds r0, r1
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
mov r10, r2
cmp r0, 0xC
bne _08027FDC
_08027FC2:
ldr r1, _08027FD8 @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
mov r8, r1
b _08027FF0
.align 2, 0
_08027FCC: .4byte gBattleTextBuff2
_08027FD0: .4byte gBattleMons
_08027FD4: .4byte gActiveBattler
_08027FD8: .4byte gUnknown_2023E82
_08027FDC:
movs r1, 0
ldr r0, _08028070 @ =gBattlerTarget
ldrb r0, [r0]
ldr r2, _08028074 @ =gUnknown_2023E82
mov r8, r2
cmp r0, r3
bne _08027FEC
movs r1, 0x1
_08027FEC:
mov r3, r8
strb r1, [r3, 0x5]
_08027FF0:
ldr r2, _08028078 @ =gActiveBattler
ldrb r0, [r2]
movs r4, 0x58
adds r1, r0, 0
muls r1, r4
adds r1, r7, r1
mov r3, r10
adds r3, 0x18
adds r1, r3
lsls r0, r6, 24
asrs r0, 24
ldrb r6, [r1]
adds r0, r6
strb r0, [r1]
ldrb r0, [r2]
muls r0, r4
adds r0, r7, r0
adds r1, r0, r3
movs r0, 0
ldrsb r0, [r1, r0]
cmp r0, 0
bge _08028020
movs r0, 0
strb r0, [r1]
_08028020:
ldr r1, _08028078 @ =gActiveBattler
ldrb r0, [r1]
muls r0, r4
adds r0, r7, r0
adds r1, r0, r3
movs r0, 0
ldrsb r0, [r1, r0]
cmp r0, 0xC
ble _08028036
movs r0, 0xC
strb r0, [r1]
_08028036:
mov r2, r8
ldrb r0, [r2, 0x5]
cmp r0, 0x2
bne _0802805E
movs r3, 0x1
ands r3, r5
cmp r3, 0
beq _08028050
ldr r0, _0802807C @ =gMoveResultFlags
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
strb r1, [r0]
_08028050:
mov r4, r8
ldrb r0, [r4, 0x5]
cmp r0, 0x2
bne _0802805E
cmp r3, 0
bne _0802805E
b _08027D48
_0802805E:
movs r0, 0
_08028060:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08028070: .4byte gBattlerTarget
_08028074: .4byte gUnknown_2023E82
_08028078: .4byte gActiveBattler
_0802807C: .4byte gMoveResultFlags
thumb_func_end ChangeStatBuffs
thumb_func_start atk89_statbuffchange
atk89_statbuffchange: @ 8028080
push {r4,r5,lr}
ldr r5, _080280C4 @ =gUnknown_2023D74
ldr r2, [r5]
ldrb r3, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r3, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r3, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r3, r0
ldr r0, _080280C8 @ =gBattleScripting
ldrb r4, [r0, 0x1A]
movs r0, 0xF0
ands r0, r4
lsls r0, 24
asrs r0, 24
movs r1, 0xF
ands r1, r4
ldrb r2, [r2, 0x1]
bl ChangeStatBuffs
lsls r0, 24
cmp r0, 0
bne _080280BC
ldr r0, [r5]
adds r0, 0x6
str r0, [r5]
_080280BC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080280C4: .4byte gUnknown_2023D74
_080280C8: .4byte gBattleScripting
thumb_func_end atk89_statbuffchange
thumb_func_start atk8A_normalisebuffs
atk8A_normalisebuffs: @ 80280CC
push {r4-r7,lr}
movs r2, 0
ldr r0, _08028114 @ =gBattlersCount
ldrb r1, [r0]
ldr r0, _08028118 @ =gUnknown_2023D74
mov r12, r0
cmp r2, r1
bge _08028104
ldr r0, _0802811C @ =gBattleMons
movs r4, 0x6
adds r5, r1, 0
movs r7, 0x58
adds r6, r0, 0
adds r6, 0x18
_080280E8:
adds r3, r2, 0x1
movs r1, 0x7
adds r0, r2, 0
muls r0, r7
adds r0, r6
adds r0, 0x7
_080280F4:
strb r4, [r0]
subs r0, 0x1
subs r1, 0x1
cmp r1, 0
bge _080280F4
adds r2, r3, 0
cmp r2, r5
blt _080280E8
_08028104:
mov r1, r12
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08028114: .4byte gBattlersCount
_08028118: .4byte gUnknown_2023D74
_0802811C: .4byte gBattleMons
thumb_func_end atk8A_normalisebuffs
thumb_func_start atk8B_setbide
atk8B_setbide: @ 8028120
push {r4,r5,lr}
ldr r4, _08028178 @ =gBattleMons
ldr r3, _0802817C @ =sBattler_AI
ldrb r0, [r3]
movs r5, 0x58
adds r2, r0, 0
muls r2, r5
adds r4, 0x50
adds r2, r4
ldr r0, [r2]
movs r1, 0x80
lsls r1, 5
orrs r0, r1
str r0, [r2]
ldr r1, _08028180 @ =gUnknown_2023DB8
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
ldr r1, _08028184 @ =gCurrentMove
ldrh r1, [r1]
movs r2, 0
strh r1, [r0]
ldr r1, _08028188 @ =gUnknown_2023D58
ldrb r0, [r3]
lsls r0, 2
adds r0, r1
str r2, [r0]
ldrb r0, [r3]
adds r1, r0, 0
muls r1, r5
adds r1, r4
ldr r0, [r1]
movs r2, 0x80
lsls r2, 2
orrs r0, r2
str r0, [r1]
ldr r1, _0802818C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08028178: .4byte gBattleMons
_0802817C: .4byte sBattler_AI
_08028180: .4byte gUnknown_2023DB8
_08028184: .4byte gCurrentMove
_08028188: .4byte gUnknown_2023D58
_0802818C: .4byte gUnknown_2023D74
thumb_func_end atk8B_setbide
thumb_func_start atk8C_confuseifrepeatingattackends
atk8C_confuseifrepeatingattackends: @ 8028190
push {lr}
ldr r1, _080281C0 @ =gBattleMons
ldr r0, _080281C4 @ =sBattler_AI
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0xC0
lsls r1, 4
ands r0, r1
cmp r0, 0
bne _080281B2
ldr r1, _080281C8 @ =gUnknown_2023E82
movs r0, 0x75
strb r0, [r1, 0x3]
_080281B2:
ldr r1, _080281CC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080281C0: .4byte gBattleMons
_080281C4: .4byte sBattler_AI
_080281C8: .4byte gUnknown_2023E82
_080281CC: .4byte gUnknown_2023D74
thumb_func_end atk8C_confuseifrepeatingattackends
thumb_func_start atk8D_setmultihitcounter
atk8D_setmultihitcounter: @ 80281D0
push {r4,r5,lr}
ldr r0, _080281E4 @ =gUnknown_2023D74
ldr r0, [r0]
ldrb r1, [r0, 0x1]
cmp r1, 0
beq _080281EC
ldr r0, _080281E8 @ =gUnknown_2023D72
strb r1, [r0]
b _08028206
.align 2, 0
_080281E4: .4byte gUnknown_2023D74
_080281E8: .4byte gUnknown_2023D72
_080281EC:
ldr r4, _08028214 @ =gUnknown_2023D72
bl Random
movs r5, 0x3
ands r0, r5
strb r0, [r4]
cmp r0, 0x1
bls _08028202
bl Random
ands r0, r5
_08028202:
adds r0, 0x2
strb r0, [r4]
_08028206:
ldr r1, _08028218 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08028214: .4byte gUnknown_2023D72
_08028218: .4byte gUnknown_2023D74
thumb_func_end atk8D_setmultihitcounter
thumb_func_start atk8E_initmultihitstring
atk8E_initmultihitstring: @ 802821C
ldr r1, _0802823C @ =gBattleScripting
movs r2, 0
movs r0, 0xFD
strb r0, [r1, 0x8]
movs r0, 0x1
strb r0, [r1, 0x9]
strb r0, [r1, 0xA]
strb r0, [r1, 0xB]
strb r2, [r1, 0xC]
movs r0, 0xFF
strb r0, [r1, 0xD]
ldr r1, _08028240 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802823C: .4byte gBattleScripting
_08028240: .4byte gUnknown_2023D74
thumb_func_end atk8E_initmultihitstring
thumb_func_start TryDoForceSwitchOut
TryDoForceSwitchOut: @ 8028244
push {r4-r7,lr}
ldr r6, _08028278 @ =gBattleMons
ldr r7, _0802827C @ =sBattler_AI
ldrb r0, [r7]
movs r5, 0x58
adds r1, r0, 0
muls r1, r5
adds r1, r6
adds r1, 0x2A
ldr r4, _08028280 @ =gBattlerTarget
ldrb r3, [r4]
adds r0, r3, 0
muls r0, r5
adds r0, r6
adds r0, 0x2A
ldrb r1, [r1]
ldrb r0, [r0]
cmp r1, r0
bcc _0802828C
ldr r0, _08028284 @ =gBattleStruct
ldr r1, [r0]
adds r1, r3, r1
adds r1, 0x58
ldr r2, _08028288 @ =gBattlerPartyIndexes
lsls r0, r3, 1
b _080282E8
.align 2, 0
_08028278: .4byte gBattleMons
_0802827C: .4byte sBattler_AI
_08028280: .4byte gBattlerTarget
_08028284: .4byte gBattleStruct
_08028288: .4byte gBattlerPartyIndexes
_0802828C:
bl Random
movs r3, 0xFF
ands r3, r0
ldrb r0, [r7]
muls r0, r5
adds r0, r6
adds r0, 0x2A
ldrb r2, [r0]
ldrb r4, [r4]
adds r0, r4, 0
muls r0, r5
adds r0, r6
adds r0, 0x2A
ldrb r1, [r0]
adds r2, r1
adds r0, r3, 0
muls r0, r2
asrs r0, 8
adds r0, 0x1
lsrs r1, 2
cmp r0, r1
bhi _080282DC
ldr r3, _080282D8 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
movs r0, 0
b _080282F6
.align 2, 0
_080282D8: .4byte gUnknown_2023D74
_080282DC:
ldr r0, _080282FC @ =gBattleStruct
ldr r1, [r0]
adds r1, r4, r1
adds r1, 0x58
ldr r2, _08028300 @ =gBattlerPartyIndexes
lsls r0, r4, 1
_080282E8:
adds r0, r2
ldrh r0, [r0]
strb r0, [r1]
ldr r1, _08028304 @ =gUnknown_2023D74
ldr r0, _08028308 @ =gUnknown_81D8C10
str r0, [r1]
movs r0, 0x1
_080282F6:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080282FC: .4byte gBattleStruct
_08028300: .4byte gBattlerPartyIndexes
_08028304: .4byte gUnknown_2023D74
_08028308: .4byte gUnknown_81D8C10
thumb_func_end TryDoForceSwitchOut
thumb_func_start sub_802830C
sub_802830C: @ 802830C
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r4, _080283A4 @ =gBattleTypeFlags
ldr r0, [r4]
movs r1, 0x8
ands r0, r1
cmp r0, 0
bne _08028320
b _080285F4
_08028320:
ldr r5, _080283A8 @ =gBattlerTarget
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, 24
ldr r1, _080283AC @ =gEnemyParty
mov r8, r1
cmp r0, 0
bne _08028336
ldr r0, _080283B0 @ =gPlayerParty
mov r8, r0
_08028336:
ldr r0, [r4]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _080283B4
movs r7, 0
movs r6, 0
ldrb r0, [r5]
bl GetBankMultiplayerId
lsls r0, 24
lsrs r0, 24
bl GetLinkTrainerFlankId
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bne _0802835C
movs r6, 0x3
_0802835C:
adds r5, r6, 0
adds r0, r5, 0x3
cmp r5, r0
bge _080283F4
_08028364:
movs r0, 0x64
muls r0, r5
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _08028396
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0
bne _08028396
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _08028396
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
_08028396:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
adds r0, r6, 0x3
cmp r5, r0
blt _08028364
b _080283F4
.align 2, 0
_080283A4: .4byte gBattleTypeFlags
_080283A8: .4byte gBattlerTarget
_080283AC: .4byte gEnemyParty
_080283B0: .4byte gPlayerParty
_080283B4:
movs r7, 0
movs r5, 0
_080283B8:
movs r0, 0x64
muls r0, r5
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _080283EA
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0
bne _080283EA
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _080283EA
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
_080283EA:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x5
bls _080283B8
_080283F4:
cmp r7, 0x1
bhi _08028404
ldr r0, _08028438 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x41
ands r0, r1
cmp r0, 0x1
bne _0802841C
_08028404:
cmp r7, 0x2
bhi _08028440
ldr r0, _08028438 @ =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08028440
movs r0, 0x40
ands r1, r0
cmp r1, 0
bne _08028440
_0802841C:
ldr r3, _0802843C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _080285F8
.align 2, 0
_08028438: .4byte gBattleTypeFlags
_0802843C: .4byte gUnknown_2023D74
_08028440:
bl TryDoForceSwitchOut
lsls r0, 24
cmp r0, 0
bne _0802844C
b _080285F8
_0802844C:
ldr r0, _0802848C @ =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _080284F0
_08028458:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x3
bl __umodsi3
lsls r0, 24
lsrs r6, r0, 24
ldr r0, _08028490 @ =gBattlerTarget
ldrb r0, [r0]
bl GetBankMultiplayerId
lsls r0, 24
lsrs r0, 24
bl GetLinkTrainerFlankId
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bne _08028494
adds r0, r6, 0x3
lsls r0, 24
lsrs r5, r0, 24
b _08028496
.align 2, 0
_0802848C: .4byte gBattleTypeFlags
_08028490: .4byte gBattlerTarget
_08028494:
adds r5, r6, 0
_08028496:
ldr r4, _080284E8 @ =gBattlerPartyIndexes
ldr r0, _080284EC @ =gBattlerTarget
ldrb r2, [r0]
lsls r1, r2, 1
adds r1, r4
lsls r0, r5, 16
lsrs r3, r0, 16
ldrh r1, [r1]
cmp r3, r1
beq _08028458
movs r0, 0x2
eors r2, r0
lsls r0, r2, 1
adds r0, r4
ldrh r0, [r0]
cmp r3, r0
beq _08028458
movs r0, 0x64
muls r0, r5
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _08028458
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0x1
beq _08028458
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _08028458
b _080285AE
.align 2, 0
_080284E8: .4byte gBattlerPartyIndexes
_080284EC: .4byte gBattlerTarget
_080284F0:
movs r0, 0x1
ands r1, r0
cmp r1, 0
beq _08028560
ldr r6, _08028558 @ =gBattlerPartyIndexes
_080284FA:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x6
bl __umodsi3
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _0802855C @ =gBattlerTarget
ldrb r1, [r0]
lsls r0, r1, 1
adds r0, r6
adds r2, r5, 0
ldrh r0, [r0]
cmp r2, r0
beq _080284FA
movs r0, 0x2
eors r1, r0
lsls r0, r1, 1
adds r0, r6
ldrh r0, [r0]
cmp r2, r0
beq _080284FA
movs r0, 0x64
muls r0, r5
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _080284FA
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0x1
beq _080284FA
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _080284FA
b _080285AE
.align 2, 0
_08028558: .4byte gBattlerPartyIndexes
_0802855C: .4byte gBattlerTarget
_08028560:
ldr r6, _080285E8 @ =gBattlerPartyIndexes
_08028562:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x6
bl __umodsi3
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _080285EC @ =gBattlerTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
cmp r5, r0
beq _08028562
movs r0, 0x64
muls r0, r5
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _08028562
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0x1
beq _08028562
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _08028562
_080285AE:
ldr r4, _080285EC @ =gBattlerTarget
ldrb r0, [r4]
ldr r1, _080285F0 @ =gBattleStruct
ldr r1, [r1]
adds r0, r1
adds r0, 0x5C
strb r5, [r0]
bl sub_811FA20
lsls r0, 24
cmp r0, 0
bne _080285CC
ldrb r0, [r4]
bl sub_8013F6C
_080285CC:
ldrb r0, [r4]
adds r1, r5, 0
movs r2, 0
bl sub_8127EC4
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
adds r1, r5, 0
movs r2, 0x1
bl sub_8127EC4
b _080285F8
.align 2, 0
_080285E8: .4byte gBattlerPartyIndexes
_080285EC: .4byte gBattlerTarget
_080285F0: .4byte gBattleStruct
_080285F4:
bl TryDoForceSwitchOut
_080285F8:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_802830C
thumb_func_start atk90_tryconversiontypechange
atk90_tryconversiontypechange: @ 8028604
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
movs r6, 0
ldr r2, _08028698 @ =gBattleMons
ldr r3, _0802869C @ =sBattler_AI
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
adds r1, r2, 0
adds r1, 0xC
adds r0, r1
ldrh r0, [r0]
mov r8, r2
cmp r0, 0
beq _08028646
movs r5, 0x58
adds r2, r1, 0
_0802862C:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x3
bhi _08028646
lsls r1, r6, 1
ldrb r0, [r3]
muls r0, r5
adds r1, r0
adds r1, r2
ldrh r0, [r1]
cmp r0, 0
bne _0802862C
_08028646:
movs r3, 0
cmp r3, r6
bcs _080286C8
ldr r0, _080286A0 @ =gBattleMoves
mov r10, r0
ldr r5, _08028698 @ =gBattleMons
mov r12, r5
ldr r7, _0802869C @ =sBattler_AI
ldrb r0, [r7]
movs r4, 0x58
adds r5, r0, 0
muls r5, r4
movs r0, 0xC
add r0, r12
mov r9, r0
_08028664:
lsls r0, r3, 1
adds r0, r5
add r0, r9
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
add r0, r10
ldrb r2, [r0, 0x2]
cmp r2, 0x9
bne _080286A6
mov r0, r8
adds r1, r5, r0
adds r0, r1, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0x7
beq _08028692
adds r0, r1, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0x7
bne _080286A4
_08028692:
movs r2, 0x7
b _080286A6
.align 2, 0
_08028698: .4byte gBattleMons
_0802869C: .4byte sBattler_AI
_080286A0: .4byte gBattleMoves
_080286A4:
movs r2, 0
_080286A6:
ldrb r0, [r7]
muls r0, r4
add r0, r12
adds r1, r0, 0
adds r1, 0x21
ldrb r1, [r1]
cmp r2, r1
beq _080286BE
adds r0, 0x22
ldrb r0, [r0]
cmp r2, r0
bne _080286C8
_080286BE:
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, r6
bcc _08028664
_080286C8:
cmp r3, r6
bne _080286EC
ldr r3, _080286E8 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _08028790
.align 2, 0
_080286E8: .4byte gUnknown_2023D74
_080286EC:
movs r7, 0x3
ldr r5, _08028744 @ =gBattleMoves
mov r9, r5
_080286F2:
bl Random
adds r3, r0, 0
ands r3, r7
cmp r3, r6
bcs _080286F2
ldr r4, _08028748 @ =gBattleMons
lsls r1, r3, 1
ldr r3, _0802874C @ =sBattler_AI
ldrb r2, [r3]
movs r0, 0x58
adds r5, r2, 0
muls r5, r0
adds r1, r5
adds r0, r4, 0
adds r0, 0xC
adds r1, r0
ldrh r1, [r1]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
add r0, r9
ldrb r2, [r0, 0x2]
mov r8, r4
adds r4, r3, 0
cmp r2, 0x9
bne _08028752
mov r0, r8
adds r2, r5, r0
adds r0, r2, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0x7
beq _08028740
adds r0, r2, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0x7
bne _08028750
_08028740:
movs r2, 0x7
b _08028752
.align 2, 0
_08028744: .4byte gBattleMoves
_08028748: .4byte gBattleMons
_0802874C: .4byte sBattler_AI
_08028750:
movs r2, 0
_08028752:
ldrb r0, [r4]
movs r3, 0x58
muls r0, r3
add r0, r8
adds r1, r0, 0
adds r1, 0x21
ldrb r5, [r1]
cmp r2, r5
beq _080286F2
adds r0, 0x22
ldrb r0, [r0]
cmp r2, r0
beq _080286F2
strb r2, [r1]
ldrb r0, [r4]
muls r0, r3
add r0, r8
adds r0, 0x22
strb r2, [r0]
ldr r1, _080287A0 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x3
strb r0, [r1, 0x1]
strb r2, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
ldr r1, _080287A4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_08028790:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080287A0: .4byte gBattleTextBuff1
_080287A4: .4byte gUnknown_2023D74
thumb_func_end atk90_tryconversiontypechange
thumb_func_start atk91_givepaydaymoney
atk91_givepaydaymoney: @ 80287A8
push {r4,r5,lr}
ldr r0, _0802880C @ =gBattleTypeFlags
ldr r0, [r0]
movs r5, 0x2
ands r0, r5
cmp r0, 0
bne _08028828
ldr r1, _08028810 @ =gUnknown_2023E7E
ldrh r0, [r1]
cmp r0, 0
beq _08028828
adds r1, r0, 0
ldr r0, _08028814 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x4A
ldrb r0, [r0]
adds r4, r1, 0
muls r4, r0
ldr r0, _08028818 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xA4
lsls r1, 2
adds r0, r1
adds r1, r4, 0
bl AddMoney
ldr r1, _0802881C @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x1
strb r0, [r1, 0x1]
strb r5, [r1, 0x2]
movs r0, 0x5
strb r0, [r1, 0x3]
strb r4, [r1, 0x4]
movs r0, 0xFF
lsls r0, 8
ands r4, r0
lsrs r4, 8
strb r4, [r1, 0x5]
movs r0, 0xFF
strb r0, [r1, 0x6]
ldr r4, _08028820 @ =gUnknown_2023D74
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08028824 @ =gUnknown_81D911D
str r0, [r4]
b _08028830
.align 2, 0
_0802880C: .4byte gBattleTypeFlags
_08028810: .4byte gUnknown_2023E7E
_08028814: .4byte gBattleStruct
_08028818: .4byte gSaveBlock1Ptr
_0802881C: .4byte gBattleTextBuff1
_08028820: .4byte gUnknown_2023D74
_08028824: .4byte gUnknown_81D911D
_08028828:
ldr r1, _08028838 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_08028830:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08028838: .4byte gUnknown_2023D74
thumb_func_end atk91_givepaydaymoney
thumb_func_start atk92_setlightscreen
atk92_setlightscreen: @ 802883C
push {r4-r6,lr}
ldr r5, _0802886C @ =sBattler_AI
ldrb r0, [r5]
bl GetBattlerPosition
ldr r4, _08028870 @ =gSideAffecting
movs r6, 0x1
adds r1, r6, 0
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r1, [r1]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0802887C
ldr r2, _08028874 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _08028878 @ =gUnknown_2023E82
movs r0, 0
b _080288F0
.align 2, 0
_0802886C: .4byte sBattler_AI
_08028870: .4byte gSideAffecting
_08028874: .4byte gMoveResultFlags
_08028878: .4byte gUnknown_2023E82
_0802887C:
ldrb r0, [r5]
bl GetBattlerPosition
adds r1, r6, 0
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r0, [r1]
movs r2, 0x2
orrs r0, r2
strh r0, [r1]
ldrb r0, [r5]
bl GetBattlerPosition
ldr r4, _080288E0 @ =gSideTimers
adds r1, r6, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x5
strb r1, [r0, 0x2]
ldrb r0, [r5]
bl GetBattlerPosition
adds r1, r6, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r5]
strb r1, [r0, 0x3]
ldr r0, _080288E4 @ =gBattleTypeFlags
ldr r0, [r0]
ands r0, r6
cmp r0, 0
beq _080288EC
movs r0, 0x1
bl CountAliveMonsInBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _080288EC
ldr r1, _080288E8 @ =gUnknown_2023E82
movs r0, 0x4
b _080288F0
.align 2, 0
_080288E0: .4byte gSideTimers
_080288E4: .4byte gBattleTypeFlags
_080288E8: .4byte gUnknown_2023E82
_080288EC:
ldr r1, _08028900 @ =gUnknown_2023E82
movs r0, 0x3
_080288F0:
strb r0, [r1, 0x5]
ldr r1, _08028904 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08028900: .4byte gUnknown_2023E82
_08028904: .4byte gUnknown_2023D74
thumb_func_end atk92_setlightscreen
thumb_func_start atk93_tryKO
atk93_tryKO: @ 8028908
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r7, _08028934 @ =gBattleMons
ldr r6, _08028938 @ =gBattlerTarget
ldrb r2, [r6]
movs r5, 0x58
adds r0, r2, 0
muls r0, r5
adds r1, r0, r7
ldrh r0, [r1, 0x2E]
cmp r0, 0xAF
bne _08028940
ldr r1, _0802893C @ =gEnigmaBerries
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r4, [r0, 0x7]
ldrb r6, [r0, 0x1A]
b _0802895A
.align 2, 0
_08028934: .4byte gBattleMons
_08028938: .4byte gBattlerTarget
_0802893C: .4byte gEnigmaBerries
_08028940:
ldrh r0, [r1, 0x2E]
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r6]
muls r0, r5
adds r0, r7
ldrh r0, [r0, 0x2E]
bl ItemId_GetHoldEffectParam
lsls r0, 24
lsrs r6, r0, 24
_0802895A:
ldr r1, _080289D4 @ =gPotentialItemEffectBattler
ldr r5, _080289D8 @ =gBattlerTarget
ldrb r0, [r5]
strb r0, [r1]
cmp r4, 0x27
bne _08028998
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
cmp r0, r6
bcs _08028998
ldrb r0, [r5]
movs r1, 0x27
bl sub_80C7208
ldr r2, _080289DC @ =gUnknown_2023ECC
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
_08028998:
ldr r1, _080289E0 @ =gBattleMons
ldr r2, _080289D8 @ =gBattlerTarget
ldrb r3, [r2]
movs r6, 0x58
adds r0, r3, 0
muls r0, r6
adds r5, r0, r1
adds r0, r5, 0
adds r0, 0x20
ldrb r4, [r0]
mov r8, r1
mov r9, r2
cmp r4, 0x5
bne _080289F4
ldr r2, _080289E4 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r0, _080289E8 @ =gLastUsedAbility
strb r4, [r0]
ldr r1, _080289EC @ =gUnknown_2023D74
ldr r0, _080289F0 @ =gUnknown_81D93A1
str r0, [r1]
mov r1, r9
ldrb r0, [r1]
movs r1, 0x5
bl sub_80C71D0
b _08028C48
.align 2, 0
_080289D4: .4byte gPotentialItemEffectBattler
_080289D8: .4byte gBattlerTarget
_080289DC: .4byte gUnknown_2023ECC
_080289E0: .4byte gBattleMons
_080289E4: .4byte gMoveResultFlags
_080289E8: .4byte gLastUsedAbility
_080289EC: .4byte gUnknown_2023D74
_080289F0: .4byte gUnknown_81D93A1
_080289F4:
ldr r1, _08028A68 @ =gStatuses3
lsls r0, r3, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0x18
ands r0, r1
cmp r0, 0
bne _08028A78
ldr r1, _08028A6C @ =gBattleMoves
ldr r0, _08028A70 @ =gCurrentMove
ldrh r0, [r0]
lsls r2, r0, 1
adds r2, r0
lsls r2, 2
adds r2, r1
ldr r7, _08028A74 @ =sBattler_AI
ldrb r0, [r7]
muls r0, r6
add r0, r8
adds r0, 0x2A
ldrb r0, [r0]
adds r1, r5, 0
adds r1, 0x2A
ldrb r1, [r1]
subs r0, r1
ldrb r2, [r2, 0x3]
adds r0, r2
lsls r0, 16
lsrs r4, r0, 16
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
adds r0, 0x1
cmp r0, r4
blt _08028A48
b _08028BE0
_08028A48:
ldrb r0, [r7]
adds r1, r0, 0
muls r1, r6
add r1, r8
adds r1, 0x2A
mov r2, r9
ldrb r0, [r2]
muls r0, r6
add r0, r8
adds r0, 0x2A
ldrb r1, [r1]
movs r4, 0x1
ldrb r0, [r0]
cmp r1, r0
bcs _08028B0E
b _08028BE0
.align 2, 0
_08028A68: .4byte gStatuses3
_08028A6C: .4byte gBattleMoves
_08028A70: .4byte gCurrentMove
_08028A74: .4byte sBattler_AI
_08028A78:
ldr r1, _08028B44 @ =gDisableStructs
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
adds r0, r1
ldr r1, _08028B48 @ =sBattler_AI
ldrb r0, [r0, 0x15]
adds r7, r1, 0
ldrb r3, [r7]
cmp r0, r3
bne _08028AA2
ldrb r0, [r7]
muls r0, r6
add r0, r8
adds r0, 0x2A
adds r1, r5, 0
adds r1, 0x2A
ldrb r0, [r0]
ldrb r1, [r1]
cmp r0, r1
bcs _08028B1A
_08028AA2:
ldr r1, _08028B4C @ =gBattleMoves
ldr r0, _08028B50 @ =gCurrentMove
ldrh r0, [r0]
lsls r2, r0, 1
adds r2, r0
lsls r2, 2
adds r2, r1
ldr r6, _08028B54 @ =gBattleMons
ldrb r0, [r7]
movs r5, 0x58
muls r0, r5
adds r0, r6
adds r0, 0x2A
ldrb r1, [r0]
ldr r0, _08028B58 @ =gBattlerTarget
mov r8, r0
ldrb r0, [r0]
muls r0, r5
adds r0, r6
adds r0, 0x2A
ldrb r0, [r0]
subs r1, r0
ldrb r2, [r2, 0x3]
adds r1, r2
lsls r1, 16
lsrs r4, r1, 16
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
adds r0, 0x1
cmp r0, r4
bge _08028B0C
ldrb r0, [r7]
adds r1, r0, 0
muls r1, r5
adds r1, r6
adds r1, 0x2A
mov r2, r8
ldrb r0, [r2]
muls r0, r5
adds r0, r6
adds r0, 0x2A
ldrb r1, [r1]
movs r4, 0x1
ldrb r0, [r0]
cmp r1, r0
bcs _08028B0E
_08028B0C:
movs r4, 0
_08028B0E:
ldr r3, _08028B54 @ =gBattleMons
mov r8, r3
ldr r0, _08028B58 @ =gBattlerTarget
mov r9, r0
cmp r4, 0
beq _08028BE0
_08028B1A:
ldr r0, _08028B5C @ =gUnknown_2023E8C
mov r1, r9
ldrb r2, [r1]
lsls r1, r2, 4
adds r1, r0
ldrb r0, [r1]
lsls r0, 30
cmp r0, 0
bge _08028B68
ldr r1, _08028B60 @ =gBattleMoveDamage
movs r0, 0x58
muls r0, r2
add r0, r8
ldrh r0, [r0, 0x28]
subs r0, 0x1
str r0, [r1]
ldr r2, _08028B64 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x40
b _08028BC6
.align 2, 0
_08028B44: .4byte gDisableStructs
_08028B48: .4byte sBattler_AI
_08028B4C: .4byte gBattleMoves
_08028B50: .4byte gCurrentMove
_08028B54: .4byte gBattleMons
_08028B58: .4byte gBattlerTarget
_08028B5C: .4byte gUnknown_2023E8C
_08028B60: .4byte gBattleMoveDamage
_08028B64: .4byte gMoveResultFlags
_08028B68:
ldr r0, _08028BA4 @ =gUnknown_2023ECC
lsls r1, r2, 2
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
lsrs r0, 7
cmp r0, 0
beq _08028BB4
ldr r1, _08028BA8 @ =gBattleMoveDamage
movs r3, 0x58
adds r0, r2, 0
muls r0, r3
add r0, r8
ldrh r0, [r0, 0x28]
subs r0, 0x1
str r0, [r1]
ldr r2, _08028BAC @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldr r1, _08028BB0 @ =gUnknown_2023D68
mov r2, r9
ldrb r0, [r2]
muls r0, r3
add r0, r8
ldrh r0, [r0, 0x2E]
strh r0, [r1]
b _08028BCA
.align 2, 0
_08028BA4: .4byte gUnknown_2023ECC
_08028BA8: .4byte gBattleMoveDamage
_08028BAC: .4byte gMoveResultFlags
_08028BB0: .4byte gUnknown_2023D68
_08028BB4:
ldr r1, _08028BD4 @ =gBattleMoveDamage
movs r0, 0x58
muls r0, r2
add r0, r8
ldrh r0, [r0, 0x28]
str r0, [r1]
ldr r2, _08028BD8 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x10
_08028BC6:
orrs r0, r1
strb r0, [r2]
_08028BCA:
ldr r1, _08028BDC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08028C48
.align 2, 0
_08028BD4: .4byte gBattleMoveDamage
_08028BD8: .4byte gMoveResultFlags
_08028BDC: .4byte gUnknown_2023D74
_08028BE0:
ldr r2, _08028C14 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r3, _08028C18 @ =gBattleMons
ldr r0, _08028C1C @ =sBattler_AI
ldrb r0, [r0]
movs r2, 0x58
adds r1, r0, 0
muls r1, r2
adds r1, r3
adds r1, 0x2A
ldr r0, _08028C20 @ =gBattlerTarget
ldrb r0, [r0]
muls r0, r2
adds r0, r3
adds r0, 0x2A
ldrb r1, [r1]
ldrb r0, [r0]
cmp r1, r0
bcc _08028C28
ldr r1, _08028C24 @ =gUnknown_2023E82
movs r0, 0
b _08028C2C
.align 2, 0
_08028C14: .4byte gMoveResultFlags
_08028C18: .4byte gBattleMons
_08028C1C: .4byte sBattler_AI
_08028C20: .4byte gBattlerTarget
_08028C24: .4byte gUnknown_2023E82
_08028C28:
ldr r1, _08028C54 @ =gUnknown_2023E82
movs r0, 0x1
_08028C2C:
strb r0, [r1, 0x5]
ldr r3, _08028C58 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_08028C48:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08028C54: .4byte gUnknown_2023E82
_08028C58: .4byte gUnknown_2023D74
thumb_func_end atk93_tryKO
thumb_func_start atk94_damagetohalftargethp
atk94_damagetohalftargethp: @ 8028C5C
push {lr}
ldr r3, _08028C88 @ =gBattleMoveDamage
ldr r2, _08028C8C @ =gBattleMons
ldr r0, _08028C90 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x28]
lsrs r0, 1
str r0, [r3]
cmp r0, 0
bne _08028C7A
movs r0, 0x1
str r0, [r3]
_08028C7A:
ldr r1, _08028C94 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08028C88: .4byte gBattleMoveDamage
_08028C8C: .4byte gBattleMons
_08028C90: .4byte gBattlerTarget
_08028C94: .4byte gUnknown_2023D74
thumb_func_end atk94_damagetohalftargethp
thumb_func_start atk95_setsandstorm
atk95_setsandstorm: @ 8028C98
push {lr}
ldr r2, _08028CB8 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x18
ands r0, r1
cmp r0, 0
beq _08028CC4
ldr r2, _08028CBC @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _08028CC0 @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
b _08028CD6
.align 2, 0
_08028CB8: .4byte gBattleWeather
_08028CBC: .4byte gMoveResultFlags
_08028CC0: .4byte gUnknown_2023E82
_08028CC4:
movs r0, 0x8
strh r0, [r2]
ldr r1, _08028CE4 @ =gUnknown_2023E82
movs r0, 0x3
strb r0, [r1, 0x5]
ldr r0, _08028CE8 @ =gUnknown_2023F20
adds r0, 0x28
movs r1, 0x5
strb r1, [r0]
_08028CD6:
ldr r1, _08028CEC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08028CE4: .4byte gUnknown_2023E82
_08028CE8: .4byte gUnknown_2023F20
_08028CEC: .4byte gUnknown_2023D74
thumb_func_end atk95_setsandstorm
thumb_func_start sub_8028CF0
sub_8028CF0: @ 8028CF0
push {r4,r5,lr}
sub sp, 0x4
ldr r0, _08028DBC @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0xA0
lsls r1, 8
ands r0, r1
movs r1, 0x80
lsls r1, 8
cmp r0, r1
bne _08028D18
ldr r0, _08028DC0 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08028D18
b _08028E64
_08028D18:
movs r0, 0
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0xD
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
cmp r0, 0
beq _08028D32
b _08028E48
_08028D32:
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
beq _08028D48
b _08028E48
_08028D48:
ldr r2, _08028DC4 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x18
ands r0, r1
ldr r5, _08028DC0 @ =sBattler_AI
adds r4, r2, 0
cmp r0, 0
beq _08028DDA
ldr r0, _08028DC8 @ =gBattleMons
ldrb r2, [r5]
movs r1, 0x58
muls r1, r2
adds r3, r1, r0
adds r0, r3, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0x5
beq _08028DD4
cmp r0, 0x8
beq _08028DD4
cmp r0, 0x4
beq _08028DD4
adds r0, r3, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0x5
beq _08028DD4
cmp r0, 0x8
beq _08028DD4
cmp r0, 0x4
beq _08028DD4
adds r0, r3, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x8
beq _08028DD4
ldr r0, _08028DCC @ =gStatuses3
lsls r1, r2, 2
adds r1, r0
ldr r1, [r1]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08028DD4
movs r0, 0x80
lsls r0, 11
ands r1, r0
cmp r1, 0
bne _08028DD4
ldr r1, _08028DD0 @ =gBattleMoveDamage
ldrh r0, [r3, 0x2C]
lsrs r0, 4
str r0, [r1]
cmp r0, 0
bne _08028DDA
movs r0, 0x1
b _08028DD8
.align 2, 0
_08028DBC: .4byte gBattleTypeFlags
_08028DC0: .4byte sBattler_AI
_08028DC4: .4byte gBattleWeather
_08028DC8: .4byte gBattleMons
_08028DCC: .4byte gStatuses3
_08028DD0: .4byte gBattleMoveDamage
_08028DD4:
ldr r1, _08028E30 @ =gBattleMoveDamage
movs r0, 0
_08028DD8:
str r0, [r1]
_08028DDA:
ldrh r1, [r4]
movs r4, 0x80
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _08028E50
ldr r1, _08028E34 @ =gBattleMons
ldrb r3, [r5]
movs r0, 0x58
muls r0, r3
adds r2, r0, r1
adds r0, r2, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0xF
beq _08028E3C
adds r0, r2, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0xF
beq _08028E3C
ldr r0, _08028E38 @ =gStatuses3
lsls r1, r3, 2
adds r1, r0
ldr r1, [r1]
adds r0, r1, 0
ands r0, r4
cmp r0, 0
bne _08028E3C
movs r0, 0x80
lsls r0, 11
ands r1, r0
cmp r1, 0
bne _08028E3C
ldr r1, _08028E30 @ =gBattleMoveDamage
ldrh r0, [r2, 0x2C]
lsrs r0, 4
str r0, [r1]
cmp r0, 0
bne _08028E50
movs r0, 0x1
str r0, [r1]
b _08028E50
.align 2, 0
_08028E30: .4byte gBattleMoveDamage
_08028E34: .4byte gBattleMons
_08028E38: .4byte gStatuses3
_08028E3C:
ldr r1, _08028E44 @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
b _08028E50
.align 2, 0
_08028E44: .4byte gBattleMoveDamage
_08028E48:
ldr r1, _08028E7C @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
ldr r5, _08028E80 @ =sBattler_AI
_08028E50:
ldr r0, _08028E84 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _08028E88 @ =gBitTable
ldrb r0, [r5]
lsls r0, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
beq _08028E6A
_08028E64:
ldr r1, _08028E7C @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
_08028E6A:
ldr r1, _08028E8C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08028E7C: .4byte gBattleMoveDamage
_08028E80: .4byte sBattler_AI
_08028E84: .4byte gAbsentBattlerFlags
_08028E88: .4byte gBitTable
_08028E8C: .4byte gUnknown_2023D74
thumb_func_end sub_8028CF0
thumb_func_start sub_8028E90
sub_8028E90: @ 8028E90
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r4, _08028EBC @ =sBattler_AI
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08028EC8
ldr r1, _08028EC0 @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, _08028EC4 @ =gPlayerParty
b _08028ED8
.align 2, 0
_08028EBC: .4byte sBattler_AI
_08028EC0: .4byte gBattlerPartyIndexes
_08028EC4: .4byte gPlayerParty
_08028EC8:
ldr r1, _08028EFC @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, _08028F00 @ =gEnemyParty
_08028ED8:
adds r5, r1, r0
ldr r4, _08028F04 @ =gBattlerTarget
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08028F0C
ldr r1, _08028EFC @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, _08028F08 @ =gPlayerParty
b _08028F1C
.align 2, 0
_08028EFC: .4byte gBattlerPartyIndexes
_08028F00: .4byte gEnemyParty
_08028F04: .4byte gBattlerTarget
_08028F08: .4byte gPlayerParty
_08028F0C:
ldr r1, _08028F78 @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, _08028F7C @ =gEnemyParty
_08028F1C:
adds r4, r1, r0
adds r0, r5, 0
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
mov r10, r0
adds r0, r5, 0
movs r1, 0
bl GetMonData
mov r9, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
mov r8, r0
adds r0, r4, 0
movs r1, 0
bl GetMonData
adds r7, r0, 0
ldr r5, _08028F80 @ =gBattlerTarget
ldrb r0, [r5]
movs r6, 0x58
muls r0, r6
ldr r1, _08028F84 @ =gBattleMons
adds r0, r1
adds r0, 0x20
ldrb r2, [r0]
cmp r2, 0xC
bne _08028F94
ldr r1, _08028F88 @ =gUnknown_2023D74
ldr r0, _08028F8C @ =gUnknown_81D9444
str r0, [r1]
ldr r0, _08028F90 @ =gLastUsedAbility
strb r2, [r0]
ldrb r0, [r5]
movs r1, 0xC
bl sub_80C71D0
b _0802902C
.align 2, 0
_08028F78: .4byte gBattlerPartyIndexes
_08028F7C: .4byte gEnemyParty
_08028F80: .4byte gBattlerTarget
_08028F84: .4byte gBattleMons
_08028F88: .4byte gUnknown_2023D74
_08028F8C: .4byte gUnknown_81D9444
_08028F90: .4byte gLastUsedAbility
_08028F94:
mov r0, r10
mov r1, r9
bl GetGenderFromSpeciesAndPersonality
adds r4, r0, 0
mov r0, r8
adds r1, r7, 0
bl GetGenderFromSpeciesAndPersonality
lsls r4, 24
lsls r0, 24
cmp r4, r0
beq _08028FE4
ldrb r0, [r5]
muls r0, r6
ldr r4, _08029000 @ =gBattleMons
adds r4, 0x50
adds r0, r4
ldr r0, [r0]
movs r1, 0xF0
lsls r1, 12
ands r0, r1
cmp r0, 0
bne _08028FE4
mov r0, r10
mov r1, r9
bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
beq _08028FE4
mov r0, r8
adds r1, r7, 0
bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
bne _08029008
_08028FE4:
ldr r3, _08029004 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802902C
.align 2, 0
_08029000: .4byte gBattleMons
_08029004: .4byte gUnknown_2023D74
_08029008:
ldrb r0, [r5]
adds r2, r0, 0
muls r2, r6
adds r2, r4
ldr r1, _0802903C @ =gBitTable
ldr r0, _08029040 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
lsls r1, 16
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
ldr r1, _08029044 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802902C:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802903C: .4byte gBitTable
_08029040: .4byte sBattler_AI
_08029044: .4byte gUnknown_2023D74
thumb_func_end sub_8028E90
thumb_func_start sub_8029048
sub_8029048: @ 8029048
push {r4-r7,lr}
ldr r0, _080290B8 @ =gUnknown_2023BC8
ldr r1, [r0]
cmp r1, 0
beq _08029054
b _080291C0
_08029054:
ldr r5, _080290BC @ =gUnknown_2023D74
ldr r2, [r5]
ldrb r0, [r2, 0x1]
cmp r0, 0xD
bne _080290D4
ldr r2, _080290C0 @ =gActiveBattler
strb r1, [r2]
ldr r0, _080290C4 @ =gBattlersCount
ldrb r0, [r0]
cmp r1, r0
bcs _08029164
ldr r7, _080290C8 @ =gBitTable
adds r4, r2, 0
ldr r5, _080290CC @ =gBattleMons
adds r6, r5, 0
adds r6, 0x50
_08029074:
ldr r0, _080290D0 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldrb r2, [r4]
lsls r0, r2, 2
adds r0, r7
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _080290A2
movs r0, 0x58
muls r2, r0
adds r0, r5, 0
adds r0, 0x4C
adds r0, r2, r0
ldr r1, [r0]
adds r2, r6
ldr r2, [r2]
movs r0, 0
bl EmitStatusIconUpdate
ldrb r0, [r4]
bl MarkBufferBankForExecution
_080290A2:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
ldr r1, _080290C4 @ =gBattlersCount
lsls r0, 24
lsrs r0, 24
ldrb r1, [r1]
cmp r0, r1
bcc _08029074
b _08029164
.align 2, 0
_080290B8: .4byte gUnknown_2023BC8
_080290BC: .4byte gUnknown_2023D74
_080290C0: .4byte gActiveBattler
_080290C4: .4byte gBattlersCount
_080290C8: .4byte gBitTable
_080290CC: .4byte gBattleMons
_080290D0: .4byte gAbsentBattlerFlags
_080290D4:
cmp r0, 0x4
bne _0802918C
ldr r4, _08029170 @ =gActiveBattler
ldr r5, _08029174 @ =sBattler_AI
ldrb r0, [r5]
strb r0, [r4]
ldr r6, _08029178 @ =gAbsentBattlerFlags
ldrb r1, [r6]
ldr r7, _0802917C @ =gBitTable
ldrb r2, [r4]
lsls r0, r2, 2
adds r0, r7
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _08029114
ldr r3, _08029180 @ =gBattleMons
movs r0, 0x58
muls r2, r0
adds r0, r3, 0
adds r0, 0x4C
adds r0, r2, r0
ldr r1, [r0]
adds r3, 0x50
adds r2, r3
ldr r2, [r2]
movs r0, 0
bl EmitStatusIconUpdate
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08029114:
ldr r0, _08029184 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08029164
ldrb r0, [r5]
bl GetBattlerPosition
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
strb r0, [r4]
ldrb r1, [r6]
ldrb r2, [r4]
lsls r0, r2, 2
adds r0, r7
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _08029164
ldr r3, _08029180 @ =gBattleMons
movs r0, 0x58
muls r2, r0
adds r0, r3, 0
adds r0, 0x4C
adds r0, r2, r0
ldr r1, [r0]
adds r3, 0x50
adds r2, r3
ldr r2, [r2]
movs r0, 0
bl EmitStatusIconUpdate
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08029164:
ldr r1, _08029188 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
b _080291C0
.align 2, 0
_08029170: .4byte gActiveBattler
_08029174: .4byte sBattler_AI
_08029178: .4byte gAbsentBattlerFlags
_0802917C: .4byte gBitTable
_08029180: .4byte gBattleMons
_08029184: .4byte gBattleTypeFlags
_08029188: .4byte gUnknown_2023D74
_0802918C:
ldrb r0, [r2, 0x1]
bl sub_8016E24
ldr r4, _080291C8 @ =gActiveBattler
strb r0, [r4]
ldr r3, _080291CC @ =gBattleMons
ldrb r1, [r4]
movs r0, 0x58
adds r2, r1, 0
muls r2, r0
adds r0, r3, 0
adds r0, 0x4C
adds r0, r2, r0
ldr r1, [r0]
adds r3, 0x50
adds r2, r3
ldr r2, [r2]
movs r0, 0
bl EmitStatusIconUpdate
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
_080291C0:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080291C8: .4byte gActiveBattler
_080291CC: .4byte gBattleMons
thumb_func_end sub_8029048
thumb_func_start atk99_setmist
atk99_setmist: @ 80291D0
push {r4-r6,lr}
ldr r6, _08029200 @ =gSideTimers
ldr r4, _08029204 @ =sBattler_AI
ldrb r0, [r4]
bl GetBattlerPosition
movs r5, 0x1
adds r1, r5, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r6
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _08029210
ldr r2, _08029208 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x20
orrs r0, r1
strb r0, [r2]
ldr r0, _0802920C @ =gUnknown_2023E82
strb r5, [r0, 0x5]
b _0802925E
.align 2, 0
_08029200: .4byte gSideTimers
_08029204: .4byte sBattler_AI
_08029208: .4byte gMoveResultFlags
_0802920C: .4byte gUnknown_2023E82
_08029210:
ldrb r0, [r4]
bl GetBattlerPosition
adds r1, r5, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r6
movs r1, 0x5
strb r1, [r0, 0x4]
ldrb r0, [r4]
bl GetBattlerPosition
adds r1, r5, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r6
ldrb r1, [r4]
strb r1, [r0, 0x5]
ldrb r0, [r4]
bl GetBattlerPosition
ldr r2, _0802926C @ =gSideAffecting
adds r1, r5, 0
ands r1, r0
lsls r1, 1
adds r1, r2
ldrh r2, [r1]
movs r3, 0x80
lsls r3, 1
adds r0, r3, 0
movs r3, 0
orrs r0, r2
strh r0, [r1]
ldr r0, _08029270 @ =gUnknown_2023E82
strb r3, [r0, 0x5]
_0802925E:
ldr r1, _08029274 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802926C: .4byte gSideAffecting
_08029270: .4byte gUnknown_2023E82
_08029274: .4byte gUnknown_2023D74
thumb_func_end atk99_setmist
thumb_func_start atk9A_setfocusenergy
atk9A_setfocusenergy: @ 8029278
push {lr}
ldr r1, _080292A8 @ =gBattleMons
ldr r0, _080292AC @ =sBattler_AI
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r1, [r0]
movs r3, 0x80
lsls r3, 13
adds r2, r1, 0
ands r2, r3
cmp r2, 0
beq _080292B8
ldr r2, _080292B0 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x20
orrs r0, r1
strb r0, [r2]
ldr r1, _080292B4 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
b _080292C0
.align 2, 0
_080292A8: .4byte gBattleMons
_080292AC: .4byte sBattler_AI
_080292B0: .4byte gMoveResultFlags
_080292B4: .4byte gUnknown_2023E82
_080292B8:
orrs r1, r3
str r1, [r0]
ldr r0, _080292CC @ =gUnknown_2023E82
strb r2, [r0, 0x5]
_080292C0:
ldr r1, _080292D0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080292CC: .4byte gUnknown_2023E82
_080292D0: .4byte gUnknown_2023D74
thumb_func_end atk9A_setfocusenergy
thumb_func_start atk9B_transformdataexecution
atk9B_transformdataexecution: @ 80292D4
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r1, _0802932C @ =gUnknown_2023D4C
ldr r2, _08029330 @ =0x0000ffff
adds r0, r2, 0
strh r0, [r1]
ldr r1, _08029334 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r7, _08029338 @ =gBattleMons
ldr r0, _0802933C @ =gBattlerTarget
mov r12, r0
ldrb r1, [r0]
movs r6, 0x58
adds r0, r1, 0
muls r0, r6
adds r5, r7, 0
adds r5, 0x50
adds r0, r5
ldr r0, [r0]
movs r4, 0x80
lsls r4, 14
ands r0, r4
cmp r0, 0
bne _0802931A
ldr r0, _08029340 @ =gStatuses3
lsls r1, 2
adds r1, r0
ldr r2, [r1]
ldr r0, _08029344 @ =0x000400c0
ands r2, r0
cmp r2, 0
beq _08029350
_0802931A:
ldr r2, _08029348 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x20
orrs r0, r1
strb r0, [r2]
ldr r1, _0802934C @ =gUnknown_2023E82
movs r0, 0x1
b _08029464
.align 2, 0
_0802932C: .4byte gUnknown_2023D4C
_08029330: .4byte 0x0000ffff
_08029334: .4byte gUnknown_2023D74
_08029338: .4byte gBattleMons
_0802933C: .4byte gBattlerTarget
_08029340: .4byte gStatuses3
_08029344: .4byte 0x000400c0
_08029348: .4byte gMoveResultFlags
_0802934C: .4byte gUnknown_2023E82
_08029350:
ldr r3, _08029424 @ =sBattler_AI
ldrb r0, [r3]
adds r1, r0, 0
muls r1, r6
adds r1, r5
ldr r0, [r1]
orrs r0, r4
str r0, [r1]
ldr r4, _08029428 @ =gDisableStructs
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r4
strh r2, [r0, 0x4]
ldrb r0, [r3]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
ldrb r2, [r1, 0xB]
movs r0, 0x10
negs r0, r0
ands r0, r2
strb r0, [r1, 0xB]
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r4
mov r2, r12
ldrb r1, [r2]
muls r1, r6
adds r2, r7, 0
adds r2, 0x48
adds r1, r2
ldr r1, [r1]
str r1, [r0]
ldrb r0, [r3]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
ldrb r2, [r1, 0x18]
movs r0, 0xF
ands r0, r2
strb r0, [r1, 0x18]
ldr r1, _0802942C @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x6
strb r0, [r1, 0x1]
mov r2, r12
ldrb r0, [r2]
muls r0, r6
adds r0, r7
ldrh r0, [r0]
strb r0, [r1, 0x2]
ldrb r0, [r2]
muls r0, r6
adds r0, r7
ldrh r0, [r0]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldrb r0, [r3]
muls r0, r6
adds r5, r0, r7
ldrb r0, [r2]
muls r0, r6
adds r2, r0, r7
movs r4, 0
adds r6, r3, 0
ldr r0, _08029430 @ =gActiveBattler
mov r8, r0
_080293E8:
adds r0, r5, r4
adds r1, r2, r4
ldrb r1, [r1]
strb r1, [r0]
adds r4, 0x1
cmp r4, 0x23
bls _080293E8
movs r4, 0
ldr r7, _08029434 @ =gBattleMoves
ldr r3, _08029438 @ =gUnknown_2023BF0
adds r5, r3, 0
adds r5, 0x18
_08029400:
lsls r1, r4, 1
ldrb r2, [r6]
movs r0, 0x58
muls r2, r0
adds r1, r2
adds r1, r3
ldrh r1, [r1]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r7
ldrb r1, [r0, 0x4]
cmp r1, 0x4
bhi _0802943C
adds r0, r4, r2
adds r0, r5
b _08029442
.align 2, 0
_08029424: .4byte sBattler_AI
_08029428: .4byte gDisableStructs
_0802942C: .4byte gBattleTextBuff1
_08029430: .4byte gActiveBattler
_08029434: .4byte gBattleMoves
_08029438: .4byte gUnknown_2023BF0
_0802943C:
adds r0, r4, r2
adds r0, r5
movs r1, 0x5
_08029442:
strb r1, [r0]
adds r4, 0x1
cmp r4, 0x3
ble _08029400
ldrb r0, [r6]
mov r1, r8
strb r0, [r1]
movs r0, 0
movs r1, 0x2
bl EmitResetActionMoveSelection
mov r2, r8
ldrb r0, [r2]
bl MarkBufferBankForExecution
ldr r1, _08029470 @ =gUnknown_2023E82
movs r0, 0
_08029464:
strb r0, [r1, 0x5]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08029470: .4byte gUnknown_2023E82
thumb_func_end atk9B_transformdataexecution
thumb_func_start atk9C_setsubstitute
atk9C_setsubstitute: @ 8029474
push {r4-r7,lr}
ldr r7, _080294A4 @ =gBattleMons
ldr r6, _080294A8 @ =sBattler_AI
ldrb r0, [r6]
movs r5, 0x58
muls r0, r5
adds r3, r0, r7
ldrh r0, [r3, 0x2C]
lsrs r1, r0, 2
adds r2, r1, 0
cmp r1, 0
bne _0802948E
movs r2, 0x1
_0802948E:
ldrh r0, [r3, 0x28]
cmp r0, r2
bhi _080294B4
ldr r1, _080294AC @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
ldr r1, _080294B0 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
b _08029508
.align 2, 0
_080294A4: .4byte gBattleMons
_080294A8: .4byte sBattler_AI
_080294AC: .4byte gBattleMoveDamage
_080294B0: .4byte gUnknown_2023E82
_080294B4:
ldr r4, _08029518 @ =gBattleMoveDamage
str r1, [r4]
cmp r1, 0
bne _080294C0
movs r0, 0x1
str r0, [r4]
_080294C0:
ldrb r0, [r6]
adds r2, r0, 0
muls r2, r5
adds r3, r7, 0
adds r3, 0x50
adds r2, r3
ldr r0, [r2]
movs r1, 0x80
lsls r1, 17
orrs r0, r1
str r0, [r2]
ldrb r0, [r6]
adds r1, r0, 0
muls r1, r5
adds r1, r3
ldr r0, [r1]
ldr r2, _0802951C @ =0xffff1fff
ands r0, r2
str r0, [r1]
ldr r2, _08029520 @ =gDisableStructs
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
ldr r1, [r4]
movs r2, 0
strb r1, [r0, 0xA]
ldr r0, _08029524 @ =gUnknown_2023E82
strb r2, [r0, 0x5]
ldr r2, _08029528 @ =gUnknown_2023DD0
ldr r0, [r2]
movs r1, 0x80
lsls r1, 1
orrs r0, r1
str r0, [r2]
_08029508:
ldr r1, _0802952C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08029518: .4byte gBattleMoveDamage
_0802951C: .4byte 0xffff1fff
_08029520: .4byte gDisableStructs
_08029524: .4byte gUnknown_2023E82
_08029528: .4byte gUnknown_2023DD0
_0802952C: .4byte gUnknown_2023D74
thumb_func_end atk9C_setsubstitute
thumb_func_start IsMoveUncopyableByMimic
IsMoveUncopyableByMimic: @ 8029530
push {r4,r5,lr}
lsls r0, 16
lsrs r2, r0, 16
movs r3, 0
ldr r0, _08029570 @ =gUnknown_82507E8
ldrh r1, [r0]
ldr r4, _08029574 @ =0x0000fffe
adds r5, r0, 0
cmp r1, r4
beq _08029558
cmp r1, r2
beq _08029558
adds r1, r5, 0
_0802954A:
adds r1, 0x2
adds r3, 0x1
ldrh r0, [r1]
cmp r0, r4
beq _08029558
cmp r0, r2
bne _0802954A
_08029558:
lsls r0, r3, 1
adds r0, r5
ldrh r1, [r0]
ldr r0, _08029574 @ =0x0000fffe
eors r1, r0
negs r0, r1
orrs r0, r1
lsrs r0, 31
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08029570: .4byte gUnknown_82507E8
_08029574: .4byte 0x0000fffe
thumb_func_end IsMoveUncopyableByMimic
thumb_func_start atk9D_mimicattackcopy
atk9D_mimicattackcopy: @ 8029578
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r0, _080295F0 @ =gUnknown_2023D4C
ldr r1, _080295F4 @ =0x0000ffff
adds r7, r1, 0
strh r7, [r0]
ldr r5, _080295F8 @ =gLastUsedMove
ldr r6, _080295FC @ =gBattlerTarget
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
ldrh r0, [r0]
bl IsMoveUncopyableByMimic
lsls r0, 24
cmp r0, 0
bne _080295D2
ldr r3, _08029600 @ =gBattleMons
ldr r2, _08029604 @ =sBattler_AI
ldrb r1, [r2]
movs r0, 0x58
adds r4, r1, 0
muls r4, r0
adds r0, r3, 0
adds r0, 0x50
adds r0, r4, r0
ldr r1, [r0]
movs r0, 0x80
lsls r0, 14
ands r1, r0
mov r12, r3
mov r9, r2
cmp r1, 0
bne _080295D2
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
ldrh r1, [r0]
cmp r1, 0
beq _080295D2
cmp r1, r7
bne _0802960C
_080295D2:
ldr r3, _08029608 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _08029744
.align 2, 0
_080295F0: .4byte gUnknown_2023D4C
_080295F4: .4byte 0x0000ffff
_080295F8: .4byte gLastUsedMove
_080295FC: .4byte gBattlerTarget
_08029600: .4byte gBattleMons
_08029604: .4byte sBattler_AI
_08029608: .4byte gUnknown_2023D74
_0802960C:
movs r2, 0
mov r3, r12
adds r3, 0xC
adds r0, r4, r3
ldrh r0, [r0]
ldr r4, _0802969C @ =gUnknown_2023D74
mov r10, r4
cmp r0, r1
beq _08029646
mov r8, r3
adds r7, r5, 0
adds r5, r6, 0
mov r4, r9
movs r3, 0x58
_08029628:
adds r2, 0x1
cmp r2, 0x3
bgt _08029646
lsls r1, r2, 1
ldrb r0, [r4]
muls r0, r3
adds r1, r0
add r1, r8
ldrb r0, [r5]
lsls r0, 1
adds r0, r7
ldrh r1, [r1]
ldrh r0, [r0]
cmp r1, r0
bne _08029628
_08029646:
cmp r2, 0x4
bne _08029728
ldr r5, _080296A0 @ =gUnknown_2023D48
ldrb r1, [r5]
lsls r1, 1
mov r2, r9
ldrb r0, [r2]
movs r6, 0x58
muls r0, r6
adds r1, r0
mov r0, r12
adds r0, 0xC
adds r1, r0
ldr r2, _080296A4 @ =gLastUsedMove
ldr r3, _080296A8 @ =gBattlerTarget
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strh r0, [r1]
ldr r4, _080296AC @ =gBattleMoves
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r4, [r0, 0x4]
cmp r4, 0x4
bhi _080296B0
mov r1, r9
ldrb r0, [r1]
muls r0, r6
ldrb r1, [r5]
adds r0, r1
mov r1, r12
adds r1, 0x24
adds r0, r1
strb r4, [r0]
b _080296C4
.align 2, 0
_0802969C: .4byte gUnknown_2023D74
_080296A0: .4byte gUnknown_2023D48
_080296A4: .4byte gLastUsedMove
_080296A8: .4byte gBattlerTarget
_080296AC: .4byte gBattleMoves
_080296B0:
mov r4, r9
ldrb r0, [r4]
muls r0, r6
ldrb r1, [r5]
adds r0, r1
mov r1, r12
adds r1, 0x24
adds r0, r1
movs r1, 0x5
strb r1, [r0]
_080296C4:
ldr r1, _0802971C @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strb r0, [r1, 0x2]
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _08029720 @ =gDisableStructs
mov r2, r9
ldrb r0, [r2]
lsls r2, r0, 3
subs r2, r0
lsls r2, 2
adds r2, r1
ldrb r4, [r2, 0x18]
lsrs r3, r4, 4
ldr r1, _08029724 @ =gBitTable
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
orrs r1, r3
lsls r1, 4
movs r0, 0xF
ands r0, r4
orrs r0, r1
strb r0, [r2, 0x18]
mov r4, r10
ldr r0, [r4]
adds r0, 0x5
str r0, [r4]
b _08029744
.align 2, 0
_0802971C: .4byte gBattleTextBuff1
_08029720: .4byte gDisableStructs
_08029724: .4byte gBitTable
_08029728:
mov r0, r10
ldr r2, [r0]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
mov r2, r10
str r1, [r2]
_08029744:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atk9D_mimicattackcopy
thumb_func_start atk9E_metronome
atk9E_metronome: @ 8029754
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r7, _080297D4 @ =gCurrentMove
movs r6, 0xB1
lsls r6, 1
ldr r5, _080297D8 @ =gUnknown_82507E8
ldr r0, _080297DC @ =gUnknown_2023D74
mov r8, r0
_08029766:
bl Random
ldr r2, _080297E0 @ =0x000001ff
adds r1, r2, 0
ands r0, r1
adds r0, 0x1
strh r0, [r7]
cmp r0, r6
bhi _08029766
movs r0, 0x3
_0802977A:
subs r0, 0x1
cmp r0, 0
bge _0802977A
ldr r4, _080297D4 @ =gCurrentMove
ldrh r2, [r4]
ldr r3, _080297E4 @ =0x0000ffff
subs r0, r5, 0x2
_08029788:
adds r0, 0x2
ldrh r1, [r0]
cmp r1, r2
beq _08029794
cmp r1, r3
bne _08029788
_08029794:
ldr r0, _080297E4 @ =0x0000ffff
cmp r1, r0
bne _08029766
ldr r2, _080297E8 @ =gUnknown_2023DD0
ldr r0, [r2]
ldr r1, _080297EC @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r3, _080297F0 @ =gUnknown_81D65A8
ldr r2, _080297F4 @ =gBattleMoves
ldrh r1, [r4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
mov r1, r8
str r0, [r1]
ldrh r0, [r4]
movs r1, 0
bl GetMoveTarget
ldr r1, _080297F8 @ =gBattlerTarget
strb r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080297D4: .4byte gCurrentMove
_080297D8: .4byte gUnknown_82507E8
_080297DC: .4byte gUnknown_2023D74
_080297E0: .4byte 0x000001ff
_080297E4: .4byte 0x0000ffff
_080297E8: .4byte gUnknown_2023DD0
_080297EC: .4byte 0xfffffbff
_080297F0: .4byte gUnknown_81D65A8
_080297F4: .4byte gBattleMoves
_080297F8: .4byte gBattlerTarget
thumb_func_end atk9E_metronome
thumb_func_start atk9F_dmgtolevel
atk9F_dmgtolevel: @ 80297FC
ldr r3, _0802981C @ =gBattleMoveDamage
ldr r2, _08029820 @ =gBattleMons
ldr r0, _08029824 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2A
ldrb r0, [r0]
str r0, [r3]
ldr r1, _08029828 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802981C: .4byte gBattleMoveDamage
_08029820: .4byte gBattleMons
_08029824: .4byte sBattler_AI
_08029828: .4byte gUnknown_2023D74
thumb_func_end atk9F_dmgtolevel
thumb_func_start atkA0_psywavedamageeffect
atkA0_psywavedamageeffect: @ 802982C
push {r4,lr}
movs r4, 0xF
_08029830:
bl Random
adds r3, r4, 0
ands r3, r0
cmp r3, 0xA
bgt _08029830
lsls r0, r3, 2
adds r0, r3
lsls r3, r0, 1
ldr r4, _08029870 @ =gBattleMoveDamage
ldr r2, _08029874 @ =gBattleMons
ldr r0, _08029878 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2A
ldrb r1, [r0]
adds r0, r3, 0
adds r0, 0x32
muls r0, r1
movs r1, 0x64
bl __divsi3
str r0, [r4]
ldr r1, _0802987C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08029870: .4byte gBattleMoveDamage
_08029874: .4byte gBattleMons
_08029878: .4byte sBattler_AI
_0802987C: .4byte gUnknown_2023D74
thumb_func_end atkA0_psywavedamageeffect
thumb_func_start atkA1_counterdamagecalculator
atkA1_counterdamagecalculator: @ 8029880
push {r4-r6,lr}
ldr r4, _080298F0 @ =sBattler_AI
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r6, r0, 24
ldr r5, _080298F4 @ =gUnknown_2023E8C
ldrb r0, [r4]
lsls r0, 4
adds r0, r5
ldrb r0, [r0, 0xC]
bl GetBattlerSide
lsls r0, 24
lsrs r2, r0, 24
ldrb r0, [r4]
lsls r1, r0, 4
adds r0, r5, 0x4
adds r0, r1, r0
ldr r3, [r0]
cmp r3, 0
beq _08029934
cmp r6, r2
beq _08029934
ldr r6, _080298F8 @ =gBattleMons
adds r0, r1, r5
ldrb r0, [r0, 0xC]
movs r4, 0x58
muls r0, r4
adds r0, r6
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08029934
ldr r1, _080298FC @ =gBattleMoveDamage
lsls r0, r3, 1
str r0, [r1]
ldr r1, _08029900 @ =gSideTimers
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r1, r0, r1
ldrb r0, [r1, 0x8]
cmp r0, 0
beq _08029908
ldrb r1, [r1, 0x9]
adds r0, r1, 0
muls r0, r4
adds r0, r6
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08029908
ldr r0, _08029904 @ =gBattlerTarget
strb r1, [r0]
b _08029918
.align 2, 0
_080298F0: .4byte sBattler_AI
_080298F4: .4byte gUnknown_2023E8C
_080298F8: .4byte gBattleMons
_080298FC: .4byte gBattleMoveDamage
_08029900: .4byte gSideTimers
_08029904: .4byte gBattlerTarget
_08029908:
ldr r2, _08029924 @ =gBattlerTarget
ldr r1, _08029928 @ =gUnknown_2023E8C
ldr r0, _0802992C @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
ldrb r0, [r0, 0xC]
strb r0, [r2]
_08029918:
ldr r1, _08029930 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029964
.align 2, 0
_08029924: .4byte gBattlerTarget
_08029928: .4byte gUnknown_2023E8C
_0802992C: .4byte sBattler_AI
_08029930: .4byte gUnknown_2023D74
_08029934:
ldr r2, _0802996C @ =gUnknown_2023ECC
ldr r0, _08029970 @ =sBattler_AI
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x20
orrs r1, r2
strb r1, [r0]
ldr r3, _08029974 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_08029964:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802996C: .4byte gUnknown_2023ECC
_08029970: .4byte sBattler_AI
_08029974: .4byte gUnknown_2023D74
thumb_func_end atkA1_counterdamagecalculator
thumb_func_start atkA2_mirrorcoatdamagecalculator
atkA2_mirrorcoatdamagecalculator: @ 8029978
push {r4-r6,lr}
ldr r4, _080299E8 @ =sBattler_AI
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r6, r0, 24
ldr r5, _080299EC @ =gUnknown_2023E8C
ldrb r0, [r4]
lsls r0, 4
adds r0, r5
ldrb r0, [r0, 0xD]
bl GetBattlerSide
lsls r0, 24
lsrs r2, r0, 24
ldrb r0, [r4]
lsls r1, r0, 4
adds r0, r5, 0
adds r0, 0x8
adds r0, r1, r0
ldr r3, [r0]
cmp r3, 0
beq _08029A2C
cmp r6, r2
beq _08029A2C
ldr r6, _080299F0 @ =gBattleMons
adds r0, r1, r5
ldrb r0, [r0, 0xD]
movs r4, 0x58
muls r0, r4
adds r0, r6
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08029A2C
ldr r1, _080299F4 @ =gBattleMoveDamage
lsls r0, r3, 1
str r0, [r1]
ldr r1, _080299F8 @ =gSideTimers
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r1, r0, r1
ldrb r0, [r1, 0x8]
cmp r0, 0
beq _08029A00
ldrb r1, [r1, 0x9]
adds r0, r1, 0
muls r0, r4
adds r0, r6
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08029A00
ldr r0, _080299FC @ =gBattlerTarget
strb r1, [r0]
b _08029A10
.align 2, 0
_080299E8: .4byte sBattler_AI
_080299EC: .4byte gUnknown_2023E8C
_080299F0: .4byte gBattleMons
_080299F4: .4byte gBattleMoveDamage
_080299F8: .4byte gSideTimers
_080299FC: .4byte gBattlerTarget
_08029A00:
ldr r2, _08029A1C @ =gBattlerTarget
ldr r1, _08029A20 @ =gUnknown_2023E8C
ldr r0, _08029A24 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
ldrb r0, [r0, 0xD]
strb r0, [r2]
_08029A10:
ldr r1, _08029A28 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029A5C
.align 2, 0
_08029A1C: .4byte gBattlerTarget
_08029A20: .4byte gUnknown_2023E8C
_08029A24: .4byte sBattler_AI
_08029A28: .4byte gUnknown_2023D74
_08029A2C:
ldr r2, _08029A64 @ =gUnknown_2023ECC
ldr r0, _08029A68 @ =sBattler_AI
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x20
orrs r1, r2
strb r1, [r0]
ldr r3, _08029A6C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_08029A5C:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08029A64: .4byte gUnknown_2023ECC
_08029A68: .4byte sBattler_AI
_08029A6C: .4byte gUnknown_2023D74
thumb_func_end atkA2_mirrorcoatdamagecalculator
thumb_func_start atkA3_disablelastusedattack
atkA3_disablelastusedattack: @ 8029A70
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r4, 0
ldr r2, _08029B70 @ =gBattleMons
ldr r3, _08029B74 @ =gBattlerTarget
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
adds r7, r2, 0
adds r7, 0xC
adds r0, r7
ldr r5, _08029B78 @ =gLastUsedMove
lsls r1, 1
adds r1, r5
ldrh r0, [r0]
mov r9, r2
adds r6, r3, 0
ldr r2, _08029B7C @ =gDisableStructs
mov r8, r2
ldrh r1, [r1]
cmp r0, r1
beq _08029AC4
mov r12, r6
movs r3, 0x58
_08029AA4:
adds r4, 0x1
cmp r4, 0x3
bgt _08029AC4
lsls r2, r4, 1
mov r0, r12
ldrb r1, [r0]
adds r0, r1, 0
muls r0, r3
adds r2, r0
adds r2, r7
lsls r1, 1
adds r1, r5
ldrh r0, [r2]
ldrh r1, [r1]
cmp r0, r1
bne _08029AA4
_08029AC4:
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r8
ldrh r0, [r0, 0x4]
cmp r0, 0
bne _08029B88
cmp r4, 0x4
beq _08029B88
movs r5, 0x58
adds r0, r1, 0
muls r0, r5
adds r0, r4, r0
mov r1, r9
adds r1, 0x24
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _08029B88
ldr r1, _08029B80 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
lsls r2, r4, 1
ldrb r0, [r6]
muls r0, r5
adds r0, r2, r0
mov r3, r9
adds r3, 0xC
adds r0, r3
ldrh r0, [r0]
strb r0, [r1, 0x2]
ldrb r0, [r6]
muls r0, r5
adds r0, r2, r0
adds r0, r3
ldrh r0, [r0]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r8
muls r1, r5
adds r2, r1
adds r2, r3
ldrh r1, [r2]
strh r1, [r0, 0x4]
bl Random
ldrb r2, [r6]
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
add r1, r8
movs r2, 0x3
ands r2, r0
adds r2, 0x2
ldrb r3, [r1, 0xB]
movs r0, 0x10
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r1, 0xB]
ldrb r0, [r6]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
add r1, r8
ldrb r3, [r1, 0xB]
lsls r2, r3, 28
lsrs r2, 24
movs r0, 0xF
ands r0, r3
orrs r0, r2
strb r0, [r1, 0xB]
ldr r1, _08029B84 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029BA2
.align 2, 0
_08029B70: .4byte gBattleMons
_08029B74: .4byte gBattlerTarget
_08029B78: .4byte gLastUsedMove
_08029B7C: .4byte gDisableStructs
_08029B80: .4byte gBattleTextBuff1
_08029B84: .4byte gUnknown_2023D74
_08029B88:
ldr r3, _08029BB0 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_08029BA2:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08029BB0: .4byte gUnknown_2023D74
thumb_func_end atkA3_disablelastusedattack
thumb_func_start atkA4_trysetencore
atkA4_trysetencore: @ 8029BB4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
movs r5, 0
ldr r3, _08029CA8 @ =gBattleMons
ldr r4, _08029CAC @ =gBattlerTarget
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
adds r6, r3, 0
adds r6, 0xC
adds r0, r6
ldr r2, _08029CB0 @ =gLastUsedMove
lsls r1, 1
adds r1, r2
ldrh r0, [r0]
mov r10, r3
mov r8, r2
ldr r2, _08029CB4 @ =gDisableStructs
mov r9, r2
ldrh r1, [r1]
cmp r0, r1
beq _08029C0E
mov r12, r4
adds r7, r6, 0
mov r6, r8
movs r3, 0x58
_08029BEE:
adds r5, 0x1
cmp r5, 0x3
bgt _08029C0E
lsls r2, r5, 1
mov r0, r12
ldrb r1, [r0]
adds r0, r1, 0
muls r0, r3
adds r2, r0
adds r2, r7
lsls r1, 1
adds r1, r6
ldrh r0, [r2]
ldrh r1, [r1]
cmp r0, r1
bne _08029BEE
_08029C0E:
ldrb r0, [r4]
lsls r0, 1
add r0, r8
ldrh r2, [r0]
cmp r2, 0xA5
beq _08029C22
cmp r2, 0xE3
beq _08029C22
cmp r2, 0x77
bne _08029C24
_08029C22:
movs r5, 0x4
_08029C24:
ldrb r1, [r4]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
mov r2, r9
adds r3, r0, r2
ldrh r0, [r3, 0x6]
cmp r0, 0
bne _08029CBC
cmp r5, 0x4
beq _08029CBC
movs r0, 0x58
adds r2, r1, 0
muls r2, r0
adds r0, r5, r2
mov r1, r10
adds r1, 0x24
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _08029CBC
lsls r0, r5, 1
adds r0, r2
subs r1, 0x18
adds r0, r1
ldrh r0, [r0]
strh r0, [r3, 0x6]
ldrb r1, [r4]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r9
strb r5, [r0, 0xC]
bl Random
ldrb r2, [r4]
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
add r1, r9
movs r2, 0x3
ands r2, r0
adds r2, 0x3
ldrb r3, [r1, 0xE]
movs r0, 0x10
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r1, 0xE]
ldrb r0, [r4]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
add r1, r9
ldrb r3, [r1, 0xE]
lsls r2, r3, 28
lsrs r2, 24
movs r0, 0xF
ands r0, r3
orrs r0, r2
strb r0, [r1, 0xE]
ldr r1, _08029CB8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029CD6
.align 2, 0
_08029CA8: .4byte gBattleMons
_08029CAC: .4byte gBattlerTarget
_08029CB0: .4byte gLastUsedMove
_08029CB4: .4byte gDisableStructs
_08029CB8: .4byte gUnknown_2023D74
_08029CBC:
ldr r3, _08029CE4 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_08029CD6:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08029CE4: .4byte gUnknown_2023D74
thumb_func_end atkA4_trysetencore
thumb_func_start atkA5_painsplitdmgcalc
atkA5_painsplitdmgcalc: @ 8029CE8
push {r4-r7,lr}
ldr r6, _08029D68 @ =gBattleMons
ldr r0, _08029D6C @ =gBattlerTarget
mov r12, r0
ldrb r0, [r0]
movs r7, 0x58
adds r2, r0, 0
muls r2, r7
adds r0, r6, 0
adds r0, 0x50
adds r0, r2, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
cmp r0, 0
bne _08029D88
ldr r5, _08029D70 @ =sBattler_AI
ldrb r0, [r5]
muls r0, r7
adds r0, r6
ldrh r3, [r0, 0x28]
adds r0, r2, r6
ldrh r1, [r0, 0x28]
adds r3, r1
asrs r3, 1
ldr r4, _08029D74 @ =gBattleMoveDamage
subs r1, r3
str r1, [r4]
ldr r2, _08029D78 @ =gBattleScripting
strb r1, [r2]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
asrs r0, 8
strb r0, [r2, 0x1]
movs r0, 0xFF
lsls r0, 16
ands r0, r1
asrs r0, 16
strb r0, [r2, 0x2]
lsrs r1, 24
strb r1, [r2, 0x3]
ldrb r0, [r5]
muls r0, r7
adds r0, r6
ldrh r0, [r0, 0x28]
subs r0, r3
str r0, [r4]
ldr r2, _08029D7C @ =gUnknown_2023ECC
mov r0, r12
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r2, 0x4
adds r0, r2
ldr r1, _08029D80 @ =0x0000ffff
str r1, [r0]
ldr r1, _08029D84 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029DA2
.align 2, 0
_08029D68: .4byte gBattleMons
_08029D6C: .4byte gBattlerTarget
_08029D70: .4byte sBattler_AI
_08029D74: .4byte gBattleMoveDamage
_08029D78: .4byte gBattleScripting
_08029D7C: .4byte gUnknown_2023ECC
_08029D80: .4byte 0x0000ffff
_08029D84: .4byte gUnknown_2023D74
_08029D88:
ldr r3, _08029DA8 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_08029DA2:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08029DA8: .4byte gUnknown_2023D74
thumb_func_end atkA5_painsplitdmgcalc
thumb_func_start atkA6_settypetorandomresistance
atkA6_settypetorandomresistance: @ 8029DAC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r1, _08029E14 @ =gUnknown_2023DA0
ldr r4, _08029E18 @ =sBattler_AI
ldrb r0, [r4]
lsls r0, 1
adds r2, r0, r1
ldrh r1, [r2]
cmp r1, 0
beq _08029DF6
ldr r0, _08029E1C @ =0x0000ffff
cmp r1, r0
beq _08029DF6
ldrh r0, [r2]
bl IsTwoTurnsMove
lsls r0, 24
cmp r0, 0
beq _08029E94
ldr r1, _08029E20 @ =gBattleMons
ldr r2, _08029E24 @ =gUnknown_2023DC0
ldrb r0, [r4]
adds r0, r2
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 5
ands r0, r1
cmp r0, 0
beq _08029E94
_08029DF6:
ldr r3, _08029E28 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _08029F80
.align 2, 0
_08029E14: .4byte gUnknown_2023DA0
_08029E18: .4byte sBattler_AI
_08029E1C: .4byte 0x0000ffff
_08029E20: .4byte gBattleMons
_08029E24: .4byte gUnknown_2023DC0
_08029E28: .4byte gUnknown_2023D74
_08029E2C:
mov r0, r12
strb r5, [r0]
mov r1, r10
ldrb r0, [r1]
muls r0, r2
adds r0, r7
adds r0, 0x22
strb r5, [r0]
ldr r1, _08029E50 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x3
strb r0, [r1, 0x1]
strb r5, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
ldr r1, _08029E54 @ =gUnknown_2023D74
b _08029E82
.align 2, 0
_08029E50: .4byte gBattleTextBuff1
_08029E54: .4byte gUnknown_2023D74
_08029E58:
mov r0, r8
adds r0, 0x1
adds r0, r3
ldrb r2, [r0]
strb r2, [r4]
mov r4, r10
ldrb r0, [r4]
muls r0, r6
ldr r7, _08029E8C @ =gBattleMons
adds r0, r7
adds r0, 0x22
strb r2, [r0]
ldr r1, _08029E90 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x3
strb r0, [r1, 0x1]
strb r2, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
mov r1, r12
_08029E82:
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029F80
.align 2, 0
_08029E8C: .4byte gBattleMons
_08029E90: .4byte gBattleTextBuff1
_08029E94:
movs r4, 0
mov r8, r4
movs r7, 0x7F
mov r9, r7
_08029E9C:
bl Random
mov r4, r9
ands r4, r0
cmp r4, 0x70
bhi _08029E9C
lsls r0, r4, 1
adds r4, r0, r4
ldr r6, _08029F90 @ =gUnknown_824F050
adds r3, r4, r6
ldr r1, _08029F94 @ =gUnknown_2023DA8
ldr r2, _08029F98 @ =sBattler_AI
ldrb r5, [r2]
lsls r0, r5, 1
adds r0, r1
ldrb r1, [r3]
mov r10, r2
ldrh r0, [r0]
cmp r1, r0
bne _08029EF8
adds r0, r4, 0x2
adds r0, r6
ldrb r0, [r0]
cmp r0, 0x5
bhi _08029EF8
ldr r7, _08029F9C @ =gBattleMons
movs r2, 0x58
adds r0, r5, 0
muls r0, r2
adds r3, r0, r7
movs r0, 0x21
adds r0, r3
mov r12, r0
adds r0, r4, 0x1
adds r0, r6
ldrb r5, [r0]
mov r1, r12
ldrb r0, [r1]
adds r1, r5, 0
cmp r0, r1
beq _08029EF8
adds r0, r3, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, r1
bne _08029E2C
_08029EF8:
movs r7, 0x1
add r8, r7
ldr r0, _08029FA0 @ =0x000003e7
cmp r8, r0
ble _08029E9C
movs r0, 0
mov r8, r0
ldr r1, _08029FA4 @ =gUnknown_2023D74
mov r12, r1
ldr r3, _08029F90 @ =gUnknown_824F050
adds r0, r4, 0x1
adds r0, r3
mov r9, r0
adds r5, r3, 0
_08029F14:
ldrb r1, [r5]
cmp r1, 0xFF
bgt _08029F1E
cmp r1, 0xFE
bge _08029F58
_08029F1E:
mov r4, r10
ldrb r2, [r4]
lsls r0, r2, 1
ldr r7, _08029F94 @ =gUnknown_2023DA8
adds r0, r7
ldrh r0, [r0]
cmp r1, r0
bne _08029F58
ldrb r0, [r5, 0x2]
cmp r0, 0x5
bhi _08029F58
movs r6, 0x58
adds r0, r2, 0
muls r0, r6
ldr r1, _08029F9C @ =gBattleMons
adds r2, r0, r1
adds r4, r2, 0
adds r4, 0x21
ldrb r0, [r4]
mov r7, r9
ldrb r1, [r7]
cmp r0, r1
beq _08029F58
adds r0, r2, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, r1
beq _08029F58
b _08029E58
_08029F58:
adds r5, 0x3
movs r0, 0x3
add r8, r0
ldr r0, _08029FA8 @ =0x0000014f
cmp r8, r0
bls _08029F14
mov r1, r12
ldr r2, [r1]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
mov r4, r12
str r1, [r4]
_08029F80:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08029F90: .4byte gUnknown_824F050
_08029F94: .4byte gUnknown_2023DA8
_08029F98: .4byte sBattler_AI
_08029F9C: .4byte gBattleMons
_08029FA0: .4byte 0x000003e7
_08029FA4: .4byte gUnknown_2023D74
_08029FA8: .4byte 0x0000014f
thumb_func_end atkA6_settypetorandomresistance
thumb_func_start atkA7_setalwayshitflag
atkA7_setalwayshitflag: @ 8029FAC
push {r4,lr}
ldr r4, _08029FF0 @ =gStatuses3
ldr r3, _08029FF4 @ =gBattlerTarget
ldrb r1, [r3]
lsls r1, 2
adds r1, r4
ldr r0, [r1]
movs r2, 0x19
negs r2, r2
ands r0, r2
str r0, [r1]
ldrb r1, [r3]
lsls r1, 2
adds r1, r4
ldr r0, [r1]
movs r2, 0x10
orrs r0, r2
str r0, [r1]
ldr r2, _08029FF8 @ =gDisableStructs
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
ldr r1, _08029FFC @ =sBattler_AI
ldrb r1, [r1]
strb r1, [r0, 0x15]
ldr r1, _0802A000 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08029FF0: .4byte gStatuses3
_08029FF4: .4byte gBattlerTarget
_08029FF8: .4byte gDisableStructs
_08029FFC: .4byte sBattler_AI
_0802A000: .4byte gUnknown_2023D74
thumb_func_end atkA7_setalwayshitflag
thumb_func_start atkA8_copymovepermanently
atkA8_copymovepermanently: @ 802A004
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
ldr r0, _0802A164 @ =gUnknown_2023D4C
ldr r1, _0802A168 @ =0x0000ffff
adds r5, r1, 0
strh r5, [r0]
ldr r3, _0802A16C @ =gBattleMons
ldr r2, _0802A170 @ =sBattler_AI
ldrb r1, [r2]
movs r0, 0x58
adds r4, r1, 0
muls r4, r0
adds r0, r3, 0
adds r0, 0x50
adds r0, r4, r0
ldr r1, [r0]
movs r0, 0x80
lsls r0, 14
ands r1, r0
mov r12, r3
mov r10, r2
cmp r1, 0
beq _0802A03C
b _0802A190
_0802A03C:
ldr r0, _0802A174 @ =gUnknown_2023D90
ldr r2, _0802A178 @ =gBattlerTarget
ldrb r1, [r2]
lsls r1, 1
adds r1, r0
ldrh r1, [r1]
mov r9, r0
mov r8, r2
cmp r1, 0xA5
bne _0802A052
b _0802A190
_0802A052:
cmp r1, 0
bne _0802A058
b _0802A190
_0802A058:
cmp r1, r5
bne _0802A05E
b _0802A190
_0802A05E:
cmp r1, 0xA6
bne _0802A064
b _0802A190
_0802A064:
movs r7, 0
mov r5, r9
mov r0, r12
adds r0, 0xC
adds r1, r4, r0
mov r3, r8
_0802A070:
ldrh r2, [r1]
cmp r2, 0xA6
beq _0802A082
ldrb r0, [r3]
lsls r0, 1
adds r0, r5
ldrh r0, [r0]
cmp r2, r0
beq _0802A08A
_0802A082:
adds r1, 0x2
adds r7, 0x1
cmp r7, 0x3
ble _0802A070
_0802A08A:
cmp r7, 0x4
beq _0802A090
b _0802A190
_0802A090:
ldr r4, _0802A17C @ =gUnknown_2023D48
ldrb r1, [r4]
lsls r1, 1
mov r2, r10
ldrb r0, [r2]
movs r3, 0x58
muls r0, r3
adds r1, r0
mov r6, r12
adds r6, 0xC
adds r1, r6
mov r2, r8
ldrb r0, [r2]
lsls r0, 1
add r0, r9
ldrh r0, [r0]
strh r0, [r1]
mov r1, r10
ldrb r0, [r1]
adds r2, r0, 0
muls r2, r3
ldrb r4, [r4]
adds r2, r4
mov r5, r12
adds r5, 0x24
adds r2, r5
ldr r4, _0802A180 @ =gBattleMoves
mov r1, r8
ldrb r0, [r1]
lsls r0, 1
add r0, r9
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r0, [r0, 0x4]
strb r0, [r2]
ldr r1, _0802A184 @ =gActiveBattler
mov r2, r10
ldrb r0, [r2]
strb r0, [r1]
movs r7, 0
ldrb r0, [r2]
muls r0, r3
adds r4, r0, r5
adds r3, r0, 0
add r2, sp, 0x4
add r5, sp, 0xC
_0802A0F2:
adds r0, r3, r6
ldrh r0, [r0]
strh r0, [r2]
adds r1, r5, r7
ldrb r0, [r4]
strb r0, [r1]
adds r4, 0x1
adds r3, 0x2
adds r2, 0x2
adds r7, 0x1
cmp r7, 0x3
ble _0802A0F2
add r2, sp, 0x4
mov r0, r10
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
add r0, r12
adds r0, 0x3B
ldrb r0, [r0]
strb r0, [r2, 0xC]
str r2, [sp]
movs r0, 0
movs r1, 0x3
movs r2, 0
movs r3, 0x10
bl EmitSetMonData
ldr r0, _0802A184 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r1, _0802A188 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
ldr r3, _0802A174 @ =gUnknown_2023D90
ldr r2, _0802A178 @ =gBattlerTarget
ldrb r0, [r2]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
strb r0, [r1, 0x2]
ldrb r0, [r2]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _0802A18C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802A1AA
.align 2, 0
_0802A164: .4byte gUnknown_2023D4C
_0802A168: .4byte 0x0000ffff
_0802A16C: .4byte gBattleMons
_0802A170: .4byte sBattler_AI
_0802A174: .4byte gUnknown_2023D90
_0802A178: .4byte gBattlerTarget
_0802A17C: .4byte gUnknown_2023D48
_0802A180: .4byte gBattleMoves
_0802A184: .4byte gActiveBattler
_0802A188: .4byte gBattleTextBuff1
_0802A18C: .4byte gUnknown_2023D74
_0802A190:
ldr r3, _0802A1BC @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802A1AA:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802A1BC: .4byte gUnknown_2023D74
thumb_func_end atkA8_copymovepermanently
thumb_func_start IsTwoTurnsMove
IsTwoTurnsMove: @ 802A1C0
push {lr}
lsls r0, 16
lsrs r0, 16
ldr r2, _0802A1F0 @ =gBattleMoves
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1]
cmp r0, 0x91
beq _0802A1EA
cmp r0, 0x27
beq _0802A1EA
cmp r0, 0x4B
beq _0802A1EA
cmp r0, 0x97
beq _0802A1EA
cmp r0, 0x9B
beq _0802A1EA
cmp r0, 0x1A
bne _0802A1F4
_0802A1EA:
movs r0, 0x1
b _0802A1F6
.align 2, 0
_0802A1F0: .4byte gBattleMoves
_0802A1F4:
movs r0, 0
_0802A1F6:
pop {r1}
bx r1
thumb_func_end IsTwoTurnsMove
thumb_func_start IsInvalidForSleepTalkOrAssist
IsInvalidForSleepTalkOrAssist: @ 802A1FC
push {lr}
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0
beq _0802A21A
cmp r1, 0xD6
beq _0802A21A
movs r0, 0x89
lsls r0, 1
cmp r1, r0
beq _0802A21A
cmp r1, 0x77
beq _0802A21A
cmp r1, 0x76
bne _0802A21E
_0802A21A:
movs r0, 0x1
b _0802A220
_0802A21E:
movs r0, 0
_0802A220:
pop {r1}
bx r1
thumb_func_end IsInvalidForSleepTalkOrAssist
thumb_func_start AttacksThisTurn
AttacksThisTurn: @ 802A224
push {lr}
lsls r1, 16
lsrs r2, r1, 16
ldr r1, _0802A27C @ =gBattleMoves
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
ldrb r0, [r0]
adds r3, r1, 0
cmp r0, 0x97
bne _0802A248
ldr r0, _0802A280 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
cmp r0, 0
bne _0802A288
_0802A248:
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x91
beq _0802A26A
cmp r0, 0x27
beq _0802A26A
cmp r0, 0x4B
beq _0802A26A
cmp r0, 0x97
beq _0802A26A
cmp r0, 0x9B
beq _0802A26A
cmp r0, 0x1A
bne _0802A288
_0802A26A:
ldr r0, _0802A284 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 20
ands r0, r1
cmp r0, 0
beq _0802A288
movs r0, 0x1
b _0802A28A
.align 2, 0
_0802A27C: .4byte gBattleMoves
_0802A280: .4byte gBattleWeather
_0802A284: .4byte gUnknown_2023DD0
_0802A288:
movs r0, 0x2
_0802A28A:
pop {r1}
bx r1
thumb_func_end AttacksThisTurn
thumb_func_start atkA9_trychoosesleeptalkmove
atkA9_trychoosesleeptalkmove: @ 802A290
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
movs r6, 0
movs r5, 0
ldr r0, _0802A320 @ =sBattler_AI
mov r9, r0
movs r1, 0x58
mov r8, r1
ldr r7, _0802A324 @ =gUnknown_2023BF0
movs r0, 0x84
lsls r0, 1
mov r10, r0
_0802A2AE:
lsls r4, r5, 1
mov r1, r9
ldrb r0, [r1]
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r0, r4, r0
adds r0, r7
ldrh r0, [r0]
bl IsInvalidForSleepTalkOrAssist
lsls r0, 24
cmp r0, 0
bne _0802A2EE
mov r1, r9
ldrb r0, [r1]
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r0, r4, r0
adds r0, r7
ldrh r1, [r0]
cmp r1, r10
beq _0802A2EE
cmp r1, 0xFD
beq _0802A2EE
adds r0, r1, 0
bl IsTwoTurnsMove
lsls r0, 24
cmp r0, 0
beq _0802A2FC
_0802A2EE:
ldr r1, _0802A328 @ =gBitTable
lsls r0, r5, 2
adds r0, r1
ldr r0, [r0]
orrs r6, r0
lsls r0, r6, 24
lsrs r6, r0, 24
_0802A2FC:
adds r5, 0x1
cmp r5, 0x3
ble _0802A2AE
ldr r0, _0802A320 @ =sBattler_AI
ldrb r0, [r0]
adds r1, r6, 0
movs r2, 0xFD
bl CheckMoveLimitations
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0xF
bne _0802A330
ldr r1, _0802A32C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802A394
.align 2, 0
_0802A320: .4byte sBattler_AI
_0802A324: .4byte gUnknown_2023BF0
_0802A328: .4byte gBitTable
_0802A32C: .4byte gUnknown_2023D74
_0802A330:
movs r7, 0x3
ldr r4, _0802A3A4 @ =gBitTable
_0802A334:
bl Random
adds r5, r7, 0
ands r5, r0
lsls r0, r5, 2
adds r0, r4
ldr r0, [r0]
ands r0, r6
cmp r0, 0
bne _0802A334
ldr r4, _0802A3A8 @ =gUnknown_2023D4E
ldr r2, _0802A3AC @ =gBattleMons
lsls r1, r5, 1
ldr r0, _0802A3B0 @ =sBattler_AI
ldrb r3, [r0]
movs r0, 0x58
muls r0, r3
adds r1, r0
adds r2, 0xC
adds r1, r2
ldrh r0, [r1]
strh r0, [r4]
ldr r0, _0802A3B4 @ =gUnknown_2023D48
strb r5, [r0]
ldr r2, _0802A3B8 @ =gUnknown_2023DD0
ldr r0, [r2]
ldr r1, _0802A3BC @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldrh r0, [r4]
movs r1, 0
bl GetMoveTarget
ldr r1, _0802A3C0 @ =gBattlerTarget
strb r0, [r1]
ldr r3, _0802A3C4 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802A394:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802A3A4: .4byte gBitTable
_0802A3A8: .4byte gUnknown_2023D4E
_0802A3AC: .4byte gBattleMons
_0802A3B0: .4byte sBattler_AI
_0802A3B4: .4byte gUnknown_2023D48
_0802A3B8: .4byte gUnknown_2023DD0
_0802A3BC: .4byte 0xfffffbff
_0802A3C0: .4byte gBattlerTarget
_0802A3C4: .4byte gUnknown_2023D74
thumb_func_end atkA9_trychoosesleeptalkmove
thumb_func_start atkAA_setdestinybond
atkAA_setdestinybond: @ 802A3C8
ldr r1, _0802A3EC @ =gBattleMons
ldr r0, _0802A3F0 @ =sBattler_AI
ldrb r2, [r0]
movs r0, 0x58
muls r2, r0
adds r1, 0x50
adds r2, r1
ldr r0, [r2]
movs r1, 0x80
lsls r1, 18
orrs r0, r1
str r0, [r2]
ldr r1, _0802A3F4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802A3EC: .4byte gBattleMons
_0802A3F0: .4byte sBattler_AI
_0802A3F4: .4byte gUnknown_2023D74
thumb_func_end atkAA_setdestinybond
thumb_func_start TrySetDestinyBondToHappen
TrySetDestinyBondToHappen: @ 802A3F8
push {r4,r5,lr}
ldr r0, _0802A448 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r5, r0, 24
ldr r4, _0802A44C @ =gBattlerTarget
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r3, r0, 24
ldr r1, _0802A450 @ =gBattleMons
ldrb r2, [r4]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 18
ands r0, r1
cmp r0, 0
beq _0802A442
cmp r5, r3
beq _0802A442
ldr r2, _0802A454 @ =gUnknown_2023DD0
ldr r1, [r2]
movs r0, 0x80
lsls r0, 17
ands r0, r1
cmp r0, 0
bne _0802A442
movs r0, 0x40
orrs r1, r0
str r1, [r2]
_0802A442:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802A448: .4byte sBattler_AI
_0802A44C: .4byte gBattlerTarget
_0802A450: .4byte gBattleMons
_0802A454: .4byte gUnknown_2023DD0
thumb_func_end TrySetDestinyBondToHappen
thumb_func_start atkAB_trysetdestinybondtohappen
atkAB_trysetdestinybondtohappen: @ 802A458
push {lr}
bl TrySetDestinyBondToHappen
ldr r1, _0802A46C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802A46C: .4byte gUnknown_2023D74
thumb_func_end atkAB_trysetdestinybondtohappen
thumb_func_start atkAC_remaininghptopower
atkAC_remaininghptopower: @ 802A470
push {lr}
ldr r2, _0802A4C4 @ =gBattleMons
ldr r0, _0802A4C8 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
movs r2, 0x28
ldrsh r0, [r1, r2]
movs r2, 0x2C
ldrsh r1, [r1, r2]
movs r2, 0x30
bl GetScaledHPFraction
lsls r0, 24
lsrs r1, r0, 24
movs r3, 0
ldr r0, _0802A4CC @ =gUnknown_8250810
ldrb r2, [r0]
cmp r1, r2
ble _0802A4AA
adds r2, r0, 0
_0802A49C:
adds r3, 0x2
cmp r3, 0xB
bgt _0802A4AA
adds r0, r3, r2
ldrb r0, [r0]
cmp r1, r0
bgt _0802A49C
_0802A4AA:
ldr r2, _0802A4D0 @ =gDynamicBasePower
ldr r1, _0802A4CC @ =gUnknown_8250810
adds r0, r3, 0x1
adds r0, r1
ldrb r0, [r0]
strh r0, [r2]
ldr r1, _0802A4D4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802A4C4: .4byte gBattleMons
_0802A4C8: .4byte sBattler_AI
_0802A4CC: .4byte gUnknown_8250810
_0802A4D0: .4byte gDynamicBasePower
_0802A4D4: .4byte gUnknown_2023D74
thumb_func_end atkAC_remaininghptopower
thumb_func_start atkAD_tryspiteppreduce
atkAD_tryspiteppreduce: @ 802A4D8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r4, _0802A658 @ =gLastUsedMove
ldr r1, _0802A65C @ =gBattlerTarget
ldrb r3, [r1]
lsls r0, r3, 1
adds r0, r4
ldrh r2, [r0]
mov r8, r1
cmp r2, 0
bne _0802A4F8
b _0802A680
_0802A4F8:
ldr r0, _0802A660 @ =0x0000ffff
cmp r2, r0
bne _0802A500
b _0802A680
_0802A500:
movs r7, 0
ldr r0, _0802A664 @ =gBattleMons
movs r1, 0x58
muls r1, r3
adds r3, r0, 0
adds r3, 0xC
adds r1, r3
ldrh r1, [r1]
cmp r2, r1
beq _0802A538
adds r6, r4, 0
mov r5, r8
adds r4, r3, 0
movs r3, 0x58
_0802A51C:
adds r7, 0x1
cmp r7, 0x3
bgt _0802A538
ldrb r0, [r5]
lsls r2, r0, 1
adds r2, r6
lsls r1, r7, 1
muls r0, r3
adds r1, r0
adds r1, r4
ldrh r0, [r2]
ldrh r1, [r1]
cmp r0, r1
bne _0802A51C
_0802A538:
cmp r7, 0x4
bne _0802A53E
b _0802A680
_0802A53E:
mov r4, r8
ldrb r0, [r4]
movs r1, 0x58
mov r9, r1
mov r3, r9
muls r3, r0
adds r0, r3, 0
adds r0, r7, r0
ldr r1, _0802A664 @ =gBattleMons
adds r1, 0x24
mov r10, r1
add r0, r10
ldrb r0, [r0]
cmp r0, 0x1
bhi _0802A55E
b _0802A680
_0802A55E:
bl Random
movs r1, 0x3
ands r1, r0
adds r6, r1, 0x2
ldrb r0, [r4]
mov r3, r9
muls r3, r0
adds r0, r3, 0
adds r0, r7, r0
add r0, r10
ldrb r0, [r0]
cmp r0, r6
bge _0802A57C
adds r6, r0, 0
_0802A57C:
ldr r1, _0802A668 @ =gBattleTextBuff1
movs r5, 0xFD
strb r5, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
ldr r2, _0802A658 @ =gLastUsedMove
mov r3, r8
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strb r0, [r1, 0x2]
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r4, _0802A66C @ =gBattleTextBuff2
adds r0, r4, 0
adds r1, r6, 0
movs r2, 0
movs r3, 0x1
bl ConvertIntToDecimalStringN
strb r5, [r4]
movs r0, 0x1
strb r0, [r4, 0x1]
strb r0, [r4, 0x2]
strb r0, [r4, 0x3]
strb r6, [r4, 0x4]
subs r0, 0x2
strb r0, [r4, 0x5]
mov r1, r8
ldrb r0, [r1]
mov r1, r9
muls r1, r0
adds r1, r7, r1
add r1, r10
ldrb r0, [r1]
subs r0, r6
strb r0, [r1]
ldr r4, _0802A670 @ =gActiveBattler
mov r3, r8
ldrb r0, [r3]
strb r0, [r4]
ldr r1, _0802A674 @ =gDisableStructs
ldrb r3, [r4]
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
adds r0, r1
ldrb r1, [r0, 0x18]
lsrs r1, 4
ldr r2, _0802A678 @ =gBitTable
lsls r0, r7, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802A630
mov r2, r9
muls r2, r3
ldr r0, _0802A664 @ =gBattleMons
adds r0, 0x50
adds r0, r2, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 14
ands r0, r1
cmp r0, 0
bne _0802A630
adds r1, r7, 0
adds r1, 0x9
lsls r1, 24
lsrs r1, 24
mov r3, r10
adds r0, r2, r3
adds r0, r7
str r0, [sp]
movs r0, 0
movs r2, 0
movs r3, 0x1
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
_0802A630:
ldr r1, _0802A67C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r1, _0802A664 @ =gBattleMons
ldr r0, _0802A65C @ =gBattlerTarget
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r0, r7, r0
adds r1, 0x24
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0802A69A
adds r0, r2, 0
bl CancelMultiTurnMoves
b _0802A69A
.align 2, 0
_0802A658: .4byte gLastUsedMove
_0802A65C: .4byte gBattlerTarget
_0802A660: .4byte 0x0000ffff
_0802A664: .4byte gBattleMons
_0802A668: .4byte gBattleTextBuff1
_0802A66C: .4byte gBattleTextBuff2
_0802A670: .4byte gActiveBattler
_0802A674: .4byte gDisableStructs
_0802A678: .4byte gBitTable
_0802A67C: .4byte gUnknown_2023D74
_0802A680:
ldr r3, _0802A6AC @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802A69A:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802A6AC: .4byte gUnknown_2023D74
thumb_func_end atkAD_tryspiteppreduce
thumb_func_start atkAE_healpartystatus
atkAE_healpartystatus: @ 802A6B0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
movs r4, 0
str r4, [sp, 0x4]
mov r8, r4
ldr r0, _0802A720 @ =gCurrentMove
ldrh r0, [r0]
cmp r0, 0xD7
beq _0802A6CC
b _0802A8B6
_0802A6CC:
ldr r6, _0802A724 @ =gUnknown_2023E82
mov r0, r8
strb r0, [r6, 0x5]
ldr r5, _0802A728 @ =sBattler_AI
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, 24
ldr r1, _0802A72C @ =gEnemyParty
mov r10, r1
cmp r0, 0
bne _0802A6E8
ldr r2, _0802A730 @ =gPlayerParty
mov r10, r2
_0802A6E8:
ldr r4, _0802A734 @ =gBattleMons
ldrb r3, [r5]
movs r7, 0x58
adds r2, r3, 0
muls r2, r7
adds r0, r2, r4
adds r1, r0, 0
adds r1, 0x20
ldrb r0, [r1]
cmp r0, 0x2B
beq _0802A73C
adds r0, r4, 0
adds r0, 0x4C
adds r0, r2, r0
mov r1, r8
str r1, [r0]
ldrb r0, [r5]
adds r2, r0, 0
muls r2, r7
adds r0, r4, 0
adds r0, 0x50
adds r2, r0
ldr r0, [r2]
ldr r1, _0802A738 @ =0xf7ffffff
ands r0, r1
str r0, [r2]
b _0802A74C
.align 2, 0
_0802A720: .4byte gCurrentMove
_0802A724: .4byte gUnknown_2023E82
_0802A728: .4byte sBattler_AI
_0802A72C: .4byte gEnemyParty
_0802A730: .4byte gPlayerParty
_0802A734: .4byte gBattleMons
_0802A738: .4byte 0xf7ffffff
_0802A73C:
ldrb r1, [r1]
adds r0, r3, 0
bl sub_80C71D0
ldrb r0, [r6, 0x5]
movs r1, 0x1
orrs r0, r1
strb r0, [r6, 0x5]
_0802A74C:
ldr r7, _0802A7C0 @ =gActiveBattler
ldr r0, _0802A7C4 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerPosition
movs r2, 0x2
mov r9, r2
mov r1, r9
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
ldr r1, _0802A7C8 @ =gBattleScripting
strb r0, [r1, 0x17]
strb r0, [r7]
ldr r0, _0802A7CC @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0802A7F2
ldr r0, _0802A7D0 @ =gAbsentBattlerFlags
ldrb r2, [r0]
ldr r1, _0802A7D4 @ =gBitTable
ldrb r3, [r7]
lsls r0, r3, 2
adds r0, r1
ldr r0, [r0]
ands r2, r0
cmp r2, 0
bne _0802A7F2
ldr r5, _0802A7D8 @ =gBattleMons
movs r6, 0x58
adds r4, r3, 0
muls r4, r6
adds r0, r4, r5
adds r1, r0, 0
adds r1, 0x20
ldrb r0, [r1]
cmp r0, 0x2B
beq _0802A7E0
adds r0, r5, 0
adds r0, 0x4C
adds r0, r4, r0
str r2, [r0]
ldrb r0, [r7]
adds r2, r0, 0
muls r2, r6
adds r0, r5, 0
adds r0, 0x50
adds r2, r0
ldr r0, [r2]
ldr r1, _0802A7DC @ =0xf7ffffff
ands r0, r1
str r0, [r2]
b _0802A7F2
.align 2, 0
_0802A7C0: .4byte gActiveBattler
_0802A7C4: .4byte sBattler_AI
_0802A7C8: .4byte gBattleScripting
_0802A7CC: .4byte gBattleTypeFlags
_0802A7D0: .4byte gAbsentBattlerFlags
_0802A7D4: .4byte gBitTable
_0802A7D8: .4byte gBattleMons
_0802A7DC: .4byte 0xf7ffffff
_0802A7E0:
ldrb r1, [r1]
adds r0, r3, 0
bl sub_80C71D0
ldr r1, _0802A838 @ =gUnknown_2023E82
ldrb r0, [r1, 0x5]
mov r2, r9
orrs r0, r2
strb r0, [r1, 0x5]
_0802A7F2:
movs r6, 0
ldr r7, _0802A83C @ =gBattleMons
_0802A7F6:
movs r0, 0x64
adds r4, r6, 0
muls r4, r0
add r4, r10
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0x2E
bl GetMonData
lsls r0, 24
lsrs r4, r0, 24
cmp r5, 0
beq _0802A8AE
movs r0, 0xCE
lsls r0, 1
cmp r5, r0
beq _0802A8AE
ldr r2, _0802A840 @ =gBattlerPartyIndexes
ldr r0, _0802A844 @ =sBattler_AI
ldrb r1, [r0]
lsls r0, r1, 1
adds r0, r2
ldrh r0, [r0]
cmp r0, r6
bne _0802A848
movs r0, 0x58
muls r0, r1
b _0802A878
.align 2, 0
_0802A838: .4byte gUnknown_2023E82
_0802A83C: .4byte gBattleMons
_0802A840: .4byte gBattlerPartyIndexes
_0802A844: .4byte sBattler_AI
_0802A848:
ldr r0, _0802A880 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0802A890
ldr r0, _0802A884 @ =gActiveBattler
ldrb r3, [r0]
lsls r0, r3, 1
adds r0, r2
ldrh r0, [r0]
cmp r0, r6
bne _0802A890
ldr r0, _0802A888 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _0802A88C @ =gBitTable
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802A890
movs r0, 0x58
muls r0, r3
_0802A878:
adds r0, r7
adds r0, 0x20
ldrb r0, [r0]
b _0802A89C
.align 2, 0
_0802A880: .4byte gBattleTypeFlags
_0802A884: .4byte gActiveBattler
_0802A888: .4byte gAbsentBattlerFlags
_0802A88C: .4byte gBitTable
_0802A890:
adds r0, r5, 0
adds r1, r4, 0
bl GetAbilityBySpecies
lsls r0, 24
lsrs r0, 24
_0802A89C:
cmp r0, 0x2B
beq _0802A8AE
movs r0, 0x1
lsls r0, r6
mov r1, r8
orrs r1, r0
lsls r0, r1, 24
lsrs r0, 24
mov r8, r0
_0802A8AE:
adds r6, 0x1
cmp r6, 0x5
ble _0802A7F6
b _0802A934
_0802A8B6:
ldr r1, _0802A970 @ =gUnknown_2023E82
movs r0, 0x4
strb r0, [r1, 0x5]
movs r2, 0x3F
mov r8, r2
ldr r3, _0802A974 @ =gBattleMons
ldr r2, _0802A978 @ =sBattler_AI
ldrb r0, [r2]
movs r5, 0x58
muls r0, r5
movs r1, 0x4C
adds r1, r3
mov r9, r1
add r0, r9
str r4, [r0]
ldrb r0, [r2]
adds r1, r0, 0
muls r1, r5
adds r7, r3, 0
adds r7, 0x50
adds r1, r7
ldr r0, [r1]
ldr r6, _0802A97C @ =0xf7ffffff
ands r0, r6
str r0, [r1]
ldrb r0, [r2]
bl GetBattlerPosition
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
ldr r4, _0802A980 @ =gActiveBattler
strb r0, [r4]
ldr r0, _0802A984 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0802A934
ldr r0, _0802A988 @ =gAbsentBattlerFlags
ldrb r2, [r0]
ldr r1, _0802A98C @ =gBitTable
ldrb r3, [r4]
lsls r0, r3, 2
adds r0, r1
ldr r0, [r0]
ands r2, r0
cmp r2, 0
bne _0802A934
adds r0, r3, 0
muls r0, r5
add r0, r9
str r2, [r0]
ldrb r0, [r4]
adds r1, r0, 0
muls r1, r5
adds r1, r7
ldr r0, [r1]
ands r0, r6
str r0, [r1]
_0802A934:
mov r2, r8
cmp r2, 0
beq _0802A956
ldr r4, _0802A980 @ =gActiveBattler
ldr r0, _0802A978 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r4]
add r0, sp, 0x4
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
_0802A956:
ldr r1, _0802A990 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802A970: .4byte gUnknown_2023E82
_0802A974: .4byte gBattleMons
_0802A978: .4byte sBattler_AI
_0802A97C: .4byte 0xf7ffffff
_0802A980: .4byte gActiveBattler
_0802A984: .4byte gBattleTypeFlags
_0802A988: .4byte gAbsentBattlerFlags
_0802A98C: .4byte gBitTable
_0802A990: .4byte gUnknown_2023D74
thumb_func_end atkAE_healpartystatus
thumb_func_start atkAF_cursetarget
atkAF_cursetarget: @ 802A994
push {r4,r5,lr}
ldr r5, _0802A9D4 @ =gBattleMons
ldr r0, _0802A9D8 @ =gBattlerTarget
ldrb r0, [r0]
movs r4, 0x58
adds r1, r0, 0
muls r1, r4
adds r0, r5, 0
adds r0, 0x50
adds r1, r0
ldr r2, [r1]
movs r3, 0x80
lsls r3, 21
adds r0, r2, 0
ands r0, r3
cmp r0, 0
beq _0802A9E0
ldr r3, _0802A9DC @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802AA04
.align 2, 0
_0802A9D4: .4byte gBattleMons
_0802A9D8: .4byte gBattlerTarget
_0802A9DC: .4byte gUnknown_2023D74
_0802A9E0:
orrs r2, r3
str r2, [r1]
ldr r1, _0802AA0C @ =gBattleMoveDamage
ldr r0, _0802AA10 @ =sBattler_AI
ldrb r0, [r0]
muls r0, r4
adds r0, r5
ldrh r0, [r0, 0x2C]
lsrs r0, 1
str r0, [r1]
cmp r0, 0
bne _0802A9FC
movs r0, 0x1
str r0, [r1]
_0802A9FC:
ldr r1, _0802AA14 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802AA04:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802AA0C: .4byte gBattleMoveDamage
_0802AA10: .4byte sBattler_AI
_0802AA14: .4byte gUnknown_2023D74
thumb_func_end atkAF_cursetarget
thumb_func_start atkB0_trysetspikes
atkB0_trysetspikes: @ 802AA18
push {r4,lr}
ldr r4, _0802AA6C @ =sBattler_AI
ldrb r0, [r4]
bl GetBattlerSide
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r1, _0802AA70 @ =gSideTimers
lsls r2, r0, 1
adds r0, r2, r0
lsls r0, 2
adds r3, r0, r1
ldrb r0, [r3, 0xA]
cmp r0, 0x3
bne _0802AA7C
ldr r2, _0802AA74 @ =gUnknown_2023ECC
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x20
orrs r1, r2
strb r1, [r0]
ldr r3, _0802AA78 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802AA96
.align 2, 0
_0802AA6C: .4byte sBattler_AI
_0802AA70: .4byte gSideTimers
_0802AA74: .4byte gUnknown_2023ECC
_0802AA78: .4byte gUnknown_2023D74
_0802AA7C:
ldr r1, _0802AA9C @ =gSideAffecting
adds r1, r2, r1
ldrh r2, [r1]
movs r0, 0x10
orrs r0, r2
strh r0, [r1]
ldrb r0, [r3, 0xA]
adds r0, 0x1
strb r0, [r3, 0xA]
ldr r1, _0802AAA0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802AA96:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802AA9C: .4byte gSideAffecting
_0802AAA0: .4byte gUnknown_2023D74
thumb_func_end atkB0_trysetspikes
thumb_func_start atkB1_setforesight
atkB1_setforesight: @ 802AAA4
ldr r1, _0802AAC8 @ =gBattleMons
ldr r0, _0802AACC @ =gBattlerTarget
ldrb r2, [r0]
movs r0, 0x58
muls r2, r0
adds r1, 0x50
adds r2, r1
ldr r0, [r2]
movs r1, 0x80
lsls r1, 22
orrs r0, r1
str r0, [r2]
ldr r1, _0802AAD0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802AAC8: .4byte gBattleMons
_0802AACC: .4byte gBattlerTarget
_0802AAD0: .4byte gUnknown_2023D74
thumb_func_end atkB1_setforesight
thumb_func_start atkB2_trysetperishsong
atkB2_trysetperishsong: @ 802AAD4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r6, 0
movs r3, 0
ldr r0, _0802AB18 @ =gBattlersCount
adds r7, r0, 0
ldr r0, _0802AB1C @ =sBattler_AI
mov r8, r0
ldrb r1, [r7]
cmp r6, r1
bge _0802AB40
movs r5, 0x20
ldr r0, _0802AB20 @ =gBattleMons
mov r12, r0
ldr r0, _0802AB24 @ =gDisableStructs
adds r4, r0, 0
adds r4, 0xF
ldr r2, _0802AB28 @ =gStatuses3
_0802AAFC:
ldr r1, [r2]
adds r0, r1, 0
ands r0, r5
cmp r0, 0
bne _0802AB14
movs r0, 0x58
muls r0, r3
add r0, r12
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x2B
bne _0802AB2C
_0802AB14:
adds r6, 0x1
b _0802AB34
.align 2, 0
_0802AB18: .4byte gBattlersCount
_0802AB1C: .4byte sBattler_AI
_0802AB20: .4byte gBattleMons
_0802AB24: .4byte gDisableStructs
_0802AB28: .4byte gStatuses3
_0802AB2C:
orrs r1, r5
str r1, [r2]
movs r0, 0x33
strb r0, [r4]
_0802AB34:
adds r4, 0x1C
adds r2, 0x4
adds r3, 0x1
ldrb r0, [r7]
cmp r3, r0
blt _0802AAFC
_0802AB40:
mov r1, r8
ldrb r0, [r1]
bl PressurePPLoseOnUsingPerishSong
ldr r0, _0802AB6C @ =gBattlersCount
ldrb r0, [r0]
cmp r6, r0
bne _0802AB74
ldr r3, _0802AB70 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802AB7C
.align 2, 0
_0802AB6C: .4byte gBattlersCount
_0802AB70: .4byte gUnknown_2023D74
_0802AB74:
ldr r1, _0802AB88 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802AB7C:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802AB88: .4byte gUnknown_2023D74
thumb_func_end atkB2_trysetperishsong
thumb_func_start atkB3_rolloutdamagecalculation
atkB3_rolloutdamagecalculation: @ 802AB8C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0802ABB0 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _0802ABC0
ldr r0, _0802ABB4 @ =sBattler_AI
ldrb r0, [r0]
bl CancelMultiTurnMoves
ldr r1, _0802ABB8 @ =gUnknown_2023D74
ldr r0, _0802ABBC @ =gUnknown_81D6960
str r0, [r1]
b _0802ACD8
.align 2, 0
_0802ABB0: .4byte gMoveResultFlags
_0802ABB4: .4byte sBattler_AI
_0802ABB8: .4byte gUnknown_2023D74
_0802ABBC: .4byte gUnknown_81D6960
_0802ABC0:
ldr r2, _0802ACE4 @ =gBattleMons
ldr r1, _0802ACE8 @ =sBattler_AI
ldrb r3, [r1]
movs r5, 0x58
adds r0, r3, 0
muls r0, r5
adds r4, r2, 0
adds r4, 0x50
adds r0, r4
ldr r0, [r0]
movs r7, 0x80
lsls r7, 5
ands r0, r7
adds r6, r1, 0
mov r9, r2
ldr r1, _0802ACEC @ =gDisableStructs
mov r12, r1
ldr r2, _0802ACF0 @ =gCurrentMove
mov r8, r2
cmp r0, 0
bne _0802AC32
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
add r0, r12
ldrb r2, [r0, 0x11]
movs r1, 0x10
negs r1, r1
ands r1, r2
movs r2, 0x5
orrs r1, r2
strb r1, [r0, 0x11]
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r12
ldrb r2, [r0, 0x11]
movs r1, 0xF
ands r1, r2
movs r2, 0x50
orrs r1, r2
strb r1, [r0, 0x11]
ldrb r0, [r6]
adds r1, r0, 0
muls r1, r5
adds r1, r4
ldr r0, [r1]
orrs r0, r7
str r0, [r1]
ldr r1, _0802ACF4 @ =gUnknown_2023DB8
ldrb r0, [r6]
lsls r0, 1
adds r0, r1
mov r2, r8
ldrh r1, [r2]
strh r1, [r0]
_0802AC32:
ldrb r0, [r6]
lsls r2, r0, 3
subs r2, r0
lsls r2, 2
add r2, r12
ldrb r3, [r2, 0x11]
lsls r1, r3, 28
lsrs r1, 28
subs r1, 0x1
movs r0, 0xF
ands r1, r0
movs r0, 0x10
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x11]
cmp r1, 0
bne _0802AC66
ldrb r0, [r6]
adds r1, r0, 0
muls r1, r5
adds r1, r4
ldr r0, [r1]
ldr r2, _0802ACF8 @ =0xffffefff
ands r0, r2
str r0, [r1]
_0802AC66:
ldr r3, _0802ACFC @ =gDynamicBasePower
ldr r2, _0802AD00 @ =gBattleMoves
mov r0, r8
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
strh r0, [r3]
movs r2, 0x1
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
mov r1, r12
adds r4, r0, r1
ldrb r0, [r4, 0x11]
lsls r0, 28
lsrs r0, 28
movs r1, 0x5
subs r1, r0
ldr r7, _0802AD04 @ =gUnknown_2023D74
adds r5, r3, 0
cmp r2, r1
bge _0802ACB4
adds r1, r5, 0
adds r3, r4, 0
movs r4, 0x5
_0802ACA0:
ldrh r0, [r1]
lsls r0, 1
strh r0, [r1]
adds r2, 0x1
ldrb r0, [r3, 0x11]
lsls r0, 28
lsrs r0, 28
subs r0, r4, r0
cmp r2, r0
blt _0802ACA0
_0802ACB4:
ldrb r1, [r6]
movs r0, 0x58
muls r0, r1
mov r1, r9
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 23
ands r0, r1
cmp r0, 0
beq _0802ACD2
ldrh r0, [r5]
lsls r0, 1
strh r0, [r5]
_0802ACD2:
ldr r0, [r7]
adds r0, 0x1
str r0, [r7]
_0802ACD8:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802ACE4: .4byte gBattleMons
_0802ACE8: .4byte sBattler_AI
_0802ACEC: .4byte gDisableStructs
_0802ACF0: .4byte gCurrentMove
_0802ACF4: .4byte gUnknown_2023DB8
_0802ACF8: .4byte 0xffffefff
_0802ACFC: .4byte gDynamicBasePower
_0802AD00: .4byte gBattleMoves
_0802AD04: .4byte gUnknown_2023D74
thumb_func_end atkB3_rolloutdamagecalculation
thumb_func_start atkB4_jumpifconfusedandstatmaxed
atkB4_jumpifconfusedandstatmaxed: @ 802AD08
push {r4,r5,lr}
ldr r5, _0802AD58 @ =gBattleMons
ldr r0, _0802AD5C @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
adds r3, r1, 0
muls r3, r0
adds r0, r5, 0
adds r0, 0x50
adds r0, r3, r0
ldr r0, [r0]
movs r1, 0x7
ands r0, r1
ldr r4, _0802AD60 @ =gUnknown_2023D74
cmp r0, 0
beq _0802AD64
ldr r2, [r4]
ldrb r0, [r2, 0x1]
adds r0, r3
adds r1, r5, 0
adds r1, 0x18
adds r0, r1
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r0, 0xC
bne _0802AD64
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
str r1, [r4]
b _0802AD6A
.align 2, 0
_0802AD58: .4byte gBattleMons
_0802AD5C: .4byte gBattlerTarget
_0802AD60: .4byte gUnknown_2023D74
_0802AD64:
ldr r0, [r4]
adds r0, 0x6
str r0, [r4]
_0802AD6A:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end atkB4_jumpifconfusedandstatmaxed
thumb_func_start atkB5_furycuttercalc
atkB5_furycuttercalc: @ 802AD70
push {r4,r5,lr}
ldr r0, _0802AD98 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _0802ADAC
ldr r2, _0802AD9C @ =gDisableStructs
ldr r0, _0802ADA0 @ =sBattler_AI
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strb r1, [r0, 0x10]
ldr r1, _0802ADA4 @ =gUnknown_2023D74
ldr r0, _0802ADA8 @ =gUnknown_81D6960
str r0, [r1]
b _0802AE04
.align 2, 0
_0802AD98: .4byte gMoveResultFlags
_0802AD9C: .4byte gDisableStructs
_0802ADA0: .4byte sBattler_AI
_0802ADA4: .4byte gUnknown_2023D74
_0802ADA8: .4byte gUnknown_81D6960
_0802ADAC:
ldr r5, _0802AE0C @ =gDisableStructs
ldr r4, _0802AE10 @ =sBattler_AI
ldrb r1, [r4]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r1, r0, r5
ldrb r0, [r1, 0x10]
cmp r0, 0x5
beq _0802ADC4
adds r0, 0x1
strb r0, [r1, 0x10]
_0802ADC4:
ldr r3, _0802AE14 @ =gDynamicBasePower
ldr r2, _0802AE18 @ =gBattleMoves
ldr r0, _0802AE1C @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
strh r0, [r3]
movs r2, 0x1
ldrb r1, [r4]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r5
ldr r4, _0802AE20 @ =gUnknown_2023D74
ldrb r1, [r0, 0x10]
cmp r2, r1
bge _0802ADFE
adds r1, r3, 0
adds r3, r0, 0
_0802ADF0:
ldrh r0, [r1]
lsls r0, 1
strh r0, [r1]
adds r2, 0x1
ldrb r0, [r3, 0x10]
cmp r2, r0
blt _0802ADF0
_0802ADFE:
ldr r0, [r4]
adds r0, 0x1
str r0, [r4]
_0802AE04:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802AE0C: .4byte gDisableStructs
_0802AE10: .4byte sBattler_AI
_0802AE14: .4byte gDynamicBasePower
_0802AE18: .4byte gBattleMoves
_0802AE1C: .4byte gCurrentMove
_0802AE20: .4byte gUnknown_2023D74
thumb_func_end atkB5_furycuttercalc
thumb_func_start atkB6_happinesstodamagecalculation
atkB6_happinesstodamagecalculation: @ 802AE24
push {r4,lr}
ldr r2, _0802AE50 @ =gBattleMoves
ldr r0, _0802AE54 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0x79
bne _0802AE64
ldr r4, _0802AE58 @ =gDynamicBasePower
ldr r2, _0802AE5C @ =gBattleMons
ldr r0, _0802AE60 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2B
ldrb r1, [r0]
b _0802AE7A
.align 2, 0
_0802AE50: .4byte gBattleMoves
_0802AE54: .4byte gCurrentMove
_0802AE58: .4byte gDynamicBasePower
_0802AE5C: .4byte gBattleMons
_0802AE60: .4byte sBattler_AI
_0802AE64:
ldr r4, _0802AE98 @ =gDynamicBasePower
ldr r2, _0802AE9C @ =gBattleMons
ldr r0, _0802AEA0 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2B
ldrb r0, [r0]
movs r1, 0xFF
subs r1, r0
_0802AE7A:
lsls r0, r1, 2
adds r0, r1
lsls r0, 1
movs r1, 0x19
bl __divsi3
strh r0, [r4]
ldr r1, _0802AEA4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802AE98: .4byte gDynamicBasePower
_0802AE9C: .4byte gBattleMons
_0802AEA0: .4byte sBattler_AI
_0802AEA4: .4byte gUnknown_2023D74
thumb_func_end atkB6_happinesstodamagecalculation
thumb_func_start atkB7_presentdamagecalculation
atkB7_presentdamagecalculation: @ 802AEA8
push {r4,lr}
bl Random
movs r4, 0xFF
ands r4, r0
cmp r4, 0x65
bgt _0802AEC4
ldr r1, _0802AEC0 @ =gDynamicBasePower
movs r0, 0x28
strh r0, [r1]
b _0802AF06
.align 2, 0
_0802AEC0: .4byte gDynamicBasePower
_0802AEC4:
cmp r4, 0xB1
bgt _0802AED4
ldr r1, _0802AED0 @ =gDynamicBasePower
movs r0, 0x50
strh r0, [r1]
b _0802AF06
.align 2, 0
_0802AED0: .4byte gDynamicBasePower
_0802AED4:
cmp r4, 0xCB
bgt _0802AEE4
ldr r1, _0802AEE0 @ =gDynamicBasePower
movs r0, 0x78
strh r0, [r1]
b _0802AF06
.align 2, 0
_0802AEE0: .4byte gDynamicBasePower
_0802AEE4:
ldr r3, _0802AF10 @ =gBattleMoveDamage
ldr r2, _0802AF14 @ =gBattleMons
ldr r0, _0802AF18 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x2C]
lsrs r0, 2
str r0, [r3]
cmp r0, 0
bne _0802AF00
movs r0, 0x1
str r0, [r3]
_0802AF00:
ldr r0, [r3]
negs r0, r0
str r0, [r3]
_0802AF06:
cmp r4, 0xCB
bgt _0802AF24
ldr r1, _0802AF1C @ =gUnknown_2023D74
ldr r0, _0802AF20 @ =gUnknown_81D6930
b _0802AF5E
.align 2, 0
_0802AF10: .4byte gBattleMoveDamage
_0802AF14: .4byte gBattleMons
_0802AF18: .4byte gBattlerTarget
_0802AF1C: .4byte gUnknown_2023D74
_0802AF20: .4byte gUnknown_81D6930
_0802AF24:
ldr r2, _0802AF40 @ =gBattleMons
ldr r0, _0802AF44 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r1, [r0, 0x2C]
ldrh r0, [r0, 0x28]
cmp r1, r0
bne _0802AF50
ldr r1, _0802AF48 @ =gUnknown_2023D74
ldr r0, _0802AF4C @ =gUnknown_81D7DD1
b _0802AF5E
.align 2, 0
_0802AF40: .4byte gBattleMons
_0802AF44: .4byte gBattlerTarget
_0802AF48: .4byte gUnknown_2023D74
_0802AF4C: .4byte gUnknown_81D7DD1
_0802AF50:
ldr r2, _0802AF68 @ =gMoveResultFlags
ldrb r1, [r2]
movs r0, 0xF7
ands r0, r1
strb r0, [r2]
ldr r1, _0802AF6C @ =gUnknown_2023D74
ldr r0, _0802AF70 @ =gUnknown_81D7DB7
_0802AF5E:
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802AF68: .4byte gMoveResultFlags
_0802AF6C: .4byte gUnknown_2023D74
_0802AF70: .4byte gUnknown_81D7DB7
thumb_func_end atkB7_presentdamagecalculation
thumb_func_start atkB8_setsafeguard
atkB8_setsafeguard: @ 802AF74
push {r4-r7,lr}
ldr r7, _0802AFA8 @ =sBattler_AI
ldrb r0, [r7]
bl GetBattlerPosition
ldr r4, _0802AFAC @ =gSideAffecting
movs r6, 0x1
adds r1, r6, 0
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r1, [r1]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0802AFB8
ldr r2, _0802AFB0 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _0802AFB4 @ =gUnknown_2023E82
movs r0, 0
strb r0, [r1, 0x5]
b _0802B000
.align 2, 0
_0802AFA8: .4byte sBattler_AI
_0802AFAC: .4byte gSideAffecting
_0802AFB0: .4byte gMoveResultFlags
_0802AFB4: .4byte gUnknown_2023E82
_0802AFB8:
ldrb r0, [r7]
bl GetBattlerPosition
adds r1, r6, 0
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r0, [r1]
movs r2, 0x20
orrs r0, r2
strh r0, [r1]
ldrb r0, [r7]
bl GetBattlerPosition
ldr r5, _0802B010 @ =gSideTimers
adds r1, r6, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r5
movs r4, 0x5
strb r4, [r0, 0x6]
ldrb r0, [r7]
bl GetBattlerPosition
adds r1, r6, 0
ands r1, r0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r5
ldrb r1, [r7]
strb r1, [r0, 0x7]
ldr r0, _0802B014 @ =gUnknown_2023E82
strb r4, [r0, 0x5]
_0802B000:
ldr r1, _0802B018 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B010: .4byte gSideTimers
_0802B014: .4byte gUnknown_2023E82
_0802B018: .4byte gUnknown_2023D74
thumb_func_end atkB8_setsafeguard
thumb_func_start atkB9_magnitudedamagecalculation
atkB9_magnitudedamagecalculation: @ 802B01C
push {r4-r7,lr}
mov r7, r8
push {r7}
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0x4
bgt _0802B048
ldr r1, _0802B044 @ =gDynamicBasePower
movs r0, 0xA
strh r0, [r1]
movs r3, 0x4
b _0802B0B4
.align 2, 0
_0802B044: .4byte gDynamicBasePower
_0802B048:
cmp r3, 0xE
bgt _0802B05C
ldr r1, _0802B058 @ =gDynamicBasePower
movs r0, 0x1E
strh r0, [r1]
movs r3, 0x5
b _0802B0B4
.align 2, 0
_0802B058: .4byte gDynamicBasePower
_0802B05C:
cmp r3, 0x22
bgt _0802B070
ldr r1, _0802B06C @ =gDynamicBasePower
movs r0, 0x32
strh r0, [r1]
movs r3, 0x6
b _0802B0B4
.align 2, 0
_0802B06C: .4byte gDynamicBasePower
_0802B070:
cmp r3, 0x40
bgt _0802B084
ldr r1, _0802B080 @ =gDynamicBasePower
movs r0, 0x46
strh r0, [r1]
movs r3, 0x7
b _0802B0B4
.align 2, 0
_0802B080: .4byte gDynamicBasePower
_0802B084:
cmp r3, 0x54
bgt _0802B098
ldr r1, _0802B094 @ =gDynamicBasePower
movs r0, 0x5A
strh r0, [r1]
movs r3, 0x8
b _0802B0B4
.align 2, 0
_0802B094: .4byte gDynamicBasePower
_0802B098:
cmp r3, 0x5E
bgt _0802B0AC
ldr r1, _0802B0A8 @ =gDynamicBasePower
movs r0, 0x6E
strh r0, [r1]
movs r3, 0x9
b _0802B0B4
.align 2, 0
_0802B0A8: .4byte gDynamicBasePower
_0802B0AC:
ldr r1, _0802B120 @ =gDynamicBasePower
movs r0, 0x96
strh r0, [r1]
movs r3, 0xA
_0802B0B4:
ldr r1, _0802B124 @ =gBattleTextBuff1
movs r2, 0
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x1
strb r0, [r1, 0x1]
strb r0, [r1, 0x2]
movs r0, 0x2
strb r0, [r1, 0x3]
strb r3, [r1, 0x4]
movs r0, 0xFF
strb r0, [r1, 0x5]
ldr r1, _0802B128 @ =gBattlerTarget
strb r2, [r1]
ldr r0, _0802B12C @ =gBattlersCount
ldrb r3, [r0]
adds r6, r1, 0
ldr r0, _0802B130 @ =gUnknown_2023D74
mov r8, r0
cmp r2, r3
bcs _0802B10C
adds r4, r6, 0
ldr r0, _0802B134 @ =sBattler_AI
ldrb r5, [r0]
ldr r1, _0802B138 @ =gBitTable
mov r12, r1
ldr r7, _0802B13C @ =gAbsentBattlerFlags
_0802B0EA:
ldrb r2, [r4]
cmp r2, r5
beq _0802B100
ldrb r0, [r7]
ldrb r1, [r6]
lsls r1, 2
add r1, r12
ldr r1, [r1]
ands r0, r1
cmp r0, 0
beq _0802B10C
_0802B100:
adds r0, r2, 0x1
strb r0, [r4]
lsls r0, 24
lsrs r0, 24
cmp r0, r3
bcc _0802B0EA
_0802B10C:
mov r1, r8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B120: .4byte gDynamicBasePower
_0802B124: .4byte gBattleTextBuff1
_0802B128: .4byte gBattlerTarget
_0802B12C: .4byte gBattlersCount
_0802B130: .4byte gUnknown_2023D74
_0802B134: .4byte sBattler_AI
_0802B138: .4byte gBitTable
_0802B13C: .4byte gAbsentBattlerFlags
thumb_func_end atkB9_magnitudedamagecalculation
thumb_func_start atkBA_jumpifnopursuitswitchdmg
atkBA_jumpifnopursuitswitchdmg: @ 802B140
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r0, _0802B164 @ =gUnknown_2023D72
ldrb r0, [r0]
cmp r0, 0x1
bne _0802B170
ldr r0, _0802B168 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0802B16C
movs r0, 0x1
b _0802B18A
.align 2, 0
_0802B164: .4byte gUnknown_2023D72
_0802B168: .4byte sBattler_AI
_0802B16C:
movs r0, 0
b _0802B18A
_0802B170:
ldr r0, _0802B184 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0802B188
movs r0, 0x3
b _0802B18A
.align 2, 0
_0802B184: .4byte sBattler_AI
_0802B188:
movs r0, 0x2
_0802B18A:
bl GetBattlerAtPosition
ldr r1, _0802B264 @ =gBattlerTarget
strb r0, [r1]
ldr r0, _0802B268 @ =gUnknown_2023D7C
ldr r1, _0802B264 @ =gBattlerTarget
ldrb r3, [r1]
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
beq _0802B1A2
b _0802B2A8
_0802B1A2:
ldr r5, _0802B26C @ =sBattler_AI
ldr r0, _0802B270 @ =gBattleStruct
ldr r1, [r0]
adds r1, r3, r1
ldrb r2, [r5]
ldrb r1, [r1, 0xC]
cmp r2, r1
bne _0802B2A8
ldr r4, _0802B274 @ =gBattleMons
movs r2, 0x58
adds r0, r3, 0
muls r0, r2
adds r1, r4, 0
adds r1, 0x4C
adds r0, r1
ldr r0, [r0]
movs r1, 0x27
ands r0, r1
cmp r0, 0
bne _0802B2A8
ldrb r0, [r5]
muls r0, r2
adds r0, r4
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _0802B2A8
ldr r0, _0802B278 @ =gDisableStructs
lsls r1, r3, 3
subs r1, r3
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x18]
lsls r0, 31
cmp r0, 0
bne _0802B2A8
ldr r0, _0802B27C @ =gUnknown_2023DC4
lsls r1, r3, 1
adds r1, r0
ldrh r0, [r1]
cmp r0, 0xE4
bne _0802B2A8
movs r1, 0
ldr r0, _0802B280 @ =gBattlersCount
ldr r2, _0802B284 @ =gCurrentMove
mov r8, r2
ldr r7, _0802B288 @ =gUnknown_2023D48
mov r10, r7
ldr r2, _0802B28C @ =gUnknown_2023D49
mov r9, r2
ldr r7, _0802B290 @ =gUnknown_2023DD0
mov r12, r7
ldrb r2, [r0]
cmp r1, r2
bge _0802B22E
ldr r6, _0802B294 @ =gUnknown_2023BDE
ldr r5, _0802B264 @ =gBattlerTarget
ldr r4, _0802B298 @ =gUnknown_2023BDA
movs r3, 0xB
adds r2, r0, 0
_0802B218:
adds r0, r1, r6
ldrb r0, [r0]
ldrb r7, [r5]
cmp r0, r7
bne _0802B226
adds r0, r1, r4
strb r3, [r0]
_0802B226:
adds r1, 0x1
ldrb r0, [r2]
cmp r1, r0
blt _0802B218
_0802B22E:
movs r0, 0xE4
mov r1, r8
strh r0, [r1]
ldr r2, _0802B264 @ =gBattlerTarget
ldrb r0, [r2]
ldr r7, _0802B270 @ =gBattleStruct
ldr r1, [r7]
adds r0, r1
adds r0, 0x80
ldrb r0, [r0]
mov r1, r9
strb r0, [r1]
mov r2, r10
strb r0, [r2]
ldr r7, _0802B29C @ =gUnknown_2023D74
ldr r0, [r7]
adds r0, 0x5
str r0, [r7]
movs r0, 0x1
ldr r1, _0802B2A0 @ =gBattleScripting
strb r0, [r1, 0x18]
mov r2, r12
ldr r0, [r2]
ldr r1, _0802B2A4 @ =0xfffffbff
ands r0, r1
str r0, [r2]
b _0802B2C2
.align 2, 0
_0802B264: .4byte gBattlerTarget
_0802B268: .4byte gUnknown_2023D7C
_0802B26C: .4byte sBattler_AI
_0802B270: .4byte gBattleStruct
_0802B274: .4byte gBattleMons
_0802B278: .4byte gDisableStructs
_0802B27C: .4byte gUnknown_2023DC4
_0802B280: .4byte gBattlersCount
_0802B284: .4byte gCurrentMove
_0802B288: .4byte gUnknown_2023D48
_0802B28C: .4byte gUnknown_2023D49
_0802B290: .4byte gUnknown_2023DD0
_0802B294: .4byte gUnknown_2023BDE
_0802B298: .4byte gUnknown_2023BDA
_0802B29C: .4byte gUnknown_2023D74
_0802B2A0: .4byte gBattleScripting
_0802B2A4: .4byte 0xfffffbff
_0802B2A8:
ldr r3, _0802B2D0 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802B2C2:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B2D0: .4byte gUnknown_2023D74
thumb_func_end atkBA_jumpifnopursuitswitchdmg
thumb_func_start atkBB_setsunny
atkBB_setsunny: @ 802B2D4
push {lr}
ldr r2, _0802B2F4 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _0802B300
ldr r2, _0802B2F8 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _0802B2FC @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
b _0802B312
.align 2, 0
_0802B2F4: .4byte gBattleWeather
_0802B2F8: .4byte gMoveResultFlags
_0802B2FC: .4byte gUnknown_2023E82
_0802B300:
movs r0, 0x20
strh r0, [r2]
ldr r1, _0802B320 @ =gUnknown_2023E82
movs r0, 0x4
strb r0, [r1, 0x5]
ldr r0, _0802B324 @ =gUnknown_2023F20
adds r0, 0x28
movs r1, 0x5
strb r1, [r0]
_0802B312:
ldr r1, _0802B328 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802B320: .4byte gUnknown_2023E82
_0802B324: .4byte gUnknown_2023F20
_0802B328: .4byte gUnknown_2023D74
thumb_func_end atkBB_setsunny
thumb_func_start atkBC_maxattackhalvehp
atkBC_maxattackhalvehp: @ 802B32C
push {r4,r5,lr}
ldr r5, _0802B378 @ =gBattleMons
ldr r4, _0802B37C @ =sBattler_AI
ldrb r0, [r4]
movs r3, 0x58
muls r0, r3
adds r2, r0, r5
ldrh r0, [r2, 0x2C]
lsrs r1, r0, 1
cmp r1, 0
bne _0802B344
movs r1, 0x1
_0802B344:
movs r0, 0x19
ldrsb r0, [r2, r0]
cmp r0, 0xB
bgt _0802B388
ldrh r0, [r2, 0x28]
cmp r0, r1
bls _0802B388
movs r0, 0xC
strb r0, [r2, 0x19]
ldr r1, _0802B380 @ =gBattleMoveDamage
ldrb r0, [r4]
muls r0, r3
adds r0, r5
ldrh r0, [r0, 0x2C]
lsrs r0, 1
str r0, [r1]
cmp r0, 0
bne _0802B36C
movs r0, 0x1
str r0, [r1]
_0802B36C:
ldr r1, _0802B384 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802B3A2
.align 2, 0
_0802B378: .4byte gBattleMons
_0802B37C: .4byte sBattler_AI
_0802B380: .4byte gBattleMoveDamage
_0802B384: .4byte gUnknown_2023D74
_0802B388:
ldr r3, _0802B3A8 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802B3A2:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802B3A8: .4byte gUnknown_2023D74
thumb_func_end atkBC_maxattackhalvehp
thumb_func_start atkBD_copyfoestats
atkBD_copyfoestats: @ 802B3AC
push {r4-r7,lr}
movs r2, 0
ldr r7, _0802B3E4 @ =gUnknown_2023D74
ldr r6, _0802B3E8 @ =sBattler_AI
movs r4, 0x58
ldr r3, _0802B3EC @ =gUnknown_2023BFC
ldr r5, _0802B3F0 @ =gBattlerTarget
_0802B3BA:
ldrb r0, [r6]
adds r1, r0, 0
muls r1, r4
adds r1, r2, r1
adds r1, r3
ldrb r0, [r5]
muls r0, r4
adds r0, r2, r0
adds r0, r3
ldrb r0, [r0]
strb r0, [r1]
adds r2, 0x1
cmp r2, 0x7
ble _0802B3BA
ldr r0, [r7]
adds r0, 0x5
str r0, [r7]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B3E4: .4byte gUnknown_2023D74
_0802B3E8: .4byte sBattler_AI
_0802B3EC: .4byte gUnknown_2023BFC
_0802B3F0: .4byte gBattlerTarget
thumb_func_end atkBD_copyfoestats
thumb_func_start atkBE_rapidspinfree
atkBE_rapidspinfree: @ 802B3F4
push {r4-r6,lr}
ldr r1, _0802B464 @ =gBattleMons
ldr r5, _0802B468 @ =sBattler_AI
ldrb r2, [r5]
movs r6, 0x58
adds r0, r2, 0
muls r0, r6
adds r4, r1, 0
adds r4, 0x50
adds r0, r4
ldr r0, [r0]
movs r1, 0xE0
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _0802B488
ldr r1, _0802B46C @ =gBattleScripting
ldr r3, _0802B470 @ =gBattlerTarget
ldrb r0, [r3]
strb r0, [r1, 0x17]
ldrb r0, [r5]
adds r1, r0, 0
muls r1, r6
adds r1, r4
ldr r0, [r1]
ldr r2, _0802B474 @ =0xffff1fff
ands r0, r2
str r0, [r1]
ldrb r0, [r5]
ldr r1, _0802B478 @ =gBattleStruct
ldr r2, [r1]
adds r0, r2
ldrb r0, [r0, 0x14]
strb r0, [r3]
ldr r1, _0802B47C @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
ldrb r0, [r5]
lsls r0, 1
adds r0, r2
ldrb r0, [r0, 0x4]
strb r0, [r1, 0x2]
ldrb r0, [r5]
lsls r0, 1
adds r0, r2
ldrb r0, [r0, 0x5]
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
bl BattleScriptPushCursor
ldr r1, _0802B480 @ =gUnknown_2023D74
ldr r0, _0802B484 @ =gUnknown_81D8DF3
b _0802B532
.align 2, 0
_0802B464: .4byte gBattleMons
_0802B468: .4byte sBattler_AI
_0802B46C: .4byte gBattleScripting
_0802B470: .4byte gBattlerTarget
_0802B474: .4byte 0xffff1fff
_0802B478: .4byte gBattleStruct
_0802B47C: .4byte gBattleTextBuff1
_0802B480: .4byte gUnknown_2023D74
_0802B484: .4byte gUnknown_81D8DF3
_0802B488:
ldr r4, _0802B4BC @ =gStatuses3
lsls r0, r2, 2
adds r3, r0, r4
ldr r1, [r3]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0802B4C8
movs r0, 0x5
negs r0, r0
ands r1, r0
str r1, [r3]
ldrb r1, [r5]
lsls r1, 2
adds r1, r4
ldr r0, [r1]
movs r2, 0x4
negs r2, r2
ands r0, r2
str r0, [r1]
bl BattleScriptPushCursor
ldr r1, _0802B4C0 @ =gUnknown_2023D74
ldr r0, _0802B4C4 @ =gUnknown_81D8E04
b _0802B532
.align 2, 0
_0802B4BC: .4byte gStatuses3
_0802B4C0: .4byte gUnknown_2023D74
_0802B4C4: .4byte gUnknown_81D8E04
_0802B4C8:
adds r0, r2, 0
bl GetBattlerSide
ldr r4, _0802B518 @ =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r4
ldrh r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0802B52C
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 23
adds r0, r4
ldrh r2, [r0]
ldr r1, _0802B51C @ =0x0000ffef
ands r1, r2
movs r4, 0
strh r1, [r0]
ldrb r0, [r5]
bl GetBattlerSide
ldr r2, _0802B520 @ =gSideTimers
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r2
strb r4, [r1, 0xA]
bl BattleScriptPushCursor
ldr r1, _0802B524 @ =gUnknown_2023D74
ldr r0, _0802B528 @ =gUnknown_81D8E0B
b _0802B532
.align 2, 0
_0802B518: .4byte gSideAffecting
_0802B51C: .4byte 0x0000ffef
_0802B520: .4byte gSideTimers
_0802B524: .4byte gUnknown_2023D74
_0802B528: .4byte gUnknown_81D8E0B
_0802B52C:
ldr r1, _0802B53C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
_0802B532:
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802B53C: .4byte gUnknown_2023D74
thumb_func_end atkBE_rapidspinfree
thumb_func_start atkBF_setdefensecurlbit
atkBF_setdefensecurlbit: @ 802B540
ldr r1, _0802B564 @ =gBattleMons
ldr r0, _0802B568 @ =sBattler_AI
ldrb r2, [r0]
movs r0, 0x58
muls r2, r0
adds r1, 0x50
adds r2, r1
ldr r0, [r2]
movs r1, 0x80
lsls r1, 23
orrs r0, r1
str r0, [r2]
ldr r1, _0802B56C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802B564: .4byte gBattleMons
_0802B568: .4byte sBattler_AI
_0802B56C: .4byte gUnknown_2023D74
thumb_func_end atkBF_setdefensecurlbit
thumb_func_start atkC0_recoverbasedonsunlight
atkC0_recoverbasedonsunlight: @ 802B570
push {r4-r7,lr}
sub sp, 0x4
ldr r1, _0802B5DC @ =gBattlerTarget
ldr r5, _0802B5E0 @ =sBattler_AI
ldrb r0, [r5]
strb r0, [r1]
ldr r7, _0802B5E4 @ =gBattleMons
ldrb r0, [r5]
movs r6, 0x58
muls r0, r6
adds r0, r7
ldrh r1, [r0, 0x28]
ldrh r0, [r0, 0x2C]
cmp r1, r0
beq _0802B650
ldr r4, _0802B5E8 @ =gBattleWeather
ldrh r0, [r4]
cmp r0, 0
beq _0802B5C2
movs r0, 0
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0xD
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0802B5C2
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
beq _0802B5F0
_0802B5C2:
ldr r3, _0802B5EC @ =gBattleMoveDamage
ldr r2, _0802B5E4 @ =gBattleMons
ldr r0, _0802B5E0 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x2C]
lsrs r0, 1
str r0, [r3]
adds r1, r3, 0
b _0802B62A
.align 2, 0
_0802B5DC: .4byte gBattlerTarget
_0802B5E0: .4byte sBattler_AI
_0802B5E4: .4byte gBattleMons
_0802B5E8: .4byte gBattleWeather
_0802B5EC: .4byte gBattleMoveDamage
_0802B5F0:
ldrh r1, [r4]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _0802B61C
ldr r4, _0802B618 @ =gBattleMoveDamage
ldrb r0, [r5]
muls r0, r6
adds r0, r7
ldrh r1, [r0, 0x2C]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
movs r1, 0x1E
bl __divsi3
str r0, [r4]
adds r1, r4, 0
b _0802B62A
.align 2, 0
_0802B618: .4byte gBattleMoveDamage
_0802B61C:
ldr r1, _0802B648 @ =gBattleMoveDamage
ldrb r0, [r5]
muls r0, r6
adds r0, r7
ldrh r0, [r0, 0x2C]
lsrs r0, 2
str r0, [r1]
_0802B62A:
adds r2, r1, 0
ldr r0, [r2]
cmp r0, 0
bne _0802B636
movs r0, 0x1
str r0, [r2]
_0802B636:
ldr r0, [r1]
negs r0, r0
str r0, [r1]
ldr r1, _0802B64C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802B66A
.align 2, 0
_0802B648: .4byte gBattleMoveDamage
_0802B64C: .4byte gUnknown_2023D74
_0802B650:
ldr r3, _0802B674 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802B66A:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B674: .4byte gUnknown_2023D74
thumb_func_end atkC0_recoverbasedonsunlight
thumb_func_start sub_802B678
sub_802B678: @ 802B678
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r2, _0802B760 @ =gBattleMons
ldr r0, _0802B764 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
ldrb r0, [r1, 0x14]
mov r9, r0
mov r7, r9
lsls r7, 27
adds r0, r7, 0
lsrs r0, 27
mov r9, r0
movs r4, 0x2
mov r2, r9
ands r2, r4
asrs r2, 1
ldrh r7, [r1, 0x14]
mov r8, r7
mov r0, r8
lsls r0, 22
lsrs r0, 27
mov r8, r0
ands r0, r4
orrs r2, r0
ldrb r6, [r1, 0x15]
lsls r6, 25
lsrs r6, 27
adds r0, r6, 0
ands r0, r4
lsls r0, 1
orrs r2, r0
ldr r5, [r1, 0x14]
lsls r5, 12
lsrs r5, 27
adds r0, r5, 0
ands r0, r4
lsls r0, 2
orrs r2, r0
ldrh r3, [r1, 0x16]
lsls r3, 23
lsrs r3, 27
adds r0, r3, 0
ands r0, r4
lsls r0, 3
orrs r2, r0
ldrb r1, [r1, 0x17]
lsls r1, 26
lsrs r1, 27
adds r0, r1, 0
ands r0, r4
lsls r0, 4
orrs r2, r0
movs r0, 0x1
adds r4, r0, 0
mov r7, r9
ands r4, r7
mov r7, r8
ands r7, r0
lsls r7, 1
orrs r4, r7
ands r6, r0
lsls r6, 2
orrs r4, r6
ands r5, r0
lsls r5, 3
orrs r4, r5
ands r3, r0
lsls r3, 4
orrs r4, r3
ands r1, r0
lsls r1, 5
orrs r4, r1
ldr r5, _0802B768 @ =gDynamicBasePower
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
movs r1, 0x3F
bl __divsi3
adds r0, 0x1E
strh r0, [r5]
ldr r6, _0802B76C @ =gBattleStruct
ldr r5, [r6]
lsls r0, r4, 4
subs r0, r4
movs r1, 0x3F
bl __divsi3
adds r0, 0x1
strb r0, [r5, 0x13]
ldr r1, [r6]
ldrb r0, [r1, 0x13]
cmp r0, 0x8
bls _0802B742
adds r0, 0x1
strb r0, [r1, 0x13]
_0802B742:
ldr r2, [r6]
ldrb r0, [r2, 0x13]
movs r1, 0xC0
orrs r0, r1
strb r0, [r2, 0x13]
ldr r1, _0802B770 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B760: .4byte gBattleMons
_0802B764: .4byte sBattler_AI
_0802B768: .4byte gDynamicBasePower
_0802B76C: .4byte gBattleStruct
_0802B770: .4byte gUnknown_2023D74
thumb_func_end sub_802B678
thumb_func_start atkC2_selectfirstvalidtarget
atkC2_selectfirstvalidtarget: @ 802B774
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _0802B7D0 @ =gBattlerTarget
movs r1, 0
strb r1, [r0]
ldr r1, _0802B7D4 @ =gBattlersCount
ldrb r1, [r1]
adds r6, r0, 0
ldr r0, _0802B7D8 @ =gUnknown_2023D74
mov r8, r0
cmp r1, 0
beq _0802B7BE
adds r3, r6, 0
ldr r0, _0802B7DC @ =sBattler_AI
ldrb r5, [r0]
ldr r0, _0802B7E0 @ =gBitTable
mov r12, r0
adds r4, r1, 0
ldr r7, _0802B7E4 @ =gAbsentBattlerFlags
_0802B79C:
ldrb r2, [r3]
cmp r2, r5
beq _0802B7B2
ldrb r0, [r7]
ldrb r1, [r6]
lsls r1, 2
add r1, r12
ldr r1, [r1]
ands r0, r1
cmp r0, 0
beq _0802B7BE
_0802B7B2:
adds r0, r2, 0x1
strb r0, [r3]
lsls r0, 24
lsrs r0, 24
cmp r0, r4
bcc _0802B79C
_0802B7BE:
mov r1, r8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B7D0: .4byte gBattlerTarget
_0802B7D4: .4byte gBattlersCount
_0802B7D8: .4byte gUnknown_2023D74
_0802B7DC: .4byte sBattler_AI
_0802B7E0: .4byte gBitTable
_0802B7E4: .4byte gAbsentBattlerFlags
thumb_func_end atkC2_selectfirstvalidtarget
thumb_func_start atkC3_trysetfutureattack
atkC3_trysetfutureattack: @ 802B7E8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
ldr r0, _0802B820 @ =gUnknown_2023F20
mov r8, r0
ldr r7, _0802B824 @ =gBattlerTarget
ldrb r1, [r7]
adds r0, r1, r0
ldrb r6, [r0]
cmp r6, 0
beq _0802B82C
ldr r3, _0802B828 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802B8F6
.align 2, 0
_0802B820: .4byte gUnknown_2023F20
_0802B824: .4byte gBattlerTarget
_0802B828: .4byte gUnknown_2023D74
_0802B82C:
lsls r1, 1
mov r0, r8
adds r0, 0x18
adds r1, r0
ldr r2, _0802B8CC @ =gCurrentMove
mov r9, r2
ldrh r0, [r2]
strh r0, [r1]
mov r0, r8
adds r0, 0x4
ldrb r4, [r7]
adds r0, r4
ldr r5, _0802B8D0 @ =sBattler_AI
ldrb r1, [r5]
strb r1, [r0]
ldrb r0, [r7]
add r0, r8
movs r1, 0x3
strb r1, [r0]
ldr r4, _0802B8D4 @ =gSideAffecting
ldrb r0, [r7]
bl GetBattlerPosition
movs r1, 0x1
mov r10, r1
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
ldrb r0, [r5]
movs r4, 0x58
muls r0, r4
ldr r2, _0802B8D8 @ =gBattleMons
adds r0, r2
ldrb r1, [r7]
muls r1, r4
adds r1, r2
mov r4, r9
ldrh r2, [r4]
str r6, [sp]
str r6, [sp, 0x4]
ldrb r4, [r5]
str r4, [sp, 0x8]
ldrb r4, [r7]
str r4, [sp, 0xC]
bl CalculateBaseDamage
ldrb r1, [r7]
lsls r1, 2
mov r2, r8
adds r2, 0x8
adds r1, r2
str r0, [r1]
ldr r1, _0802B8DC @ =gUnknown_2023E8C
ldrb r0, [r5]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
bge _0802B8BA
ldrb r4, [r7]
lsls r4, 2
adds r4, r2
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
movs r1, 0xA
bl __divsi3
str r0, [r4]
_0802B8BA:
mov r0, r9
ldrh r1, [r0]
ldr r0, _0802B8E0 @ =0x00000161
cmp r1, r0
bne _0802B8E8
ldr r0, _0802B8E4 @ =gUnknown_2023E82
mov r1, r10
strb r1, [r0, 0x5]
b _0802B8EE
.align 2, 0
_0802B8CC: .4byte gCurrentMove
_0802B8D0: .4byte sBattler_AI
_0802B8D4: .4byte gSideAffecting
_0802B8D8: .4byte gBattleMons
_0802B8DC: .4byte gUnknown_2023E8C
_0802B8E0: .4byte 0x00000161
_0802B8E4: .4byte gUnknown_2023E82
_0802B8E8:
ldr r1, _0802B908 @ =gUnknown_2023E82
movs r0, 0
strb r0, [r1, 0x5]
_0802B8EE:
ldr r1, _0802B90C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802B8F6:
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B908: .4byte gUnknown_2023E82
_0802B90C: .4byte gUnknown_2023D74
thumb_func_end atkC3_trysetfutureattack
thumb_func_start atkC4_trydobeatup
atkC4_trydobeatup: @ 802B910
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0802B954 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
ldr r7, _0802B958 @ =gEnemyParty
cmp r0, 0
bne _0802B92A
ldr r7, _0802B95C @ =gPlayerParty
_0802B92A:
ldr r2, _0802B960 @ =gBattleMons
ldr r0, _0802B964 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _0802B96C
ldr r3, _0802B968 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
b _0802BB08
.align 2, 0
_0802B954: .4byte sBattler_AI
_0802B958: .4byte gEnemyParty
_0802B95C: .4byte gPlayerParty
_0802B960: .4byte gBattleMons
_0802B964: .4byte gBattlerTarget
_0802B968: .4byte gUnknown_2023D74
_0802B96C:
ldr r6, _0802BAA8 @ =gUnknown_2023E82
ldrb r0, [r6]
mov r8, r0
cmp r0, 0x5
bls _0802B978
b _0802BAD4
_0802B978:
adds r4, r6, 0
movs r5, 0x64
_0802B97C:
ldrb r0, [r4]
muls r0, r5
adds r0, r7, r0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _0802B9C0
ldrb r0, [r6]
muls r0, r5
adds r0, r7, r0
movs r1, 0x41
bl GetMonData
cmp r0, 0
beq _0802B9C0
ldrb r0, [r4]
muls r0, r5
adds r0, r7, r0
movs r1, 0x41
bl GetMonData
movs r1, 0xCE
lsls r1, 1
cmp r0, r1
beq _0802B9C0
ldrb r0, [r4]
muls r0, r5
adds r0, r7, r0
movs r1, 0x37
bl GetMonData
cmp r0, 0
beq _0802B9D0
_0802B9C0:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
adds r6, r4, 0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x5
bls _0802B97C
_0802B9D0:
ldr r1, _0802BAA8 @ =gUnknown_2023E82
mov r9, r1
ldrb r2, [r1]
cmp r2, 0x5
bhi _0802BAD4
ldr r1, _0802BAAC @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r6, _0802BAB0 @ =sBattler_AI
ldrb r0, [r6]
strb r0, [r1, 0x2]
strb r2, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _0802BAB4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x9
str r0, [r1]
ldr r2, _0802BAB8 @ =gBattleMoveDamage
mov r8, r2
ldr r5, _0802BABC @ =gBaseStats
mov r1, r9
ldrb r0, [r1]
movs r4, 0x64
muls r0, r4
adds r0, r7, r0
movs r1, 0xB
bl GetMonData
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r5
ldrb r3, [r1, 0x1]
mov r2, r8
str r3, [r2]
ldr r2, _0802BAC0 @ =gBattleMoves
ldr r0, _0802BAC4 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
muls r0, r3
mov r1, r8
str r0, [r1]
mov r2, r9
ldrb r0, [r2]
muls r0, r4
adds r0, r7, r0
movs r1, 0x38
bl GetMonData
lsls r0, 1
movs r1, 0x5
bl __udivsi3
adds r0, 0x2
mov r2, r8
ldr r1, [r2]
muls r0, r1
str r0, [r2]
ldr r3, _0802BAC8 @ =gBattleMons
ldr r1, _0802BACC @ =gBattlerTarget
ldrb r2, [r1]
movs r1, 0x58
muls r1, r2
adds r1, r3
ldrh r2, [r1]
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r1, r5
ldrb r1, [r1, 0x2]
bl __divsi3
mov r1, r8
str r0, [r1]
movs r1, 0x32
bl __divsi3
adds r2, r0, 0x2
mov r0, r8
str r2, [r0]
ldr r1, _0802BAD0 @ =gUnknown_2023E8C
ldrb r0, [r6]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
bge _0802BA9C
lsls r0, r2, 4
subs r0, r2
movs r1, 0xA
bl __divsi3
mov r1, r8
str r0, [r1]
_0802BA9C:
mov r2, r9
ldrb r0, [r2]
adds r0, 0x1
strb r0, [r2]
b _0802BB0E
.align 2, 0
_0802BAA8: .4byte gUnknown_2023E82
_0802BAAC: .4byte gBattleTextBuff1
_0802BAB0: .4byte sBattler_AI
_0802BAB4: .4byte gUnknown_2023D74
_0802BAB8: .4byte gBattleMoveDamage
_0802BABC: .4byte gBaseStats
_0802BAC0: .4byte gBattleMoves
_0802BAC4: .4byte gCurrentMove
_0802BAC8: .4byte gBattleMons
_0802BACC: .4byte gBattlerTarget
_0802BAD0: .4byte gUnknown_2023E8C
_0802BAD4:
mov r0, r8
cmp r0, 0
beq _0802BAF4
ldr r3, _0802BAF0 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
b _0802BB08
.align 2, 0
_0802BAF0: .4byte gUnknown_2023D74
_0802BAF4:
ldr r3, _0802BB1C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x5]
ldrb r0, [r2, 0x6]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x7]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x8]
_0802BB08:
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802BB0E:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802BB1C: .4byte gUnknown_2023D74
thumb_func_end atkC4_trydobeatup
thumb_func_start atkC5_setsemiinvulnerablebit
atkC5_setsemiinvulnerablebit: @ 802BB20
push {lr}
ldr r0, _0802BB34 @ =gCurrentMove
ldrh r1, [r0]
cmp r1, 0x5B
beq _0802BB60
cmp r1, 0x5B
bgt _0802BB38
cmp r1, 0x13
beq _0802BB44
b _0802BB8C
.align 2, 0
_0802BB34: .4byte gCurrentMove
_0802BB38:
ldr r0, _0802BB54 @ =0x00000123
cmp r1, r0
beq _0802BB78
adds r0, 0x31
cmp r1, r0
bne _0802BB8C
_0802BB44:
ldr r2, _0802BB58 @ =gStatuses3
ldr r0, _0802BB5C @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x40
b _0802BB88
.align 2, 0
_0802BB54: .4byte 0x00000123
_0802BB58: .4byte gStatuses3
_0802BB5C: .4byte sBattler_AI
_0802BB60:
ldr r2, _0802BB70 @ =gStatuses3
ldr r0, _0802BB74 @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
b _0802BB88
.align 2, 0
_0802BB70: .4byte gStatuses3
_0802BB74: .4byte sBattler_AI
_0802BB78:
ldr r2, _0802BB98 @ =gStatuses3
ldr r0, _0802BB9C @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
lsls r2, 11
_0802BB88:
orrs r0, r2
str r0, [r1]
_0802BB8C:
ldr r1, _0802BBA0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BB98: .4byte gStatuses3
_0802BB9C: .4byte sBattler_AI
_0802BBA0: .4byte gUnknown_2023D74
thumb_func_end atkC5_setsemiinvulnerablebit
thumb_func_start atkC6_clearsemiinvulnerablebit
atkC6_clearsemiinvulnerablebit: @ 802BBA4
push {lr}
ldr r0, _0802BBB8 @ =gCurrentMove
ldrh r1, [r0]
cmp r1, 0x5B
beq _0802BBE8
cmp r1, 0x5B
bgt _0802BBBC
cmp r1, 0x13
beq _0802BBC8
b _0802BC16
.align 2, 0
_0802BBB8: .4byte gCurrentMove
_0802BBBC:
ldr r0, _0802BBDC @ =0x00000123
cmp r1, r0
beq _0802BC04
adds r0, 0x31
cmp r1, r0
bne _0802BC16
_0802BBC8:
ldr r2, _0802BBE0 @ =gStatuses3
ldr r0, _0802BBE4 @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x41
negs r2, r2
b _0802BC12
.align 2, 0
_0802BBDC: .4byte 0x00000123
_0802BBE0: .4byte gStatuses3
_0802BBE4: .4byte sBattler_AI
_0802BBE8:
ldr r2, _0802BBFC @ =gStatuses3
ldr r0, _0802BC00 @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x81
negs r2, r2
b _0802BC12
.align 2, 0
_0802BBFC: .4byte gStatuses3
_0802BC00: .4byte sBattler_AI
_0802BC04:
ldr r2, _0802BC24 @ =gStatuses3
ldr r0, _0802BC28 @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
ldr r2, _0802BC2C @ =0xfffbffff
_0802BC12:
ands r0, r2
str r0, [r1]
_0802BC16:
ldr r1, _0802BC30 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BC24: .4byte gStatuses3
_0802BC28: .4byte sBattler_AI
_0802BC2C: .4byte 0xfffbffff
_0802BC30: .4byte gUnknown_2023D74
thumb_func_end atkC6_clearsemiinvulnerablebit
thumb_func_start atkC7_setminimize
atkC7_setminimize: @ 802BC34
push {lr}
ldr r0, _0802BC64 @ =gUnknown_2023DD0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 18
ands r0, r1
cmp r0, 0
beq _0802BC58
ldr r2, _0802BC68 @ =gStatuses3
ldr r0, _0802BC6C @ =sBattler_AI
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
lsls r2, 1
orrs r0, r2
str r0, [r1]
_0802BC58:
ldr r1, _0802BC70 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BC64: .4byte gUnknown_2023DD0
_0802BC68: .4byte gStatuses3
_0802BC6C: .4byte sBattler_AI
_0802BC70: .4byte gUnknown_2023D74
thumb_func_end atkC7_setminimize
thumb_func_start atkC8_sethail
atkC8_sethail: @ 802BC74
push {lr}
ldr r3, _0802BC98 @ =gBattleWeather
ldrh r1, [r3]
movs r2, 0x80
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _0802BCA4
ldr r2, _0802BC9C @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _0802BCA0 @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
b _0802BCB2
.align 2, 0
_0802BC98: .4byte gBattleWeather
_0802BC9C: .4byte gMoveResultFlags
_0802BCA0: .4byte gUnknown_2023E82
_0802BCA4:
strh r2, [r3]
ldr r0, _0802BCC0 @ =gUnknown_2023E82
movs r1, 0x5
strb r1, [r0, 0x5]
ldr r0, _0802BCC4 @ =gUnknown_2023F20
adds r0, 0x28
strb r1, [r0]
_0802BCB2:
ldr r1, _0802BCC8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BCC0: .4byte gUnknown_2023E82
_0802BCC4: .4byte gUnknown_2023F20
_0802BCC8: .4byte gUnknown_2023D74
thumb_func_end atkC8_sethail
thumb_func_start atkC9_jumpifattackandspecialattackcannotfall
atkC9_jumpifattackandspecialattackcannotfall: @ 802BCCC
push {r4,lr}
ldr r2, _0802BD10 @ =gBattleMons
ldr r0, _0802BD14 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r1, r0, r2
movs r0, 0x19
ldrsb r0, [r1, r0]
adds r3, r2, 0
cmp r0, 0
bne _0802BD20
movs r0, 0x1C
ldrsb r0, [r1, r0]
cmp r0, 0
bne _0802BD20
ldr r0, _0802BD18 @ =gUnknown_2023E82
ldrb r0, [r0, 0x6]
cmp r0, 0x1
beq _0802BD20
ldr r3, _0802BD1C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802BD4C
.align 2, 0
_0802BD10: .4byte gBattleMons
_0802BD14: .4byte gBattlerTarget
_0802BD18: .4byte gUnknown_2023E82
_0802BD1C: .4byte gUnknown_2023D74
_0802BD20:
ldr r4, _0802BD54 @ =gActiveBattler
ldr r0, _0802BD58 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r4]
ldr r2, _0802BD5C @ =gBattleMoveDamage
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
adds r0, r3
ldrh r0, [r0, 0x28]
str r0, [r2]
ldr r1, _0802BD60 @ =0x00007fff
movs r0, 0
bl EmitHealthBarUpdate
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, _0802BD64 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802BD4C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BD54: .4byte gActiveBattler
_0802BD58: .4byte sBattler_AI
_0802BD5C: .4byte gBattleMoveDamage
_0802BD60: .4byte 0x00007fff
_0802BD64: .4byte gUnknown_2023D74
thumb_func_end atkC9_jumpifattackandspecialattackcannotfall
thumb_func_start atkCA_setforcedtarget
atkCA_setforcedtarget: @ 802BD68
push {r4,r5,lr}
ldr r4, _0802BDA8 @ =sBattler_AI
ldrb r0, [r4]
bl GetBattlerSide
ldr r5, _0802BDAC @ =gSideTimers
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r5
movs r0, 0x1
strb r0, [r1, 0x8]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r5
ldrb r0, [r4]
strb r0, [r1, 0x9]
ldr r1, _0802BDB0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802BDA8: .4byte sBattler_AI
_0802BDAC: .4byte gSideTimers
_0802BDB0: .4byte gUnknown_2023D74
thumb_func_end atkCA_setforcedtarget
thumb_func_start atkCB_setcharge
atkCB_setcharge: @ 802BDB4
push {r4,lr}
ldr r0, _0802BE08 @ =gStatuses3
ldr r3, _0802BE0C @ =sBattler_AI
ldrb r1, [r3]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
movs r2, 0x80
lsls r2, 2
orrs r0, r2
str r0, [r1]
ldr r4, _0802BE10 @ =gDisableStructs
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r4
ldrb r2, [r0, 0x12]
movs r1, 0x10
negs r1, r1
ands r1, r2
movs r2, 0x2
orrs r1, r2
strb r1, [r0, 0x12]
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r4
ldrb r2, [r0, 0x12]
movs r1, 0xF
ands r1, r2
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x12]
ldr r1, _0802BE14 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BE08: .4byte gStatuses3
_0802BE0C: .4byte sBattler_AI
_0802BE10: .4byte gDisableStructs
_0802BE14: .4byte gUnknown_2023D74
thumb_func_end atkCB_setcharge
thumb_func_start atkCC_callterrainattack
atkCC_callterrainattack: @ 802BE18
push {r4,lr}
ldr r2, _0802BE68 @ =gUnknown_2023DD0
ldr r0, [r2]
ldr r1, _0802BE6C @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, _0802BE70 @ =gCurrentMove
ldr r1, _0802BE74 @ =gUnknown_825081C
ldr r0, _0802BE78 @ =gUnknown_2022B50
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
strh r0, [r4]
ldrh r0, [r4]
movs r1, 0
bl GetMoveTarget
ldr r1, _0802BE7C @ =gBattlerTarget
strb r0, [r1]
ldr r3, _0802BE80 @ =gUnknown_81D65A8
ldr r2, _0802BE84 @ =gBattleMoves
ldrh r1, [r4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
bl BattleScriptPush
ldr r1, _0802BE88 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BE68: .4byte gUnknown_2023DD0
_0802BE6C: .4byte 0xfffffbff
_0802BE70: .4byte gCurrentMove
_0802BE74: .4byte gUnknown_825081C
_0802BE78: .4byte gUnknown_2022B50
_0802BE7C: .4byte gBattlerTarget
_0802BE80: .4byte gUnknown_81D65A8
_0802BE84: .4byte gBattleMoves
_0802BE88: .4byte gUnknown_2023D74
thumb_func_end atkCC_callterrainattack
thumb_func_start atkCD_cureifburnedparalysedorpoisoned
atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C
push {r4-r6,lr}
sub sp, 0x4
ldr r1, _0802BED8 @ =gBattleMons
ldr r3, _0802BEDC @ =sBattler_AI
ldrb r0, [r3]
movs r6, 0x58
muls r0, r6
adds r5, r1, 0
adds r5, 0x4C
adds r2, r0, r5
ldr r0, [r2]
movs r1, 0xD8
ands r0, r1
cmp r0, 0
beq _0802BEE8
movs r0, 0
str r0, [r2]
ldr r1, _0802BEE0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r4, _0802BEE4 @ =gActiveBattler
ldrb r0, [r3]
strb r0, [r4]
ldrb r0, [r4]
muls r0, r6
adds r0, r5
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r2, 0
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _0802BF02
.align 2, 0
_0802BED8: .4byte gBattleMons
_0802BEDC: .4byte sBattler_AI
_0802BEE0: .4byte gUnknown_2023D74
_0802BEE4: .4byte gActiveBattler
_0802BEE8:
ldr r3, _0802BF0C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802BF02:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802BF0C: .4byte gUnknown_2023D74
thumb_func_end atkCD_cureifburnedparalysedorpoisoned
thumb_func_start atkCE_settorment
atkCE_settorment: @ 802BF10
push {lr}
ldr r1, _0802BF48 @ =gBattleMons
ldr r0, _0802BF4C @ =gBattlerTarget
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r1, [r0]
movs r2, 0x80
lsls r2, 24
cmp r1, 0
bge _0802BF54
ldr r3, _0802BF50 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802BF60
.align 2, 0
_0802BF48: .4byte gBattleMons
_0802BF4C: .4byte gBattlerTarget
_0802BF50: .4byte gUnknown_2023D74
_0802BF54:
orrs r1, r2
str r1, [r0]
ldr r1, _0802BF64 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802BF60:
pop {r0}
bx r0
.align 2, 0
_0802BF64: .4byte gUnknown_2023D74
thumb_func_end atkCE_settorment
thumb_func_start atkCF_jumpifnodamage
atkCF_jumpifnodamage: @ 802BF68
push {lr}
ldr r2, _0802BF94 @ =gUnknown_2023E8C
ldr r0, _0802BF98 @ =sBattler_AI
ldrb r0, [r0]
lsls r1, r0, 4
adds r0, r2, 0x4
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
bne _0802BF88
adds r0, r2, 0
adds r0, 0x8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
beq _0802BFA0
_0802BF88:
ldr r1, _0802BF9C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802BFBA
.align 2, 0
_0802BF94: .4byte gUnknown_2023E8C
_0802BF98: .4byte sBattler_AI
_0802BF9C: .4byte gUnknown_2023D74
_0802BFA0:
ldr r3, _0802BFC0 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802BFBA:
pop {r0}
bx r0
.align 2, 0
_0802BFC0: .4byte gUnknown_2023D74
thumb_func_end atkCF_jumpifnodamage
thumb_func_start atkD0_settaunt
atkD0_settaunt: @ 802BFC4
push {r4,lr}
ldr r4, _0802C008 @ =gDisableStructs
ldr r3, _0802C00C @ =gBattlerTarget
ldrb r0, [r3]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r2, r1, r4
ldrb r1, [r2, 0x13]
lsls r0, r1, 28
cmp r0, 0
bne _0802C014
movs r0, 0x10
negs r0, r0
ands r0, r1
movs r1, 0x2
orrs r0, r1
strb r0, [r2, 0x13]
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r4
ldrb r2, [r0, 0x13]
movs r1, 0xF
ands r1, r2
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x13]
ldr r1, _0802C010 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C02E
.align 2, 0
_0802C008: .4byte gDisableStructs
_0802C00C: .4byte gBattlerTarget
_0802C010: .4byte gUnknown_2023D74
_0802C014:
ldr r3, _0802C034 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802C02E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C034: .4byte gUnknown_2023D74
thumb_func_end atkD0_settaunt
thumb_func_start atkD1_trysethelpinghand
atkD1_trysethelpinghand: @ 802C038
push {r4,lr}
ldr r4, _0802C0A0 @ =sBattler_AI
ldrb r0, [r4]
bl GetBattlerPosition
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
ldr r3, _0802C0A4 @ =gBattlerTarget
strb r0, [r3]
ldr r0, _0802C0A8 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0802C0BC
ldr r0, _0802C0AC @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _0802C0B0 @ =gBitTable
ldrb r3, [r3]
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802C0BC
ldr r1, _0802C0B4 @ =gUnknown_2023E8C
ldrb r0, [r4]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
blt _0802C0BC
lsls r0, r3, 4
adds r2, r0, r1
ldrb r1, [r2]
lsls r0, r1, 28
cmp r0, 0
blt _0802C0BC
movs r0, 0x8
orrs r0, r1
strb r0, [r2]
ldr r1, _0802C0B8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C0D6
.align 2, 0
_0802C0A0: .4byte sBattler_AI
_0802C0A4: .4byte gBattlerTarget
_0802C0A8: .4byte gBattleTypeFlags
_0802C0AC: .4byte gAbsentBattlerFlags
_0802C0B0: .4byte gBitTable
_0802C0B4: .4byte gUnknown_2023E8C
_0802C0B8: .4byte gUnknown_2023D74
_0802C0BC:
ldr r3, _0802C0DC @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802C0D6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C0DC: .4byte gUnknown_2023D74
thumb_func_end atkD1_trysethelpinghand
thumb_func_start sub_802C0E0
sub_802C0E0: @ 802C0E0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r4, _0802C1FC @ =gBattleTypeFlags
ldr r0, [r4]
movs r1, 0x80
lsls r1, 12
ands r0, r1
cmp r0, 0
bne _0802C1DE
ldr r0, _0802C200 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0802C120
ldr r0, [r4]
ldr r1, _0802C204 @ =0x00000902
ands r0, r1
cmp r0, 0
bne _0802C120
ldr r0, _0802C208 @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
cmp r1, r0
bne _0802C1DE
_0802C120:
ldr r6, _0802C200 @ =sBattler_AI
ldrb r0, [r6]
bl GetBattlerSide
lsls r0, 24
lsrs r4, r0, 24
ldr r7, _0802C20C @ =gBattlerTarget
ldrb r0, [r7]
bl GetBattlerSide
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _0802C1FC @ =gBattleTypeFlags
ldr r0, [r0]
ldr r1, _0802C204 @ =0x00000902
ands r0, r1
cmp r0, 0
bne _0802C18A
ldr r0, _0802C208 @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
cmp r1, r0
beq _0802C18A
ldr r0, _0802C210 @ =gUnknown_2023F20
adds r2, r0, 0
adds r2, 0x29
adds r0, r4, r2
ldrb r1, [r0]
ldr r4, _0802C214 @ =gBitTable
ldr r3, _0802C218 @ =gBattlerPartyIndexes
ldrb r0, [r6]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 2
adds r0, r4
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802C1DE
adds r0, r5, r2
ldrb r1, [r0]
ldrb r0, [r7]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 2
adds r0, r4
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802C1DE
_0802C18A:
ldr r0, _0802C21C @ =gBattleMons
mov r8, r0
ldr r1, _0802C200 @ =sBattler_AI
ldrb r4, [r1]
movs r5, 0x58
adds r0, r4, 0
muls r0, r5
add r0, r8
mov r9, r0
ldrh r3, [r0, 0x2E]
adds r1, r3, 0
cmp r1, 0
bne _0802C1B2
ldr r0, _0802C20C @ =gBattlerTarget
ldrb r0, [r0]
muls r0, r5
add r0, r8
ldrh r0, [r0, 0x2E]
cmp r0, 0
beq _0802C1DE
_0802C1B2:
cmp r1, 0xAF
beq _0802C1DE
ldr r7, _0802C20C @ =gBattlerTarget
ldrb r0, [r7]
muls r0, r5
mov r2, r8
adds r1, r0, r2
ldrh r2, [r1, 0x2E]
cmp r2, 0xAF
beq _0802C1DE
adds r0, r3, 0
subs r0, 0x79
lsls r0, 16
lsrs r0, 16
cmp r0, 0xB
bls _0802C1DE
adds r0, r2, 0
subs r0, 0x79
lsls r0, 16
lsrs r0, 16
cmp r0, 0xB
bhi _0802C224
_0802C1DE:
ldr r3, _0802C220 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C37A
.align 2, 0
_0802C1FC: .4byte gBattleTypeFlags
_0802C200: .4byte sBattler_AI
_0802C204: .4byte 0x00000902
_0802C208: .4byte gTrainerBattleOpponent_A
_0802C20C: .4byte gBattlerTarget
_0802C210: .4byte gUnknown_2023F20
_0802C214: .4byte gBitTable
_0802C218: .4byte gBattlerPartyIndexes
_0802C21C: .4byte gBattleMons
_0802C220: .4byte gUnknown_2023D74
_0802C224:
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x3C
bne _0802C258
ldr r1, _0802C24C @ =gUnknown_2023D74
ldr r0, _0802C250 @ =gUnknown_81D948E
str r0, [r1]
ldr r1, _0802C254 @ =gLastUsedAbility
ldrb r0, [r7]
muls r0, r5
add r0, r8
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldrb r0, [r7]
ldrb r1, [r1]
bl sub_80C71D0
b _0802C37A
.align 2, 0
_0802C24C: .4byte gUnknown_2023D74
_0802C250: .4byte gUnknown_81D948E
_0802C254: .4byte gLastUsedAbility
_0802C258:
ldr r3, _0802C344 @ =gBattleStruct
mov r10, r3
lsls r0, r4, 1
adds r0, 0xD0
ldr r1, [r3]
adds r6, r1, r0
mov r0, r9
ldrh r0, [r0, 0x2E]
mov r9, r0
strh r2, [r6]
ldr r1, _0802C348 @ =sBattler_AI
ldrb r0, [r1]
muls r0, r5
add r0, r8
movs r1, 0
strh r1, [r0, 0x2E]
ldrb r0, [r7]
muls r0, r5
add r0, r8
mov r2, r9
strh r2, [r0, 0x2E]
ldr r4, _0802C34C @ =gActiveBattler
ldr r3, _0802C348 @ =sBattler_AI
ldrb r0, [r3]
strb r0, [r4]
str r6, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldr r1, _0802C348 @ =sBattler_AI
ldrb r0, [r1]
bl MarkBufferBankForExecution
ldrb r0, [r7]
strb r0, [r4]
ldrb r0, [r7]
muls r0, r5
mov r1, r8
adds r1, 0x2E
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldrb r0, [r7]
bl MarkBufferBankForExecution
ldrb r0, [r7]
mov r2, r10
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
movs r3, 0
strb r3, [r0]
ldrb r0, [r7]
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC9
strb r3, [r0]
ldr r1, _0802C348 @ =sBattler_AI
ldrb r0, [r1]
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
strb r3, [r0]
ldr r2, _0802C348 @ =sBattler_AI
ldrb r0, [r2]
mov r3, r10
ldr r1, [r3]
lsls r0, 1
adds r0, r1
adds r0, 0xC9
movs r1, 0
strb r1, [r0]
ldr r1, _0802C350 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r1, _0802C354 @ =gBattleTextBuff1
movs r3, 0xFD
strb r3, [r1]
movs r2, 0xA
strb r2, [r1, 0x1]
ldrh r0, [r6]
strb r0, [r1, 0x2]
ldrh r0, [r6]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _0802C358 @ =gBattleTextBuff2
strb r3, [r1]
strb r2, [r1, 0x1]
mov r2, r9
strb r2, [r1, 0x2]
mov r3, r9
lsrs r0, r3, 8
strb r0, [r1, 0x3]
movs r0, 0x1
negs r0, r0
strb r0, [r1, 0x4]
cmp r3, 0
beq _0802C360
ldrh r0, [r6]
cmp r0, 0
beq _0802C374
ldr r1, _0802C35C @ =gUnknown_2023E82
movs r0, 0x2
b _0802C378
.align 2, 0
_0802C344: .4byte gBattleStruct
_0802C348: .4byte sBattler_AI
_0802C34C: .4byte gActiveBattler
_0802C350: .4byte gUnknown_2023D74
_0802C354: .4byte gBattleTextBuff1
_0802C358: .4byte gBattleTextBuff2
_0802C35C: .4byte gUnknown_2023E82
_0802C360:
ldrh r0, [r6]
cmp r0, 0
beq _0802C374
ldr r0, _0802C370 @ =gUnknown_2023E82
movs r1, 0
strb r1, [r0, 0x5]
b _0802C37A
.align 2, 0
_0802C370: .4byte gUnknown_2023E82
_0802C374:
ldr r1, _0802C38C @ =gUnknown_2023E82
movs r0, 0x1
_0802C378:
strb r0, [r1, 0x5]
_0802C37A:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802C38C: .4byte gUnknown_2023E82
thumb_func_end sub_802C0E0
thumb_func_start atkD3_trycopyability
atkD3_trycopyability: @ 802C390
push {r4,lr}
ldr r3, _0802C3D0 @ =gBattleMons
ldr r4, _0802C3D4 @ =gBattlerTarget
ldrb r0, [r4]
movs r2, 0x58
muls r0, r2
adds r0, r3
adds r0, 0x20
ldrb r1, [r0]
adds r0, r1, 0
cmp r0, 0
beq _0802C3E4
cmp r0, 0x19
beq _0802C3E4
ldr r0, _0802C3D8 @ =sBattler_AI
ldrb r0, [r0]
muls r0, r2
adds r0, r3
adds r0, 0x20
strb r1, [r0]
ldr r1, _0802C3DC @ =gLastUsedAbility
ldrb r0, [r4]
muls r0, r2
adds r0, r3
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldr r1, _0802C3E0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C3FE
.align 2, 0
_0802C3D0: .4byte gBattleMons
_0802C3D4: .4byte gBattlerTarget
_0802C3D8: .4byte sBattler_AI
_0802C3DC: .4byte gLastUsedAbility
_0802C3E0: .4byte gUnknown_2023D74
_0802C3E4:
ldr r3, _0802C404 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802C3FE:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C404: .4byte gUnknown_2023D74
thumb_func_end atkD3_trycopyability
thumb_func_start atkD4_trywish
atkD4_trywish: @ 802C408
push {r4-r7,lr}
ldr r7, _0802C41C @ =gUnknown_2023D74
ldr r2, [r7]
ldrb r3, [r2, 0x1]
cmp r3, 0
beq _0802C420
cmp r3, 0x1
beq _0802C458
b _0802C4D4
.align 2, 0
_0802C41C: .4byte gUnknown_2023D74
_0802C420:
ldr r1, _0802C44C @ =gUnknown_2023F20
ldr r4, _0802C450 @ =sBattler_AI
adds r0, r1, 0
adds r0, 0x20
ldrb r5, [r4]
adds r3, r0, r5
ldrb r0, [r3]
cmp r0, 0
bne _0802C4A4
movs r0, 0x2
strb r0, [r3]
ldrb r0, [r4]
adds r1, 0x24
adds r1, r0, r1
ldr r2, _0802C454 @ =gBattlerPartyIndexes
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strb r0, [r1]
ldr r0, [r7]
adds r0, 0x6
b _0802C4D2
.align 2, 0
_0802C44C: .4byte gUnknown_2023F20
_0802C450: .4byte sBattler_AI
_0802C454: .4byte gBattlerPartyIndexes
_0802C458:
ldr r1, _0802C4BC @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r4, _0802C4C0 @ =gBattlerTarget
ldrb r0, [r4]
strb r0, [r1, 0x2]
ldr r0, _0802C4C4 @ =gUnknown_2023F20
adds r0, 0x24
ldrb r5, [r4]
adds r0, r5
ldrb r0, [r0]
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _0802C4C8 @ =gBattleMoveDamage
ldr r6, _0802C4CC @ =gBattleMons
ldrb r0, [r4]
movs r5, 0x58
muls r0, r5
adds r0, r6
ldrh r0, [r0, 0x2C]
lsrs r0, 1
str r0, [r1]
cmp r0, 0
bne _0802C490
str r3, [r1]
_0802C490:
ldr r0, [r1]
negs r0, r0
str r0, [r1]
ldrb r0, [r4]
muls r0, r5
adds r0, r6
ldrh r1, [r0, 0x28]
ldrh r0, [r0, 0x2C]
cmp r1, r0
bne _0802C4D0
_0802C4A4:
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
str r1, [r7]
b _0802C4D4
.align 2, 0
_0802C4BC: .4byte gBattleTextBuff1
_0802C4C0: .4byte gBattlerTarget
_0802C4C4: .4byte gUnknown_2023F20
_0802C4C8: .4byte gBattleMoveDamage
_0802C4CC: .4byte gBattleMons
_0802C4D0:
adds r0, r2, 0x6
_0802C4D2:
str r0, [r7]
_0802C4D4:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atkD4_trywish
thumb_func_start atkD5_trysetroots
atkD5_trysetroots: @ 802C4DC
push {lr}
ldr r1, _0802C514 @ =gStatuses3
ldr r0, _0802C518 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
ldr r1, [r2]
movs r3, 0x80
lsls r3, 3
adds r0, r1, 0
ands r0, r3
cmp r0, 0
beq _0802C520
ldr r3, _0802C51C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C52C
.align 2, 0
_0802C514: .4byte gStatuses3
_0802C518: .4byte sBattler_AI
_0802C51C: .4byte gUnknown_2023D74
_0802C520:
orrs r1, r3
str r1, [r2]
ldr r1, _0802C530 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C52C:
pop {r0}
bx r0
.align 2, 0
_0802C530: .4byte gUnknown_2023D74
thumb_func_end atkD5_trysetroots
thumb_func_start atkD6_doubledamagedealtifdamaged
atkD6_doubledamagedealtifdamaged: @ 802C534
push {lr}
ldr r3, _0802C580 @ =gUnknown_2023E8C
ldr r0, _0802C584 @ =sBattler_AI
ldrb r0, [r0]
lsls r2, r0, 4
adds r0, r3, 0x4
adds r0, r2, r0
ldr r0, [r0]
cmp r0, 0
beq _0802C554
adds r0, r2, r3
ldr r1, _0802C588 @ =gBattlerTarget
ldrb r0, [r0, 0xC]
ldrb r1, [r1]
cmp r0, r1
beq _0802C56C
_0802C554:
adds r0, r3, 0
adds r0, 0x8
adds r0, r2, r0
ldr r0, [r0]
cmp r0, 0
beq _0802C572
adds r0, r2, r3
ldr r1, _0802C588 @ =gBattlerTarget
ldrb r0, [r0, 0xD]
ldrb r1, [r1]
cmp r0, r1
bne _0802C572
_0802C56C:
ldr r1, _0802C58C @ =gBattleScripting
movs r0, 0x2
strb r0, [r1, 0xE]
_0802C572:
ldr r1, _0802C590 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802C580: .4byte gUnknown_2023E8C
_0802C584: .4byte sBattler_AI
_0802C588: .4byte gBattlerTarget
_0802C58C: .4byte gBattleScripting
_0802C590: .4byte gUnknown_2023D74
thumb_func_end atkD6_doubledamagedealtifdamaged
thumb_func_start atkD7_setyawn
atkD7_setyawn: @ 802C594
push {r4,lr}
ldr r1, _0802C5D8 @ =gStatuses3
ldr r0, _0802C5DC @ =gBattlerTarget
ldrb r3, [r0]
lsls r0, r3, 2
adds r4, r0, r1
ldr r2, [r4]
movs r0, 0xC0
lsls r0, 5
ands r0, r2
cmp r0, 0
bne _0802C5BC
ldr r1, _0802C5E0 @ =gBattleMons
movs r0, 0x58
muls r0, r3
adds r1, 0x4C
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _0802C5E8
_0802C5BC:
ldr r3, _0802C5E4 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C5F8
.align 2, 0
_0802C5D8: .4byte gStatuses3
_0802C5DC: .4byte gBattlerTarget
_0802C5E0: .4byte gBattleMons
_0802C5E4: .4byte gUnknown_2023D74
_0802C5E8:
movs r0, 0x80
lsls r0, 5
orrs r2, r0
str r2, [r4]
ldr r1, _0802C600 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C5F8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C600: .4byte gUnknown_2023D74
thumb_func_end atkD7_setyawn
thumb_func_start atkD8_setdamagetohealthdifference
atkD8_setdamagetohealthdifference: @ 802C604
push {lr}
ldr r2, _0802C640 @ =gBattleMons
ldr r0, _0802C644 @ =gBattlerTarget
ldrb r0, [r0]
movs r1, 0x58
muls r0, r1
adds r3, r0, r2
ldr r0, _0802C648 @ =sBattler_AI
ldrb r0, [r0]
muls r0, r1
adds r1, r0, r2
ldrh r0, [r3, 0x28]
ldrh r2, [r1, 0x28]
cmp r0, r2
bhi _0802C650
ldr r3, _0802C64C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C662
.align 2, 0
_0802C640: .4byte gBattleMons
_0802C644: .4byte gBattlerTarget
_0802C648: .4byte sBattler_AI
_0802C64C: .4byte gUnknown_2023D74
_0802C650:
ldr r2, _0802C668 @ =gBattleMoveDamage
ldrh r0, [r3, 0x28]
ldrh r1, [r1, 0x28]
subs r0, r1
str r0, [r2]
ldr r1, _0802C66C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C662:
pop {r0}
bx r0
.align 2, 0
_0802C668: .4byte gBattleMoveDamage
_0802C66C: .4byte gUnknown_2023D74
thumb_func_end atkD8_setdamagetohealthdifference
thumb_func_start atkD9_scaledamagebyhealthratio
atkD9_scaledamagebyhealthratio: @ 802C670
push {r4,lr}
ldr r4, _0802C6BC @ =gDynamicBasePower
ldrh r0, [r4]
cmp r0, 0
bne _0802C6AC
ldr r2, _0802C6C0 @ =gBattleMoves
ldr r0, _0802C6C4 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r3, [r0, 0x1]
ldr r2, _0802C6C8 @ =gBattleMons
ldr r0, _0802C6CC @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
ldrh r0, [r1, 0x28]
muls r0, r3
ldrh r1, [r1, 0x2C]
bl __divsi3
strh r0, [r4]
lsls r0, 16
cmp r0, 0
bne _0802C6AC
movs r0, 0x1
strh r0, [r4]
_0802C6AC:
ldr r1, _0802C6D0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C6BC: .4byte gDynamicBasePower
_0802C6C0: .4byte gBattleMoves
_0802C6C4: .4byte gCurrentMove
_0802C6C8: .4byte gBattleMons
_0802C6CC: .4byte sBattler_AI
_0802C6D0: .4byte gUnknown_2023D74
thumb_func_end atkD9_scaledamagebyhealthratio
thumb_func_start atkDA_tryswapabilities
atkDA_tryswapabilities: @ 802C6D4
push {r4-r6,lr}
ldr r5, _0802C738 @ =gBattleMons
ldr r0, _0802C73C @ =sBattler_AI
ldrb r0, [r0]
movs r4, 0x58
muls r0, r4
adds r0, r5
adds r2, r0, 0
adds r2, 0x20
ldrb r1, [r2]
cmp r1, 0
bne _0802C6FC
ldr r0, _0802C740 @ =gBattlerTarget
ldrb r0, [r0]
muls r0, r4
adds r0, r5
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0
beq _0802C71C
_0802C6FC:
cmp r1, 0x19
beq _0802C71C
ldr r6, _0802C740 @ =gBattlerTarget
ldrb r0, [r6]
muls r0, r4
adds r0, r5
adds r0, 0x20
ldrb r3, [r0]
cmp r3, 0x19
beq _0802C71C
ldr r0, _0802C744 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _0802C74C
_0802C71C:
ldr r3, _0802C748 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C762
.align 2, 0
_0802C738: .4byte gBattleMons
_0802C73C: .4byte sBattler_AI
_0802C740: .4byte gBattlerTarget
_0802C744: .4byte gMoveResultFlags
_0802C748: .4byte gUnknown_2023D74
_0802C74C:
ldrb r1, [r2]
strb r3, [r2]
ldrb r0, [r6]
muls r0, r4
adds r0, r5
adds r0, 0x20
strb r1, [r0]
ldr r1, _0802C768 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C762:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802C768: .4byte gUnknown_2023D74
thumb_func_end atkDA_tryswapabilities
thumb_func_start atkDB_tryimprision
atkDB_tryimprision: @ 802C76C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r1, _0802C78C @ =gStatuses3
ldr r4, _0802C790 @ =sBattler_AI
ldrb r2, [r4]
lsls r0, r2, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 6
ands r0, r1
cmp r0, 0
beq _0802C7BC
b _0802C83E
.align 2, 0
_0802C78C: .4byte gStatuses3
_0802C790: .4byte sBattler_AI
_0802C794:
ldr r0, _0802C7B4 @ =gStatuses3
mov r2, r9
ldrb r1, [r2]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
movs r2, 0x80
lsls r2, 6
orrs r0, r2
str r0, [r1]
ldr r1, _0802C7B8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C836
.align 2, 0
_0802C7B4: .4byte gStatuses3
_0802C7B8: .4byte gUnknown_2023D74
_0802C7BC:
adds r0, r2, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrb r0, [r4]
bl PressurePPLoseOnUsingImprision
movs r6, 0
b _0802C82E
_0802C7D2:
adds r0, r6, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r8, r0
beq _0802C828
movs r4, 0
ldr r7, _0802C864 @ =sBattler_AI
mov r9, r7
ldr r0, _0802C868 @ =gBattleMons
mov r12, r0
mov r1, r9
ldrb r0, [r1]
mov r2, r12
adds r2, 0xC
movs r1, 0x58
muls r0, r1
adds r3, r0, r2
adds r5, r6, 0
muls r5, r1
_0802C7FC:
movs r2, 0
ldrh r1, [r3]
mov r0, r12
adds r0, 0xC
adds r0, r5, r0
_0802C806:
ldrh r7, [r0]
cmp r1, r7
bne _0802C810
cmp r1, 0
bne _0802C818
_0802C810:
adds r0, 0x2
adds r2, 0x1
cmp r2, 0x3
ble _0802C806
_0802C818:
cmp r2, 0x4
bne _0802C824
adds r3, 0x2
adds r4, 0x1
cmp r4, 0x3
ble _0802C7FC
_0802C824:
cmp r4, 0x4
bne _0802C794
_0802C828:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_0802C82E:
ldr r0, _0802C86C @ =gBattlersCount
ldrb r0, [r0]
cmp r6, r0
bcc _0802C7D2
_0802C836:
ldr r0, _0802C86C @ =gBattlersCount
ldrb r0, [r0]
cmp r6, r0
bne _0802C858
_0802C83E:
ldr r3, _0802C870 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802C858:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802C864: .4byte sBattler_AI
_0802C868: .4byte gBattleMons
_0802C86C: .4byte gBattlersCount
_0802C870: .4byte gUnknown_2023D74
thumb_func_end atkDB_tryimprision
thumb_func_start atkDC_trysetgrudge
atkDC_trysetgrudge: @ 802C874
push {lr}
ldr r1, _0802C8AC @ =gStatuses3
ldr r0, _0802C8B0 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
ldr r1, [r2]
movs r3, 0x80
lsls r3, 7
adds r0, r1, 0
ands r0, r3
cmp r0, 0
beq _0802C8B8
ldr r3, _0802C8B4 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C8C4
.align 2, 0
_0802C8AC: .4byte gStatuses3
_0802C8B0: .4byte sBattler_AI
_0802C8B4: .4byte gUnknown_2023D74
_0802C8B8:
orrs r1, r3
str r1, [r2]
ldr r1, _0802C8C8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C8C4:
pop {r0}
bx r0
.align 2, 0
_0802C8C8: .4byte gUnknown_2023D74
thumb_func_end atkDC_trysetgrudge
thumb_func_start atkDD_weightdamagecalculation
atkDD_weightdamagecalculation: @ 802C8CC
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r5, 0
ldr r2, _0802C930 @ =gUnknown_8250830
ldrh r0, [r2]
ldr r1, _0802C934 @ =0x0000ffff
cmp r0, r1
beq _0802C944
adds r6, r2, 0
ldr r0, _0802C938 @ =gBattleMons
mov r8, r0
adds r7, r1, 0
adds r4, r6, 0
_0802C8E8:
ldr r0, _0802C93C @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
add r0, r8
ldrh r0, [r0]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetPokedexHeightWeight
ldrh r1, [r4]
lsls r0, 16
lsrs r0, 16
cmp r1, r0
bhi _0802C916
adds r4, 0x4
adds r5, 0x2
ldrh r0, [r4]
cmp r0, r7
bne _0802C8E8
_0802C916:
lsls r0, r5, 1
adds r0, r6
ldrh r1, [r0]
ldr r0, _0802C934 @ =0x0000ffff
cmp r1, r0
beq _0802C944
ldr r0, _0802C940 @ =gDynamicBasePower
adds r1, r5, 0x1
lsls r1, 1
adds r1, r6
ldrh r1, [r1]
strh r1, [r0]
b _0802C94A
.align 2, 0
_0802C930: .4byte gUnknown_8250830
_0802C934: .4byte 0x0000ffff
_0802C938: .4byte gBattleMons
_0802C93C: .4byte gBattlerTarget
_0802C940: .4byte gDynamicBasePower
_0802C944:
ldr r1, _0802C95C @ =gDynamicBasePower
movs r0, 0x78
strh r0, [r1]
_0802C94A:
ldr r1, _0802C960 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802C95C: .4byte gDynamicBasePower
_0802C960: .4byte gUnknown_2023D74
thumb_func_end atkDD_weightdamagecalculation
thumb_func_start atkDE_asistattackselect
atkDE_asistattackselect: @ 802C964
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
movs r0, 0
mov r10, r0
ldr r0, _0802CA84 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x18
str r0, [sp, 0x4]
ldr r0, _0802CA88 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerPosition
movs r1, 0x1
ands r1, r0
ldr r0, _0802CA8C @ =gPlayerParty
str r0, [sp]
cmp r1, 0
beq _0802C994
ldr r1, _0802CA90 @ =gEnemyParty
str r1, [sp]
_0802C994:
movs r2, 0
_0802C996:
ldr r1, _0802CA94 @ =gBattlerPartyIndexes
ldr r0, _0802CA88 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
adds r1, r2, 0x1
str r1, [sp, 0x8]
ldrh r0, [r0]
cmp r2, r0
beq _0802CA3C
movs r0, 0x64
adds r6, r2, 0
muls r6, r0
ldr r0, [sp]
adds r4, r0, r6
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
cmp r0, 0
beq _0802CA3C
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
movs r1, 0xCE
lsls r1, 1
cmp r0, r1
beq _0802CA3C
movs r5, 0
ldr r1, _0802CA98 @ =0x0000ffff
mov r8, r1
mov r9, r6
mov r1, r10
lsls r0, r1, 1
ldr r1, [sp, 0x4]
adds r6, r0, r1
_0802C9E0:
movs r7, 0
adds r1, r5, 0
adds r1, 0xD
ldr r0, [sp]
add r0, r9
bl GetMonData
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
bl IsInvalidForSleepTalkOrAssist
lsls r0, 24
adds r1, r5, 0x1
cmp r0, 0
bne _0802CA36
ldr r0, _0802CA9C @ =gUnknown_82507E8
ldrh r2, [r0]
adds r3, r0, 0
cmp r2, r8
beq _0802CA2A
cmp r4, r2
beq _0802CA20
ldr r5, _0802CA98 @ =0x0000ffff
adds r2, r3, 0
_0802CA12:
adds r2, 0x2
adds r7, 0x1
ldrh r0, [r2]
cmp r0, r5
beq _0802CA2A
cmp r4, r0
bne _0802CA12
_0802CA20:
lsls r0, r7, 1
adds r0, r3
ldrh r0, [r0]
cmp r0, r8
bne _0802CA36
_0802CA2A:
cmp r4, 0
beq _0802CA36
strh r4, [r6]
adds r6, 0x2
movs r0, 0x1
add r10, r0
_0802CA36:
adds r5, r1, 0
cmp r5, 0x3
ble _0802C9E0
_0802CA3C:
ldr r2, [sp, 0x8]
cmp r2, 0x5
ble _0802C996
mov r1, r10
cmp r1, 0
beq _0802CAB4
ldr r2, _0802CAA0 @ =gUnknown_2023DD0
ldr r0, [r2]
ldr r1, _0802CAA4 @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, _0802CAA8 @ =gUnknown_2023D4E
bl Random
movs r1, 0xFF
ands r1, r0
mov r0, r10
muls r0, r1
asrs r0, 8
lsls r0, 1
ldr r1, [sp, 0x4]
adds r0, r1
ldrh r0, [r0]
strh r0, [r4]
ldrh r0, [r4]
movs r1, 0
bl GetMoveTarget
ldr r1, _0802CAAC @ =gBattlerTarget
strb r0, [r1]
ldr r1, _0802CAB0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802CACE
.align 2, 0
_0802CA84: .4byte gBattleStruct
_0802CA88: .4byte sBattler_AI
_0802CA8C: .4byte gPlayerParty
_0802CA90: .4byte gEnemyParty
_0802CA94: .4byte gBattlerPartyIndexes
_0802CA98: .4byte 0x0000ffff
_0802CA9C: .4byte gUnknown_82507E8
_0802CAA0: .4byte gUnknown_2023DD0
_0802CAA4: .4byte 0xfffffbff
_0802CAA8: .4byte gUnknown_2023D4E
_0802CAAC: .4byte gBattlerTarget
_0802CAB0: .4byte gUnknown_2023D74
_0802CAB4:
ldr r3, _0802CAE0 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802CACE:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802CAE0: .4byte gUnknown_2023D74
thumb_func_end atkDE_asistattackselect
thumb_func_start atkDF_trysetmagiccoat
atkDF_trysetmagiccoat: @ 802CAE4
push {lr}
ldr r1, _0802CB2C @ =gBattlerTarget
ldr r3, _0802CB30 @ =sBattler_AI
ldrb r0, [r3]
strb r0, [r1]
ldr r2, _0802CB34 @ =gUnknown_2023ECC
ldrb r1, [r3]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x20
orrs r1, r2
strb r1, [r0]
ldr r0, _0802CB38 @ =gUnknown_2023BE2
ldrb r1, [r0]
ldr r0, _0802CB3C @ =gBattlersCount
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _0802CB44
ldr r3, _0802CB40 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802CB5C
.align 2, 0
_0802CB2C: .4byte gBattlerTarget
_0802CB30: .4byte sBattler_AI
_0802CB34: .4byte gUnknown_2023ECC
_0802CB38: .4byte gUnknown_2023BE2
_0802CB3C: .4byte gBattlersCount
_0802CB40: .4byte gUnknown_2023D74
_0802CB44:
ldr r0, _0802CB60 @ =gUnknown_2023E8C
ldrb r1, [r3]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
movs r2, 0x10
orrs r0, r2
strb r0, [r1]
ldr r1, _0802CB64 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CB5C:
pop {r0}
bx r0
.align 2, 0
_0802CB60: .4byte gUnknown_2023E8C
_0802CB64: .4byte gUnknown_2023D74
thumb_func_end atkDF_trysetmagiccoat
thumb_func_start atkE0_trysetsnatch
atkE0_trysetsnatch: @ 802CB68
push {lr}
ldr r2, _0802CBAC @ =gUnknown_2023ECC
ldr r3, _0802CBB0 @ =sBattler_AI
ldrb r1, [r3]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x20
orrs r1, r2
strb r1, [r0]
ldr r0, _0802CBB4 @ =gUnknown_2023BE2
ldrb r1, [r0]
ldr r0, _0802CBB8 @ =gBattlersCount
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _0802CBC0
ldr r3, _0802CBBC @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802CBD6
.align 2, 0
_0802CBAC: .4byte gUnknown_2023ECC
_0802CBB0: .4byte sBattler_AI
_0802CBB4: .4byte gUnknown_2023BE2
_0802CBB8: .4byte gBattlersCount
_0802CBBC: .4byte gUnknown_2023D74
_0802CBC0:
ldr r0, _0802CBDC @ =gUnknown_2023E8C
ldrb r1, [r3]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
ldr r1, _0802CBE0 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CBD6:
pop {r0}
bx r0
.align 2, 0
_0802CBDC: .4byte gUnknown_2023E8C
_0802CBE0: .4byte gUnknown_2023D74
thumb_func_end atkE0_trysetsnatch
thumb_func_start atkE1_trygetintimidatetarget
atkE1_trygetintimidatetarget: @ 802CBE4
push {r4-r6,lr}
ldr r4, _0802CC88 @ =gBattleScripting
ldr r0, _0802CC8C @ =gBattleStruct
ldr r0, [r0]
adds r0, 0xD8
ldrb r0, [r0]
strb r0, [r4, 0x17]
ldrb r0, [r4, 0x17]
bl GetBattlerSide
lsls r0, 24
lsrs r5, r0, 24
ldr r2, _0802CC90 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r2]
movs r0, 0x9
strb r0, [r2, 0x1]
ldr r3, _0802CC94 @ =gBattleMons
ldrb r1, [r4, 0x17]
movs r0, 0x58
muls r0, r1
adds r0, r3
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r2, 0x2]
movs r0, 0xFF
strb r0, [r2, 0x3]
ldr r2, _0802CC98 @ =gBattlerTarget
ldr r1, _0802CC9C @ =gBattlersCount
ldrb r0, [r2]
ldrb r1, [r1]
cmp r0, r1
bcs _0802CC6A
adds r4, r2, 0
ldr r6, _0802CCA0 @ =gBitTable
_0802CC2A:
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, r5
beq _0802CC4C
ldr r0, _0802CCA4 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
ands r1, r0
ldr r2, _0802CC9C @ =gBattlersCount
cmp r1, 0
beq _0802CC60
_0802CC4C:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
ldr r1, _0802CC9C @ =gBattlersCount
lsls r0, 24
lsrs r0, 24
adds r2, r1, 0
ldrb r1, [r2]
cmp r0, r1
bcc _0802CC2A
_0802CC60:
ldr r0, _0802CC98 @ =gBattlerTarget
ldrb r0, [r0]
ldrb r2, [r2]
cmp r0, r2
bcc _0802CCAC
_0802CC6A:
ldr r3, _0802CCA8 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802CCB4
.align 2, 0
_0802CC88: .4byte gBattleScripting
_0802CC8C: .4byte gBattleStruct
_0802CC90: .4byte gBattleTextBuff1
_0802CC94: .4byte gBattleMons
_0802CC98: .4byte gBattlerTarget
_0802CC9C: .4byte gBattlersCount
_0802CCA0: .4byte gBitTable
_0802CCA4: .4byte gAbsentBattlerFlags
_0802CCA8: .4byte gUnknown_2023D74
_0802CCAC:
ldr r1, _0802CCBC @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CCB4:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802CCBC: .4byte gUnknown_2023D74
thumb_func_end atkE1_trygetintimidatetarget
thumb_func_start atkE2_switchoutabilities
atkE2_switchoutabilities: @ 802CCC0
push {r4-r6,lr}
sub sp, 0x4
ldr r5, _0802CD28 @ =gUnknown_2023D74
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r4, _0802CD2C @ =gActiveBattler
strb r0, [r4]
ldr r3, _0802CD30 @ =gBattleMons
ldrb r0, [r4]
movs r6, 0x58
adds r1, r0, 0
muls r1, r6
adds r0, r1, r3
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x1E
bne _0802CD1A
adds r3, 0x4C
adds r1, r3
movs r0, 0
str r0, [r1]
ldr r2, _0802CD34 @ =gBitTable
ldrb r1, [r4]
ldr r0, _0802CD38 @ =gBattleStruct
ldr r0, [r0]
adds r0, r1, r0
adds r0, 0x58
ldrb r0, [r0]
lsls r0, 2
adds r0, r2
ldrb r2, [r0]
adds r0, r1, 0
muls r0, r6
adds r0, r3
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
_0802CD1A:
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802CD28: .4byte gUnknown_2023D74
_0802CD2C: .4byte gActiveBattler
_0802CD30: .4byte gBattleMons
_0802CD34: .4byte gBitTable
_0802CD38: .4byte gBattleStruct
thumb_func_end atkE2_switchoutabilities
thumb_func_start atkE3_jumpifhasnohp
atkE3_jumpifhasnohp: @ 802CD3C
push {r4,lr}
ldr r4, _0802CD78 @ =gUnknown_2023D74
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8016E24
ldr r1, _0802CD7C @ =gActiveBattler
strb r0, [r1]
ldr r2, _0802CD80 @ =gBattleMons
ldrb r1, [r1]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _0802CD84
ldr r2, [r4]
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
str r1, [r4]
b _0802CD8A
.align 2, 0
_0802CD78: .4byte gUnknown_2023D74
_0802CD7C: .4byte gActiveBattler
_0802CD80: .4byte gBattleMons
_0802CD84:
ldr r0, [r4]
adds r0, 0x6
str r0, [r4]
_0802CD8A:
pop {r4}
pop {r0}
bx r0
thumb_func_end atkE3_jumpifhasnohp
thumb_func_start atkE4_getsecretpowereffect
atkE4_getsecretpowereffect: @ 802CD90
push {lr}
ldr r0, _0802CDA4 @ =gUnknown_2022B50
ldrb r0, [r0]
cmp r0, 0x7
bhi _0802CE2C
lsls r0, 2
ldr r1, _0802CDA8 @ =_0802CDAC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802CDA4: .4byte gUnknown_2022B50
_0802CDA8: .4byte _0802CDAC
.align 2, 0
_0802CDAC:
.4byte _0802CDCC
.4byte _0802CDD8
.4byte _0802CDE4
.4byte _0802CDF0
.4byte _0802CDFC
.4byte _0802CE08
.4byte _0802CE14
.4byte _0802CE20
_0802CDCC:
ldr r1, _0802CDD4 @ =gUnknown_2023E82
movs r0, 0x2
b _0802CE30
.align 2, 0
_0802CDD4: .4byte gUnknown_2023E82
_0802CDD8:
ldr r1, _0802CDE0 @ =gUnknown_2023E82
movs r0, 0x1
b _0802CE30
.align 2, 0
_0802CDE0: .4byte gUnknown_2023E82
_0802CDE4:
ldr r1, _0802CDEC @ =gUnknown_2023E82
movs r0, 0x1B
b _0802CE30
.align 2, 0
_0802CDEC: .4byte gUnknown_2023E82
_0802CDF0:
ldr r1, _0802CDF8 @ =gUnknown_2023E82
movs r0, 0x17
b _0802CE30
.align 2, 0
_0802CDF8: .4byte gUnknown_2023E82
_0802CDFC:
ldr r1, _0802CE04 @ =gUnknown_2023E82
movs r0, 0x16
b _0802CE30
.align 2, 0
_0802CE04: .4byte gUnknown_2023E82
_0802CE08:
ldr r1, _0802CE10 @ =gUnknown_2023E82
movs r0, 0x18
b _0802CE30
.align 2, 0
_0802CE10: .4byte gUnknown_2023E82
_0802CE14:
ldr r1, _0802CE1C @ =gUnknown_2023E82
movs r0, 0x7
b _0802CE30
.align 2, 0
_0802CE1C: .4byte gUnknown_2023E82
_0802CE20:
ldr r1, _0802CE28 @ =gUnknown_2023E82
movs r0, 0x8
b _0802CE30
.align 2, 0
_0802CE28: .4byte gUnknown_2023E82
_0802CE2C:
ldr r1, _0802CE40 @ =gUnknown_2023E82
movs r0, 0x5
_0802CE30:
strb r0, [r1, 0x3]
ldr r1, _0802CE44 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802CE40: .4byte gUnknown_2023E82
_0802CE44: .4byte gUnknown_2023D74
thumb_func_end atkE4_getsecretpowereffect
thumb_func_start sub_802CE48
sub_802CE48: @ 802CE48
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r7, 0
ldr r0, _0802CE90 @ =gBaseStats
mov r8, r0
_0802CE54:
movs r0, 0x64
adds r4, r7, 0
muls r4, r0
ldr r0, _0802CE94 @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0xC
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
adds r0, r4, 0
movs r1, 0x2E
bl GetMonData
cmp r0, 0
beq _0802CE98
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
add r0, r8
ldrb r0, [r0, 0x17]
b _0802CEA2
.align 2, 0
_0802CE90: .4byte gBaseStats
_0802CE94: .4byte gPlayerParty
_0802CE98:
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
add r0, r8
ldrb r0, [r0, 0x16]
_0802CEA2:
adds r4, r7, 0x1
cmp r0, 0x35
bne _0802CF0A
cmp r5, 0
beq _0802CF0A
movs r0, 0xCE
lsls r0, 1
cmp r5, r0
beq _0802CF0A
cmp r6, 0
bne _0802CF0A
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0xA
bl __umodsi3
lsls r0, 16
cmp r0, 0
bne _0802CF0A
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r3, r0, 16
movs r2, 0
ldr r1, _0802CEE4 @ =gUnknown_8250848
b _0802CEF0
.align 2, 0
_0802CEE4: .4byte gUnknown_8250848
_0802CEE8:
adds r1, 0x4
adds r2, 0x1
cmp r2, 0xE
bhi _0802CEF6
_0802CEF0:
ldrb r0, [r1, 0x2]
cmp r0, r3
ble _0802CEE8
_0802CEF6:
movs r0, 0x64
muls r0, r7
ldr r1, _0802CF24 @ =gPlayerParty
adds r0, r1
lsls r2, 2
ldr r1, _0802CF28 @ =gUnknown_8250848
adds r2, r1
movs r1, 0xC
bl SetMonData
_0802CF0A:
adds r7, r4, 0
cmp r7, 0x5
ble _0802CE54
ldr r1, _0802CF2C @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802CF24: .4byte gPlayerParty
_0802CF28: .4byte gUnknown_8250848
_0802CF2C: .4byte gUnknown_2023D74
thumb_func_end sub_802CE48
thumb_func_start atkE6_docastformchangeanimation
atkE6_docastformchangeanimation: @ 802CF30
push {r4,lr}
ldr r4, _0802CF84 @ =gActiveBattler
ldr r0, _0802CF88 @ =gBattleScripting
ldrb r0, [r0, 0x17]
strb r0, [r4]
ldr r1, _0802CF8C @ =gBattleMons
ldrb r2, [r4]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
ldr r3, _0802CF90 @ =gBattleStruct
cmp r0, 0
beq _0802CF60
ldr r0, [r3]
adds r0, 0x7F
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
_0802CF60:
ldr r0, [r3]
adds r0, 0x7F
ldrb r2, [r0]
movs r0, 0
movs r1, 0
bl EmitBattleAnimation
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, _0802CF94 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802CF84: .4byte gActiveBattler
_0802CF88: .4byte gBattleScripting
_0802CF8C: .4byte gBattleMons
_0802CF90: .4byte gBattleStruct
_0802CF94: .4byte gUnknown_2023D74
thumb_func_end atkE6_docastformchangeanimation
thumb_func_start atkE7_trycastformdatachange
atkE7_trycastformdatachange: @ 802CF98
push {r4,lr}
ldr r1, _0802CFC8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r0, _0802CFCC @ =gBattleScripting
ldrb r0, [r0, 0x17]
bl sub_8019DAC
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _0802CFC2
ldr r0, _0802CFD0 @ =gUnknown_81D92F8
bl BattleScriptPushCursorAndCallback
ldr r0, _0802CFD4 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x7F
subs r1, r4, 0x1
strb r1, [r0]
_0802CFC2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802CFC8: .4byte gUnknown_2023D74
_0802CFCC: .4byte gBattleScripting
_0802CFD0: .4byte gUnknown_81D92F8
_0802CFD4: .4byte gBattleStruct
thumb_func_end atkE7_trycastformdatachange
thumb_func_start atkE8_settypebasedhalvers
atkE8_settypebasedhalvers: @ 802CFD8
push {r4,lr}
movs r4, 0
ldr r2, _0802D014 @ =gBattleMoves
ldr r0, _0802D018 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0xC9
bne _0802D028
ldr r1, _0802D01C @ =gStatuses3
ldr r0, _0802D020 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
ldr r1, [r2]
movs r3, 0x80
lsls r3, 9
adds r0, r1, 0
ands r0, r3
cmp r0, 0
bne _0802D04C
orrs r1, r3
str r1, [r2]
ldr r0, _0802D024 @ =gUnknown_2023E82
strb r4, [r0, 0x5]
b _0802D050
.align 2, 0
_0802D014: .4byte gBattleMoves
_0802D018: .4byte gCurrentMove
_0802D01C: .4byte gStatuses3
_0802D020: .4byte sBattler_AI
_0802D024: .4byte gUnknown_2023E82
_0802D028:
ldr r1, _0802D05C @ =gStatuses3
ldr r0, _0802D060 @ =sBattler_AI
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
ldr r1, [r2]
movs r3, 0x80
lsls r3, 10
adds r0, r1, 0
ands r0, r3
cmp r0, 0
bne _0802D04C
orrs r1, r3
str r1, [r2]
ldr r1, _0802D064 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
movs r4, 0x1
_0802D04C:
cmp r4, 0
beq _0802D06C
_0802D050:
ldr r1, _0802D068 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D086
.align 2, 0
_0802D05C: .4byte gStatuses3
_0802D060: .4byte sBattler_AI
_0802D064: .4byte gUnknown_2023E82
_0802D068: .4byte gUnknown_2023D74
_0802D06C:
ldr r3, _0802D08C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802D086:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D08C: .4byte gUnknown_2023D74
thumb_func_end atkE8_settypebasedhalvers
thumb_func_start atkE9_setweatherballtype
atkE9_setweatherballtype: @ 802D090
push {lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0xD
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0802D130
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _0802D130
ldr r2, _0802D0E0 @ =gBattleWeather
ldrb r0, [r2]
cmp r0, 0
beq _0802D0CE
ldr r1, _0802D0E4 @ =gBattleScripting
movs r0, 0x2
strb r0, [r1, 0xE]
_0802D0CE:
ldrh r1, [r2]
movs r0, 0x7
ands r0, r1
cmp r0, 0
beq _0802D0EC
ldr r0, _0802D0E8 @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x8B
b _0802D12E
.align 2, 0
_0802D0E0: .4byte gBattleWeather
_0802D0E4: .4byte gBattleScripting
_0802D0E8: .4byte gBattleStruct
_0802D0EC:
movs r0, 0x18
ands r0, r1
cmp r0, 0
beq _0802D100
ldr r0, _0802D0FC @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x85
b _0802D12E
.align 2, 0
_0802D0FC: .4byte gBattleStruct
_0802D100:
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _0802D114
ldr r0, _0802D110 @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x8A
b _0802D12E
.align 2, 0
_0802D110: .4byte gBattleStruct
_0802D114:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802D128
ldr r0, _0802D124 @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x8F
b _0802D12E
.align 2, 0
_0802D124: .4byte gBattleStruct
_0802D128:
ldr r0, _0802D140 @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x80
_0802D12E:
strb r0, [r1, 0x13]
_0802D130:
ldr r1, _0802D144 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_0802D140: .4byte gBattleStruct
_0802D144: .4byte gUnknown_2023D74
thumb_func_end atkE9_setweatherballtype
thumb_func_start atkEA_tryrecycleitem
atkEA_tryrecycleitem: @ 802D148
push {r4-r7,lr}
sub sp, 0x4
ldr r7, _0802D1B0 @ =gActiveBattler
ldr r0, _0802D1B4 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r7]
ldr r1, _0802D1B8 @ =gBattleStruct
ldrb r2, [r7]
lsls r0, r2, 1
adds r0, 0xB8
ldr r1, [r1]
adds r6, r1, r0
ldrh r5, [r6]
cmp r5, 0
beq _0802D1C8
ldr r4, _0802D1BC @ =gBattleMons
movs r3, 0x58
adds r0, r2, 0
muls r0, r3
adds r0, r4
ldrh r0, [r0, 0x2E]
cmp r0, 0
bne _0802D1C8
ldr r1, _0802D1C0 @ =gUnknown_2023D68
strh r5, [r1]
strh r0, [r6]
ldrb r0, [r7]
muls r0, r3
adds r0, r4
ldrh r1, [r1]
strh r1, [r0, 0x2E]
ldrb r0, [r7]
muls r0, r3
adds r1, r4, 0
adds r1, 0x2E
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldrb r0, [r7]
bl MarkBufferBankForExecution
ldr r1, _0802D1C4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D1E2
.align 2, 0
_0802D1B0: .4byte gActiveBattler
_0802D1B4: .4byte sBattler_AI
_0802D1B8: .4byte gBattleStruct
_0802D1BC: .4byte gBattleMons
_0802D1C0: .4byte gUnknown_2023D68
_0802D1C4: .4byte gUnknown_2023D74
_0802D1C8:
ldr r3, _0802D1EC @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802D1E2:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802D1EC: .4byte gUnknown_2023D74
thumb_func_end atkEA_tryrecycleitem
thumb_func_start atkEB_settypetoterrain
atkEB_settypetoterrain: @ 802D1F0
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _0802D260 @ =gBattleMons
mov r8, r0
ldr r7, _0802D264 @ =sBattler_AI
ldrb r0, [r7]
movs r6, 0x58
muls r0, r6
mov r1, r8
adds r3, r0, r1
movs r0, 0x21
adds r0, r3
mov r12, r0
ldr r5, _0802D268 @ =gUnknown_8250888
ldr r4, _0802D26C @ =gUnknown_2022B50
ldrb r0, [r4]
adds r0, r5
ldrb r2, [r0]
mov r1, r12
ldrb r0, [r1]
adds r1, r2, 0
cmp r0, r1
beq _0802D278
adds r0, r3, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, r1
beq _0802D278
mov r0, r12
strb r2, [r0]
ldrb r0, [r7]
adds r1, r0, 0
muls r1, r6
add r1, r8
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
adds r1, 0x22
strb r0, [r1]
ldr r1, _0802D270 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x3
strb r0, [r1, 0x1]
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
strb r0, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
ldr r1, _0802D274 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D292
.align 2, 0
_0802D260: .4byte gBattleMons
_0802D264: .4byte sBattler_AI
_0802D268: .4byte gUnknown_8250888
_0802D26C: .4byte gUnknown_2022B50
_0802D270: .4byte gBattleTextBuff1
_0802D274: .4byte gUnknown_2023D74
_0802D278:
ldr r3, _0802D29C @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802D292:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802D29C: .4byte gUnknown_2023D74
thumb_func_end atkEB_settypetoterrain
thumb_func_start atkEC_pursuitrelated
atkEC_pursuitrelated: @ 802D2A0
push {r4-r6,lr}
ldr r5, _0802D314 @ =sBattler_AI
ldrb r0, [r5]
bl GetBattlerPosition
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
ldr r4, _0802D318 @ =gActiveBattler
strb r0, [r4]
ldr r0, _0802D31C @ =gBattleTypeFlags
ldr r0, [r0]
movs r6, 0x1
ands r0, r6
cmp r0, 0
beq _0802D340
ldr r0, _0802D320 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _0802D324 @ =gBitTable
ldrb r3, [r4]
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802D340
ldr r0, _0802D328 @ =gUnknown_2023D7C
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
bne _0802D340
ldr r1, _0802D32C @ =gUnknown_2023DC4
lsls r0, r3, 1
adds r0, r1
ldrh r2, [r0]
cmp r2, 0xE4
bne _0802D340
ldr r0, _0802D330 @ =gUnknown_2023BDA
adds r0, r3, r0
movs r1, 0xB
strb r1, [r0]
ldr r0, _0802D334 @ =gCurrentMove
strh r2, [r0]
ldr r1, _0802D338 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r0, _0802D33C @ =gBattleScripting
strb r6, [r0, 0x18]
ldrb r1, [r5]
adds r0, 0x20
strb r1, [r0]
ldrb r0, [r4]
strb r0, [r5]
b _0802D35A
.align 2, 0
_0802D314: .4byte sBattler_AI
_0802D318: .4byte gActiveBattler
_0802D31C: .4byte gBattleTypeFlags
_0802D320: .4byte gAbsentBattlerFlags
_0802D324: .4byte gBitTable
_0802D328: .4byte gUnknown_2023D7C
_0802D32C: .4byte gUnknown_2023DC4
_0802D330: .4byte gUnknown_2023BDA
_0802D334: .4byte gCurrentMove
_0802D338: .4byte gUnknown_2023D74
_0802D33C: .4byte gBattleScripting
_0802D340:
ldr r3, _0802D360 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802D35A:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802D360: .4byte gUnknown_2023D74
thumb_func_end atkEC_pursuitrelated
thumb_func_start atkEF_snatchsetbanks
atkEF_snatchsetbanks: @ 802D364
push {r4,lr}
ldr r1, _0802D388 @ =gUnknown_2023D6E
ldr r3, _0802D38C @ =sBattler_AI
ldrb r0, [r3]
strb r0, [r1]
ldr r2, _0802D390 @ =gBattlerTarget
lsls r0, 24
lsrs r0, 24
adds r4, r1, 0
ldrb r1, [r2]
cmp r0, r1
bne _0802D398
ldr r1, _0802D394 @ =gBattleScripting
ldrb r0, [r1, 0x17]
strb r0, [r2]
strb r0, [r3]
b _0802D39E
.align 2, 0
_0802D388: .4byte gUnknown_2023D6E
_0802D38C: .4byte sBattler_AI
_0802D390: .4byte gBattlerTarget
_0802D394: .4byte gBattleScripting
_0802D398:
ldr r1, _0802D3B0 @ =gBattleScripting
ldrb r0, [r1, 0x17]
strb r0, [r2]
_0802D39E:
ldrb r0, [r4]
strb r0, [r1, 0x17]
ldr r1, _0802D3B4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D3B0: .4byte gBattleScripting
_0802D3B4: .4byte gUnknown_2023D74
thumb_func_end atkEF_snatchsetbanks
thumb_func_start atkEE_removelightscreenreflect
atkEE_removelightscreenreflect: @ 802D3B8
push {r4,lr}
ldr r0, _0802D400 @ =sBattler_AI
ldrb r0, [r0]
bl GetBattlerSide
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r1, _0802D404 @ =gSideTimers
lsls r3, r0, 1
adds r0, r3, r0
lsls r0, 2
adds r4, r0, r1
ldrb r0, [r4]
cmp r0, 0
bne _0802D3E0
ldrb r1, [r4, 0x2]
cmp r1, 0
beq _0802D418
_0802D3E0:
ldr r2, _0802D408 @ =gSideAffecting
adds r2, r3, r2
ldrh r1, [r2]
ldr r0, _0802D40C @ =0x0000fffe
ands r0, r1
movs r3, 0
ldr r1, _0802D410 @ =0x0000fffd
ands r0, r1
strh r0, [r2]
strb r3, [r4]
strb r3, [r4, 0x2]
ldr r1, _0802D414 @ =gBattleScripting
movs r0, 0x1
strb r0, [r1, 0x18]
strb r0, [r1, 0x19]
b _0802D41E
.align 2, 0
_0802D400: .4byte sBattler_AI
_0802D404: .4byte gSideTimers
_0802D408: .4byte gSideAffecting
_0802D40C: .4byte 0x0000fffe
_0802D410: .4byte 0x0000fffd
_0802D414: .4byte gBattleScripting
_0802D418:
ldr r0, _0802D42C @ =gBattleScripting
strb r1, [r0, 0x18]
strb r1, [r0, 0x19]
_0802D41E:
ldr r1, _0802D430 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D42C: .4byte gBattleScripting
_0802D430: .4byte gUnknown_2023D74
thumb_func_end atkEE_removelightscreenreflect
thumb_func_start sub_802D434
sub_802D434: @ 802D434
push {r4-r6,lr}
movs r4, 0
ldr r0, _0802D474 @ =gUnknown_2023BC8
ldr r0, [r0]
cmp r0, 0
beq _0802D442
b _0802D7EE
_0802D442:
ldr r5, _0802D478 @ =gActiveBattler
ldr r0, _0802D47C @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r5]
ldr r6, _0802D480 @ =gBattlerTarget
movs r1, 0x1
eors r0, r1
strb r0, [r6]
ldr r0, _0802D484 @ =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x80
lsls r0, 8
ands r0, r1
cmp r0, 0
beq _0802D490
movs r0, 0
movs r1, 0x6
bl EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r1, _0802D488 @ =gUnknown_2023D74
ldr r0, _0802D48C @ =gUnknown_81D9AD1
b _0802D7EC
.align 2, 0
_0802D474: .4byte gUnknown_2023BC8
_0802D478: .4byte gActiveBattler
_0802D47C: .4byte sBattler_AI
_0802D480: .4byte gBattlerTarget
_0802D484: .4byte gBattleTypeFlags
_0802D488: .4byte gUnknown_2023D74
_0802D48C: .4byte gUnknown_81D9AD1
_0802D490:
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0802D4B4
movs r0, 0
movs r1, 0x5
bl EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r1, _0802D4AC @ =gUnknown_2023D74
ldr r0, _0802D4B0 @ =gUnknown_81D9AC1
b _0802D7EC
.align 2, 0
_0802D4AC: .4byte gUnknown_2023D74
_0802D4B0: .4byte gUnknown_81D9AC1
_0802D4B4:
movs r0, 0x81
lsls r0, 9
ands r1, r0
cmp r1, 0
beq _0802D4DC
movs r0, 0
movs r1, 0x4
bl EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r1, _0802D4D4 @ =gUnknown_2023D74
ldr r0, _0802D4D8 @ =gUnknown_81D9A88
b _0802D7EC
.align 2, 0
_0802D4D4: .4byte gUnknown_2023D74
_0802D4D8: .4byte gUnknown_81D9A88
_0802D4DC:
ldr r0, _0802D500 @ =gUnknown_2023D68
ldrh r0, [r0]
cmp r0, 0x5
bne _0802D508
ldr r0, _0802D504 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x7C
ldrb r0, [r0]
lsls r1, r0, 2
adds r1, r0
lsls r0, r1, 8
subs r0, r1
movs r1, 0x64
bl __divsi3
lsls r0, 24
lsrs r5, r0, 24
b _0802D520
.align 2, 0
_0802D500: .4byte gUnknown_2023D68
_0802D504: .4byte gBattleStruct
_0802D508:
ldr r3, _0802D53C @ =gBaseStats
ldr r2, _0802D540 @ =gBattleMons
ldrb r1, [r6]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r3
ldrb r5, [r0, 0x8]
_0802D520:
ldr r2, _0802D544 @ =gUnknown_2023D68
ldrh r0, [r2]
cmp r0, 0x5
bhi _0802D52A
b _0802D620
_0802D52A:
subs r0, 0x6
cmp r0, 0x6
bls _0802D532
b _0802D62A
_0802D532:
lsls r0, 2
ldr r1, _0802D548 @ =_0802D54C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802D53C: .4byte gBaseStats
_0802D540: .4byte gBattleMons
_0802D544: .4byte gUnknown_2023D68
_0802D548: .4byte _0802D54C
.align 2, 0
_0802D54C:
.4byte _0802D568
.4byte _0802D598
.4byte _0802D5AA
.4byte _0802D5D8
.4byte _0802D608
.4byte _0802D5CA
.4byte _0802D5CA
_0802D568:
ldr r2, _0802D590 @ =gBattleMons
ldr r0, _0802D594 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r1, r0, 0
adds r1, 0x21
ldrb r1, [r1]
cmp r1, 0xB
beq _0802D5FC
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0xB
beq _0802D5FC
cmp r1, 0x6
beq _0802D5FC
cmp r0, 0x6
beq _0802D5FC
b _0802D5CA
.align 2, 0
_0802D590: .4byte gBattleMons
_0802D594: .4byte gBattlerTarget
_0802D598:
bl sav1_map_get_light_level
lsls r0, 24
lsrs r0, 24
movs r4, 0xA
cmp r0, 0x5
bne _0802D62A
movs r4, 0x23
b _0802D62A
_0802D5AA:
ldr r2, _0802D5D0 @ =gBattleMons
ldr r0, _0802D5D4 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2A
ldrb r1, [r0]
cmp r1, 0x27
bhi _0802D5CA
movs r0, 0x28
subs r0, r1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x9
bhi _0802D62A
_0802D5CA:
movs r4, 0xA
b _0802D62A
.align 2, 0
_0802D5D0: .4byte gBattleMons
_0802D5D4: .4byte gBattlerTarget
_0802D5D8:
ldr r2, _0802D600 @ =gBattleMons
ldr r0, _0802D604 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
movs r4, 0xA
cmp r0, 0
beq _0802D62A
_0802D5FC:
movs r4, 0x1E
b _0802D62A
.align 2, 0
_0802D600: .4byte gBattleMons
_0802D604: .4byte gBattlerTarget
_0802D608:
ldr r0, _0802D61C @ =gBattleResults
ldrb r0, [r0, 0x13]
adds r0, 0xA
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x28
bls _0802D62A
movs r4, 0x28
b _0802D62A
.align 2, 0
_0802D61C: .4byte gBattleResults
_0802D620:
ldr r1, _0802D694 @ =gUnknown_8250892
ldrh r0, [r2]
subs r0, 0x2
adds r0, r1
ldrb r4, [r0]
_0802D62A:
adds r0, r5, 0
muls r0, r4
movs r1, 0xA
bl __divsi3
ldr r5, _0802D698 @ =gBattleMons
ldr r1, _0802D69C @ =gBattlerTarget
ldrb r2, [r1]
movs r1, 0x58
adds r4, r2, 0
muls r4, r1
adds r3, r4, r5
ldrh r2, [r3, 0x2C]
lsls r1, r2, 1
adds r1, r2
ldrh r2, [r3, 0x28]
lsls r2, 1
subs r2, r1, r2
muls r0, r2
bl __divsi3
adds r6, r0, 0
adds r5, 0x4C
adds r4, r5
ldr r4, [r4]
movs r0, 0x27
ands r0, r4
cmp r0, 0
beq _0802D666
lsls r6, 1
_0802D666:
movs r0, 0xD8
ands r4, r0
cmp r4, 0
beq _0802D67A
lsls r0, r6, 4
subs r0, r6
movs r1, 0xA
bl __udivsi3
adds r6, r0, 0
_0802D67A:
ldr r1, _0802D6A0 @ =gUnknown_2023D68
ldrh r0, [r1]
cmp r0, 0x5
beq _0802D6BC
cmp r0, 0x1
bne _0802D6A8
ldr r0, _0802D6A4 @ =gBattleResults
ldrb r1, [r0, 0x5]
movs r2, 0x2
orrs r1, r2
strb r1, [r0, 0x5]
b _0802D6BC
.align 2, 0
_0802D694: .4byte gUnknown_8250892
_0802D698: .4byte gBattleMons
_0802D69C: .4byte gBattlerTarget
_0802D6A0: .4byte gUnknown_2023D68
_0802D6A4: .4byte gBattleResults
_0802D6A8:
ldr r0, _0802D700 @ =gBattleResults
ldrh r1, [r1]
adds r0, r1
adds r1, r0, 0
adds r1, 0x34
ldrb r0, [r1]
cmp r0, 0xFE
bhi _0802D6BC
adds r0, 0x1
strb r0, [r1]
_0802D6BC:
cmp r6, 0xFE
bls _0802D720
movs r0, 0
movs r1, 0x4
bl EmitBallThrowAnim
ldr r0, _0802D704 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r1, _0802D708 @ =gUnknown_2023D74
ldr r0, _0802D70C @ =gUnknown_81D9A42
str r0, [r1]
ldr r1, _0802D710 @ =gBattlerPartyIndexes
ldr r0, _0802D714 @ =gBattlerTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _0802D718 @ =gEnemyParty
adds r0, r1
ldr r2, _0802D71C @ =gUnknown_2023D68
movs r1, 0x26
bl SetMonData
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
beq _0802D7AE
b _0802D7D8
.align 2, 0
_0802D700: .4byte gBattleResults
_0802D704: .4byte gActiveBattler
_0802D708: .4byte gUnknown_2023D74
_0802D70C: .4byte gUnknown_81D9A42
_0802D710: .4byte gBattlerPartyIndexes
_0802D714: .4byte gBattlerTarget
_0802D718: .4byte gEnemyParty
_0802D71C: .4byte gUnknown_2023D68
_0802D720:
movs r0, 0xFF
lsls r0, 16
adds r1, r6, 0
bl __udivsi3
bl Sqrt
lsls r0, 16
lsrs r0, 16
bl Sqrt
lsls r0, 16
lsrs r6, r0, 16
ldr r0, _0802D748 @ =0x000ffff0
adds r1, r6, 0
bl __udivsi3
adds r6, r0, 0
movs r4, 0
b _0802D752
.align 2, 0
_0802D748: .4byte 0x000ffff0
_0802D74C:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
_0802D752:
cmp r4, 0x3
bhi _0802D762
bl Random
lsls r0, 16
lsrs r0, 16
cmp r0, r6
bcc _0802D74C
_0802D762:
ldr r5, _0802D7B8 @ =gUnknown_2023D68
ldrh r0, [r5]
cmp r0, 0x1
bne _0802D76C
movs r4, 0x4
_0802D76C:
movs r0, 0
adds r1, r4, 0
bl EmitBallThrowAnim
ldr r0, _0802D7BC @ =gActiveBattler
ldrb r0, [r0]
bl MarkBufferBankForExecution
cmp r4, 0x4
bne _0802D7E4
ldr r1, _0802D7C0 @ =gUnknown_2023D74
ldr r0, _0802D7C4 @ =gUnknown_81D9A42
str r0, [r1]
ldr r1, _0802D7C8 @ =gBattlerPartyIndexes
ldr r0, _0802D7CC @ =gBattlerTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _0802D7D0 @ =gEnemyParty
adds r0, r1
movs r1, 0x26
adds r2, r5, 0
bl SetMonData
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
bne _0802D7D8
_0802D7AE:
ldr r1, _0802D7D4 @ =gUnknown_2023E82
movs r0, 0
strb r0, [r1, 0x5]
b _0802D7EE
.align 2, 0
_0802D7B8: .4byte gUnknown_2023D68
_0802D7BC: .4byte gActiveBattler
_0802D7C0: .4byte gUnknown_2023D74
_0802D7C4: .4byte gUnknown_81D9A42
_0802D7C8: .4byte gBattlerPartyIndexes
_0802D7CC: .4byte gBattlerTarget
_0802D7D0: .4byte gEnemyParty
_0802D7D4: .4byte gUnknown_2023E82
_0802D7D8:
ldr r1, _0802D7E0 @ =gUnknown_2023E82
movs r0, 0x1
strb r0, [r1, 0x5]
b _0802D7EE
.align 2, 0
_0802D7E0: .4byte gUnknown_2023E82
_0802D7E4:
ldr r0, _0802D7F4 @ =gUnknown_2023E82
strb r4, [r0, 0x5]
ldr r1, _0802D7F8 @ =gUnknown_2023D74
ldr r0, _0802D7FC @ =gUnknown_81D9A93
_0802D7EC:
str r0, [r1]
_0802D7EE:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802D7F4: .4byte gUnknown_2023E82
_0802D7F8: .4byte gUnknown_2023D74
_0802D7FC: .4byte gUnknown_81D9A93
thumb_func_end sub_802D434
thumb_func_start sub_802D800
sub_802D800: @ 802D800
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0802D870 @ =gBattlerPartyIndexes
mov r9, r0
ldr r5, _0802D874 @ =sBattler_AI
ldrb r0, [r5]
movs r6, 0x1
eors r0, r6
lsls r0, 1
add r0, r9
ldrh r0, [r0]
movs r7, 0x64
muls r0, r7
ldr r1, _0802D878 @ =gEnemyParty
mov r8, r1
add r0, r8
bl GiveMonToPlayer
lsls r0, 24
cmp r0, 0
beq _0802D8EA
bl sub_80CC7B4
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _0802D88C
ldr r0, _0802D87C @ =gUnknown_2023E82
strb r1, [r0, 0x5]
ldr r4, _0802D880 @ =gStringVar1
ldr r0, _0802D884 @ =0x00004037
bl VarGet
lsls r0, 24
lsrs r0, 24
bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldrb r0, [r5]
eors r0, r6
lsls r0, 1
add r0, r9
ldrh r0, [r0]
muls r0, r7
add r0, r8
ldr r2, _0802D888 @ =gStringVar2
movs r1, 0x2
bl GetMonData
b _0802D8D6
.align 2, 0
_0802D870: .4byte gBattlerPartyIndexes
_0802D874: .4byte sBattler_AI
_0802D878: .4byte gEnemyParty
_0802D87C: .4byte gUnknown_2023E82
_0802D880: .4byte gStringVar1
_0802D884: .4byte 0x00004037
_0802D888: .4byte gStringVar2
_0802D88C:
ldr r4, _0802D92C @ =gStringVar1
ldr r0, _0802D930 @ =0x00004037
bl VarGet
lsls r0, 24
lsrs r0, 24
bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldrb r0, [r5]
eors r0, r6
lsls r0, 1
add r0, r9
ldrh r0, [r0]
muls r0, r7
add r0, r8
ldr r2, _0802D934 @ =gStringVar2
movs r1, 0x2
bl GetMonData
ldr r4, _0802D938 @ =gStringVar3
bl get_unknown_box_id
lsls r0, 24
lsrs r0, 24
bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldr r1, _0802D93C @ =gUnknown_2023E82
movs r0, 0x2
strb r0, [r1, 0x5]
_0802D8D6:
ldr r0, _0802D940 @ =0x00000834
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _0802D8EA
ldr r1, _0802D93C @ =gUnknown_2023E82
ldrb r0, [r1, 0x5]
adds r0, 0x1
strb r0, [r1, 0x5]
_0802D8EA:
ldr r2, _0802D944 @ =gBattleResults
ldr r3, _0802D948 @ =gBattleMons
ldr r0, _0802D94C @ =sBattler_AI
ldrb r0, [r0]
movs r1, 0x1
eors r1, r0
movs r0, 0x58
muls r0, r1
adds r0, r3
ldrh r0, [r0]
strh r0, [r2, 0x28]
ldr r0, _0802D950 @ =gBattlerPartyIndexes
lsls r1, 1
adds r1, r0
ldrh r1, [r1]
movs r0, 0x64
muls r0, r1
ldr r1, _0802D954 @ =gEnemyParty
adds r0, r1
adds r2, 0x2A
movs r1, 0x2
bl GetMonData
ldr r1, _0802D958 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802D92C: .4byte gStringVar1
_0802D930: .4byte 0x00004037
_0802D934: .4byte gStringVar2
_0802D938: .4byte gStringVar3
_0802D93C: .4byte gUnknown_2023E82
_0802D940: .4byte 0x00000834
_0802D944: .4byte gBattleResults
_0802D948: .4byte gBattleMons
_0802D94C: .4byte sBattler_AI
_0802D950: .4byte gBattlerPartyIndexes
_0802D954: .4byte gEnemyParty
_0802D958: .4byte gUnknown_2023D74
thumb_func_end sub_802D800
thumb_func_start sub_802D95C
sub_802D95C: @ 802D95C
push {r4,r5,lr}
ldr r4, _0802D9AC @ =gEnemyParty
adds r0, r4, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0
movs r2, 0
bl GetMonData
adds r4, r0, 0
adds r0, r5, 0
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _0802D9B4
ldr r3, _0802D9B0 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802D9CE
.align 2, 0
_0802D9AC: .4byte gEnemyParty
_0802D9B0: .4byte gUnknown_2023D74
_0802D9B4:
adds r0, r5, 0
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x3
adds r2, r4, 0
bl HandleSetPokedexFlag
ldr r1, _0802D9D4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802D9CE:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802D9D4: .4byte gUnknown_2023D74
thumb_func_end sub_802D95C
thumb_func_start sub_802D9D8
sub_802D9D8: @ 802D9D8
push {r4,r5,lr}
sub sp, 0x18
ldr r0, _0802DA00 @ =gEnemyParty
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
ldr r0, _0802DA04 @ =gUnknown_2023E82
ldrb r0, [r0]
cmp r0, 0x5
bls _0802D9F4
b _0802DB6C
_0802D9F4:
lsls r0, 2
ldr r1, _0802DA08 @ =_0802DA0C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802DA00: .4byte gEnemyParty
_0802DA04: .4byte gUnknown_2023E82
_0802DA08: .4byte _0802DA0C
.align 2, 0
_0802DA0C:
.4byte _0802DA24
.4byte _0802DA3C
.4byte _0802DA64
.4byte _0802DAC8
.4byte _0802DAE0
.4byte _0802DB58
_0802DA24:
movs r0, 0x1
negs r0, r0
ldr r1, _0802DA38 @ =0x00007fff
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
b _0802DB34
.align 2, 0
_0802DA38: .4byte 0x00007fff
_0802DA3C:
ldr r0, _0802DA5C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DA4A
b _0802DB6C
_0802DA4A:
bl FreeAllWindowBuffers
adds r0, r5, 0
bl sub_8106B60
ldr r1, _0802DA60 @ =gUnknown_2023E82
strb r0, [r1, 0x1]
b _0802DB36
.align 2, 0
_0802DA5C: .4byte gPaletteFade
_0802DA60: .4byte gUnknown_2023E82
_0802DA64:
ldr r0, _0802DAAC @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DA72
b _0802DB6C
_0802DA72:
ldr r0, _0802DAB0 @ =gMain
ldr r1, [r0, 0x4]
ldr r0, _0802DAB4 @ =sub_8011100
cmp r1, r0
bne _0802DB6C
ldr r2, _0802DAB8 @ =gTasks
ldr r4, _0802DABC @ =gUnknown_2023E82
ldrb r1, [r4, 0x1]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrb r0, [r0, 0x4]
cmp r0, 0
bne _0802DB6C
str r0, [sp, 0x10]
movs r1, 0xC0
lsls r1, 19
ldr r2, _0802DAC0 @ =0x05006000
add r0, sp, 0x10
bl CpuSet
ldr r0, _0802DAC4 @ =sub_80116F4
bl SetVBlankCallback
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _0802DB6C
.align 2, 0
_0802DAAC: .4byte gPaletteFade
_0802DAB0: .4byte gMain
_0802DAB4: .4byte sub_8011100
_0802DAB8: .4byte gTasks
_0802DABC: .4byte gUnknown_2023E82
_0802DAC0: .4byte 0x05006000
_0802DAC4: .4byte sub_80116F4
_0802DAC8:
bl sub_800F34C
bl LoadBattleTextboxAndBackground
ldr r1, _0802DADC @ =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
b _0802DB34
.align 2, 0
_0802DADC: .4byte gBattle_BG3_X
_0802DAE0:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _0802DB6C
ldr r0, _0802DB40 @ =gBattleMons
adds r1, r0, 0
adds r1, 0xAC
ldr r1, [r1]
adds r0, 0xA0
ldr r2, [r0]
movs r0, 0x78
str r0, [sp]
movs r0, 0x40
str r0, [sp, 0x4]
str r4, [sp, 0x8]
ldr r0, _0802DB44 @ =0x0000ffff
str r0, [sp, 0xC]
adds r0, r5, 0
movs r3, 0x1
bl CreateMonPicSprite_HandleDeoxys
str r4, [sp, 0x14]
add r0, sp, 0x14
ldr r1, _0802DB48 @ =gPlttBufferFaded
ldr r2, _0802DB4C @ =0x05000080
bl CpuSet
ldr r0, _0802DB50 @ =0x0001ffff
str r4, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
movs r0, 0
bl ShowBg
movs r0, 0x3
bl ShowBg
_0802DB34:
ldr r1, _0802DB54 @ =gUnknown_2023E82
_0802DB36:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0802DB6C
.align 2, 0
_0802DB40: .4byte gBattleMons
_0802DB44: .4byte 0x0000ffff
_0802DB48: .4byte gPlttBufferFaded
_0802DB4C: .4byte 0x05000080
_0802DB50: .4byte 0x0001ffff
_0802DB54: .4byte gUnknown_2023E82
_0802DB58:
ldr r0, _0802DB74 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0802DB6C
ldr r1, _0802DB78 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0802DB6C:
add sp, 0x18
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802DB74: .4byte gPaletteFade
_0802DB78: .4byte gUnknown_2023D74
thumb_func_end sub_802D9D8
thumb_func_start sub_802DB7C
sub_802DB7C: @ 802DB7C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
ldr r4, [sp, 0x40]
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r1, 24
lsrs r1, 24
str r1, [sp, 0x10]
lsls r2, 24
lsrs r2, 24
str r2, [sp, 0x1C]
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x14]
lsls r4, 24
lsrs r4, 24
mov r10, r4
movs r1, 0
add r0, sp, 0xC
strh r1, [r0]
ldr r6, [sp, 0x10]
cmp r6, r3
ble _0802DBB6
b _0802DCA2
_0802DBB6:
mov r4, r8
adds r0, r6, 0x1
str r0, [sp, 0x18]
ldr r2, [sp, 0x1C]
cmp r4, r2
bgt _0802DC98
add r5, sp, 0xC
lsls r7, r6, 24
mov r9, r7
_0802DBC8:
ldr r0, [sp, 0x10]
cmp r6, r0
bne _0802DBF4
cmp r4, r8
bne _0802DBDC
ldr r0, _0802DBD8 @ =0x00001022
b _0802DC3E
.align 2, 0
_0802DBD8: .4byte 0x00001022
_0802DBDC:
ldr r2, [sp, 0x1C]
cmp r4, r2
bne _0802DBEC
ldr r0, _0802DBE8 @ =0x00001024
b _0802DC3E
.align 2, 0
_0802DBE8: .4byte 0x00001024
_0802DBEC:
ldr r0, _0802DBF0 @ =0x00001023
b _0802DC3E
.align 2, 0
_0802DBF0: .4byte 0x00001023
_0802DBF4:
ldr r7, [sp, 0x14]
cmp r6, r7
bne _0802DC20
cmp r4, r8
bne _0802DC08
ldr r0, _0802DC04 @ =0x00001028
b _0802DC3E
.align 2, 0
_0802DC04: .4byte 0x00001028
_0802DC08:
ldr r0, [sp, 0x1C]
cmp r4, r0
bne _0802DC18
ldr r0, _0802DC14 @ =0x0000102a
b _0802DC3E
.align 2, 0
_0802DC14: .4byte 0x0000102a
_0802DC18:
ldr r0, _0802DC1C @ =0x00001029
b _0802DC3E
.align 2, 0
_0802DC1C: .4byte 0x00001029
_0802DC20:
cmp r4, r8
bne _0802DC2C
ldr r0, _0802DC28 @ =0x00001025
b _0802DC3E
.align 2, 0
_0802DC28: .4byte 0x00001025
_0802DC2C:
ldr r2, [sp, 0x1C]
cmp r4, r2
bne _0802DC3C
ldr r0, _0802DC38 @ =0x00001027
b _0802DC3E
.align 2, 0
_0802DC38: .4byte 0x00001027
_0802DC3C:
ldr r0, _0802DC74 @ =0x00001026
_0802DC3E:
strh r0, [r5]
movs r1, 0x1
mov r0, r10
ands r0, r1
cmp r0, 0
beq _0802DC4E
movs r0, 0
strh r0, [r5]
_0802DC4E:
movs r0, 0x80
mov r7, r10
ands r0, r7
cmp r0, 0
beq _0802DC78
lsls r2, r4, 24
lsrs r2, 24
str r1, [sp]
str r1, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0x1
add r1, sp, 0xC
mov r7, r9
lsrs r3, r7, 24
bl CopyToBgTilemapBufferRect_ChangePalette
b _0802DC90
.align 2, 0
_0802DC74: .4byte 0x00001026
_0802DC78:
lsls r2, r4, 24
lsrs r2, 24
str r1, [sp]
str r1, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0
add r1, sp, 0xC
mov r7, r9
lsrs r3, r7, 24
bl CopyToBgTilemapBufferRect_ChangePalette
_0802DC90:
adds r4, 0x1
ldr r0, [sp, 0x1C]
cmp r4, r0
ble _0802DBC8
_0802DC98:
ldr r6, [sp, 0x18]
ldr r2, [sp, 0x14]
cmp r6, r2
bgt _0802DCA2
b _0802DBB6
_0802DCA2:
movs r0, 0x1
bl CopyBgTilemapBufferToVram
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_802DB7C
thumb_func_start sub_802DCB8
sub_802DCB8: @ 802DCB8
push {lr}
sub sp, 0x10
add r0, sp, 0xC
movs r2, 0x1
strh r2, [r0]
movs r1, 0x2
strh r1, [r0, 0x2]
ldr r0, _0802DCF4 @ =gUnknown_2023E82
ldrb r3, [r0, 0x1]
lsls r3, 25
movs r0, 0x90
lsls r0, 20
adds r3, r0
lsrs r3, 24
str r2, [sp]
str r1, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0
add r1, sp, 0xC
movs r2, 0x18
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0
bl CopyBgTilemapBufferToVram
add sp, 0x10
pop {r0}
bx r0
.align 2, 0
_0802DCF4: .4byte gUnknown_2023E82
thumb_func_end sub_802DCB8
thumb_func_start sub_802DCF8
sub_802DCF8: @ 802DCF8
push {lr}
sub sp, 0x10
add r0, sp, 0xC
movs r1, 0x20
strh r1, [r0]
strh r1, [r0, 0x2]
ldr r0, _0802DD34 @ =gUnknown_2023E82
ldrb r3, [r0, 0x1]
lsls r3, 25
movs r0, 0x90
lsls r0, 20
adds r3, r0
lsrs r3, 24
movs r0, 0x1
str r0, [sp]
movs r0, 0x2
str r0, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0
add r1, sp, 0xC
movs r2, 0x18
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0
bl CopyBgTilemapBufferToVram
add sp, 0x10
pop {r0}
bx r0
.align 2, 0
_0802DD34: .4byte gUnknown_2023E82
thumb_func_end sub_802DCF8
thumb_func_start sub_802DD38
sub_802DD38: @ 802DD38
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r0, _0802DD5C @ =gUnknown_2023E82
ldrb r1, [r0]
adds r4, r0, 0
cmp r1, 0x4
bls _0802DD50
b _0802DFA6
_0802DD50:
lsls r0, r1, 2
ldr r1, _0802DD60 @ =_0802DD64
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802DD5C: .4byte gUnknown_2023E82
_0802DD60: .4byte _0802DD64
.align 2, 0
_0802DD64:
.4byte _0802DD78
.4byte _0802DDA8
.4byte _0802DE40
.4byte _0802DF18
.4byte _0802DF70
_0802DD78:
movs r4, 0
str r4, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_802DB7C
ldr r0, _0802DDA0 @ =gUnknown_83FE791
movs r1, 0xE
bl sub_80D87BC
ldr r1, _0802DDA4 @ =gUnknown_2023E82
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
strb r4, [r1, 0x1]
bl sub_802DCB8
b _0802DFA6
.align 2, 0
_0802DDA0: .4byte gUnknown_83FE791
_0802DDA4: .4byte gUnknown_2023E82
_0802DDA8:
ldr r0, _0802DE1C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0802DDCC
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _0802DDCC
movs r0, 0x5
bl PlaySE
bl sub_802DCF8
movs r0, 0
strb r0, [r4, 0x1]
bl sub_802DCB8
_0802DDCC:
ldr r0, _0802DE1C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DDF2
ldr r4, _0802DE20 @ =gUnknown_2023E82
ldrb r0, [r4, 0x1]
cmp r0, 0
bne _0802DDF2
movs r0, 0x5
bl PlaySE
bl sub_802DCF8
movs r0, 0x1
strb r0, [r4, 0x1]
bl sub_802DCB8
_0802DDF2:
ldr r0, _0802DE1C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0802DE24
movs r0, 0x5
bl PlaySE
ldr r1, _0802DE20 @ =gUnknown_2023E82
ldrb r0, [r1, 0x1]
cmp r0, 0
bne _0802DE36
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
movs r0, 0x3
bl BeginFastPaletteFade
b _0802DFA6
.align 2, 0
_0802DE1C: .4byte gMain
_0802DE20: .4byte gUnknown_2023E82
_0802DE24:
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0802DE2E
b _0802DFA6
_0802DE2E:
movs r0, 0x5
bl PlaySE
ldr r1, _0802DE3C @ =gUnknown_2023E82
_0802DE36:
movs r0, 0x4
strb r0, [r1]
b _0802DFA6
.align 2, 0
_0802DE3C: .4byte gUnknown_2023E82
_0802DE40:
ldr r0, _0802DEFC @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DE4E
b _0802DFA6
_0802DE4E:
ldr r7, _0802DF00 @ =gBattlerPartyIndexes
ldr r0, _0802DF04 @ =sBattler_AI
mov r10, r0
ldrb r0, [r0]
movs r4, 0x1
eors r0, r4
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
movs r1, 0x64
mov r9, r1
mov r2, r9
muls r2, r0
adds r0, r2, 0
ldr r1, _0802DF08 @ =gEnemyParty
mov r8, r1
add r0, r8
ldr r1, _0802DF0C @ =gBattleStruct
ldr r2, [r1]
adds r2, 0x6D
movs r1, 0x2
bl GetMonData
bl FreeAllWindowBuffers
mov r2, r10
ldrb r0, [r2]
eors r0, r4
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
mov r1, r9
muls r1, r0
adds r0, r1, 0
add r0, r8
movs r1, 0xB
bl GetMonData
adds r6, r0, 0
lsls r6, 16
lsrs r6, 16
mov r2, r10
ldrb r0, [r2]
eors r0, r4
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
mov r1, r9
muls r1, r0
adds r0, r1, 0
add r0, r8
bl GetMonGender
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
mov r2, r10
ldrb r0, [r2]
eors r4, r0
lsls r4, 1
adds r4, r7
ldrh r0, [r4]
mov r1, r9
muls r1, r0
adds r0, r1, 0
add r0, r8
movs r1, 0
movs r2, 0
bl GetMonData
ldr r2, _0802DF0C @ =gBattleStruct
ldr r1, [r2]
adds r1, 0x6D
str r0, [sp]
ldr r0, _0802DF10 @ =sub_8011100
str r0, [sp, 0x4]
movs r0, 0x2
adds r2, r6, 0
adds r3, r5, 0
bl DoNamingScreen
ldr r1, _0802DF14 @ =gUnknown_2023E82
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0802DFA6
.align 2, 0
_0802DEFC: .4byte gPaletteFade
_0802DF00: .4byte gBattlerPartyIndexes
_0802DF04: .4byte sBattler_AI
_0802DF08: .4byte gEnemyParty
_0802DF0C: .4byte gBattleStruct
_0802DF10: .4byte sub_8011100
_0802DF14: .4byte gUnknown_2023E82
_0802DF18:
ldr r0, _0802DF54 @ =gMain
ldr r1, [r0, 0x4]
ldr r0, _0802DF58 @ =sub_8011100
cmp r1, r0
bne _0802DFA6
ldr r0, _0802DF5C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0802DFA6
ldr r2, _0802DF60 @ =gBattlerPartyIndexes
ldr r0, _0802DF64 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x1
eors r0, r1
lsls r0, 1
adds r0, r2
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _0802DF68 @ =gEnemyParty
adds r0, r1
ldr r1, _0802DF6C @ =gBattleStruct
ldr r2, [r1]
adds r2, 0x6D
movs r1, 0x2
bl SetMonData
b _0802DF8C
.align 2, 0
_0802DF54: .4byte gMain
_0802DF58: .4byte sub_8011100
_0802DF5C: .4byte gPaletteFade
_0802DF60: .4byte gBattlerPartyIndexes
_0802DF64: .4byte sBattler_AI
_0802DF68: .4byte gEnemyParty
_0802DF6C: .4byte gBattleStruct
_0802DF70:
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
bne _0802DF8C
ldr r1, _0802DF88 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802DFA6
.align 2, 0
_0802DF88: .4byte gUnknown_2023D74
_0802DF8C:
ldr r3, _0802DFB8 @ =gUnknown_2023D74
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802DFA6:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802DFB8: .4byte gUnknown_2023D74
thumb_func_end sub_802DD38
thumb_func_start atkF4_subattackerhpbydmg
atkF4_subattackerhpbydmg: @ 802DFBC
ldr r2, _0802DFDC @ =gBattleMons
ldr r0, _0802DFE0 @ =sBattler_AI
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
ldr r0, _0802DFE4 @ =gBattleMoveDamage
ldr r2, [r0]
ldrh r0, [r1, 0x28]
subs r0, r2
strh r0, [r1, 0x28]
ldr r1, _0802DFE8 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802DFDC: .4byte gBattleMons
_0802DFE0: .4byte sBattler_AI
_0802DFE4: .4byte gBattleMoveDamage
_0802DFE8: .4byte gUnknown_2023D74
thumb_func_end atkF4_subattackerhpbydmg
thumb_func_start atkF5_removeattackerstatus1
atkF5_removeattackerstatus1: @ 802DFEC
ldr r1, _0802E008 @ =gBattleMons
ldr r0, _0802E00C @ =sBattler_AI
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x4C
adds r0, r1
movs r1, 0
str r1, [r0]
ldr r1, _0802E010 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802E008: .4byte gBattleMons
_0802E00C: .4byte sBattler_AI
_0802E010: .4byte gUnknown_2023D74
thumb_func_end atkF5_removeattackerstatus1
thumb_func_start sub_802E014
sub_802E014: @ 802E014
ldr r1, _0802E01C @ =gUnknown_2023BE3
movs r0, 0xC
strb r0, [r1]
bx lr
.align 2, 0
_0802E01C: .4byte gUnknown_2023BE3
thumb_func_end sub_802E014
thumb_func_start sub_802E020
sub_802E020: @ 802E020
ldr r1, _0802E030 @ =gUnknown_2023BE3
movs r0, 0xC
strb r0, [r1]
ldr r1, _0802E034 @ =gUnknown_2023BE2
ldr r0, _0802E038 @ =gBattlersCount
ldrb r0, [r0]
strb r0, [r1]
bx lr
.align 2, 0
_0802E030: .4byte gUnknown_2023BE3
_0802E034: .4byte gUnknown_2023BE2
_0802E038: .4byte gBattlersCount
thumb_func_end sub_802E020
.align 2, 0 @ Don't pad with nop.