Files
Pokemon-Firered/asm/battle_script_commands.s
T
2019-08-27 08:20:59 +08:00

11717 lines
215 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start atk8F_forcerandomswitch
atk8F_forcerandomswitch: @ 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 GetBattlerMultiplayerId
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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_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 GetBattlerMultiplayerId
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 IsMultiBattle
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 atk8F_forcerandomswitch
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 @ =gBattlerAttacker
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 @ =gBattlerAttacker
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 gBattlerAttacker
_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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_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 @ =gBattlerAttacker
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 gBattlerAttacker
_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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gPaydayMoney
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 @ =gBattlescriptCurrInstr
ldr r0, [r4]
adds r0, 0x1
bl BattleScriptPush
ldr r0, _08028824 @ =BattleScript_PrintPayDayMoneyString
str r0, [r4]
b _08028830
.align 2, 0
_0802880C: .4byte gBattleTypeFlags
_08028810: .4byte gPaydayMoney
_08028814: .4byte gBattleStruct
_08028818: .4byte gSaveBlock1Ptr
_0802881C: .4byte gBattleTextBuff1
_08028820: .4byte gBattlescriptCurrInstr
_08028824: .4byte BattleScript_PrintPayDayMoneyString
_08028828:
ldr r1, _08028838 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_08028830:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08028838: .4byte gBattlescriptCurrInstr
thumb_func_end atk91_givepaydaymoney
thumb_func_start atk92_setlightscreen
atk92_setlightscreen: @ 802883C
push {r4-r6,lr}
ldr r5, _0802886C @ =gBattlerAttacker
ldrb r0, [r5]
bl GetBattlerPosition
ldr r4, _08028870 @ =gSideStatuses
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 @ =gBattleCommunication
movs r0, 0
b _080288F0
.align 2, 0
_0802886C: .4byte gBattlerAttacker
_08028870: .4byte gSideStatuses
_08028874: .4byte gMoveResultFlags
_08028878: .4byte gBattleCommunication
_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 @ =gBattleCommunication
movs r0, 0x4
b _080288F0
.align 2, 0
_080288E0: .4byte gSideTimers
_080288E4: .4byte gBattleTypeFlags
_080288E8: .4byte gBattleCommunication
_080288EC:
ldr r1, _08028900 @ =gBattleCommunication
movs r0, 0x3
_080288F0:
strb r0, [r1, 0x5]
ldr r1, _08028904 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08028900: .4byte gBattleCommunication
_08028904: .4byte gBattlescriptCurrInstr
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 RecordItemEffectBattle
ldr r2, _080289DC @ =gSpecialStatuses
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 @ =gBattlescriptCurrInstr
ldr r0, _080289F0 @ =BattleScript_SturdyPreventsOHKO
str r0, [r1]
mov r1, r9
ldrb r0, [r1]
movs r1, 0x5
bl RecordAbilityBattle
b _08028C48
.align 2, 0
_080289D4: .4byte gPotentialItemEffectBattler
_080289D8: .4byte gBattlerTarget
_080289DC: .4byte gSpecialStatuses
_080289E0: .4byte gBattleMons
_080289E4: .4byte gMoveResultFlags
_080289E8: .4byte gLastUsedAbility
_080289EC: .4byte gBattlescriptCurrInstr
_080289F0: .4byte BattleScript_SturdyPreventsOHKO
_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 @ =gBattlerAttacker
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 gBattlerAttacker
_08028A78:
ldr r1, _08028B44 @ =gDisableStructs
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
adds r0, r1
ldr r1, _08028B48 @ =gBattlerAttacker
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 @ =gProtectStructs
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 gBattlerAttacker
_08028B4C: .4byte gBattleMoves
_08028B50: .4byte gCurrentMove
_08028B54: .4byte gBattleMons
_08028B58: .4byte gBattlerTarget
_08028B5C: .4byte gProtectStructs
_08028B60: .4byte gBattleMoveDamage
_08028B64: .4byte gMoveResultFlags
_08028B68:
ldr r0, _08028BA4 @ =gSpecialStatuses
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 @ =gLastUsedItem
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 gSpecialStatuses
_08028BA8: .4byte gBattleMoveDamage
_08028BAC: .4byte gMoveResultFlags
_08028BB0: .4byte gLastUsedItem
_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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08028C48
.align 2, 0
_08028BD4: .4byte gBattleMoveDamage
_08028BD8: .4byte gMoveResultFlags
_08028BDC: .4byte gBattlescriptCurrInstr
_08028BE0:
ldr r2, _08028C14 @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r3, _08028C18 @ =gBattleMons
ldr r0, _08028C1C @ =gBattlerAttacker
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 @ =gBattleCommunication
movs r0, 0
b _08028C2C
.align 2, 0
_08028C14: .4byte gMoveResultFlags
_08028C18: .4byte gBattleMons
_08028C1C: .4byte gBattlerAttacker
_08028C20: .4byte gBattlerTarget
_08028C24: .4byte gBattleCommunication
_08028C28:
ldr r1, _08028C54 @ =gBattleCommunication
movs r0, 0x1
_08028C2C:
strb r0, [r1, 0x5]
ldr r3, _08028C58 @ =gBattlescriptCurrInstr
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 gBattleCommunication
_08028C58: .4byte gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattleCommunication
movs r0, 0x2
strb r0, [r1, 0x5]
b _08028CD6
.align 2, 0
_08028CB8: .4byte gBattleWeather
_08028CBC: .4byte gMoveResultFlags
_08028CC0: .4byte gBattleCommunication
_08028CC4:
movs r0, 0x8
strh r0, [r2]
ldr r1, _08028CE4 @ =gBattleCommunication
movs r0, 0x3
strb r0, [r1, 0x5]
ldr r0, _08028CE8 @ =gWishFutureKnock
adds r0, 0x28
movs r1, 0x5
strb r1, [r0]
_08028CD6:
ldr r1, _08028CEC @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08028CE4: .4byte gBattleCommunication
_08028CE8: .4byte gWishFutureKnock
_08028CEC: .4byte gBattlescriptCurrInstr
thumb_func_end atk95_setsandstorm
thumb_func_start atk96_weatherdamage
atk96_weatherdamage: @ 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 @ =gBattlerAttacker
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 @ =gBattlerAttacker
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 gBattlerAttacker
_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 @ =gBattlerAttacker
_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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_08028E84: .4byte gAbsentBattlerFlags
_08028E88: .4byte gBitTable
_08028E8C: .4byte gBattlescriptCurrInstr
thumb_func_end atk96_weatherdamage
thumb_func_start atk97_tryinfatuating
atk97_tryinfatuating: @ 8028E90
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r4, _08028EBC @ =gBattlerAttacker
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 gBattlerAttacker
_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 @ =gBattlescriptCurrInstr
ldr r0, _08028F8C @ =BattleScript_ObliviousPreventsAttraction
str r0, [r1]
ldr r0, _08028F90 @ =gLastUsedAbility
strb r2, [r0]
ldrb r0, [r5]
movs r1, 0xC
bl RecordAbilityBattle
b _0802902C
.align 2, 0
_08028F78: .4byte gBattlerPartyIndexes
_08028F7C: .4byte gEnemyParty
_08028F80: .4byte gBattlerTarget
_08028F84: .4byte gBattleMons
_08028F88: .4byte gBattlescriptCurrInstr
_08028F8C: .4byte BattleScript_ObliviousPreventsAttraction
_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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_08029008:
ldrb r0, [r5]
adds r2, r0, 0
muls r2, r6
adds r2, r4
ldr r1, _0802903C @ =gBitTable
ldr r0, _08029040 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_08029044: .4byte gBattlescriptCurrInstr
thumb_func_end atk97_tryinfatuating
thumb_func_start atk98_updatestatusicon
atk98_updatestatusicon: @ 8029048
push {r4-r7,lr}
ldr r0, _080290B8 @ =gBattleControllerExecFlags
ldr r1, [r0]
cmp r1, 0
beq _08029054
b _080291C0
_08029054:
ldr r5, _080290BC @ =gBattlescriptCurrInstr
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 BtlController_EmitStatusIconUpdate
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_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 gBattleControllerExecFlags
_080290BC: .4byte gBattlescriptCurrInstr
_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 @ =gBattlerAttacker
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 BtlController_EmitStatusIconUpdate
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_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 BtlController_EmitStatusIconUpdate
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_08029164:
ldr r1, _08029188 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x2
str r0, [r1]
b _080291C0
.align 2, 0
_08029170: .4byte gActiveBattler
_08029174: .4byte gBattlerAttacker
_08029178: .4byte gAbsentBattlerFlags
_0802917C: .4byte gBitTable
_08029180: .4byte gBattleMons
_08029184: .4byte gBattleTypeFlags
_08029188: .4byte gBattlescriptCurrInstr
_0802918C:
ldrb r0, [r2, 0x1]
bl GetBattlerForBattleScript
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 BtlController_EmitStatusIconUpdate
ldrb r0, [r4]
bl MarkBattlerForControllerExec
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 atk98_updatestatusicon
thumb_func_start atk99_setmist
atk99_setmist: @ 80291D0
push {r4-r6,lr}
ldr r6, _08029200 @ =gSideTimers
ldr r4, _08029204 @ =gBattlerAttacker
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 @ =gBattleCommunication
strb r5, [r0, 0x5]
b _0802925E
.align 2, 0
_08029200: .4byte gSideTimers
_08029204: .4byte gBattlerAttacker
_08029208: .4byte gMoveResultFlags
_0802920C: .4byte gBattleCommunication
_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 @ =gSideStatuses
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 @ =gBattleCommunication
strb r3, [r0, 0x5]
_0802925E:
ldr r1, _08029274 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802926C: .4byte gSideStatuses
_08029270: .4byte gBattleCommunication
_08029274: .4byte gBattlescriptCurrInstr
thumb_func_end atk99_setmist
thumb_func_start atk9A_setfocusenergy
atk9A_setfocusenergy: @ 8029278
push {lr}
ldr r1, _080292A8 @ =gBattleMons
ldr r0, _080292AC @ =gBattlerAttacker
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 @ =gBattleCommunication
movs r0, 0x1
strb r0, [r1, 0x5]
b _080292C0
.align 2, 0
_080292A8: .4byte gBattleMons
_080292AC: .4byte gBattlerAttacker
_080292B0: .4byte gMoveResultFlags
_080292B4: .4byte gBattleCommunication
_080292B8:
orrs r1, r3
str r1, [r0]
ldr r0, _080292CC @ =gBattleCommunication
strb r2, [r0, 0x5]
_080292C0:
ldr r1, _080292D0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080292CC: .4byte gBattleCommunication
_080292D0: .4byte gBattlescriptCurrInstr
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 @ =gChosenMove
ldr r2, _08029330 @ =0x0000ffff
adds r0, r2, 0
strh r0, [r1]
ldr r1, _08029334 @ =gBattlescriptCurrInstr
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 @ =gBattleCommunication
movs r0, 0x1
b _08029464
.align 2, 0
_0802932C: .4byte gChosenMove
_08029330: .4byte 0x0000ffff
_08029334: .4byte gBattlescriptCurrInstr
_08029338: .4byte gBattleMons
_0802933C: .4byte gBattlerTarget
_08029340: .4byte gStatuses3
_08029344: .4byte 0x000400c0
_08029348: .4byte gMoveResultFlags
_0802934C: .4byte gBattleCommunication
_08029350:
ldr r3, _08029424 @ =gBattlerAttacker
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 gBattlerAttacker
_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 BtlController_EmitResetActionMoveSelection
mov r2, r8
ldrb r0, [r2]
bl MarkBattlerForControllerExec
ldr r1, _08029470 @ =gBattleCommunication
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 gBattleCommunication
thumb_func_end atk9B_transformdataexecution
thumb_func_start atk9C_setsubstitute
atk9C_setsubstitute: @ 8029474
push {r4-r7,lr}
ldr r7, _080294A4 @ =gBattleMons
ldr r6, _080294A8 @ =gBattlerAttacker
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 @ =gBattleCommunication
movs r0, 0x1
strb r0, [r1, 0x5]
b _08029508
.align 2, 0
_080294A4: .4byte gBattleMons
_080294A8: .4byte gBattlerAttacker
_080294AC: .4byte gBattleMoveDamage
_080294B0: .4byte gBattleCommunication
_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 @ =gBattleCommunication
strb r2, [r0, 0x5]
ldr r2, _08029528 @ =gHitMarker
ldr r0, [r2]
movs r1, 0x80
lsls r1, 1
orrs r0, r1
str r0, [r2]
_08029508:
ldr r1, _0802952C @ =gBattlescriptCurrInstr
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 gBattleCommunication
_08029528: .4byte gHitMarker
_0802952C: .4byte gBattlescriptCurrInstr
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 @ =sMovesForbiddenToCopy
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 sMovesForbiddenToCopy
_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 @ =gChosenMove
ldr r1, _080295F4 @ =0x0000ffff
adds r7, r1, 0
strh r7, [r0]
ldr r5, _080295F8 @ =gLastMoves
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gChosenMove
_080295F4: .4byte 0x0000ffff
_080295F8: .4byte gLastMoves
_080295FC: .4byte gBattlerTarget
_08029600: .4byte gBattleMons
_08029604: .4byte gBattlerAttacker
_08029608: .4byte gBattlescriptCurrInstr
_0802960C:
movs r2, 0
mov r3, r12
adds r3, 0xC
adds r0, r4, r3
ldrh r0, [r0]
ldr r4, _0802969C @ =gBattlescriptCurrInstr
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 @ =gCurrMovePos
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 @ =gLastMoves
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 gBattlescriptCurrInstr
_080296A0: .4byte gCurrMovePos
_080296A4: .4byte gLastMoves
_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 @ =sMovesForbiddenToCopy
ldr r0, _080297DC @ =gBattlescriptCurrInstr
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 @ =gHitMarker
ldr r0, [r2]
ldr r1, _080297EC @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r3, _080297F0 @ =gBattleScriptsForMoveEffects
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 sMovesForbiddenToCopy
_080297DC: .4byte gBattlescriptCurrInstr
_080297E0: .4byte 0x000001ff
_080297E4: .4byte 0x0000ffff
_080297E8: .4byte gHitMarker
_080297EC: .4byte 0xfffffbff
_080297F0: .4byte gBattleScriptsForMoveEffects
_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 @ =gBattlerAttacker
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2A
ldrb r0, [r0]
str r0, [r3]
ldr r1, _08029828 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802981C: .4byte gBattleMoveDamage
_08029820: .4byte gBattleMons
_08029824: .4byte gBattlerAttacker
_08029828: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802987C: .4byte gBattlescriptCurrInstr
thumb_func_end atkA0_psywavedamageeffect
thumb_func_start atkA1_counterdamagecalculator
atkA1_counterdamagecalculator: @ 8029880
push {r4-r6,lr}
ldr r4, _080298F0 @ =gBattlerAttacker
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r6, r0, 24
ldr r5, _080298F4 @ =gProtectStructs
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 gBattlerAttacker
_080298F4: .4byte gProtectStructs
_080298F8: .4byte gBattleMons
_080298FC: .4byte gBattleMoveDamage
_08029900: .4byte gSideTimers
_08029904: .4byte gBattlerTarget
_08029908:
ldr r2, _08029924 @ =gBattlerTarget
ldr r1, _08029928 @ =gProtectStructs
ldr r0, _0802992C @ =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
ldrb r0, [r0, 0xC]
strb r0, [r2]
_08029918:
ldr r1, _08029930 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029964
.align 2, 0
_08029924: .4byte gBattlerTarget
_08029928: .4byte gProtectStructs
_0802992C: .4byte gBattlerAttacker
_08029930: .4byte gBattlescriptCurrInstr
_08029934:
ldr r2, _0802996C @ =gSpecialStatuses
ldr r0, _08029970 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gSpecialStatuses
_08029970: .4byte gBattlerAttacker
_08029974: .4byte gBattlescriptCurrInstr
thumb_func_end atkA1_counterdamagecalculator
thumb_func_start atkA2_mirrorcoatdamagecalculator
atkA2_mirrorcoatdamagecalculator: @ 8029978
push {r4-r6,lr}
ldr r4, _080299E8 @ =gBattlerAttacker
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r6, r0, 24
ldr r5, _080299EC @ =gProtectStructs
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 gBattlerAttacker
_080299EC: .4byte gProtectStructs
_080299F0: .4byte gBattleMons
_080299F4: .4byte gBattleMoveDamage
_080299F8: .4byte gSideTimers
_080299FC: .4byte gBattlerTarget
_08029A00:
ldr r2, _08029A1C @ =gBattlerTarget
ldr r1, _08029A20 @ =gProtectStructs
ldr r0, _08029A24 @ =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
ldrb r0, [r0, 0xD]
strb r0, [r2]
_08029A10:
ldr r1, _08029A28 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029A5C
.align 2, 0
_08029A1C: .4byte gBattlerTarget
_08029A20: .4byte gProtectStructs
_08029A24: .4byte gBattlerAttacker
_08029A28: .4byte gBattlescriptCurrInstr
_08029A2C:
ldr r2, _08029A64 @ =gSpecialStatuses
ldr r0, _08029A68 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gSpecialStatuses
_08029A68: .4byte gBattlerAttacker
_08029A6C: .4byte gBattlescriptCurrInstr
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 @ =gLastMoves
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029BA2
.align 2, 0
_08029B70: .4byte gBattleMons
_08029B74: .4byte gBattlerTarget
_08029B78: .4byte gLastMoves
_08029B7C: .4byte gDisableStructs
_08029B80: .4byte gBattleTextBuff1
_08029B84: .4byte gBattlescriptCurrInstr
_08029B88:
ldr r3, _08029BB0 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gLastMoves
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029CD6
.align 2, 0
_08029CA8: .4byte gBattleMons
_08029CAC: .4byte gBattlerTarget
_08029CB0: .4byte gLastMoves
_08029CB4: .4byte gDisableStructs
_08029CB8: .4byte gBattlescriptCurrInstr
_08029CBC:
ldr r3, _08029CE4 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =gSpecialStatuses
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08029DA2
.align 2, 0
_08029D68: .4byte gBattleMons
_08029D6C: .4byte gBattlerTarget
_08029D70: .4byte gBattlerAttacker
_08029D74: .4byte gBattleMoveDamage
_08029D78: .4byte gBattleScripting
_08029D7C: .4byte gSpecialStatuses
_08029D80: .4byte 0x0000ffff
_08029D84: .4byte gBattlescriptCurrInstr
_08029D88:
ldr r3, _08029DA8 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gLastLandedMoves
ldr r4, _08029E18 @ =gBattlerAttacker
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 @ =gLastHitBy
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 @ =gBattlescriptCurrInstr
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 gLastLandedMoves
_08029E18: .4byte gBattlerAttacker
_08029E1C: .4byte 0x0000ffff
_08029E20: .4byte gBattleMons
_08029E24: .4byte gLastHitBy
_08029E28: .4byte gBattlescriptCurrInstr
_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 @ =gBattlescriptCurrInstr
b _08029E82
.align 2, 0
_08029E50: .4byte gBattleTextBuff1
_08029E54: .4byte gBattlescriptCurrInstr
_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 @ =gTypeEffectiveness
adds r3, r4, r6
ldr r1, _08029F94 @ =gLastHitByType
ldr r2, _08029F98 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
mov r12, r1
ldr r3, _08029F90 @ =gTypeEffectiveness
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 @ =gLastHitByType
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 gTypeEffectiveness
_08029F94: .4byte gLastHitByType
_08029F98: .4byte gBattlerAttacker
_08029F9C: .4byte gBattleMons
_08029FA0: .4byte 0x000003e7
_08029FA4: .4byte gBattlescriptCurrInstr
_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 @ =gBattlerAttacker
ldrb r1, [r1]
strb r1, [r0, 0x15]
ldr r1, _0802A000 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802A000: .4byte gBattlescriptCurrInstr
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 @ =gChosenMove
ldr r1, _0802A168 @ =0x0000ffff
adds r5, r1, 0
strh r5, [r0]
ldr r3, _0802A16C @ =gBattleMons
ldr r2, _0802A170 @ =gBattlerAttacker
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 @ =gLastPrintedMoves
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 @ =gCurrMovePos
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 BtlController_EmitSetMonData
ldr r0, _0802A184 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBattlerForControllerExec
ldr r1, _0802A188 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
ldr r3, _0802A174 @ =gLastPrintedMoves
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802A1AA
.align 2, 0
_0802A164: .4byte gChosenMove
_0802A168: .4byte 0x0000ffff
_0802A16C: .4byte gBattleMons
_0802A170: .4byte gBattlerAttacker
_0802A174: .4byte gLastPrintedMoves
_0802A178: .4byte gBattlerTarget
_0802A17C: .4byte gCurrMovePos
_0802A180: .4byte gBattleMoves
_0802A184: .4byte gActiveBattler
_0802A188: .4byte gBattleTextBuff1
_0802A18C: .4byte gBattlescriptCurrInstr
_0802A190:
ldr r3, _0802A1BC @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gHitMarker
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 gHitMarker
_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 @ =gBattlerAttacker
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802A394
.align 2, 0
_0802A320: .4byte gBattlerAttacker
_0802A324: .4byte gUnknown_2023BF0
_0802A328: .4byte gBitTable
_0802A32C: .4byte gBattlescriptCurrInstr
_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 @ =gCalledMove
ldr r2, _0802A3AC @ =gBattleMons
lsls r1, r5, 1
ldr r0, _0802A3B0 @ =gBattlerAttacker
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 @ =gCurrMovePos
strb r5, [r0]
ldr r2, _0802A3B8 @ =gHitMarker
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 @ =gBattlescriptCurrInstr
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 gCalledMove
_0802A3AC: .4byte gBattleMons
_0802A3B0: .4byte gBattlerAttacker
_0802A3B4: .4byte gCurrMovePos
_0802A3B8: .4byte gHitMarker
_0802A3BC: .4byte 0xfffffbff
_0802A3C0: .4byte gBattlerTarget
_0802A3C4: .4byte gBattlescriptCurrInstr
thumb_func_end atkA9_trychoosesleeptalkmove
thumb_func_start atkAA_setdestinybond
atkAA_setdestinybond: @ 802A3C8
ldr r1, _0802A3EC @ =gBattleMons
ldr r0, _0802A3F0 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802A3EC: .4byte gBattleMons
_0802A3F0: .4byte gBattlerAttacker
_0802A3F4: .4byte gBattlescriptCurrInstr
thumb_func_end atkAA_setdestinybond
thumb_func_start TrySetDestinyBondToHappen
TrySetDestinyBondToHappen: @ 802A3F8
push {r4,r5,lr}
ldr r0, _0802A448 @ =gBattlerAttacker
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 @ =gHitMarker
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 gBattlerAttacker
_0802A44C: .4byte gBattlerTarget
_0802A450: .4byte gBattleMons
_0802A454: .4byte gHitMarker
thumb_func_end TrySetDestinyBondToHappen
thumb_func_start atkAB_trysetdestinybondtohappen
atkAB_trysetdestinybondtohappen: @ 802A458
push {lr}
bl TrySetDestinyBondToHappen
ldr r1, _0802A46C @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802A46C: .4byte gBattlescriptCurrInstr
thumb_func_end atkAB_trysetdestinybondtohappen
thumb_func_start atkAC_remaininghptopower
atkAC_remaininghptopower: @ 802A470
push {lr}
ldr r2, _0802A4C4 @ =gBattleMons
ldr r0, _0802A4C8 @ =gBattlerAttacker
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 @ =sFlailHpScaleToPowerTable
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 @ =sFlailHpScaleToPowerTable
adds r0, r3, 0x1
adds r0, r1
ldrb r0, [r0]
strh r0, [r2]
ldr r1, _0802A4D4 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802A4C4: .4byte gBattleMons
_0802A4C8: .4byte gBattlerAttacker
_0802A4CC: .4byte sFlailHpScaleToPowerTable
_0802A4D0: .4byte gDynamicBasePower
_0802A4D4: .4byte gBattlescriptCurrInstr
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 @ =gLastMoves
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 @ =gLastMoves
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 BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_0802A630:
ldr r1, _0802A67C @ =gBattlescriptCurrInstr
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 gLastMoves
_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 gBattlescriptCurrInstr
_0802A680:
ldr r3, _0802A6AC @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattleCommunication
mov r0, r8
strb r0, [r6, 0x5]
ldr r5, _0802A728 @ =gBattlerAttacker
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 gBattleCommunication
_0802A728: .4byte gBattlerAttacker
_0802A72C: .4byte gEnemyParty
_0802A730: .4byte gPlayerParty
_0802A734: .4byte gBattleMons
_0802A738: .4byte 0xf7ffffff
_0802A73C:
ldrb r1, [r1]
adds r0, r3, 0
bl RecordAbilityBattle
ldrb r0, [r6, 0x5]
movs r1, 0x1
orrs r0, r1
strb r0, [r6, 0x5]
_0802A74C:
ldr r7, _0802A7C0 @ =gActiveBattler
ldr r0, _0802A7C4 @ =gBattlerAttacker
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 gBattlerAttacker
_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 RecordAbilityBattle
ldr r1, _0802A838 @ =gBattleCommunication
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 @ =gBattlerAttacker
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 gBattleCommunication
_0802A83C: .4byte gBattleMons
_0802A840: .4byte gBattlerPartyIndexes
_0802A844: .4byte gBattlerAttacker
_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 @ =gBattleCommunication
movs r0, 0x4
strb r0, [r1, 0x5]
movs r2, 0x3F
mov r8, r2
ldr r3, _0802A974 @ =gBattleMons
ldr r2, _0802A978 @ =gBattlerAttacker
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 @ =gBattlerAttacker
ldrb r0, [r0]
strb r0, [r4]
add r0, sp, 0x4
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r3, 0x4
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_0802A956:
ldr r1, _0802A990 @ =gBattlescriptCurrInstr
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 gBattleCommunication
_0802A974: .4byte gBattleMons
_0802A978: .4byte gBattlerAttacker
_0802A97C: .4byte 0xf7ffffff
_0802A980: .4byte gActiveBattler
_0802A984: .4byte gBattleTypeFlags
_0802A988: .4byte gAbsentBattlerFlags
_0802A98C: .4byte gBitTable
_0802A990: .4byte gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_0802A9E0:
orrs r2, r3
str r2, [r1]
ldr r1, _0802AA0C @ =gBattleMoveDamage
ldr r0, _0802AA10 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802AA14: .4byte gBattlescriptCurrInstr
thumb_func_end atkAF_cursetarget
thumb_func_start atkB0_trysetspikes
atkB0_trysetspikes: @ 802AA18
push {r4,lr}
ldr r4, _0802AA6C @ =gBattlerAttacker
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 @ =gSpecialStatuses
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802AA70: .4byte gSideTimers
_0802AA74: .4byte gSpecialStatuses
_0802AA78: .4byte gBattlescriptCurrInstr
_0802AA7C:
ldr r1, _0802AA9C @ =gSideStatuses
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802AA96:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802AA9C: .4byte gSideStatuses
_0802AAA0: .4byte gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802AAC8: .4byte gBattleMons
_0802AACC: .4byte gBattlerTarget
_0802AAD0: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 gBattlerAttacker
_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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_0802AB74:
ldr r1, _0802AB88 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattlerAttacker
ldrb r0, [r0]
bl CancelMultiTurnMoves
ldr r1, _0802ABB8 @ =gBattlescriptCurrInstr
ldr r0, _0802ABBC @ =BattleScript_MoveMissedPause
str r0, [r1]
b _0802ACD8
.align 2, 0
_0802ABB0: .4byte gMoveResultFlags
_0802ABB4: .4byte gBattlerAttacker
_0802ABB8: .4byte gBattlescriptCurrInstr
_0802ABBC: .4byte BattleScript_MoveMissedPause
_0802ABC0:
ldr r2, _0802ACE4 @ =gBattleMons
ldr r1, _0802ACE8 @ =gBattlerAttacker
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 @ =gLockedMoves
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802ACEC: .4byte gDisableStructs
_0802ACF0: .4byte gCurrentMove
_0802ACF4: .4byte gLockedMoves
_0802ACF8: .4byte 0xffffefff
_0802ACFC: .4byte gDynamicBasePower
_0802AD00: .4byte gBattleMoves
_0802AD04: .4byte gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, _0802ADA8 @ =BattleScript_MoveMissedPause
str r0, [r1]
b _0802AE04
.align 2, 0
_0802AD98: .4byte gMoveResultFlags
_0802AD9C: .4byte gDisableStructs
_0802ADA0: .4byte gBattlerAttacker
_0802ADA4: .4byte gBattlescriptCurrInstr
_0802ADA8: .4byte BattleScript_MoveMissedPause
_0802ADAC:
ldr r5, _0802AE0C @ =gDisableStructs
ldr r4, _0802AE10 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802AE14: .4byte gDynamicBasePower
_0802AE18: .4byte gBattleMoves
_0802AE1C: .4byte gCurrentMove
_0802AE20: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 gBattlerAttacker
_0802AE64:
ldr r4, _0802AE98 @ =gDynamicBasePower
ldr r2, _0802AE9C @ =gBattleMons
ldr r0, _0802AEA0 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802AEA4: .4byte gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
ldr r0, _0802AF20 @ =BattleScript_HitFromCritCalc
b _0802AF5E
.align 2, 0
_0802AF10: .4byte gBattleMoveDamage
_0802AF14: .4byte gBattleMons
_0802AF18: .4byte gBattlerTarget
_0802AF1C: .4byte gBattlescriptCurrInstr
_0802AF20: .4byte BattleScript_HitFromCritCalc
_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 @ =gBattlescriptCurrInstr
ldr r0, _0802AF4C @ =BattleScript_AlreadyAtFullHp
b _0802AF5E
.align 2, 0
_0802AF40: .4byte gBattleMons
_0802AF44: .4byte gBattlerTarget
_0802AF48: .4byte gBattlescriptCurrInstr
_0802AF4C: .4byte BattleScript_AlreadyAtFullHp
_0802AF50:
ldr r2, _0802AF68 @ =gMoveResultFlags
ldrb r1, [r2]
movs r0, 0xF7
ands r0, r1
strb r0, [r2]
ldr r1, _0802AF6C @ =gBattlescriptCurrInstr
ldr r0, _0802AF70 @ =BattleScript_PresentHealTarget
_0802AF5E:
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802AF68: .4byte gMoveResultFlags
_0802AF6C: .4byte gBattlescriptCurrInstr
_0802AF70: .4byte BattleScript_PresentHealTarget
thumb_func_end atkB7_presentdamagecalculation
thumb_func_start atkB8_setsafeguard
atkB8_setsafeguard: @ 802AF74
push {r4-r7,lr}
ldr r7, _0802AFA8 @ =gBattlerAttacker
ldrb r0, [r7]
bl GetBattlerPosition
ldr r4, _0802AFAC @ =gSideStatuses
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 @ =gBattleCommunication
movs r0, 0
strb r0, [r1, 0x5]
b _0802B000
.align 2, 0
_0802AFA8: .4byte gBattlerAttacker
_0802AFAC: .4byte gSideStatuses
_0802AFB0: .4byte gMoveResultFlags
_0802AFB4: .4byte gBattleCommunication
_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 @ =gBattleCommunication
strb r4, [r0, 0x5]
_0802B000:
ldr r1, _0802B018 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B010: .4byte gSideTimers
_0802B014: .4byte gBattleCommunication
_0802B018: .4byte gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
mov r8, r0
cmp r2, r3
bcs _0802B10C
adds r4, r6, 0
ldr r0, _0802B134 @ =gBattlerAttacker
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 gBattlescriptCurrInstr
_0802B134: .4byte gBattlerAttacker
_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 @ =gMultiHitCounter
ldrb r0, [r0]
cmp r0, 0x1
bne _0802B170
ldr r0, _0802B168 @ =gBattlerAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0802B16C
movs r0, 0x1
b _0802B18A
.align 2, 0
_0802B164: .4byte gMultiHitCounter
_0802B168: .4byte gBattlerAttacker
_0802B16C:
movs r0, 0
b _0802B18A
_0802B170:
ldr r0, _0802B184 @ =gBattlerAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0802B188
movs r0, 0x3
b _0802B18A
.align 2, 0
_0802B184: .4byte gBattlerAttacker
_0802B188:
movs r0, 0x2
_0802B18A:
bl GetBattlerAtPosition
ldr r1, _0802B264 @ =gBattlerTarget
strb r0, [r1]
ldr r0, _0802B268 @ =gChosenActionByBattler
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 @ =gBattlerAttacker
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 @ =gChosenMoveByBattler
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 @ =gCurrMovePos
mov r10, r7
ldr r2, _0802B28C @ =gChosenMovePos
mov r9, r2
ldr r7, _0802B290 @ =gHitMarker
mov r12, r7
ldrb r2, [r0]
cmp r1, r2
bge _0802B22E
ldr r6, _0802B294 @ =gBattlerByTurnOrder
ldr r5, _0802B264 @ =gBattlerTarget
ldr r4, _0802B298 @ =gActionsByTurnOrder
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 @ =gBattlescriptCurrInstr
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 gChosenActionByBattler
_0802B26C: .4byte gBattlerAttacker
_0802B270: .4byte gBattleStruct
_0802B274: .4byte gBattleMons
_0802B278: .4byte gDisableStructs
_0802B27C: .4byte gChosenMoveByBattler
_0802B280: .4byte gBattlersCount
_0802B284: .4byte gCurrentMove
_0802B288: .4byte gCurrMovePos
_0802B28C: .4byte gChosenMovePos
_0802B290: .4byte gHitMarker
_0802B294: .4byte gBattlerByTurnOrder
_0802B298: .4byte gActionsByTurnOrder
_0802B29C: .4byte gBattlescriptCurrInstr
_0802B2A0: .4byte gBattleScripting
_0802B2A4: .4byte 0xfffffbff
_0802B2A8:
ldr r3, _0802B2D0 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattleCommunication
movs r0, 0x2
strb r0, [r1, 0x5]
b _0802B312
.align 2, 0
_0802B2F4: .4byte gBattleWeather
_0802B2F8: .4byte gMoveResultFlags
_0802B2FC: .4byte gBattleCommunication
_0802B300:
movs r0, 0x20
strh r0, [r2]
ldr r1, _0802B320 @ =gBattleCommunication
movs r0, 0x4
strb r0, [r1, 0x5]
ldr r0, _0802B324 @ =gWishFutureKnock
adds r0, 0x28
movs r1, 0x5
strb r1, [r0]
_0802B312:
ldr r1, _0802B328 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802B320: .4byte gBattleCommunication
_0802B324: .4byte gWishFutureKnock
_0802B328: .4byte gBattlescriptCurrInstr
thumb_func_end atkBB_setsunny
thumb_func_start atkBC_maxattackhalvehp
atkBC_maxattackhalvehp: @ 802B32C
push {r4,r5,lr}
ldr r5, _0802B378 @ =gBattleMons
ldr r4, _0802B37C @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802B3A2
.align 2, 0
_0802B378: .4byte gBattleMons
_0802B37C: .4byte gBattlerAttacker
_0802B380: .4byte gBattleMoveDamage
_0802B384: .4byte gBattlescriptCurrInstr
_0802B388:
ldr r3, _0802B3A8 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkBC_maxattackhalvehp
thumb_func_start atkBD_copyfoestats
atkBD_copyfoestats: @ 802B3AC
push {r4-r7,lr}
movs r2, 0
ldr r7, _0802B3E4 @ =gBattlescriptCurrInstr
ldr r6, _0802B3E8 @ =gBattlerAttacker
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 gBattlescriptCurrInstr
_0802B3E8: .4byte gBattlerAttacker
_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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, _0802B484 @ =BattleScript_WrapFree
b _0802B532
.align 2, 0
_0802B464: .4byte gBattleMons
_0802B468: .4byte gBattlerAttacker
_0802B46C: .4byte gBattleScripting
_0802B470: .4byte gBattlerTarget
_0802B474: .4byte 0xffff1fff
_0802B478: .4byte gBattleStruct
_0802B47C: .4byte gBattleTextBuff1
_0802B480: .4byte gBattlescriptCurrInstr
_0802B484: .4byte BattleScript_WrapFree
_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 @ =gBattlescriptCurrInstr
ldr r0, _0802B4C4 @ =BattleScript_LeechSeedFree
b _0802B532
.align 2, 0
_0802B4BC: .4byte gStatuses3
_0802B4C0: .4byte gBattlescriptCurrInstr
_0802B4C4: .4byte BattleScript_LeechSeedFree
_0802B4C8:
adds r0, r2, 0
bl GetBattlerSide
ldr r4, _0802B518 @ =gSideStatuses
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 @ =gBattlescriptCurrInstr
ldr r0, _0802B528 @ =BattleScript_SpikesFree
b _0802B532
.align 2, 0
_0802B518: .4byte gSideStatuses
_0802B51C: .4byte 0x0000ffef
_0802B520: .4byte gSideTimers
_0802B524: .4byte gBattlescriptCurrInstr
_0802B528: .4byte BattleScript_SpikesFree
_0802B52C:
ldr r1, _0802B53C @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
_0802B532:
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802B53C: .4byte gBattlescriptCurrInstr
thumb_func_end atkBE_rapidspinfree
thumb_func_start atkBF_setdefensecurlbit
atkBF_setdefensecurlbit: @ 802B540
ldr r1, _0802B564 @ =gBattleMons
ldr r0, _0802B568 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802B564: .4byte gBattleMons
_0802B568: .4byte gBattlerAttacker
_0802B56C: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =gBattlerAttacker
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 gBattlerAttacker
_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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802B66A
.align 2, 0
_0802B648: .4byte gBattleMoveDamage
_0802B64C: .4byte gBattlescriptCurrInstr
_0802B650:
ldr r3, _0802B674 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkC0_recoverbasedonsunlight
thumb_func_start atkC1_hiddenpowercalc
atkC1_hiddenpowercalc: @ 802B678
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r2, _0802B760 @ =gBattleMons
ldr r0, _0802B764 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802B768: .4byte gDynamicBasePower
_0802B76C: .4byte gBattleStruct
_0802B770: .4byte gBattlescriptCurrInstr
thumb_func_end atkC1_hiddenpowercalc
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 @ =gBattlescriptCurrInstr
mov r8, r0
cmp r1, 0
beq _0802B7BE
adds r3, r6, 0
ldr r0, _0802B7DC @ =gBattlerAttacker
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 gBattlescriptCurrInstr
_0802B7DC: .4byte gBattlerAttacker
_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 @ =gWishFutureKnock
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 @ =gBattlescriptCurrInstr
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 gWishFutureKnock
_0802B824: .4byte gBattlerTarget
_0802B828: .4byte gBattlescriptCurrInstr
_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 @ =gBattlerAttacker
ldrb r1, [r5]
strb r1, [r0]
ldrb r0, [r7]
add r0, r8
movs r1, 0x3
strb r1, [r0]
ldr r4, _0802B8D4 @ =gSideStatuses
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 @ =gProtectStructs
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 @ =gBattleCommunication
mov r1, r10
strb r1, [r0, 0x5]
b _0802B8EE
.align 2, 0
_0802B8CC: .4byte gCurrentMove
_0802B8D0: .4byte gBattlerAttacker
_0802B8D4: .4byte gSideStatuses
_0802B8D8: .4byte gBattleMons
_0802B8DC: .4byte gProtectStructs
_0802B8E0: .4byte 0x00000161
_0802B8E4: .4byte gBattleCommunication
_0802B8E8:
ldr r1, _0802B908 @ =gBattleCommunication
movs r0, 0
strb r0, [r1, 0x5]
_0802B8EE:
ldr r1, _0802B90C @ =gBattlescriptCurrInstr
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 gBattleCommunication
_0802B90C: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802B958: .4byte gEnemyParty
_0802B95C: .4byte gPlayerParty
_0802B960: .4byte gBattleMons
_0802B964: .4byte gBattlerTarget
_0802B968: .4byte gBattlescriptCurrInstr
_0802B96C:
ldr r6, _0802BAA8 @ =gBattleCommunication
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 @ =gBattleCommunication
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 @ =gBattlerAttacker
ldrb r0, [r6]
strb r0, [r1, 0x2]
strb r2, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _0802BAB4 @ =gBattlescriptCurrInstr
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 @ =gProtectStructs
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 gBattleCommunication
_0802BAAC: .4byte gBattleTextBuff1
_0802BAB0: .4byte gBattlerAttacker
_0802BAB4: .4byte gBattlescriptCurrInstr
_0802BAB8: .4byte gBattleMoveDamage
_0802BABC: .4byte gBaseStats
_0802BAC0: .4byte gBattleMoves
_0802BAC4: .4byte gCurrentMove
_0802BAC8: .4byte gBattleMons
_0802BACC: .4byte gBattlerTarget
_0802BAD0: .4byte gProtectStructs
_0802BAD4:
mov r0, r8
cmp r0, 0
beq _0802BAF4
ldr r3, _0802BAF0 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_0802BAF4:
ldr r3, _0802BB1C @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 gBattlerAttacker
_0802BB60:
ldr r2, _0802BB70 @ =gStatuses3
ldr r0, _0802BB74 @ =gBattlerAttacker
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 gBattlerAttacker
_0802BB78:
ldr r2, _0802BB98 @ =gStatuses3
ldr r0, _0802BB9C @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BB98: .4byte gStatuses3
_0802BB9C: .4byte gBattlerAttacker
_0802BBA0: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 gBattlerAttacker
_0802BBE8:
ldr r2, _0802BBFC @ =gStatuses3
ldr r0, _0802BC00 @ =gBattlerAttacker
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 gBattlerAttacker
_0802BC04:
ldr r2, _0802BC24 @ =gStatuses3
ldr r0, _0802BC28 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BC24: .4byte gStatuses3
_0802BC28: .4byte gBattlerAttacker
_0802BC2C: .4byte 0xfffbffff
_0802BC30: .4byte gBattlescriptCurrInstr
thumb_func_end atkC6_clearsemiinvulnerablebit
thumb_func_start atkC7_setminimize
atkC7_setminimize: @ 802BC34
push {lr}
ldr r0, _0802BC64 @ =gHitMarker
ldr r0, [r0]
movs r1, 0x80
lsls r1, 18
ands r0, r1
cmp r0, 0
beq _0802BC58
ldr r2, _0802BC68 @ =gStatuses3
ldr r0, _0802BC6C @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BC64: .4byte gHitMarker
_0802BC68: .4byte gStatuses3
_0802BC6C: .4byte gBattlerAttacker
_0802BC70: .4byte gBattlescriptCurrInstr
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 @ =gBattleCommunication
movs r0, 0x2
strb r0, [r1, 0x5]
b _0802BCB2
.align 2, 0
_0802BC98: .4byte gBattleWeather
_0802BC9C: .4byte gMoveResultFlags
_0802BCA0: .4byte gBattleCommunication
_0802BCA4:
strh r2, [r3]
ldr r0, _0802BCC0 @ =gBattleCommunication
movs r1, 0x5
strb r1, [r0, 0x5]
ldr r0, _0802BCC4 @ =gWishFutureKnock
adds r0, 0x28
strb r1, [r0]
_0802BCB2:
ldr r1, _0802BCC8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BCC0: .4byte gBattleCommunication
_0802BCC4: .4byte gWishFutureKnock
_0802BCC8: .4byte gBattlescriptCurrInstr
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 @ =gBattleCommunication
ldrb r0, [r0, 0x6]
cmp r0, 0x1
beq _0802BD20
ldr r3, _0802BD1C @ =gBattlescriptCurrInstr
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 gBattleCommunication
_0802BD1C: .4byte gBattlescriptCurrInstr
_0802BD20:
ldr r4, _0802BD54 @ =gActiveBattler
ldr r0, _0802BD58 @ =gBattlerAttacker
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 BtlController_EmitHealthBarUpdate
ldrb r0, [r4]
bl MarkBattlerForControllerExec
ldr r1, _0802BD64 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802BD4C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BD54: .4byte gActiveBattler
_0802BD58: .4byte gBattlerAttacker
_0802BD5C: .4byte gBattleMoveDamage
_0802BD60: .4byte 0x00007fff
_0802BD64: .4byte gBattlescriptCurrInstr
thumb_func_end atkC9_jumpifattackandspecialattackcannotfall
thumb_func_start atkCA_setforcedtarget
atkCA_setforcedtarget: @ 802BD68
push {r4,r5,lr}
ldr r4, _0802BDA8 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802BDA8: .4byte gBattlerAttacker
_0802BDAC: .4byte gSideTimers
_0802BDB0: .4byte gBattlescriptCurrInstr
thumb_func_end atkCA_setforcedtarget
thumb_func_start atkCB_setcharge
atkCB_setcharge: @ 802BDB4
push {r4,lr}
ldr r0, _0802BE08 @ =gStatuses3
ldr r3, _0802BE0C @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BE08: .4byte gStatuses3
_0802BE0C: .4byte gBattlerAttacker
_0802BE10: .4byte gDisableStructs
_0802BE14: .4byte gBattlescriptCurrInstr
thumb_func_end atkCB_setcharge
thumb_func_start atkCC_callterrainattack
atkCC_callterrainattack: @ 802BE18
push {r4,lr}
ldr r2, _0802BE68 @ =gHitMarker
ldr r0, [r2]
ldr r1, _0802BE6C @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, _0802BE70 @ =gCurrentMove
ldr r1, _0802BE74 @ =sNaturePowerMoves
ldr r0, _0802BE78 @ =gBattleTerrain
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 @ =gBattleScriptsForMoveEffects
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BE68: .4byte gHitMarker
_0802BE6C: .4byte 0xfffffbff
_0802BE70: .4byte gCurrentMove
_0802BE74: .4byte sNaturePowerMoves
_0802BE78: .4byte gBattleTerrain
_0802BE7C: .4byte gBattlerTarget
_0802BE80: .4byte gBattleScriptsForMoveEffects
_0802BE84: .4byte gBattleMoves
_0802BE88: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
b _0802BF02
.align 2, 0
_0802BED8: .4byte gBattleMons
_0802BEDC: .4byte gBattlerAttacker
_0802BEE0: .4byte gBattlescriptCurrInstr
_0802BEE4: .4byte gActiveBattler
_0802BEE8:
ldr r3, _0802BF0C @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_0802BF54:
orrs r1, r2
str r1, [r0]
ldr r1, _0802BF64 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802BF60:
pop {r0}
bx r0
.align 2, 0
_0802BF64: .4byte gBattlescriptCurrInstr
thumb_func_end atkCE_settorment
thumb_func_start atkCF_jumpifnodamage
atkCF_jumpifnodamage: @ 802BF68
push {lr}
ldr r2, _0802BF94 @ =gProtectStructs
ldr r0, _0802BF98 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802BFBA
.align 2, 0
_0802BF94: .4byte gProtectStructs
_0802BF98: .4byte gBattlerAttacker
_0802BF9C: .4byte gBattlescriptCurrInstr
_0802BFA0:
ldr r3, _0802BFC0 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C02E
.align 2, 0
_0802C008: .4byte gDisableStructs
_0802C00C: .4byte gBattlerTarget
_0802C010: .4byte gBattlescriptCurrInstr
_0802C014:
ldr r3, _0802C034 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkD0_settaunt
thumb_func_start atkD1_trysethelpinghand
atkD1_trysethelpinghand: @ 802C038
push {r4,lr}
ldr r4, _0802C0A0 @ =gBattlerAttacker
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 @ =gProtectStructs
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C0D6
.align 2, 0
_0802C0A0: .4byte gBattlerAttacker
_0802C0A4: .4byte gBattlerTarget
_0802C0A8: .4byte gBattleTypeFlags
_0802C0AC: .4byte gAbsentBattlerFlags
_0802C0B0: .4byte gBitTable
_0802C0B4: .4byte gProtectStructs
_0802C0B8: .4byte gBattlescriptCurrInstr
_0802C0BC:
ldr r3, _0802C0DC @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkD1_trysethelpinghand
thumb_func_start atkD2_tryswapitems
atkD2_tryswapitems: @ 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 @ =gBattlerAttacker
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 @ =gBattlerAttacker
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 @ =gWishFutureKnock
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802C204: .4byte 0x00000902
_0802C208: .4byte gTrainerBattleOpponent_A
_0802C20C: .4byte gBattlerTarget
_0802C210: .4byte gWishFutureKnock
_0802C214: .4byte gBitTable
_0802C218: .4byte gBattlerPartyIndexes
_0802C21C: .4byte gBattleMons
_0802C220: .4byte gBattlescriptCurrInstr
_0802C224:
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x3C
bne _0802C258
ldr r1, _0802C24C @ =gBattlescriptCurrInstr
ldr r0, _0802C250 @ =BattleScript_StickyHoldActivates
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 RecordAbilityBattle
b _0802C37A
.align 2, 0
_0802C24C: .4byte gBattlescriptCurrInstr
_0802C250: .4byte BattleScript_StickyHoldActivates
_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 @ =gBattlerAttacker
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 @ =gBattlerAttacker
ldrb r0, [r3]
strb r0, [r4]
str r6, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl BtlController_EmitSetMonData
ldr r1, _0802C348 @ =gBattlerAttacker
ldrb r0, [r1]
bl MarkBattlerForControllerExec
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 BtlController_EmitSetMonData
ldrb r0, [r7]
bl MarkBattlerForControllerExec
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 @ =gBattlerAttacker
ldrb r0, [r1]
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
strb r3, [r0]
ldr r2, _0802C348 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 @ =gBattleCommunication
movs r0, 0x2
b _0802C378
.align 2, 0
_0802C344: .4byte gBattleStruct
_0802C348: .4byte gBattlerAttacker
_0802C34C: .4byte gActiveBattler
_0802C350: .4byte gBattlescriptCurrInstr
_0802C354: .4byte gBattleTextBuff1
_0802C358: .4byte gBattleTextBuff2
_0802C35C: .4byte gBattleCommunication
_0802C360:
ldrh r0, [r6]
cmp r0, 0
beq _0802C374
ldr r0, _0802C370 @ =gBattleCommunication
movs r1, 0
strb r1, [r0, 0x5]
b _0802C37A
.align 2, 0
_0802C370: .4byte gBattleCommunication
_0802C374:
ldr r1, _0802C38C @ =gBattleCommunication
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 gBattleCommunication
thumb_func_end atkD2_tryswapitems
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C3FE
.align 2, 0
_0802C3D0: .4byte gBattleMons
_0802C3D4: .4byte gBattlerTarget
_0802C3D8: .4byte gBattlerAttacker
_0802C3DC: .4byte gLastUsedAbility
_0802C3E0: .4byte gBattlescriptCurrInstr
_0802C3E4:
ldr r3, _0802C404 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkD3_trycopyability
thumb_func_start atkD4_trywish
atkD4_trywish: @ 802C408
push {r4-r7,lr}
ldr r7, _0802C41C @ =gBattlescriptCurrInstr
ldr r2, [r7]
ldrb r3, [r2, 0x1]
cmp r3, 0
beq _0802C420
cmp r3, 0x1
beq _0802C458
b _0802C4D4
.align 2, 0
_0802C41C: .4byte gBattlescriptCurrInstr
_0802C420:
ldr r1, _0802C44C @ =gWishFutureKnock
ldr r4, _0802C450 @ =gBattlerAttacker
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 gWishFutureKnock
_0802C450: .4byte gBattlerAttacker
_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 @ =gWishFutureKnock
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 gWishFutureKnock
_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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802C51C: .4byte gBattlescriptCurrInstr
_0802C520:
orrs r1, r3
str r1, [r2]
ldr r1, _0802C530 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C52C:
pop {r0}
bx r0
.align 2, 0
_0802C530: .4byte gBattlescriptCurrInstr
thumb_func_end atkD5_trysetroots
thumb_func_start atkD6_doubledamagedealtifdamaged
atkD6_doubledamagedealtifdamaged: @ 802C534
push {lr}
ldr r3, _0802C580 @ =gProtectStructs
ldr r0, _0802C584 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802C580: .4byte gProtectStructs
_0802C584: .4byte gBattlerAttacker
_0802C588: .4byte gBattlerTarget
_0802C58C: .4byte gBattleScripting
_0802C590: .4byte gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_0802C5E8:
movs r0, 0x80
lsls r0, 5
orrs r2, r0
str r2, [r4]
ldr r1, _0802C600 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C5F8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C600: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802C64C: .4byte gBattlescriptCurrInstr
_0802C650:
ldr r2, _0802C668 @ =gBattleMoveDamage
ldrh r0, [r3, 0x28]
ldrh r1, [r1, 0x28]
subs r0, r1
str r0, [r2]
ldr r1, _0802C66C @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C662:
pop {r0}
bx r0
.align 2, 0
_0802C668: .4byte gBattleMoveDamage
_0802C66C: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802C6D0: .4byte gBattlescriptCurrInstr
thumb_func_end atkD9_scaledamagebyhealthratio
thumb_func_start atkDA_tryswapabilities
atkDA_tryswapabilities: @ 802C6D4
push {r4-r6,lr}
ldr r5, _0802C738 @ =gBattleMons
ldr r0, _0802C73C @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802C740: .4byte gBattlerTarget
_0802C744: .4byte gMoveResultFlags
_0802C748: .4byte gBattlescriptCurrInstr
_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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C762:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802C768: .4byte gBattlescriptCurrInstr
thumb_func_end atkDA_tryswapabilities
thumb_func_start atkDB_tryimprison
atkDB_tryimprison: @ 802C76C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r1, _0802C78C @ =gStatuses3
ldr r4, _0802C790 @ =gBattlerAttacker
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 gBattlerAttacker
_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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C836
.align 2, 0
_0802C7B4: .4byte gStatuses3
_0802C7B8: .4byte gBattlescriptCurrInstr
_0802C7BC:
adds r0, r2, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrb r0, [r4]
bl PressurePPLoseOnUsingImprison
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 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802C868: .4byte gBattleMons
_0802C86C: .4byte gBattlersCount
_0802C870: .4byte gBattlescriptCurrInstr
thumb_func_end atkDB_tryimprison
thumb_func_start atkDC_trysetgrudge
atkDC_trysetgrudge: @ 802C874
push {lr}
ldr r1, _0802C8AC @ =gStatuses3
ldr r0, _0802C8B0 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802C8B4: .4byte gBattlescriptCurrInstr
_0802C8B8:
orrs r1, r3
str r1, [r2]
ldr r1, _0802C8C8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C8C4:
pop {r0}
bx r0
.align 2, 0
_0802C8C8: .4byte gBattlescriptCurrInstr
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 @ =sWeightToDamageTable
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 sWeightToDamageTable
_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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkDD_weightdamagecalculation
thumb_func_start atkDE_assistattackselect
atkDE_assistattackselect: @ 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 @ =gBattlerAttacker
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 @ =gBattlerAttacker
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 @ =sMovesForbiddenToCopy
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 @ =gHitMarker
ldr r0, [r2]
ldr r1, _0802CAA4 @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, _0802CAA8 @ =gCalledMove
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802CACE
.align 2, 0
_0802CA84: .4byte gBattleStruct
_0802CA88: .4byte gBattlerAttacker
_0802CA8C: .4byte gPlayerParty
_0802CA90: .4byte gEnemyParty
_0802CA94: .4byte gBattlerPartyIndexes
_0802CA98: .4byte 0x0000ffff
_0802CA9C: .4byte sMovesForbiddenToCopy
_0802CAA0: .4byte gHitMarker
_0802CAA4: .4byte 0xfffffbff
_0802CAA8: .4byte gCalledMove
_0802CAAC: .4byte gBattlerTarget
_0802CAB0: .4byte gBattlescriptCurrInstr
_0802CAB4:
ldr r3, _0802CAE0 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkDE_assistattackselect
thumb_func_start atkDF_trysetmagiccoat
atkDF_trysetmagiccoat: @ 802CAE4
push {lr}
ldr r1, _0802CB2C @ =gBattlerTarget
ldr r3, _0802CB30 @ =gBattlerAttacker
ldrb r0, [r3]
strb r0, [r1]
ldr r2, _0802CB34 @ =gSpecialStatuses
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 @ =gCurrentTurnActionNumber
ldrb r1, [r0]
ldr r0, _0802CB3C @ =gBattlersCount
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _0802CB44
ldr r3, _0802CB40 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802CB34: .4byte gSpecialStatuses
_0802CB38: .4byte gCurrentTurnActionNumber
_0802CB3C: .4byte gBattlersCount
_0802CB40: .4byte gBattlescriptCurrInstr
_0802CB44:
ldr r0, _0802CB60 @ =gProtectStructs
ldrb r1, [r3]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
movs r2, 0x10
orrs r0, r2
strb r0, [r1]
ldr r1, _0802CB64 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CB5C:
pop {r0}
bx r0
.align 2, 0
_0802CB60: .4byte gProtectStructs
_0802CB64: .4byte gBattlescriptCurrInstr
thumb_func_end atkDF_trysetmagiccoat
thumb_func_start atkE0_trysetsnatch
atkE0_trysetsnatch: @ 802CB68
push {lr}
ldr r2, _0802CBAC @ =gSpecialStatuses
ldr r3, _0802CBB0 @ =gBattlerAttacker
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 @ =gCurrentTurnActionNumber
ldrb r1, [r0]
ldr r0, _0802CBB8 @ =gBattlersCount
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _0802CBC0
ldr r3, _0802CBBC @ =gBattlescriptCurrInstr
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 gSpecialStatuses
_0802CBB0: .4byte gBattlerAttacker
_0802CBB4: .4byte gCurrentTurnActionNumber
_0802CBB8: .4byte gBattlersCount
_0802CBBC: .4byte gBattlescriptCurrInstr
_0802CBC0:
ldr r0, _0802CBDC @ =gProtectStructs
ldrb r1, [r3]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
ldr r1, _0802CBE0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CBD6:
pop {r0}
bx r0
.align 2, 0
_0802CBDC: .4byte gProtectStructs
_0802CBE0: .4byte gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_0802CCAC:
ldr r1, _0802CCBC @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CCB4:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802CCBC: .4byte gBattlescriptCurrInstr
thumb_func_end atkE1_trygetintimidatetarget
thumb_func_start atkE2_switchoutabilities
atkE2_switchoutabilities: @ 802CCC0
push {r4-r6,lr}
sub sp, 0x4
ldr r5, _0802CD28 @ =gBattlescriptCurrInstr
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl GetBattlerForBattleScript
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 BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_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 gBattlescriptCurrInstr
_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 @ =gBattlescriptCurrInstr
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl GetBattlerForBattleScript
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 gBattlescriptCurrInstr
_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 @ =gBattleTerrain
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 gBattleTerrain
_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 @ =gBattleCommunication
movs r0, 0x2
b _0802CE30
.align 2, 0
_0802CDD4: .4byte gBattleCommunication
_0802CDD8:
ldr r1, _0802CDE0 @ =gBattleCommunication
movs r0, 0x1
b _0802CE30
.align 2, 0
_0802CDE0: .4byte gBattleCommunication
_0802CDE4:
ldr r1, _0802CDEC @ =gBattleCommunication
movs r0, 0x1B
b _0802CE30
.align 2, 0
_0802CDEC: .4byte gBattleCommunication
_0802CDF0:
ldr r1, _0802CDF8 @ =gBattleCommunication
movs r0, 0x17
b _0802CE30
.align 2, 0
_0802CDF8: .4byte gBattleCommunication
_0802CDFC:
ldr r1, _0802CE04 @ =gBattleCommunication
movs r0, 0x16
b _0802CE30
.align 2, 0
_0802CE04: .4byte gBattleCommunication
_0802CE08:
ldr r1, _0802CE10 @ =gBattleCommunication
movs r0, 0x18
b _0802CE30
.align 2, 0
_0802CE10: .4byte gBattleCommunication
_0802CE14:
ldr r1, _0802CE1C @ =gBattleCommunication
movs r0, 0x7
b _0802CE30
.align 2, 0
_0802CE1C: .4byte gBattleCommunication
_0802CE20:
ldr r1, _0802CE28 @ =gBattleCommunication
movs r0, 0x8
b _0802CE30
.align 2, 0
_0802CE28: .4byte gBattleCommunication
_0802CE2C:
ldr r1, _0802CE40 @ =gBattleCommunication
movs r0, 0x5
_0802CE30:
strb r0, [r1, 0x3]
ldr r1, _0802CE44 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802CE40: .4byte gBattleCommunication
_0802CE44: .4byte gBattlescriptCurrInstr
thumb_func_end atkE4_getsecretpowereffect
thumb_func_start atkE5_pickup
atkE5_pickup: @ 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 @ =sPickupItems
b _0802CEF0
.align 2, 0
_0802CEE4: .4byte sPickupItems
_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 @ =sPickupItems
adds r2, r1
movs r1, 0xC
bl SetMonData
_0802CF0A:
adds r7, r4, 0
cmp r7, 0x5
ble _0802CE54
ldr r1, _0802CF2C @ =gBattlescriptCurrInstr
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 sPickupItems
_0802CF2C: .4byte gBattlescriptCurrInstr
thumb_func_end atkE5_pickup
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 BtlController_EmitBattleAnimation
ldrb r0, [r4]
bl MarkBattlerForControllerExec
ldr r1, _0802CF94 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkE6_docastformchangeanimation
thumb_func_start atkE7_trycastformdatachange
atkE7_trycastformdatachange: @ 802CF98
push {r4,lr}
ldr r1, _0802CFC8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r0, _0802CFCC @ =gBattleScripting
ldrb r0, [r0, 0x17]
bl CastformDataTypeChange
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _0802CFC2
ldr r0, _0802CFD0 @ =BattleScript_CastformChange
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 gBattlescriptCurrInstr
_0802CFCC: .4byte gBattleScripting
_0802CFD0: .4byte BattleScript_CastformChange
_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 @ =gBattlerAttacker
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 @ =gBattleCommunication
strb r4, [r0, 0x5]
b _0802D050
.align 2, 0
_0802D014: .4byte gBattleMoves
_0802D018: .4byte gCurrentMove
_0802D01C: .4byte gStatuses3
_0802D020: .4byte gBattlerAttacker
_0802D024: .4byte gBattleCommunication
_0802D028:
ldr r1, _0802D05C @ =gStatuses3
ldr r0, _0802D060 @ =gBattlerAttacker
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 @ =gBattleCommunication
movs r0, 0x1
strb r0, [r1, 0x5]
movs r4, 0x1
_0802D04C:
cmp r4, 0
beq _0802D06C
_0802D050:
ldr r1, _0802D068 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D086
.align 2, 0
_0802D05C: .4byte gStatuses3
_0802D060: .4byte gBattlerAttacker
_0802D064: .4byte gBattleCommunication
_0802D068: .4byte gBattlescriptCurrInstr
_0802D06C:
ldr r3, _0802D08C @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_0802D140: .4byte gBattleStruct
_0802D144: .4byte gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =gLastUsedItem
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 BtlController_EmitSetMonData
ldrb r0, [r7]
bl MarkBattlerForControllerExec
ldr r1, _0802D1C4 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D1E2
.align 2, 0
_0802D1B0: .4byte gActiveBattler
_0802D1B4: .4byte gBattlerAttacker
_0802D1B8: .4byte gBattleStruct
_0802D1BC: .4byte gBattleMons
_0802D1C0: .4byte gLastUsedItem
_0802D1C4: .4byte gBattlescriptCurrInstr
_0802D1C8:
ldr r3, _0802D1EC @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
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 @ =gBattlerAttacker
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 @ =sTerrainToType
ldr r4, _0802D26C @ =gBattleTerrain
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D292
.align 2, 0
_0802D260: .4byte gBattleMons
_0802D264: .4byte gBattlerAttacker
_0802D268: .4byte sTerrainToType
_0802D26C: .4byte gBattleTerrain
_0802D270: .4byte gBattleTextBuff1
_0802D274: .4byte gBattlescriptCurrInstr
_0802D278:
ldr r3, _0802D29C @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkEB_settypetoterrain
thumb_func_start atkEC_pursuitrelated
atkEC_pursuitrelated: @ 802D2A0
push {r4-r6,lr}
ldr r5, _0802D314 @ =gBattlerAttacker
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 @ =gChosenActionByBattler
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
bne _0802D340
ldr r1, _0802D32C @ =gChosenMoveByBattler
lsls r0, r3, 1
adds r0, r1
ldrh r2, [r0]
cmp r2, 0xE4
bne _0802D340
ldr r0, _0802D330 @ =gActionsByTurnOrder
adds r0, r3, r0
movs r1, 0xB
strb r1, [r0]
ldr r0, _0802D334 @ =gCurrentMove
strh r2, [r0]
ldr r1, _0802D338 @ =gBattlescriptCurrInstr
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 gBattlerAttacker
_0802D318: .4byte gActiveBattler
_0802D31C: .4byte gBattleTypeFlags
_0802D320: .4byte gAbsentBattlerFlags
_0802D324: .4byte gBitTable
_0802D328: .4byte gChosenActionByBattler
_0802D32C: .4byte gChosenMoveByBattler
_0802D330: .4byte gActionsByTurnOrder
_0802D334: .4byte gCurrentMove
_0802D338: .4byte gBattlescriptCurrInstr
_0802D33C: .4byte gBattleScripting
_0802D340:
ldr r3, _0802D360 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkEC_pursuitrelated
thumb_func_start atkED_snatchsetbattlers
atkED_snatchsetbattlers: @ 802D364
push {r4,lr}
ldr r1, _0802D388 @ =gEffectBattler
ldr r3, _0802D38C @ =gBattlerAttacker
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 gEffectBattler
_0802D38C: .4byte gBattlerAttacker
_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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D3B0: .4byte gBattleScripting
_0802D3B4: .4byte gBattlescriptCurrInstr
thumb_func_end atkED_snatchsetbattlers
thumb_func_start atkEE_removelightscreenreflect
atkEE_removelightscreenreflect: @ 802D3B8
push {r4,lr}
ldr r0, _0802D400 @ =gBattlerAttacker
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 @ =gSideStatuses
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 gBattlerAttacker
_0802D404: .4byte gSideTimers
_0802D408: .4byte gSideStatuses
_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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D42C: .4byte gBattleScripting
_0802D430: .4byte gBattlescriptCurrInstr
thumb_func_end atkEE_removelightscreenreflect
thumb_func_start atkEF_handleballthrow
atkEF_handleballthrow: @ 802D434
push {r4-r6,lr}
movs r4, 0
ldr r0, _0802D474 @ =gBattleControllerExecFlags
ldr r0, [r0]
cmp r0, 0
beq _0802D442
b _0802D7EE
_0802D442:
ldr r5, _0802D478 @ =gActiveBattler
ldr r0, _0802D47C @ =gBattlerAttacker
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 BtlController_EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBattlerForControllerExec
ldr r1, _0802D488 @ =gBattlescriptCurrInstr
ldr r0, _0802D48C @ =BattleScript_GhostBallDodge
b _0802D7EC
.align 2, 0
_0802D474: .4byte gBattleControllerExecFlags
_0802D478: .4byte gActiveBattler
_0802D47C: .4byte gBattlerAttacker
_0802D480: .4byte gBattlerTarget
_0802D484: .4byte gBattleTypeFlags
_0802D488: .4byte gBattlescriptCurrInstr
_0802D48C: .4byte BattleScript_GhostBallDodge
_0802D490:
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0802D4B4
movs r0, 0
movs r1, 0x5
bl BtlController_EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBattlerForControllerExec
ldr r1, _0802D4AC @ =gBattlescriptCurrInstr
ldr r0, _0802D4B0 @ =BattleScript_TrainerBallBlock
b _0802D7EC
.align 2, 0
_0802D4AC: .4byte gBattlescriptCurrInstr
_0802D4B0: .4byte BattleScript_TrainerBallBlock
_0802D4B4:
movs r0, 0x81
lsls r0, 9
ands r1, r0
cmp r1, 0
beq _0802D4DC
movs r0, 0
movs r1, 0x4
bl BtlController_EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBattlerForControllerExec
ldr r1, _0802D4D4 @ =gBattlescriptCurrInstr
ldr r0, _0802D4D8 @ =gUnknown_81D9A88
b _0802D7EC
.align 2, 0
_0802D4D4: .4byte gBattlescriptCurrInstr
_0802D4D8: .4byte gUnknown_81D9A88
_0802D4DC:
ldr r0, _0802D500 @ =gLastUsedItem
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 gLastUsedItem
_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 @ =gLastUsedItem
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 gLastUsedItem
_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 GetCurrentMapType
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 @ =sBallCatchBonuses
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 @ =gLastUsedItem
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 sBallCatchBonuses
_0802D698: .4byte gBattleMons
_0802D69C: .4byte gBattlerTarget
_0802D6A0: .4byte gLastUsedItem
_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 BtlController_EmitBallThrowAnim
ldr r0, _0802D704 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBattlerForControllerExec
ldr r1, _0802D708 @ =gBattlescriptCurrInstr
ldr r0, _0802D70C @ =BattleScript_SuccessBallThrow
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 @ =gLastUsedItem
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 gBattlescriptCurrInstr
_0802D70C: .4byte BattleScript_SuccessBallThrow
_0802D710: .4byte gBattlerPartyIndexes
_0802D714: .4byte gBattlerTarget
_0802D718: .4byte gEnemyParty
_0802D71C: .4byte gLastUsedItem
_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 @ =gLastUsedItem
ldrh r0, [r5]
cmp r0, 0x1
bne _0802D76C
movs r4, 0x4
_0802D76C:
movs r0, 0
adds r1, r4, 0
bl BtlController_EmitBallThrowAnim
ldr r0, _0802D7BC @ =gActiveBattler
ldrb r0, [r0]
bl MarkBattlerForControllerExec
cmp r4, 0x4
bne _0802D7E4
ldr r1, _0802D7C0 @ =gBattlescriptCurrInstr
ldr r0, _0802D7C4 @ =BattleScript_SuccessBallThrow
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 @ =gBattleCommunication
movs r0, 0
strb r0, [r1, 0x5]
b _0802D7EE
.align 2, 0
_0802D7B8: .4byte gLastUsedItem
_0802D7BC: .4byte gActiveBattler
_0802D7C0: .4byte gBattlescriptCurrInstr
_0802D7C4: .4byte BattleScript_SuccessBallThrow
_0802D7C8: .4byte gBattlerPartyIndexes
_0802D7CC: .4byte gBattlerTarget
_0802D7D0: .4byte gEnemyParty
_0802D7D4: .4byte gBattleCommunication
_0802D7D8:
ldr r1, _0802D7E0 @ =gBattleCommunication
movs r0, 0x1
strb r0, [r1, 0x5]
b _0802D7EE
.align 2, 0
_0802D7E0: .4byte gBattleCommunication
_0802D7E4:
ldr r0, _0802D7F4 @ =gBattleCommunication
strb r4, [r0, 0x5]
ldr r1, _0802D7F8 @ =gBattlescriptCurrInstr
ldr r0, _0802D7FC @ =BattleScript_ShakeBallThrow
_0802D7EC:
str r0, [r1]
_0802D7EE:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802D7F4: .4byte gBattleCommunication
_0802D7F8: .4byte gBattlescriptCurrInstr
_0802D7FC: .4byte BattleScript_ShakeBallThrow
thumb_func_end atkEF_handleballthrow
thumb_func_start atkF0_givecaughtmon
atkF0_givecaughtmon: @ 802D800
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0802D870 @ =gBattlerPartyIndexes
mov r9, r0
ldr r5, _0802D874 @ =gBattlerAttacker
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 @ =gBattleCommunication
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 gBattlerAttacker
_0802D878: .4byte gEnemyParty
_0802D87C: .4byte gBattleCommunication
_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 @ =gBattleCommunication
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 @ =gBattleCommunication
ldrb r0, [r1, 0x5]
adds r0, 0x1
strb r0, [r1, 0x5]
_0802D8EA:
ldr r2, _0802D944 @ =gBattleResults
ldr r3, _0802D948 @ =gBattleMons
ldr r0, _0802D94C @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
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 gBattleCommunication
_0802D940: .4byte 0x00000834
_0802D944: .4byte gBattleResults
_0802D948: .4byte gBattleMons
_0802D94C: .4byte gBattlerAttacker
_0802D950: .4byte gBattlerPartyIndexes
_0802D954: .4byte gEnemyParty
_0802D958: .4byte gBattlescriptCurrInstr
thumb_func_end atkF0_givecaughtmon
thumb_func_start atkF1_trysetcaughtmondexflags
atkF1_trysetcaughtmondexflags: @ 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 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
_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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802D9CE:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802D9D4: .4byte gBattlescriptCurrInstr
thumb_func_end atkF1_trysetcaughtmondexflags
thumb_func_start atkF2_displaydexinfo
atkF2_displaydexinfo: @ 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 @ =gBattleCommunication
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 gBattleCommunication
_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 @ =gBattleCommunication
strb r0, [r1, 0x1]
b _0802DB36
.align 2, 0
_0802DA5C: .4byte gPaletteFade
_0802DA60: .4byte gBattleCommunication
_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 @ =BattleMainCB2
cmp r1, r0
bne _0802DB6C
ldr r2, _0802DAB8 @ =gTasks
ldr r4, _0802DABC @ =gBattleCommunication
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 @ =VBlankCB_Battle
bl SetVBlankCallback
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _0802DB6C
.align 2, 0
_0802DAAC: .4byte gPaletteFade
_0802DAB0: .4byte gMain
_0802DAB4: .4byte BattleMainCB2
_0802DAB8: .4byte gTasks
_0802DABC: .4byte gBattleCommunication
_0802DAC0: .4byte 0x05006000
_0802DAC4: .4byte VBlankCB_Battle
_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 @ =gBattleCommunication
_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 gBattleCommunication
_0802DB58:
ldr r0, _0802DB74 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0802DB6C
ldr r1, _0802DB78 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkF2_displaydexinfo
thumb_func_start HandleBattleWindow
HandleBattleWindow: @ 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 HandleBattleWindow
thumb_func_start BattleCreateYesNoCursorAt
BattleCreateYesNoCursorAt: @ 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 @ =gBattleCommunication
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 gBattleCommunication
thumb_func_end BattleCreateYesNoCursorAt
thumb_func_start BattleDestroyYesNoCursorAt
BattleDestroyYesNoCursorAt: @ 802DCF8
push {lr}
sub sp, 0x10
add r0, sp, 0xC
movs r1, 0x20
strh r1, [r0]
strh r1, [r0, 0x2]
ldr r0, _0802DD34 @ =gBattleCommunication
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 gBattleCommunication
thumb_func_end BattleDestroyYesNoCursorAt
thumb_func_start atkF3_trygivecaughtmonnick
atkF3_trygivecaughtmonnick: @ 802DD38
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r0, _0802DD5C @ =gBattleCommunication
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 gBattleCommunication
_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 HandleBattleWindow
ldr r0, _0802DDA0 @ =gText_BattleYesNoChoice
movs r1, 0xE
bl BattlePutTextOnWindow
ldr r1, _0802DDA4 @ =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
strb r4, [r1, 0x1]
bl BattleCreateYesNoCursorAt
b _0802DFA6
.align 2, 0
_0802DDA0: .4byte gText_BattleYesNoChoice
_0802DDA4: .4byte gBattleCommunication
_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 BattleDestroyYesNoCursorAt
movs r0, 0
strb r0, [r4, 0x1]
bl BattleCreateYesNoCursorAt
_0802DDCC:
ldr r0, _0802DE1C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DDF2
ldr r4, _0802DE20 @ =gBattleCommunication
ldrb r0, [r4, 0x1]
cmp r0, 0
bne _0802DDF2
movs r0, 0x5
bl PlaySE
bl BattleDestroyYesNoCursorAt
movs r0, 0x1
strb r0, [r4, 0x1]
bl BattleCreateYesNoCursorAt
_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 @ =gBattleCommunication
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 gBattleCommunication
_0802DE24:
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0802DE2E
b _0802DFA6
_0802DE2E:
movs r0, 0x5
bl PlaySE
ldr r1, _0802DE3C @ =gBattleCommunication
_0802DE36:
movs r0, 0x4
strb r0, [r1]
b _0802DFA6
.align 2, 0
_0802DE3C: .4byte gBattleCommunication
_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 @ =gBattlerAttacker
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 @ =BattleMainCB2
str r0, [sp, 0x4]
movs r0, 0x2
adds r2, r6, 0
adds r3, r5, 0
bl DoNamingScreen
ldr r1, _0802DF14 @ =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0802DFA6
.align 2, 0
_0802DEFC: .4byte gPaletteFade
_0802DF00: .4byte gBattlerPartyIndexes
_0802DF04: .4byte gBattlerAttacker
_0802DF08: .4byte gEnemyParty
_0802DF0C: .4byte gBattleStruct
_0802DF10: .4byte BattleMainCB2
_0802DF14: .4byte gBattleCommunication
_0802DF18:
ldr r0, _0802DF54 @ =gMain
ldr r1, [r0, 0x4]
ldr r0, _0802DF58 @ =BattleMainCB2
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 @ =gBattlerAttacker
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 BattleMainCB2
_0802DF5C: .4byte gPaletteFade
_0802DF60: .4byte gBattlerPartyIndexes
_0802DF64: .4byte gBattlerAttacker
_0802DF68: .4byte gEnemyParty
_0802DF6C: .4byte gBattleStruct
_0802DF70:
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
bne _0802DF8C
ldr r1, _0802DF88 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802DFA6
.align 2, 0
_0802DF88: .4byte gBattlescriptCurrInstr
_0802DF8C:
ldr r3, _0802DFB8 @ =gBattlescriptCurrInstr
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 gBattlescriptCurrInstr
thumb_func_end atkF3_trygivecaughtmonnick
thumb_func_start atkF4_subattackerhpbydmg
atkF4_subattackerhpbydmg: @ 802DFBC
ldr r2, _0802DFDC @ =gBattleMons
ldr r0, _0802DFE0 @ =gBattlerAttacker
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 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802DFDC: .4byte gBattleMons
_0802DFE0: .4byte gBattlerAttacker
_0802DFE4: .4byte gBattleMoveDamage
_0802DFE8: .4byte gBattlescriptCurrInstr
thumb_func_end atkF4_subattackerhpbydmg
thumb_func_start atkF5_removeattackerstatus1
atkF5_removeattackerstatus1: @ 802DFEC
ldr r1, _0802E008 @ =gBattleMons
ldr r0, _0802E00C @ =gBattlerAttacker
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x4C
adds r0, r1
movs r1, 0
str r1, [r0]
ldr r1, _0802E010 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802E008: .4byte gBattleMons
_0802E00C: .4byte gBattlerAttacker
_0802E010: .4byte gBattlescriptCurrInstr
thumb_func_end atkF5_removeattackerstatus1
thumb_func_start atkF6_finishaction
atkF6_finishaction: @ 802E014
ldr r1, _0802E01C @ =gCurrentActionFuncId
movs r0, 0xC
strb r0, [r1]
bx lr
.align 2, 0
_0802E01C: .4byte gCurrentActionFuncId
thumb_func_end atkF6_finishaction
thumb_func_start atkF7_finishturn
atkF7_finishturn: @ 802E020
ldr r1, _0802E030 @ =gCurrentActionFuncId
movs r0, 0xC
strb r0, [r1]
ldr r1, _0802E034 @ =gCurrentTurnActionNumber
ldr r0, _0802E038 @ =gBattlersCount
ldrb r0, [r0]
strb r0, [r1]
bx lr
.align 2, 0
_0802E030: .4byte gCurrentActionFuncId
_0802E034: .4byte gCurrentTurnActionNumber
_0802E038: .4byte gBattlersCount
thumb_func_end atkF7_finishturn
.align 2, 0 @ Don't pad with nop.