Files
PokemonEmeraldSafariFrontier/asm/battle_4.s
T
2017-09-26 22:39:59 +02:00

7341 lines
114 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start IsTwoTurnsMove
IsTwoTurnsMove: @ 8052F48
push {lr}
lsls r0, 16
lsrs r0, 16
ldr r2, =gBattleMoves
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1]
cmp r0, 0x91
beq _08052F72
cmp r0, 0x27
beq _08052F72
cmp r0, 0x4B
beq _08052F72
cmp r0, 0x97
beq _08052F72
cmp r0, 0x9B
beq _08052F72
cmp r0, 0x1A
bne _08052F7C
_08052F72:
movs r0, 0x1
b _08052F7E
.pool
_08052F7C:
movs r0, 0
_08052F7E:
pop {r1}
bx r1
thumb_func_end IsTwoTurnsMove
thumb_func_start sub_8052F84
sub_8052F84: @ 8052F84
push {lr}
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0
beq _08052FA2
cmp r1, 0xD6
beq _08052FA2
movs r0, 0x89
lsls r0, 1
cmp r1, r0
beq _08052FA2
cmp r1, 0x77
beq _08052FA2
cmp r1, 0x76
bne _08052FA6
_08052FA2:
movs r0, 0x1
b _08052FA8
_08052FA6:
movs r0, 0
_08052FA8:
pop {r1}
bx r1
thumb_func_end sub_8052F84
thumb_func_start AttacksThisTurn
AttacksThisTurn: @ 8052FAC
push {lr}
lsls r1, 16
lsrs r2, r1, 16
ldr r1, =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 _08052FD0
ldr r0, =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
cmp r0, 0
bne _08053010
_08052FD0:
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x91
beq _08052FF2
cmp r0, 0x27
beq _08052FF2
cmp r0, 0x4B
beq _08052FF2
cmp r0, 0x97
beq _08052FF2
cmp r0, 0x9B
beq _08052FF2
cmp r0, 0x1A
bne _08053010
_08052FF2:
ldr r0, =gHitMarker
ldr r0, [r0]
movs r1, 0x80
lsls r1, 20
ands r0, r1
cmp r0, 0
beq _08053010
movs r0, 0x1
b _08053012
.pool
_08053010:
movs r0, 0x2
_08053012:
pop {r1}
bx r1
thumb_func_end AttacksThisTurn
thumb_func_start atkA9_sleeptalk_choose_move
atkA9_sleeptalk_choose_move: @ 8053018
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
movs r6, 0
movs r5, 0
ldr r0, =gBankAttacker
mov r9, r0
movs r1, 0x58
mov r8, r1
ldr r7, =gBattleMons + 0xC
movs r0, 0x84
lsls r0, 1
mov r10, r0
_08053036:
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 sub_8052F84
lsls r0, 24
cmp r0, 0
bne _08053076
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 _08053076
cmp r1, 0xFD
beq _08053076
adds r0, r1, 0
bl IsTwoTurnsMove
lsls r0, 24
cmp r0, 0
beq _08053084
_08053076:
ldr r1, =gBitTable
lsls r0, r5, 2
adds r0, r1
ldr r0, [r0]
orrs r6, r0
lsls r0, r6, 24
lsrs r6, r0, 24
_08053084:
adds r5, 0x1
cmp r5, 0x3
ble _08053036
ldr r0, =gBankAttacker
ldrb r0, [r0]
adds r1, r6, 0
movs r2, 0xFD
bl CheckMoveLimitations
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0xF
bne _080530B8
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0805311C
.pool
_080530B8:
movs r7, 0x3
ldr r4, =gBitTable
_080530BC:
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 _080530BC
ldr r4, =gRandomMove
ldr r2, =gBattleMons
lsls r1, r5, 1
ldr r0, =gBankAttacker
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, =gCurrMovePos
strb r5, [r0]
ldr r2, =gHitMarker
ldr r0, [r2]
ldr r1, =0xfffffbff
ands r0, r1
str r0, [r2]
ldrh r0, [r4]
movs r1, 0
bl GetMoveTarget
ldr r1, =gBankTarget
strb r0, [r1]
ldr r3, =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]
_0805311C:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkA9_sleeptalk_choose_move
thumb_func_start atkAA_set_destinybond
atkAA_set_destinybond: @ 8053150
ldr r1, =gBattleMons
ldr r0, =gBankAttacker
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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.pool
thumb_func_end atkAA_set_destinybond
thumb_func_start DestinyBondFlagUpdate
DestinyBondFlagUpdate: @ 8053180
push {r4,r5,lr}
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
lsrs r5, r0, 24
ldr r4, =gBankTarget
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
lsrs r3, r0, 24
ldr r1, =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 _080531CA
cmp r5, r3
beq _080531CA
ldr r2, =gHitMarker
ldr r1, [r2]
movs r0, 0x80
lsls r0, 17
ands r0, r1
cmp r0, 0
bne _080531CA
movs r0, 0x40
orrs r1, r0
str r1, [r2]
_080531CA:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end DestinyBondFlagUpdate
thumb_func_start atkAB_DestinyBondFlagUpdate
atkAB_DestinyBondFlagUpdate: @ 80531E0
push {lr}
bl DestinyBondFlagUpdate
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkAB_DestinyBondFlagUpdate
thumb_func_start atkAC_remaininghptopower
atkAC_remaininghptopower: @ 80531F8
push {lr}
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
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 sub_8075034
lsls r0, 24
lsrs r1, r0, 24
movs r3, 0
ldr r0, =gUnknown_0831C408
ldrb r2, [r0]
cmp r1, r2
ble _08053232
adds r2, r0, 0
_08053224:
adds r3, 0x2
cmp r3, 0xB
bgt _08053232
adds r0, r3, r2
ldrb r0, [r0]
cmp r1, r0
bgt _08053224
_08053232:
ldr r2, =gDynamicBasePower
ldr r1, =gUnknown_0831C408
adds r0, r3, 0x1
adds r0, r1
ldrb r0, [r0]
strh r0, [r2]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkAC_remaininghptopower
thumb_func_start atkAD_spite_ppreduce
atkAD_spite_ppreduce: @ 8053260
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r4, =gLastUsedMovesByBanks
ldr r1, =gBankTarget
ldrb r3, [r1]
lsls r0, r3, 1
adds r0, r4
ldrh r2, [r0]
mov r8, r1
cmp r2, 0
bne _08053280
b _08053408
_08053280:
ldr r0, =0x0000ffff
cmp r2, r0
bne _08053288
b _08053408
_08053288:
movs r7, 0
ldr r0, =gBattleMons
movs r1, 0x58
muls r1, r3
adds r3, r0, 0
adds r3, 0xC
adds r1, r3
ldrh r1, [r1]
cmp r2, r1
beq _080532C0
adds r6, r4, 0
mov r5, r8
adds r4, r3, 0
movs r3, 0x58
_080532A4:
adds r7, 0x1
cmp r7, 0x3
bgt _080532C0
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 _080532A4
_080532C0:
cmp r7, 0x4
bne _080532C6
b _08053408
_080532C6:
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, =gBattleMons
adds r1, 0x24
mov r10, r1
add r0, r10
ldrb r0, [r0]
cmp r0, 0x1
bhi _080532E6
b _08053408
_080532E6:
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 _08053304
adds r6, r0, 0
_08053304:
ldr r1, =gBattleTextBuff1
movs r5, 0xFD
strb r5, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
ldr r2, =gLastUsedMovesByBanks
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, =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, =gActiveBank
mov r3, r8
ldrb r0, [r3]
strb r0, [r4]
ldr r1, =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, =gBitTable
lsls r0, r7, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _080533B8
mov r2, r9
muls r2, r3
ldr r0, =gBattleMons
adds r0, 0x50
adds r0, r2, r0
ldr r0, [r0]
movs r1, 0x80
lsls r1, 14
ands r0, r1
cmp r0, 0
bne _080533B8
adds r1, r7, 0
adds r1, 0x9
lsls r1, 24
lsrs r1, 24
mov r3, r10
adds r0, r2, r3
adds r0, r7
str r0, [sp]
movs r0, 0
movs r2, 0
movs r3, 0x1
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
_080533B8:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r1, =gBattleMons
ldr r0, =gBankTarget
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 _08053422
adds r0, r2, 0
bl CancelMultiTurnMoves
b _08053422
.pool
_08053408:
ldr r3, =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]
_08053422:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkAD_spite_ppreduce
thumb_func_start atkAE_heal_party_status
atkAE_heal_party_status: @ 8053438
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, =gCurrentMove
ldrh r0, [r0]
cmp r0, 0xD7
beq _08053454
b _0805363E
_08053454:
ldr r6, =gBattleCommunication
mov r0, r8
strb r0, [r6, 0x5]
ldr r5, =gBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
ldr r1, =gEnemyParty
mov r10, r1
cmp r0, 0
bne _08053470
ldr r2, =gPlayerParty
mov r10, r2
_08053470:
ldr r4, =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 _080534C4
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, =0xf7ffffff
ands r0, r1
str r0, [r2]
b _080534D4
.pool
_080534C4:
ldrb r1, [r1]
adds r0, r3, 0
bl RecordAbilityBattle
ldrb r0, [r6, 0x5]
movs r1, 0x1
orrs r0, r1
strb r0, [r6, 0x5]
_080534D4:
ldr r7, =gActiveBank
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl GetBankIdentity
movs r2, 0x2
mov r9, r2
mov r1, r9
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBankByIdentity
ldr r1, =gBattleScripting
strb r0, [r1, 0x17]
strb r0, [r7]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0805357A
ldr r0, =gAbsentBankFlags
ldrb r2, [r0]
ldr r1, =gBitTable
ldrb r3, [r7]
lsls r0, r3, 2
adds r0, r1
ldr r0, [r0]
ands r2, r0
cmp r2, 0
bne _0805357A
ldr r5, =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 _08053568
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, =0xf7ffffff
ands r0, r1
str r0, [r2]
b _0805357A
.pool
_08053568:
ldrb r1, [r1]
adds r0, r3, 0
bl RecordAbilityBattle
ldr r1, =gBattleCommunication
ldrb r0, [r1, 0x5]
mov r2, r9
orrs r0, r2
strb r0, [r1, 0x5]
_0805357A:
movs r6, 0
ldr r7, =gBattleMons
_0805357E:
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 _08053636
movs r0, 0xCE
lsls r0, 1
cmp r5, r0
beq _08053636
ldr r2, =gBattlePartyID
ldr r0, =gBankAttacker
ldrb r1, [r0]
lsls r0, r1, 1
adds r0, r2
ldrh r0, [r0]
cmp r0, r6
bne _080535D0
movs r0, 0x58
muls r0, r1
b _08053600
.pool
_080535D0:
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08053618
ldr r0, =gActiveBank
ldrb r3, [r0]
lsls r0, r3, 1
adds r0, r2
ldrh r0, [r0]
cmp r0, r6
bne _08053618
ldr r0, =gAbsentBankFlags
ldrb r1, [r0]
ldr r2, =gBitTable
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _08053618
movs r0, 0x58
muls r0, r3
_08053600:
adds r0, r7
adds r0, 0x20
ldrb r0, [r0]
b _08053624
.pool
_08053618:
adds r0, r5, 0
adds r1, r4, 0
bl GetAbilityBySpecies
lsls r0, 24
lsrs r0, 24
_08053624:
cmp r0, 0x2B
beq _08053636
movs r0, 0x1
lsls r0, r6
mov r1, r8
orrs r1, r0
lsls r0, r1, 24
lsrs r0, 24
mov r8, r0
_08053636:
adds r6, 0x1
cmp r6, 0x5
ble _0805357E
b _080536BC
_0805363E:
ldr r1, =gBattleCommunication
movs r0, 0x4
strb r0, [r1, 0x5]
movs r2, 0x3F
mov r8, r2
ldr r3, =gBattleMons
ldr r2, =gBankAttacker
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, =0xf7ffffff
ands r0, r6
str r0, [r1]
ldrb r0, [r2]
bl GetBankIdentity
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBankByIdentity
ldr r4, =gActiveBank
strb r0, [r4]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080536BC
ldr r0, =gAbsentBankFlags
ldrb r2, [r0]
ldr r1, =gBitTable
ldrb r3, [r4]
lsls r0, r3, 2
adds r0, r1
ldr r0, [r0]
ands r2, r0
cmp r2, 0
bne _080536BC
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]
_080536BC:
mov r2, r8
cmp r2, 0
beq _080536DE
ldr r4, =gActiveBank
ldr r0, =gBankAttacker
ldrb r0, [r0]
strb r0, [r4]
add r0, sp, 0x4
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
_080536DE:
ldr r1, =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
.pool
thumb_func_end atkAE_heal_party_status
thumb_func_start atkAF_cursetarget
atkAF_cursetarget: @ 805371C
push {r4,r5,lr}
ldr r5, =gBattleMons
ldr r0, =gBankTarget
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 _08053768
ldr r3, =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 _0805378C
.pool
_08053768:
orrs r2, r3
str r2, [r1]
ldr r1, =gBattleMoveDamage
ldr r0, =gBankAttacker
ldrb r0, [r0]
muls r0, r4
adds r0, r5
ldrh r0, [r0, 0x2C]
lsrs r0, 1
str r0, [r1]
cmp r0, 0
bne _08053784
movs r0, 0x1
str r0, [r1]
_08053784:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0805378C:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end atkAF_cursetarget
thumb_func_start atkB0_set_spikes
atkB0_set_spikes: @ 80537A0
push {r4,lr}
ldr r4, =gBankAttacker
ldrb r0, [r4]
bl GetBankSide
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r1, =gSideTimers
lsls r2, r0, 1
adds r0, r2, r0
lsls r0, 2
adds r3, r0, r1
ldrb r0, [r3, 0xA]
cmp r0, 0x3
bne _08053804
ldr r2, =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, =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 _0805381E
.pool
_08053804:
ldr r1, =gSideAffecting
adds r1, r2, r1
ldrh r2, [r1]
movs r0, 0x10
orrs r0, r2
strh r0, [r1]
ldrb r0, [r3, 0xA]
adds r0, 0x1
strb r0, [r3, 0xA]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0805381E:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkB0_set_spikes
thumb_func_start atkB1_set_foresight
atkB1_set_foresight: @ 805382C
ldr r1, =gBattleMons
ldr r0, =gBankTarget
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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.pool
thumb_func_end atkB1_set_foresight
thumb_func_start atkB2_setperishsong
atkB2_setperishsong: @ 805385C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r6, 0
movs r3, 0
ldr r0, =gNoOfAllBanks
adds r7, r0, 0
ldr r0, =gBankAttacker
mov r8, r0
ldrb r1, [r7]
cmp r6, r1
bge _080538C8
movs r5, 0x20
ldr r0, =gBattleMons
mov r12, r0
ldr r0, =gDisableStructs
adds r4, r0, 0
adds r4, 0xF
ldr r2, =gStatuses3
_08053884:
ldr r1, [r2]
adds r0, r1, 0
ands r0, r5
cmp r0, 0
bne _0805389C
movs r0, 0x58
muls r0, r3
add r0, r12
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x2B
bne _080538B4
_0805389C:
adds r6, 0x1
b _080538BC
.pool
_080538B4:
orrs r1, r5
str r1, [r2]
movs r0, 0x33
strb r0, [r4]
_080538BC:
adds r4, 0x1C
adds r2, 0x4
adds r3, 0x1
ldrb r0, [r7]
cmp r3, r0
blt _08053884
_080538C8:
mov r1, r8
ldrb r0, [r1]
bl sub_803F67C
ldr r0, =gNoOfAllBanks
ldrb r0, [r0]
cmp r6, r0
bne _080538FC
ldr r3, =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 _08053904
.pool
_080538FC:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_08053904:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkB2_setperishsong
thumb_func_start atkB3_rolloutdamagecalculation
atkB3_rolloutdamagecalculation: @ 8053914
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _08053948
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl CancelMultiTurnMoves
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082D8A60
str r0, [r1]
b _08053A60
.pool
_08053948:
ldr r2, =gBattleMons
ldr r1, =gBankAttacker
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, =gDisableStructs
mov r12, r1
ldr r2, =gCurrentMove
mov r8, r2
cmp r0, 0
bne _080539BA
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, =gLockedMoves
ldrb r0, [r6]
lsls r0, 1
adds r0, r1
mov r2, r8
ldrh r1, [r2]
strh r1, [r0]
_080539BA:
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 _080539EE
ldrb r0, [r6]
adds r1, r0, 0
muls r1, r5
adds r1, r4
ldr r0, [r1]
ldr r2, =0xffffefff
ands r0, r2
str r0, [r1]
_080539EE:
ldr r3, =gDynamicBasePower
ldr r2, =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, =gBattlescriptCurrInstr
adds r5, r3, 0
cmp r2, r1
bge _08053A3C
adds r1, r5, 0
adds r3, r4, 0
movs r4, 0x5
_08053A28:
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 _08053A28
_08053A3C:
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 _08053A5A
ldrh r0, [r5]
lsls r0, 1
strh r0, [r5]
_08053A5A:
ldr r0, [r7]
adds r0, 0x1
str r0, [r7]
_08053A60:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkB3_rolloutdamagecalculation
thumb_func_start atkB4_jumpifconfusedandstatmaxed
atkB4_jumpifconfusedandstatmaxed: @ 8053A90
push {r4,r5,lr}
ldr r5, =gBattleMons
ldr r0, =gBankTarget
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, =gBattlescriptCurrInstr
cmp r0, 0
beq _08053AEC
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 _08053AEC
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 _08053AF2
.pool
_08053AEC:
ldr r0, [r4]
adds r0, 0x6
str r0, [r4]
_08053AF2:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end atkB4_jumpifconfusedandstatmaxed
thumb_func_start atkB5_furycuttercalc
atkB5_furycuttercalc: @ 8053AF8
push {r4,r5,lr}
ldr r0, =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _08053B34
ldr r2, =gDisableStructs
ldr r0, =gBankAttacker
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, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082D8A60
str r0, [r1]
b _08053B8C
.pool
_08053B34:
ldr r5, =gDisableStructs
ldr r4, =gBankAttacker
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 _08053B4C
adds r0, 0x1
strb r0, [r1, 0x10]
_08053B4C:
ldr r3, =gDynamicBasePower
ldr r2, =gBattleMoves
ldr r0, =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, =gBattlescriptCurrInstr
ldrb r1, [r0, 0x10]
cmp r2, r1
bge _08053B86
adds r1, r3, 0
adds r3, r0, 0
_08053B78:
ldrh r0, [r1]
lsls r0, 1
strh r0, [r1]
adds r2, 0x1
ldrb r0, [r3, 0x10]
cmp r2, r0
blt _08053B78
_08053B86:
ldr r0, [r4]
adds r0, 0x1
str r0, [r4]
_08053B8C:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end atkB5_furycuttercalc
thumb_func_start atkB6_happinesstodamagecalculation
atkB6_happinesstodamagecalculation: @ 8053BAC
push {r4,lr}
ldr r2, =gBattleMoves
ldr r0, =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0x79
bne _08053BEC
ldr r4, =gDynamicBasePower
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2B
ldrb r1, [r0]
b _08053C02
.pool
_08053BEC:
ldr r4, =gDynamicBasePower
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2B
ldrb r0, [r0]
movs r1, 0xFF
subs r1, r0
_08053C02:
lsls r0, r1, 2
adds r0, r1
lsls r0, 1
movs r1, 0x19
bl __divsi3
strh r0, [r4]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkB6_happinesstodamagecalculation
thumb_func_start atkB7_presentdamagecalculation
atkB7_presentdamagecalculation: @ 8053C30
push {r4,lr}
bl Random
movs r4, 0xFF
ands r4, r0
cmp r4, 0x65
bgt _08053C4C
ldr r1, =gDynamicBasePower
movs r0, 0x28
strh r0, [r1]
b _08053C8E
.pool
_08053C4C:
cmp r4, 0xB1
bgt _08053C5C
ldr r1, =gDynamicBasePower
movs r0, 0x50
strh r0, [r1]
b _08053C8E
.pool
_08053C5C:
cmp r4, 0xCB
bgt _08053C6C
ldr r1, =gDynamicBasePower
movs r0, 0x78
strh r0, [r1]
b _08053C8E
.pool
_08053C6C:
ldr r3, =gBattleMoveDamage
ldr r2, =gBattleMons
ldr r0, =gBankTarget
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 _08053C88
movs r0, 0x1
str r0, [r3]
_08053C88:
ldr r0, [r3]
negs r0, r0
str r0, [r3]
_08053C8E:
cmp r4, 0xCB
bgt _08053CAC
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082D8A30
b _08053CE6
.pool
_08053CAC:
ldr r2, =gBattleMons
ldr r0, =gBankTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r1, [r0, 0x2C]
ldrh r0, [r0, 0x28]
cmp r1, r0
bne _08053CD8
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082D9EFB
b _08053CE6
.pool
_08053CD8:
ldr r2, =gBattleMoveFlags
ldrb r1, [r2]
movs r0, 0xF7
ands r0, r1
strb r0, [r2]
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082D9EE1
_08053CE6:
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkB7_presentdamagecalculation
thumb_func_start atkB8_set_safeguard
atkB8_set_safeguard: @ 8053CFC
push {r4-r7,lr}
ldr r7, =gBankAttacker
ldrb r0, [r7]
bl GetBankIdentity
ldr r4, =gSideAffecting
movs r6, 0x1
adds r1, r6, 0
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r1, [r1]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _08053D40
ldr r2, =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, =gBattleCommunication
movs r0, 0
strb r0, [r1, 0x5]
b _08053D88
.pool
_08053D40:
ldrb r0, [r7]
bl GetBankIdentity
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 GetBankIdentity
ldr r5, =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 GetBankIdentity
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, =gBattleCommunication
strb r4, [r0, 0x5]
_08053D88:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkB8_set_safeguard
thumb_func_start atkB9_magnitudedamagecalculation
atkB9_magnitudedamagecalculation: @ 8053DA4
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 _08053DD0
ldr r1, =gDynamicBasePower
movs r0, 0xA
strh r0, [r1]
movs r3, 0x4
b _08053E3C
.pool
_08053DD0:
cmp r3, 0xE
bgt _08053DE4
ldr r1, =gDynamicBasePower
movs r0, 0x1E
strh r0, [r1]
movs r3, 0x5
b _08053E3C
.pool
_08053DE4:
cmp r3, 0x22
bgt _08053DF8
ldr r1, =gDynamicBasePower
movs r0, 0x32
strh r0, [r1]
movs r3, 0x6
b _08053E3C
.pool
_08053DF8:
cmp r3, 0x40
bgt _08053E0C
ldr r1, =gDynamicBasePower
movs r0, 0x46
strh r0, [r1]
movs r3, 0x7
b _08053E3C
.pool
_08053E0C:
cmp r3, 0x54
bgt _08053E20
ldr r1, =gDynamicBasePower
movs r0, 0x5A
strh r0, [r1]
movs r3, 0x8
b _08053E3C
.pool
_08053E20:
cmp r3, 0x5E
bgt _08053E34
ldr r1, =gDynamicBasePower
movs r0, 0x6E
strh r0, [r1]
movs r3, 0x9
b _08053E3C
.pool
_08053E34:
ldr r1, =gDynamicBasePower
movs r0, 0x96
strh r0, [r1]
movs r3, 0xA
_08053E3C:
ldr r1, =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, =gBankTarget
strb r2, [r1]
ldr r0, =gNoOfAllBanks
ldrb r3, [r0]
adds r6, r1, 0
ldr r0, =gBattlescriptCurrInstr
mov r8, r0
cmp r2, r3
bcs _08053E94
adds r4, r6, 0
ldr r0, =gBankAttacker
ldrb r5, [r0]
ldr r1, =gBitTable
mov r12, r1
ldr r7, =gAbsentBankFlags
_08053E72:
ldrb r2, [r4]
cmp r2, r5
beq _08053E88
ldrb r0, [r7]
ldrb r1, [r6]
lsls r1, 2
add r1, r12
ldr r1, [r1]
ands r0, r1
cmp r0, 0
beq _08053E94
_08053E88:
adds r0, r2, 0x1
strb r0, [r4]
lsls r0, 24
lsrs r0, 24
cmp r0, r3
bcc _08053E72
_08053E94:
mov r1, r8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkB9_magnitudedamagecalculation
thumb_func_start atkBA_jumpifnopursuitswitchdmg
atkBA_jumpifnopursuitswitchdmg: @ 8053EC8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r0, =gMultiHitCounter
ldrb r0, [r0]
cmp r0, 0x1
bne _08053EF8
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
cmp r0, 0
bne _08053EF4
movs r0, 0x1
b _08053F12
.pool
_08053EF4:
movs r0, 0
b _08053F12
_08053EF8:
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
cmp r0, 0
bne _08053F10
movs r0, 0x3
b _08053F12
.pool
_08053F10:
movs r0, 0x2
_08053F12:
bl GetBankByIdentity
ldr r1, =gBankTarget
strb r0, [r1]
ldr r0, =gUnknown_0202421C
ldr r1, =gBankTarget
ldrb r3, [r1]
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
beq _08053F2A
b _08054030
_08053F2A:
ldr r5, =gBankAttacker
ldr r0, =gBattleStruct
ldr r1, [r0]
adds r1, r3, r1
ldrb r2, [r5]
ldrb r1, [r1, 0xC]
cmp r2, r1
bne _08054030
ldr r4, =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 _08054030
ldrb r0, [r5]
muls r0, r2
adds r0, r4
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08054030
ldr r0, =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 _08054030
ldr r0, =gChosenMovesByBanks
lsls r1, r3, 1
adds r1, r0
ldrh r0, [r1]
cmp r0, 0xE4
bne _08054030
movs r1, 0
ldr r0, =gNoOfAllBanks
ldr r2, =gCurrentMove
mov r8, r2
ldr r7, =gCurrMovePos
mov r10, r7
ldr r2, =gUnknown_020241E9
mov r9, r2
ldr r7, =gHitMarker
mov r12, r7
ldrb r2, [r0]
cmp r1, r2
bge _08053FB6
ldr r6, =gTurnOrder
ldr r5, =gBankTarget
ldr r4, =gUnknown_0202407A
movs r3, 0xB
adds r2, r0, 0
_08053FA0:
adds r0, r1, r6
ldrb r0, [r0]
ldrb r7, [r5]
cmp r0, r7
bne _08053FAE
adds r0, r1, r4
strb r3, [r0]
_08053FAE:
adds r1, 0x1
ldrb r0, [r2]
cmp r1, r0
blt _08053FA0
_08053FB6:
movs r0, 0xE4
mov r1, r8
strh r0, [r1]
ldr r2, =gBankTarget
ldrb r0, [r2]
ldr r7, =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, =gBattlescriptCurrInstr
ldr r0, [r7]
adds r0, 0x5
str r0, [r7]
movs r0, 0x1
ldr r1, =gBattleScripting
strb r0, [r1, 0x18]
mov r2, r12
ldr r0, [r2]
ldr r1, =0xfffffbff
ands r0, r1
str r0, [r2]
b _0805404A
.pool
_08054030:
ldr r3, =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]
_0805404A:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkBA_jumpifnopursuitswitchdmg
thumb_func_start atkBB_setsunny
atkBB_setsunny: @ 805405C
push {lr}
ldr r2, =gBattleWeather
ldrh r1, [r2]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _08054088
ldr r2, =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, =gBattleCommunication
movs r0, 0x2
strb r0, [r1, 0x5]
b _0805409A
.pool
_08054088:
movs r0, 0x20
strh r0, [r2]
ldr r1, =gBattleCommunication
movs r0, 0x4
strb r0, [r1, 0x5]
ldr r0, =gWishFutureKnock
adds r0, 0x28
movs r1, 0x5
strb r1, [r0]
_0805409A:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkBB_setsunny
thumb_func_start atkBC_maxattackhalvehp
atkBC_maxattackhalvehp: @ 80540B4
push {r4,r5,lr}
ldr r5, =gBattleMons
ldr r4, =gBankAttacker
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 _080540CC
movs r1, 0x1
_080540CC:
movs r0, 0x19
ldrsb r0, [r2, r0]
cmp r0, 0xB
bgt _08054110
ldrh r0, [r2, 0x28]
cmp r0, r1
bls _08054110
movs r0, 0xC
strb r0, [r2, 0x19]
ldr r1, =gBattleMoveDamage
ldrb r0, [r4]
muls r0, r3
adds r0, r5
ldrh r0, [r0, 0x2C]
lsrs r0, 1
str r0, [r1]
cmp r0, 0
bne _080540F4
movs r0, 0x1
str r0, [r1]
_080540F4:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0805412A
.pool
_08054110:
ldr r3, =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]
_0805412A:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end atkBC_maxattackhalvehp
thumb_func_start atkBD_copyfoestats
atkBD_copyfoestats: @ 8054134
push {r4-r7,lr}
movs r2, 0
ldr r7, =gBattlescriptCurrInstr
ldr r6, =gBankAttacker
movs r4, 0x58
ldr r3, =gBattleMons + 0x18
ldr r5, =gBankTarget
_08054142:
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 _08054142
ldr r0, [r7]
adds r0, 0x5
str r0, [r7]
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkBD_copyfoestats
thumb_func_start atkBE_breakfree
atkBE_breakfree: @ 805417C
push {r4-r6,lr}
ldr r1, =gBattleMons
ldr r5, =gBankAttacker
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 _08054210
ldr r1, =gBattleScripting
ldr r3, =gBankTarget
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, =0xffff1fff
ands r0, r2
str r0, [r1]
ldrb r0, [r5]
ldr r1, =gBattleStruct
ldr r2, [r1]
adds r0, r2
ldrb r0, [r0, 0x14]
strb r0, [r3]
ldr r1, =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, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DAFC5
b _080542BA
.pool
_08054210:
ldr r4, =gStatuses3
lsls r0, r2, 2
adds r3, r0, r4
ldr r1, [r3]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _08054250
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, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DAFD6
b _080542BA
.pool
_08054250:
adds r0, r2, 0
bl GetBankSide
ldr r4, =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r4
ldrh r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080542B4
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
lsrs r0, 23
adds r0, r4
ldrh r2, [r0]
ldr r1, =0x0000ffef
ands r1, r2
movs r4, 0
strh r1, [r0]
ldrb r0, [r5]
bl GetBankSide
ldr r2, =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, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DAFDD
b _080542BA
.pool
_080542B4:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
_080542BA:
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end atkBE_breakfree
thumb_func_start atkBF_set_defense_curl
atkBF_set_defense_curl: @ 80542C8
ldr r1, =gBattleMons
ldr r0, =gBankAttacker
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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.pool
thumb_func_end atkBF_set_defense_curl
thumb_func_start atkC0_recoverbasedonsunlight
atkC0_recoverbasedonsunlight: @ 80542F8
push {r4-r7,lr}
sub sp, 0x4
ldr r1, =gBankTarget
ldr r5, =gBankAttacker
ldrb r0, [r5]
strb r0, [r1]
ldr r7, =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 _080543D8
ldr r4, =gBattleWeather
ldrh r0, [r4]
cmp r0, 0
beq _0805434A
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 _0805434A
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
beq _08054378
_0805434A:
ldr r3, =gBattleMoveDamage
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
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 _080543B2
.pool
_08054378:
ldrh r1, [r4]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _080543A4
ldr r4, =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 _080543B2
.pool
_080543A4:
ldr r1, =gBattleMoveDamage
ldrb r0, [r5]
muls r0, r6
adds r0, r7
ldrh r0, [r0, 0x2C]
lsrs r0, 2
str r0, [r1]
_080543B2:
adds r2, r1, 0
ldr r0, [r2]
cmp r0, 0
bne _080543BE
movs r0, 0x1
str r0, [r2]
_080543BE:
ldr r0, [r1]
negs r0, r0
str r0, [r1]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _080543F2
.pool
_080543D8:
ldr r3, =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]
_080543F2:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkC0_recoverbasedonsunlight
thumb_func_start atkC1_hidden_power
atkC1_hidden_power: @ 8054400
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
ldrb r1, [r0]
movs r0, 0x58
adds r4, r1, 0
muls r4, r0
adds r4, r2
ldrb r0, [r4, 0x14]
mov r10, r0
mov r7, r10
lsls r7, 27
adds r0, r7, 0
lsrs r0, 27
mov r10, r0
movs r1, 0x2
mov r2, r10
ands r2, r1
asrs r2, 1
ldrh r7, [r4, 0x14]
mov r9, r7
mov r0, r9
lsls r0, 22
mov r9, r0
lsrs r3, r0, 27
adds r0, r1, 0
ands r0, r3
orrs r2, r0
ldrb r7, [r4, 0x15]
mov r8, r7
mov r0, r8
lsls r0, 25
mov r8, r0
lsrs r3, r0, 27
adds r0, r1, 0
ands r0, r3
lsls r0, 1
orrs r2, r0
ldr r6, [r4, 0x14]
lsls r6, 12
lsrs r3, r6, 27
adds r0, r1, 0
ands r0, r3
lsls r0, 2
orrs r2, r0
ldrh r5, [r4, 0x16]
lsls r5, 23
lsrs r3, r5, 27
adds r0, r1, 0
ands r0, r3
lsls r0, 3
orrs r2, r0
ldrb r3, [r4, 0x17]
lsls r3, 26
lsrs r0, r3, 27
ands r1, r0
lsls r1, 4
orrs r2, r1
movs r1, 0x1
adds r4, r1, 0
mov r7, r10
ands r4, r7
mov r0, r9
lsrs r0, 27
mov r9, r0
adds r0, r1, 0
mov r7, r9
ands r0, r7
lsls r0, 1
orrs r4, r0
mov r0, r8
lsrs r0, 27
mov r8, r0
adds r0, r1, 0
mov r7, r8
ands r0, r7
lsls r0, 2
orrs r4, r0
lsrs r6, 27
adds r0, r1, 0
ands r0, r6
lsls r0, 3
orrs r4, r0
lsrs r5, 27
adds r0, r1, 0
ands r0, r5
lsls r0, 4
orrs r4, r0
lsrs r3, 27
ands r1, r3
lsls r1, 5
orrs r4, r1
ldr r5, =gDynamicBasePower
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
movs r1, 0x3F
bl __divsi3
adds r0, 0x1E
strh r0, [r5]
ldr r6, =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 _080544F0
adds r0, 0x1
strb r0, [r1, 0x13]
_080544F0:
ldr r2, [r6]
ldrb r0, [r2, 0x13]
movs r1, 0xC0
orrs r0, r1
strb r0, [r2, 0x13]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkC1_hidden_power
thumb_func_start atkC2_selectnexttarget
atkC2_selectnexttarget: @ 8054524
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, =gBankTarget
movs r1, 0
strb r1, [r0]
ldr r1, =gNoOfAllBanks
ldrb r1, [r1]
adds r6, r0, 0
ldr r0, =gBattlescriptCurrInstr
mov r8, r0
cmp r1, 0
beq _0805456E
adds r3, r6, 0
ldr r0, =gBankAttacker
ldrb r5, [r0]
ldr r0, =gBitTable
mov r12, r0
adds r4, r1, 0
ldr r7, =gAbsentBankFlags
_0805454C:
ldrb r2, [r3]
cmp r2, r5
beq _08054562
ldrb r0, [r7]
ldrb r1, [r6]
lsls r1, 2
add r1, r12
ldr r1, [r1]
ands r0, r1
cmp r0, 0
beq _0805456E
_08054562:
adds r0, r2, 0x1
strb r0, [r3]
lsls r0, 24
lsrs r0, 24
cmp r0, r4
bcc _0805454C
_0805456E:
mov r1, r8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkC2_selectnexttarget
thumb_func_start atkC3_setfutureattack
atkC3_setfutureattack: @ 8054598
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
ldr r0, =gWishFutureKnock
mov r8, r0
ldr r6, =gBankTarget
ldrb r1, [r6]
adds r0, r1, r0
ldrb r7, [r0]
cmp r7, 0
beq _080545DC
ldr r3, =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 _080546CC
.pool
_080545DC:
adds r0, r1, 0
bl GetBankIdentity
ldr r4, =gSideAffecting
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
mov r10, r1
ands r0, r1
lsls r0, 1
adds r0, r4
ldrh r2, [r0]
movs r1, 0x40
movs r5, 0
mov r3, sp
strh r5, [r3, 0x10]
orrs r1, r2
strh r1, [r0]
ldrb r0, [r6]
lsls r0, 1
mov r1, r8
adds r1, 0x18
adds r0, r1
ldr r1, =gCurrentMove
mov r9, r1
ldrh r1, [r1]
strh r1, [r0]
mov r0, r8
adds r0, 0x4
ldrb r2, [r6]
adds r0, r2
ldr r5, =gBankAttacker
ldrb r1, [r5]
strb r1, [r0]
ldrb r0, [r6]
add r0, r8
movs r1, 0x3
strb r1, [r0]
ldrb r0, [r6]
bl GetBankIdentity
mov r1, r10
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
ldrb r0, [r5]
movs r4, 0x58
muls r0, r4
ldr r2, =gBattleMons
adds r0, r2
ldrb r1, [r6]
muls r1, r4
adds r1, r2
mov r4, r9
ldrh r2, [r4]
str r7, [sp]
str r7, [sp, 0x4]
ldrb r4, [r5]
str r4, [sp, 0x8]
ldrb r4, [r6]
str r4, [sp, 0xC]
bl CalculateBaseDamage
ldrb r1, [r6]
lsls r1, 2
mov r2, r8
adds r2, 0x8
adds r1, r2
str r0, [r1]
ldr r1, =gProtectStructs
ldrb r0, [r5]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
bge _0805468C
ldrb r4, [r6]
lsls r4, 2
adds r4, r2
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
movs r1, 0xA
bl __divsi3
str r0, [r4]
_0805468C:
mov r5, r9
ldrh r1, [r5]
ldr r0, =0x00000161
cmp r1, r0
bne _080546BC
ldr r0, =gBattleCommunication
mov r1, r10
strb r1, [r0, 0x5]
b _080546C4
.pool
_080546BC:
ldr r0, =gBattleCommunication
mov r2, sp
ldrb r2, [r2, 0x10]
strb r2, [r0, 0x5]
_080546C4:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_080546CC:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkC3_setfutureattack
thumb_func_start atkC4_beat_up
atkC4_beat_up: @ 80546E4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
ldr r7, =gEnemyParty
cmp r0, 0
bne _080546FE
ldr r7, =gPlayerParty
_080546FE:
ldr r2, =gBattleMons
ldr r0, =gBankTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _08054740
ldr r3, =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 _080548DC
.pool
_08054740:
ldr r6, =gBattleCommunication
ldrb r0, [r6]
mov r8, r0
cmp r0, 0x5
bls _0805474C
b _080548A8
_0805474C:
adds r4, r6, 0
movs r5, 0x64
_08054750:
ldrb r0, [r4]
muls r0, r5
adds r0, r7, r0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _08054794
ldrb r0, [r6]
muls r0, r5
adds r0, r7, r0
movs r1, 0x41
bl GetMonData
cmp r0, 0
beq _08054794
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 _08054794
ldrb r0, [r4]
muls r0, r5
adds r0, r7, r0
movs r1, 0x37
bl GetMonData
cmp r0, 0
beq _080547A4
_08054794:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
adds r6, r4, 0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x5
bls _08054750
_080547A4:
ldr r1, =gBattleCommunication
mov r9, r1
ldrb r2, [r1]
cmp r2, 0x5
bhi _080548A8
ldr r1, =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r6, =gBankAttacker
ldrb r0, [r6]
strb r0, [r1, 0x2]
strb r2, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x9
str r0, [r1]
ldr r2, =gBattleMoveDamage
mov r8, r2
ldr r5, =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, =gBattleMoves
ldr r0, =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, =gBattleMons
ldr r1, =gBankTarget
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, =gProtectStructs
ldrb r0, [r6]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
bge _08054870
lsls r0, r2, 4
subs r0, r2
movs r1, 0xA
bl __divsi3
mov r1, r8
str r0, [r1]
_08054870:
mov r2, r9
ldrb r0, [r2]
adds r0, 0x1
strb r0, [r2]
b _080548E2
.pool
_080548A8:
mov r0, r8
cmp r0, 0
beq _080548C8
ldr r3, =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 _080548DC
.pool
_080548C8:
ldr r3, =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]
_080548DC:
lsls r0, 24
orrs r1, r0
str r1, [r3]
_080548E2:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkC4_beat_up
thumb_func_start atkC5_hidepreattack
atkC5_hidepreattack: @ 80548F4
push {lr}
ldr r0, =gCurrentMove
ldrh r1, [r0]
cmp r1, 0x5B
beq _08054934
cmp r1, 0x5B
bgt _0805490C
cmp r1, 0x13
beq _08054918
b _08054960
.pool
_0805490C:
ldr r0, =0x00000123
cmp r1, r0
beq _0805494C
adds r0, 0x31
cmp r1, r0
bne _08054960
_08054918:
ldr r2, =gStatuses3
ldr r0, =gBankAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x40
b _0805495C
.pool
_08054934:
ldr r2, =gStatuses3
ldr r0, =gBankAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
b _0805495C
.pool
_0805494C:
ldr r2, =gStatuses3
ldr r0, =gBankAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
lsls r2, 11
_0805495C:
orrs r0, r2
str r0, [r1]
_08054960:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkC5_hidepreattack
thumb_func_start atkC6_unhidepostattack
atkC6_unhidepostattack: @ 8054978
push {lr}
ldr r0, =gCurrentMove
ldrh r1, [r0]
cmp r1, 0x5B
beq _080549BC
cmp r1, 0x5B
bgt _08054990
cmp r1, 0x13
beq _0805499C
b _080549EA
.pool
_08054990:
ldr r0, =0x00000123
cmp r1, r0
beq _080549D8
adds r0, 0x31
cmp r1, r0
bne _080549EA
_0805499C:
ldr r2, =gStatuses3
ldr r0, =gBankAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x41
negs r2, r2
b _080549E6
.pool
_080549BC:
ldr r2, =gStatuses3
ldr r0, =gBankAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x81
negs r2, r2
b _080549E6
.pool
_080549D8:
ldr r2, =gStatuses3
ldr r0, =gBankAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
ldr r2, =0xfffbffff
_080549E6:
ands r0, r2
str r0, [r1]
_080549EA:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkC6_unhidepostattack
thumb_func_start atkC7_setminimize
atkC7_setminimize: @ 8054A08
push {lr}
ldr r0, =gHitMarker
ldr r0, [r0]
movs r1, 0x80
lsls r1, 18
ands r0, r1
cmp r0, 0
beq _08054A2C
ldr r2, =gStatuses3
ldr r0, =gBankAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
lsls r2, 1
orrs r0, r2
str r0, [r1]
_08054A2C:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkC7_setminimize
thumb_func_start atkC8_sethail
atkC8_sethail: @ 8054A48
push {lr}
ldr r3, =gBattleWeather
ldrh r1, [r3]
movs r2, 0x80
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _08054A78
ldr r2, =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, =gBattleCommunication
movs r0, 0x2
strb r0, [r1, 0x5]
b _08054A86
.pool
_08054A78:
strh r2, [r3]
ldr r0, =gBattleCommunication
movs r1, 0x5
strb r1, [r0, 0x5]
ldr r0, =gWishFutureKnock
adds r0, 0x28
strb r1, [r0]
_08054A86:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkC8_sethail
thumb_func_start atkC9_jumpifattackandspecialattackcannotfall
atkC9_jumpifattackandspecialattackcannotfall: @ 8054AA0
push {r4,lr}
ldr r2, =gBattleMons
ldr r0, =gBankTarget
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 _08054AF4
movs r0, 0x1C
ldrsb r0, [r1, r0]
cmp r0, 0
bne _08054AF4
ldr r0, =gBattleCommunication
ldrb r0, [r0, 0x6]
cmp r0, 0x1
beq _08054AF4
ldr r3, =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 _08054B20
.pool
_08054AF4:
ldr r4, =gActiveBank
ldr r0, =gBankAttacker
ldrb r0, [r0]
strb r0, [r4]
ldr r2, =gBattleMoveDamage
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
adds r0, r3
ldrh r0, [r0, 0x28]
str r0, [r2]
ldr r1, =0x00007fff
movs r0, 0
bl EmitHealthBarUpdate
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_08054B20:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkC9_jumpifattackandspecialattackcannotfall
thumb_func_start atkCA_setforcedtarget
atkCA_setforcedtarget: @ 8054B3C
push {r4,r5,lr}
ldr r4, =gBankAttacker
ldrb r0, [r4]
bl GetBankSide
ldr r5, =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 GetBankSide
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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end atkCA_setforcedtarget
thumb_func_start atkCB_setcharge
atkCB_setcharge: @ 8054B88
push {r4,lr}
ldr r0, =gStatuses3
ldr r3, =gBankAttacker
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, =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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkCB_setcharge
thumb_func_start atkCC_callterrainattack
atkCC_callterrainattack: @ 8054BEC
push {r4,lr}
ldr r2, =gHitMarker
ldr r0, [r2]
ldr r1, =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, =gCurrentMove
ldr r1, =gUnknown_0831C414
ldr r0, =gUnknown_02022FF0
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, =gBankTarget
strb r0, [r1]
ldr r3, =gBattleScriptsForMoveEffects
ldr r2, =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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkCC_callterrainattack
thumb_func_start atkCD_cureifburnedparalysedorpoisoned
atkCD_cureifburnedparalysedorpoisoned: @ 8054C60
push {r4-r6,lr}
sub sp, 0x4
ldr r1, =gBattleMons
ldr r3, =gBankAttacker
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 _08054CBC
movs r0, 0
str r0, [r2]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r4, =gActiveBank
ldrb r0, [r3]
strb r0, [r4]
ldrb r0, [r4]
muls r0, r6
adds r0, r5
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r2, 0
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _08054CD6
.pool
_08054CBC:
ldr r3, =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]
_08054CD6:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end atkCD_cureifburnedparalysedorpoisoned
thumb_func_start atkCE_settorment
atkCE_settorment: @ 8054CE4
push {lr}
ldr r1, =gBattleMons
ldr r0, =gBankTarget
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 _08054D28
ldr r3, =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 _08054D34
.pool
_08054D28:
orrs r1, r2
str r1, [r0]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_08054D34:
pop {r0}
bx r0
.pool
thumb_func_end atkCE_settorment
thumb_func_start atkCF_jumpifnodamage
atkCF_jumpifnodamage: @ 8054D3C
push {lr}
ldr r2, =gProtectStructs
ldr r0, =gBankAttacker
ldrb r0, [r0]
lsls r1, r0, 4
adds r0, r2, 0x4
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
bne _08054D5C
adds r0, r2, 0
adds r0, 0x8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
beq _08054D74
_08054D5C:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08054D8E
.pool
_08054D74:
ldr r3, =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]
_08054D8E:
pop {r0}
bx r0
.pool
thumb_func_end atkCF_jumpifnodamage
thumb_func_start atkD0_settaunt
atkD0_settaunt: @ 8054D98
push {r4,lr}
ldr r4, =gDisableStructs
ldr r3, =gBankTarget
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 _08054DE8
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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08054E02
.pool
_08054DE8:
ldr r3, =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]
_08054E02:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkD0_settaunt
thumb_func_start atkD1_set_helpinghand
atkD1_set_helpinghand: @ 8054E0C
push {r4,lr}
ldr r4, =gBankAttacker
ldrb r0, [r4]
bl GetBankIdentity
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBankByIdentity
ldr r3, =gBankTarget
strb r0, [r3]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08054E90
ldr r0, =gAbsentBankFlags
ldrb r1, [r0]
ldr r2, =gBitTable
ldrb r3, [r3]
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _08054E90
ldr r1, =gProtectStructs
ldrb r0, [r4]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
blt _08054E90
lsls r0, r3, 4
adds r2, r0, r1
ldrb r1, [r2]
lsls r0, r1, 28
cmp r0, 0
blt _08054E90
movs r0, 0x8
orrs r0, r1
strb r0, [r2]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08054EAA
.pool
_08054E90:
ldr r3, =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]
_08054EAA:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkD1_set_helpinghand
thumb_func_start atkD2_swap_items
atkD2_swap_items: @ 8054EB4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r4, =gBattleTypeFlags
ldr r0, [r4]
movs r1, 0x80
lsls r1, 19
ands r0, r1
cmp r0, 0
bne _08054F9A
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08054EE8
ldr r0, [r4]
ldr r1, =0x0a3f0902
ands r0, r1
cmp r0, 0
beq _08054F9A
_08054EE8:
ldr r6, =gBankAttacker
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
lsrs r4, r0, 24
ldr r7, =gBankTarget
ldrb r0, [r7]
bl GetBankSide
lsls r0, 24
lsrs r5, r0, 24
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
ldr r1, =0x0a3f0902
ands r0, r1
cmp r0, 0
bne _08054F46
ldr r0, =gWishFutureKnock
adds r2, r0, 0
adds r2, 0x29
adds r0, r4, r2
ldrb r1, [r0]
ldr r4, =gBitTable
ldr r3, =gBattlePartyID
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 _08054F9A
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 _08054F9A
_08054F46:
ldr r0, =gBattleMons
mov r8, r0
ldr r1, =gBankAttacker
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 _08054F6E
ldr r0, =gBankTarget
ldrb r0, [r0]
muls r0, r5
add r0, r8
ldrh r0, [r0, 0x2E]
cmp r0, 0
beq _08054F9A
_08054F6E:
cmp r1, 0xAF
beq _08054F9A
ldr r7, =gBankTarget
ldrb r0, [r7]
muls r0, r5
mov r2, r8
adds r1, r0, r2
ldrh r2, [r1, 0x2E]
cmp r2, 0xAF
beq _08054F9A
adds r0, r3, 0
subs r0, 0x79
lsls r0, 16
lsrs r0, 16
cmp r0, 0xB
bls _08054F9A
adds r0, r2, 0
subs r0, 0x79
lsls r0, 16
lsrs r0, 16
cmp r0, 0xB
bhi _08054FDC
_08054F9A:
ldr r3, =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 _08055132
.pool
_08054FDC:
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x3C
bne _08055010
ldr r1, =gBattlescriptCurrInstr
ldr r0, =BattleScript_StickyHoldOnKnockOff
str r0, [r1]
ldr r1, =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 _08055132
.pool
_08055010:
ldr r3, =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, =gBankAttacker
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, =gActiveBank
ldr r3, =gBankAttacker
ldrb r0, [r3]
strb r0, [r4]
str r6, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldr r1, =gBankAttacker
ldrb r0, [r1]
bl MarkBufferBankForExecution
ldrb r0, [r7]
strb r0, [r4]
ldrb r0, [r7]
muls r0, r5
mov r1, r8
adds r1, 0x2E
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl EmitSetMonData
ldrb r0, [r7]
bl MarkBufferBankForExecution
ldrb r0, [r7]
mov r2, r10
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
movs r3, 0
strb r3, [r0]
ldrb r0, [r7]
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC9
strb r3, [r0]
ldr r1, =gBankAttacker
ldrb r0, [r1]
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
strb r3, [r0]
ldr r2, =gBankAttacker
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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r1, =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, =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 _08055118
ldrh r0, [r6]
cmp r0, 0
beq _0805512C
ldr r1, =gBattleCommunication
movs r0, 0x2
b _08055130
.pool
_08055118:
ldrh r0, [r6]
cmp r0, 0
beq _0805512C
ldr r0, =gBattleCommunication
movs r1, 0
strb r1, [r0, 0x5]
b _08055132
.pool
_0805512C:
ldr r1, =gBattleCommunication
movs r0, 0x1
_08055130:
strb r0, [r1, 0x5]
_08055132:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkD2_swap_items
thumb_func_start atkD3_copy_ability
atkD3_copy_ability: @ 8055148
push {r4,lr}
ldr r3, =gBattleMons
ldr r4, =gBankTarget
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 _0805519C
cmp r0, 0x19
beq _0805519C
ldr r0, =gBankAttacker
ldrb r0, [r0]
muls r0, r2
adds r0, r3
adds r0, 0x20
strb r1, [r0]
ldr r1, =gLastUsedAbility
ldrb r0, [r4]
muls r0, r2
adds r0, r3
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _080551B6
.pool
_0805519C:
ldr r3, =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]
_080551B6:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkD3_copy_ability
thumb_func_start atkD4_wish_effect
atkD4_wish_effect: @ 80551C0
push {r4-r7,lr}
ldr r7, =gBattlescriptCurrInstr
ldr r2, [r7]
ldrb r3, [r2, 0x1]
cmp r3, 0
beq _080551D8
cmp r3, 0x1
beq _08055210
b _0805528C
.pool
_080551D8:
ldr r1, =gWishFutureKnock
ldr r4, =gBankAttacker
adds r0, r1, 0
adds r0, 0x20
ldrb r5, [r4]
adds r3, r0, r5
ldrb r0, [r3]
cmp r0, 0
bne _0805525C
movs r0, 0x2
strb r0, [r3]
ldrb r0, [r4]
adds r1, 0x24
adds r1, r0, r1
ldr r2, =gBattlePartyID
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strb r0, [r1]
ldr r0, [r7]
adds r0, 0x6
b _0805528A
.pool
_08055210:
ldr r1, =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r4, =gBankTarget
ldrb r0, [r4]
strb r0, [r1, 0x2]
ldr r0, =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, =gBattleMoveDamage
ldr r6, =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 _08055248
str r3, [r1]
_08055248:
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 _08055288
_0805525C:
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 _0805528C
.pool
_08055288:
adds r0, r2, 0x6
_0805528A:
str r0, [r7]
_0805528C:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atkD4_wish_effect
thumb_func_start atkD5_setroots
atkD5_setroots: @ 8055294
push {lr}
ldr r1, =gStatuses3
ldr r0, =gBankAttacker
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 _080552D8
ldr r3, =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 _080552E4
.pool
_080552D8:
orrs r1, r3
str r1, [r2]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_080552E4:
pop {r0}
bx r0
.pool
thumb_func_end atkD5_setroots
thumb_func_start atkD6_doubledamagedealtifdamaged
atkD6_doubledamagedealtifdamaged: @ 80552EC
push {lr}
ldr r3, =gProtectStructs
ldr r0, =gBankAttacker
ldrb r0, [r0]
lsls r2, r0, 4
adds r0, r3, 0x4
adds r0, r2, r0
ldr r0, [r0]
cmp r0, 0
beq _0805530C
adds r0, r2, r3
ldr r1, =gBankTarget
ldrb r0, [r0, 0xC]
ldrb r1, [r1]
cmp r0, r1
beq _08055324
_0805530C:
adds r0, r3, 0
adds r0, 0x8
adds r0, r2, r0
ldr r0, [r0]
cmp r0, 0
beq _0805532A
adds r0, r2, r3
ldr r1, =gBankTarget
ldrb r0, [r0, 0xD]
ldrb r1, [r1]
cmp r0, r1
bne _0805532A
_08055324:
ldr r1, =gBattleScripting
movs r0, 0x2
strb r0, [r1, 0xE]
_0805532A:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkD6_doubledamagedealtifdamaged
thumb_func_start atkD7_setyawn
atkD7_setyawn: @ 805534C
push {r4,lr}
ldr r1, =gStatuses3
ldr r0, =gBankTarget
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 _08055374
ldr r1, =gBattleMons
movs r0, 0x58
muls r0, r3
adds r1, 0x4C
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _080553A0
_08055374:
ldr r3, =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 _080553B0
.pool
_080553A0:
movs r0, 0x80
lsls r0, 5
orrs r2, r0
str r2, [r4]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_080553B0:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkD7_setyawn
thumb_func_start atkD8_setdamagetohealthdifference
atkD8_setdamagetohealthdifference: @ 80553BC
push {lr}
ldr r2, =gBattleMons
ldr r0, =gBankTarget
ldrb r0, [r0]
movs r1, 0x58
muls r0, r1
adds r3, r0, r2
ldr r0, =gBankAttacker
ldrb r0, [r0]
muls r0, r1
adds r1, r0, r2
ldrh r0, [r3, 0x28]
ldrh r2, [r1, 0x28]
cmp r0, r2
bhi _08055408
ldr r3, =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 _0805541A
.pool
_08055408:
ldr r2, =gBattleMoveDamage
ldrh r0, [r3, 0x28]
ldrh r1, [r1, 0x28]
subs r0, r1
str r0, [r2]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0805541A:
pop {r0}
bx r0
.pool
thumb_func_end atkD8_setdamagetohealthdifference
thumb_func_start atkD9_scaledamagebyhealthratio
atkD9_scaledamagebyhealthratio: @ 8055428
push {r4,lr}
ldr r4, =gDynamicBasePower
ldrh r0, [r4]
cmp r0, 0
bne _08055464
ldr r2, =gBattleMoves
ldr r0, =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r3, [r0, 0x1]
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
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 _08055464
movs r0, 0x1
strh r0, [r4]
_08055464:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkD9_scaledamagebyhealthratio
thumb_func_start atkDA_abilityswap
atkDA_abilityswap: @ 805548C
push {r4-r6,lr}
ldr r5, =gBattleMons
ldr r0, =gBankAttacker
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 _080554B4
ldr r0, =gBankTarget
ldrb r0, [r0]
muls r0, r4
adds r0, r5
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0
beq _080554D4
_080554B4:
cmp r1, 0x19
beq _080554D4
ldr r6, =gBankTarget
ldrb r0, [r6]
muls r0, r4
adds r0, r5
adds r0, 0x20
ldrb r3, [r0]
cmp r3, 0x19
beq _080554D4
ldr r0, =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _08055504
_080554D4:
ldr r3, =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 _0805551A
.pool
_08055504:
ldrb r1, [r2]
strb r3, [r2]
ldrb r0, [r6]
muls r0, r4
adds r0, r5
adds r0, 0x20
strb r1, [r0]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0805551A:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end atkDA_abilityswap
thumb_func_start atkDB_imprisoneffect
atkDB_imprisoneffect: @ 8055524
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r1, =gStatuses3
ldr r4, =gBankAttacker
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 _08055574
b _080555F6
.pool
_0805554C:
ldr r0, =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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _080555EE
.pool
_08055574:
adds r0, r2, 0
bl GetBankSide
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrb r0, [r4]
bl sub_803F548
movs r6, 0
b _080555E6
_0805558A:
adds r0, r6, 0
bl GetBankSide
lsls r0, 24
lsrs r0, 24
cmp r8, r0
beq _080555E0
movs r4, 0
ldr r7, =gBankAttacker
mov r9, r7
ldr r0, =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
_080555B4:
movs r2, 0
ldrh r1, [r3]
mov r0, r12
adds r0, 0xC
adds r0, r5, r0
_080555BE:
ldrh r7, [r0]
cmp r1, r7
bne _080555C8
cmp r1, 0
bne _080555D0
_080555C8:
adds r0, 0x2
adds r2, 0x1
cmp r2, 0x3
ble _080555BE
_080555D0:
cmp r2, 0x4
bne _080555DC
adds r3, 0x2
adds r4, 0x1
cmp r4, 0x3
ble _080555B4
_080555DC:
cmp r4, 0x4
bne _0805554C
_080555E0:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_080555E6:
ldr r0, =gNoOfAllBanks
ldrb r0, [r0]
cmp r6, r0
bcc _0805558A
_080555EE:
ldr r0, =gNoOfAllBanks
ldrb r0, [r0]
cmp r6, r0
bne _08055610
_080555F6:
ldr r3, =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]
_08055610:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkDB_imprisoneffect
thumb_func_start atkDC_setgrudge
atkDC_setgrudge: @ 805562C
push {lr}
ldr r1, =gStatuses3
ldr r0, =gBankAttacker
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 _08055670
ldr r3, =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 _0805567C
.pool
_08055670:
orrs r1, r3
str r1, [r2]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0805567C:
pop {r0}
bx r0
.pool
thumb_func_end atkDC_setgrudge
thumb_func_start atkDD_weightdamagecalculation
atkDD_weightdamagecalculation: @ 8055684
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r5, 0
ldr r2, =gUnknown_0831C428
ldrh r0, [r2]
ldr r1, =0x0000ffff
cmp r0, r1
beq _080556FC
adds r6, r2, 0
ldr r0, =gBattleMons
mov r8, r0
adds r7, r1, 0
adds r4, r6, 0
_080556A0:
ldr r0, =gBankTarget
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 _080556CE
adds r4, 0x4
adds r5, 0x2
ldrh r0, [r4]
cmp r0, r7
bne _080556A0
_080556CE:
lsls r0, r5, 1
adds r0, r6
ldrh r1, [r0]
ldr r0, =0x0000ffff
cmp r1, r0
beq _080556FC
ldr r0, =gDynamicBasePower
adds r1, r5, 0x1
lsls r1, 1
adds r1, r6
ldrh r1, [r1]
strh r1, [r0]
b _08055702
.pool
_080556FC:
ldr r1, =gDynamicBasePower
movs r0, 0x78
strh r0, [r1]
_08055702:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkDD_weightdamagecalculation
thumb_func_start atkDE_asistattackselect
atkDE_asistattackselect: @ 805571C
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, =gBattleStruct
ldr r0, [r0]
adds r0, 0x18
str r0, [sp, 0x4]
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl GetBankIdentity
movs r1, 0x1
ands r1, r0
ldr r0, =gPlayerParty
str r0, [sp]
cmp r1, 0
beq _0805574C
ldr r1, =gEnemyParty
str r1, [sp]
_0805574C:
movs r2, 0
_0805574E:
ldr r1, =gBattlePartyID
ldr r0, =gBankAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
adds r1, r2, 0x1
str r1, [sp, 0x8]
ldrh r0, [r0]
cmp r2, r0
beq _080557F4
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 _080557F4
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
movs r1, 0xCE
lsls r1, 1
cmp r0, r1
beq _080557F4
movs r5, 0
ldr r1, =0x0000ffff
mov r8, r1
mov r9, r6
mov r1, r10
lsls r0, r1, 1
ldr r1, [sp, 0x4]
adds r6, r0, r1
_08055798:
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 sub_8052F84
lsls r0, 24
adds r1, r5, 0x1
cmp r0, 0
bne _080557EE
ldr r0, =gMovesForbiddenToCopy
ldrh r2, [r0]
adds r3, r0, 0
cmp r2, r8
beq _080557E2
cmp r4, r2
beq _080557D8
ldr r5, =0x0000ffff
adds r2, r3, 0
_080557CA:
adds r2, 0x2
adds r7, 0x1
ldrh r0, [r2]
cmp r0, r5
beq _080557E2
cmp r4, r0
bne _080557CA
_080557D8:
lsls r0, r7, 1
adds r0, r3
ldrh r0, [r0]
cmp r0, r8
bne _080557EE
_080557E2:
cmp r4, 0
beq _080557EE
strh r4, [r6]
adds r6, 0x2
movs r0, 0x1
add r10, r0
_080557EE:
adds r5, r1, 0
cmp r5, 0x3
ble _08055798
_080557F4:
ldr r2, [sp, 0x8]
cmp r2, 0x5
ble _0805574E
mov r1, r10
cmp r1, 0
beq _0805586C
ldr r2, =gHitMarker
ldr r0, [r2]
ldr r1, =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, =gRandomMove
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, =gBankTarget
strb r0, [r1]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08055886
.pool
_0805586C:
ldr r3, =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]
_08055886:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkDE_asistattackselect
thumb_func_start atkDF_setmagiccoat
atkDF_setmagiccoat: @ 805589C
push {lr}
ldr r1, =gBankTarget
ldr r3, =gBankAttacker
ldrb r0, [r3]
strb r0, [r1]
ldr r2, =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, =gCurrentMoveTurn
ldrb r1, [r0]
ldr r0, =gNoOfAllBanks
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _080558FC
ldr r3, =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 _08055914
.pool
_080558FC:
ldr r0, =gProtectStructs
ldrb r1, [r3]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
movs r2, 0x10
orrs r0, r2
strb r0, [r1]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_08055914:
pop {r0}
bx r0
.pool
thumb_func_end atkDF_setmagiccoat
thumb_func_start atkE0_setstealstatchange
atkE0_setstealstatchange: @ 8055920
push {lr}
ldr r2, =gSpecialStatuses
ldr r3, =gBankAttacker
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, =gCurrentMoveTurn
ldrb r1, [r0]
ldr r0, =gNoOfAllBanks
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _08055978
ldr r3, =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 _0805598E
.pool
_08055978:
ldr r0, =gProtectStructs
ldrb r1, [r3]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0805598E:
pop {r0}
bx r0
.pool
thumb_func_end atkE0_setstealstatchange
thumb_func_start atkE1_intimidate_string_loader
atkE1_intimidate_string_loader: @ 805599C
push {r4-r6,lr}
ldr r4, =gBattleScripting
ldr r0, =gBattleStruct
ldr r0, [r0]
adds r0, 0xD8
ldrb r0, [r0]
strb r0, [r4, 0x17]
ldrb r0, [r4, 0x17]
bl GetBankSide
lsls r0, 24
lsrs r5, r0, 24
ldr r2, =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r2]
movs r0, 0x9
strb r0, [r2, 0x1]
ldr r3, =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, =gBankTarget
ldr r1, =gNoOfAllBanks
ldrb r0, [r2]
ldrb r1, [r1]
cmp r0, r1
bcs _08055A22
adds r4, r2, 0
ldr r6, =gBitTable
_080559E2:
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
lsrs r0, 24
cmp r0, r5
beq _08055A04
ldr r0, =gAbsentBankFlags
ldrb r1, [r0]
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
ands r1, r0
ldr r2, =gNoOfAllBanks
cmp r1, 0
beq _08055A18
_08055A04:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
ldr r1, =gNoOfAllBanks
lsls r0, 24
lsrs r0, 24
adds r2, r1, 0
ldrb r1, [r2]
cmp r0, r1
bcc _080559E2
_08055A18:
ldr r0, =gBankTarget
ldrb r0, [r0]
ldrb r2, [r2]
cmp r0, r2
bcc _08055A64
_08055A22:
ldr r3, =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 _08055A6C
.pool
_08055A64:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_08055A6C:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end atkE1_intimidate_string_loader
thumb_func_start atkE2_switchout_abilities
atkE2_switchout_abilities: @ 8055A78
push {r4-r6,lr}
sub sp, 0x4
ldr r5, =gBattlescriptCurrInstr
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl GetBattleBank
ldr r4, =gActiveBank
strb r0, [r4]
ldr r3, =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 _08055AD2
adds r3, 0x4C
adds r1, r3
movs r0, 0
str r0, [r1]
ldr r2, =gBitTable
ldrb r1, [r4]
ldr r0, =gBattleStruct
ldr r0, [r0]
adds r0, r1, r0
adds r0, 0x58
ldrb r0, [r0]
lsls r0, 2
adds r0, r2
ldrb r2, [r0]
adds r0, r1, 0
muls r0, r6
adds r0, r3
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r3, 0x4
bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08055AD2:
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end atkE2_switchout_abilities
thumb_func_start atkE3_jumpiffainted
atkE3_jumpiffainted: @ 8055AF4
push {r4,lr}
ldr r4, =gBattlescriptCurrInstr
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl GetBattleBank
ldr r1, =gActiveBank
strb r0, [r1]
ldr r2, =gBattleMons
ldrb r1, [r1]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _08055B3C
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 _08055B42
.pool
_08055B3C:
ldr r0, [r4]
adds r0, 0x6
str r0, [r4]
_08055B42:
pop {r4}
pop {r0}
bx r0
thumb_func_end atkE3_jumpiffainted
thumb_func_start atkE4_getsecretpowereffect
atkE4_getsecretpowereffect: @ 8055B48
push {lr}
ldr r0, =gUnknown_02022FF0
ldrb r0, [r0]
cmp r0, 0x7
bhi _08055BE4
lsls r0, 2
ldr r1, =_08055B64
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_08055B64:
.4byte _08055B84
.4byte _08055B90
.4byte _08055B9C
.4byte _08055BA8
.4byte _08055BB4
.4byte _08055BC0
.4byte _08055BCC
.4byte _08055BD8
_08055B84:
ldr r1, =gBattleCommunication
movs r0, 0x2
b _08055BE8
.pool
_08055B90:
ldr r1, =gBattleCommunication
movs r0, 0x1
b _08055BE8
.pool
_08055B9C:
ldr r1, =gBattleCommunication
movs r0, 0x1B
b _08055BE8
.pool
_08055BA8:
ldr r1, =gBattleCommunication
movs r0, 0x17
b _08055BE8
.pool
_08055BB4:
ldr r1, =gBattleCommunication
movs r0, 0x16
b _08055BE8
.pool
_08055BC0:
ldr r1, =gBattleCommunication
movs r0, 0x18
b _08055BE8
.pool
_08055BCC:
ldr r1, =gBattleCommunication
movs r0, 0x7
b _08055BE8
.pool
_08055BD8:
ldr r1, =gBattleCommunication
movs r0, 0x8
b _08055BE8
.pool
_08055BE4:
ldr r1, =gBattleCommunication
movs r0, 0x5
_08055BE8:
strb r0, [r1, 0x3]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.pool
thumb_func_end atkE4_getsecretpowereffect
thumb_func_start atkE5_pickup
atkE5_pickup: @ 8055C00
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
bl InBattlePike
lsls r0, 24
cmp r0, 0
beq _08055C18
b _08055DD8
_08055C18:
bl InBattlePyramid
lsls r0, 24
cmp r0, 0
beq _08055CC4
movs r6, 0
mov r7, sp
ldr r0, =gBaseStats
mov r8, r0
_08055C2A:
movs r0, 0x64
adds r4, r6, 0
muls r4, r0
ldr r0, =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
strh r0, [r7]
adds r0, r4, 0
movs r1, 0x2E
bl GetMonData
cmp r0, 0
beq _08055C6C
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
add r0, r8
ldrb r0, [r0, 0x17]
b _08055C76
.pool
_08055C6C:
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
add r0, r8
ldrb r0, [r0, 0x16]
_08055C76:
cmp r0, 0x35
bne _08055CB6
cmp r5, 0
beq _08055CB6
movs r0, 0xCE
lsls r0, 1
cmp r5, r0
beq _08055CB6
ldrh r0, [r7]
cmp r0, 0
bne _08055CB6
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0xA
bl __umodsi3
lsls r0, 16
cmp r0, 0
bne _08055CB6
bl CalculateBattlePyramidPickupItemId
strh r0, [r7]
movs r0, 0x64
muls r0, r6
ldr r1, =gPlayerParty
adds r0, r1
movs r1, 0xC
mov r2, sp
bl SetMonData
_08055CB6:
adds r6, 0x1
cmp r6, 0x5
ble _08055C2A
b _08055DD8
.pool
_08055CC4:
movs r6, 0
movs r1, 0x64
mov r8, r1
ldr r7, =gPlayerParty
mov r10, sp
_08055CCE:
mov r4, r8
muls r4, r6
adds r4, r7
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
mov r1, r10
strh r0, [r1]
adds r0, r4, 0
movs r1, 0x2E
bl GetMonData
cmp r0, 0
beq _08055D30
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
ldr r1, =gBaseStats
adds r0, r1
ldrb r0, [r0, 0x17]
b _08055D3C
.pool
_08055D10:
mov r0, r8
muls r0, r6
adds r0, r7
adds r2, r1, 0
adds r2, 0x63
subs r2, r4
lsls r2, 1
ldr r1, =gRarePickupItems
adds r2, r1
movs r1, 0xC
bl SetMonData
b _08055DD0
.pool
_08055D30:
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
ldr r1, =gBaseStats
adds r0, r1
ldrb r0, [r0, 0x16]
_08055D3C:
adds r1, r6, 0x1
mov r9, r1
cmp r0, 0x35
bne _08055DD0
cmp r5, 0
beq _08055DD0
movs r0, 0xCE
lsls r0, 1
cmp r5, r0
beq _08055DD0
mov r1, r10
ldrh r0, [r1]
cmp r0, 0
bne _08055DD0
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0xA
bl __umodsi3
lsls r0, 16
cmp r0, 0
bne _08055DD0
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r4, r0, 16
mov r0, r8
muls r0, r6
adds r0, r7
movs r1, 0x38
bl GetMonData
subs r0, 0x1
movs r1, 0xA
bl __udivsi3
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x9
bls _08055D9C
movs r1, 0x9
_08055D9C:
movs r2, 0
b _08055DAE
.pool
_08055DA4:
adds r0, r4, 0
subs r0, 0x62
cmp r0, 0x1
bls _08055D10
adds r2, 0x1
_08055DAE:
cmp r2, 0x8
bgt _08055DD0
ldr r0, =gPickupProbabilities
adds r0, r2, r0
ldrb r0, [r0]
cmp r0, r4
ble _08055DA4
mov r0, r8
muls r0, r6
adds r0, r7
adds r2, r1, r2
lsls r2, 1
ldr r1, =gPickupItems
adds r2, r1
movs r1, 0xC
bl SetMonData
_08055DD0:
mov r6, r9
cmp r6, 0x5
bgt _08055DD8
b _08055CCE
_08055DD8:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkE5_pickup
thumb_func_start atkE6_castform_change_animation
atkE6_castform_change_animation: @ 8055DFC
push {r4,lr}
ldr r4, =gActiveBank
ldr r0, =gBattleScripting
ldrb r0, [r0, 0x17]
strb r0, [r4]
ldr r1, =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, =gBattleStruct
cmp r0, 0
beq _08055E2C
ldr r0, [r3]
adds r0, 0x7F
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
_08055E2C:
ldr r0, [r3]
adds r0, 0x7F
ldrb r2, [r0]
movs r0, 0
movs r1, 0
bl EmitBattleAnimation
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkE6_castform_change_animation
thumb_func_start atkE7_castform_data_change
atkE7_castform_data_change: @ 8055E64
push {r4,lr}
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r0, =gBattleScripting
ldrb r0, [r0, 0x17]
bl CastformDataTypeChange
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _08055E8E
ldr r0, =BattleScript_CastformChange
bl b_push_move_exec
ldr r0, =gBattleStruct
ldr r0, [r0]
adds r0, 0x7F
subs r1, r4, 0x1
strb r1, [r0]
_08055E8E:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkE7_castform_data_change
thumb_func_start atkE8_settypebasedhalvers
atkE8_settypebasedhalvers: @ 8055EA4
push {r4,lr}
movs r4, 0
ldr r2, =gBattleMoves
ldr r0, =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0xC9
bne _08055EF4
ldr r1, =gStatuses3
ldr r0, =gBankAttacker
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 _08055F18
orrs r1, r3
str r1, [r2]
ldr r0, =gBattleCommunication
strb r4, [r0, 0x5]
b _08055F1C
.pool
_08055EF4:
ldr r1, =gStatuses3
ldr r0, =gBankAttacker
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 _08055F18
orrs r1, r3
str r1, [r2]
ldr r1, =gBattleCommunication
movs r0, 0x1
strb r0, [r1, 0x5]
movs r4, 0x1
_08055F18:
cmp r4, 0
beq _08055F38
_08055F1C:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08055F52
.pool
_08055F38:
ldr r3, =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]
_08055F52:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkE8_settypebasedhalvers
thumb_func_start atkE9_setweatherballtype
atkE9_setweatherballtype: @ 8055F5C
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 _08055FFC
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _08055FFC
ldr r2, =gBattleWeather
ldrb r0, [r2]
cmp r0, 0
beq _08055F9A
ldr r1, =gBattleScripting
movs r0, 0x2
strb r0, [r1, 0xE]
_08055F9A:
ldrh r1, [r2]
movs r0, 0x7
ands r0, r1
cmp r0, 0
beq _08055FB8
ldr r0, =gBattleStruct
ldr r1, [r0]
movs r0, 0x8B
b _08055FFA
.pool
_08055FB8:
movs r0, 0x18
ands r0, r1
cmp r0, 0
beq _08055FCC
ldr r0, =gBattleStruct
ldr r1, [r0]
movs r0, 0x85
b _08055FFA
.pool
_08055FCC:
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _08055FE0
ldr r0, =gBattleStruct
ldr r1, [r0]
movs r0, 0x8A
b _08055FFA
.pool
_08055FE0:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08055FF4
ldr r0, =gBattleStruct
ldr r1, [r0]
movs r0, 0x8F
b _08055FFA
.pool
_08055FF4:
ldr r0, =gBattleStruct
ldr r1, [r0]
movs r0, 0x80
_08055FFA:
strb r0, [r1, 0x13]
_08055FFC:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x4
pop {r0}
bx r0
.pool
thumb_func_end atkE9_setweatherballtype
thumb_func_start atkEA_recycleitem
atkEA_recycleitem: @ 8056014
push {r4-r7,lr}
sub sp, 0x4
ldr r7, =gActiveBank
ldr r0, =gBankAttacker
ldrb r0, [r0]
strb r0, [r7]
ldr r1, =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 _08056094
ldr r4, =gBattleMons
movs r3, 0x58
adds r0, r2, 0
muls r0, r3
adds r0, r4
ldrh r0, [r0, 0x2E]
cmp r0, 0
bne _08056094
ldr r1, =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 EmitSetMonData
ldrb r0, [r7]
bl MarkBufferBankForExecution
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _080560AE
.pool
_08056094:
ldr r3, =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]
_080560AE:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkEA_recycleitem
thumb_func_start atkEB_settypetoterrain
atkEB_settypetoterrain: @ 80560BC
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, =gBattleMons
mov r8, r0
ldr r7, =gBankAttacker
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, =sTerrainToType
ldr r4, =gUnknown_02022FF0
ldrb r0, [r4]
adds r0, r5
ldrb r2, [r0]
mov r1, r12
ldrb r0, [r1]
adds r1, r2, 0
cmp r0, r1
beq _08056144
adds r0, r3, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, r1
beq _08056144
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, =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, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0805615E
.pool
_08056144:
ldr r3, =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]
_0805615E:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkEB_settypetoterrain
thumb_func_start atkEC_pursuit_sth
atkEC_pursuit_sth: @ 805616C
push {r4-r6,lr}
ldr r5, =gBankAttacker
ldrb r0, [r5]
bl GetBankIdentity
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBankByIdentity
ldr r4, =gActiveBank
strb r0, [r4]
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r6, 0x1
ands r0, r6
cmp r0, 0
beq _0805620C
ldr r0, =gAbsentBankFlags
ldrb r1, [r0]
ldr r2, =gBitTable
ldrb r3, [r4]
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0805620C
ldr r0, =gUnknown_0202421C
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
bne _0805620C
ldr r1, =gChosenMovesByBanks
lsls r0, r3, 1
adds r0, r1
ldrh r2, [r0]
cmp r2, 0xE4
bne _0805620C
ldr r0, =gUnknown_0202407A
adds r0, r3, r0
movs r1, 0xB
strb r1, [r0]
ldr r0, =gCurrentMove
strh r2, [r0]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r0, =gBattleScripting
strb r6, [r0, 0x18]
ldrb r1, [r5]
adds r0, 0x20
strb r1, [r0]
ldrb r0, [r4]
strb r0, [r5]
b _08056226
.pool
_0805620C:
ldr r3, =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]
_08056226:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end atkEC_pursuit_sth
thumb_func_start atkED_802B4B4
atkED_802B4B4: @ 8056230
push {r4,lr}
ldr r1, =gEffectBank
ldr r3, =gBankAttacker
ldrb r0, [r3]
strb r0, [r1]
ldr r2, =gBankTarget
lsls r0, 24
lsrs r0, 24
adds r4, r1, 0
ldrb r1, [r2]
cmp r0, r1
bne _08056264
ldr r1, =gBattleScripting
ldrb r0, [r1, 0x17]
strb r0, [r2]
strb r0, [r3]
b _0805626A
.pool
_08056264:
ldr r1, =gBattleScripting
ldrb r0, [r1, 0x17]
strb r0, [r2]
_0805626A:
ldrb r0, [r4]
strb r0, [r1, 0x17]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkED_802B4B4
thumb_func_start atkEE_removelightscreenreflect
atkEE_removelightscreenreflect: @ 8056284
push {r4,lr}
ldr r0, =gBankAttacker
ldrb r0, [r0]
bl GetBankSide
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r1, =gSideTimers
lsls r3, r0, 1
adds r0, r3, r0
lsls r0, 2
adds r4, r0, r1
ldrb r0, [r4]
cmp r0, 0
bne _080562AC
ldrb r1, [r4, 0x2]
cmp r1, 0
beq _080562E4
_080562AC:
ldr r2, =gSideAffecting
adds r2, r3, r2
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
movs r3, 0
ldr r1, =0x0000fffd
ands r0, r1
strh r0, [r2]
strb r3, [r4]
strb r3, [r4, 0x2]
ldr r1, =gBattleScripting
movs r0, 0x1
strb r0, [r1, 0x18]
strb r0, [r1, 0x19]
b _080562EA
.pool
_080562E4:
ldr r0, =gBattleScripting
strb r1, [r0, 0x18]
strb r1, [r0, 0x19]
_080562EA:
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkEE_removelightscreenreflect
thumb_func_start atkEF_pokeball_catch_calculation
atkEF_pokeball_catch_calculation: @ 8056300
push {r4-r6,lr}
movs r4, 0
ldr r0, =gBattleExecBuffer
ldr r0, [r0]
cmp r0, 0
beq _0805630E
b _08056696
_0805630E:
ldr r5, =gActiveBank
ldr r0, =gBankAttacker
ldrb r0, [r0]
strb r0, [r5]
ldr r6, =gBankTarget
movs r1, 0x1
eors r0, r1
strb r0, [r6]
ldr r0, =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0805635C
movs r0, 0
movs r1, 0x5
bl dp01_build_cmdbuf_x0D_a
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DBE02
b _08056694
.pool
_0805635C:
movs r0, 0x80
lsls r0, 2
ands r1, r0
cmp r1, 0
beq _08056384
movs r0, 0
movs r1, 0x4
bl dp01_build_cmdbuf_x0D_a
ldrb r0, [r5]
bl MarkBufferBankForExecution
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DBDCA
b _08056694
.pool
_08056384:
ldr r0, =gLastUsedItem
ldrh r0, [r0]
cmp r0, 0x5
bne _080563B0
ldr r0, =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 _080563C8
.pool
_080563B0:
ldr r3, =gBaseStats
ldr r2, =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]
_080563C8:
ldr r2, =gLastUsedItem
ldrh r0, [r2]
cmp r0, 0x5
bhi _080563D2
b _080564C8
_080563D2:
subs r0, 0x6
cmp r0, 0x6
bls _080563DA
b _080564D2
_080563DA:
lsls r0, 2
ldr r1, =_080563F4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080563F4:
.4byte _08056410
.4byte _08056440
.4byte _08056452
.4byte _08056480
.4byte _080564B0
.4byte _08056472
.4byte _08056472
_08056410:
ldr r2, =gBattleMons
ldr r0, =gBankTarget
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 _080564A4
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0xB
beq _080564A4
cmp r1, 0x6
beq _080564A4
cmp r0, 0x6
beq _080564A4
b _08056472
.pool
_08056440:
bl sav1_map_get_light_level
lsls r0, 24
lsrs r0, 24
movs r4, 0xA
cmp r0, 0x5
bne _080564D2
movs r4, 0x23
b _080564D2
_08056452:
ldr r2, =gBattleMons
ldr r0, =gBankTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2A
ldrb r1, [r0]
cmp r1, 0x27
bhi _08056472
movs r0, 0x28
subs r0, r1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x9
bhi _080564D2
_08056472:
movs r4, 0xA
b _080564D2
.pool
_08056480:
ldr r2, =gBattleMons
ldr r0, =gBankTarget
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 _080564D2
_080564A4:
movs r4, 0x1E
b _080564D2
.pool
_080564B0:
ldr r0, =gBattleResults
ldrb r0, [r0, 0x13]
adds r0, 0xA
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x28
bls _080564D2
movs r4, 0x28
b _080564D2
.pool
_080564C8:
ldr r1, =sBallCatchBonuses
ldrh r0, [r2]
subs r0, 0x2
adds r0, r1
ldrb r4, [r0]
_080564D2:
adds r0, r5, 0
muls r0, r4
movs r1, 0xA
bl __divsi3
ldr r5, =gBattleMons
ldr r1, =gBankTarget
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 _0805650E
lsls r6, 1
_0805650E:
movs r0, 0xD8
ands r4, r0
cmp r4, 0
beq _08056522
lsls r0, r6, 4
subs r0, r6
movs r1, 0xA
bl __udivsi3
adds r6, r0, 0
_08056522:
ldr r1, =gLastUsedItem
ldrh r0, [r1]
cmp r0, 0x5
beq _08056564
cmp r0, 0x1
bne _08056550
ldr r0, =gBattleResults
ldrb r1, [r0, 0x5]
movs r2, 0x2
orrs r1, r2
strb r1, [r0, 0x5]
b _08056564
.pool
_08056550:
ldr r0, =gBattleResults
ldrh r1, [r1]
adds r0, r1
adds r1, r0, 0
adds r1, 0x34
ldrb r0, [r1]
cmp r0, 0xFE
bhi _08056564
adds r0, 0x1
strb r0, [r1]
_08056564:
cmp r6, 0xFE
bls _080565C8
movs r0, 0
movs r1, 0x4
bl dp01_build_cmdbuf_x0D_a
ldr r0, =gActiveBank
ldrb r0, [r0]
bl MarkBufferBankForExecution
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DBD84
str r0, [r1]
ldr r1, =gBattlePartyID
ldr r0, =gBankTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gEnemyParty
adds r0, r1
ldr r2, =gLastUsedItem
movs r1, 0x26
bl SetMonData
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
beq _08056656
b _08056680
.pool
_080565C8:
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, =0x000ffff0
adds r1, r6, 0
bl __udivsi3
adds r6, r0, 0
movs r4, 0
b _080565FA
.pool
_080565F4:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
_080565FA:
cmp r4, 0x3
bhi _0805660A
bl Random
lsls r0, 16
lsrs r0, 16
cmp r0, r6
bcc _080565F4
_0805660A:
ldr r5, =gLastUsedItem
ldrh r0, [r5]
cmp r0, 0x1
bne _08056614
movs r4, 0x4
_08056614:
movs r0, 0
adds r1, r4, 0
bl dp01_build_cmdbuf_x0D_a
ldr r0, =gActiveBank
ldrb r0, [r0]
bl MarkBufferBankForExecution
cmp r4, 0x4
bne _0805668C
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DBD84
str r0, [r1]
ldr r1, =gBattlePartyID
ldr r0, =gBankTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =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 _08056680
_08056656:
ldr r1, =gBattleCommunication
movs r0, 0
strb r0, [r1, 0x5]
b _08056696
.pool
_08056680:
ldr r1, =gBattleCommunication
movs r0, 0x1
strb r0, [r1, 0x5]
b _08056696
.pool
_0805668C:
ldr r0, =gBattleCommunication
strb r4, [r0, 0x5]
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DBDD4
_08056694:
str r0, [r1]
_08056696:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end atkEF_pokeball_catch_calculation
thumb_func_start atkF0_copy_caught_poke
atkF0_copy_caught_poke: @ 80566A8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r0, =gBattlePartyID
mov r9, r0
ldr r5, =gBankAttacker
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, =gEnemyParty
mov r8, r1
add r0, r8
bl GiveMonToPlayer
lsls r0, 24
cmp r0, 0
beq _08056792
bl sub_813B21C
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _08056734
ldr r0, =gBattleCommunication
strb r1, [r0, 0x5]
ldr r4, =gStringVar1
ldr r0, =0x00004036
bl VarGet
lsls r0, 24
lsrs r0, 24
bl sav3_get_box_name
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, =gStringVar2
movs r1, 0x2
bl GetMonData
b _0805677E
.pool
_08056734:
ldr r4, =gStringVar1
ldr r0, =0x00004036
bl VarGet
lsls r0, 24
lsrs r0, 24
bl sav3_get_box_name
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, =gStringVar2
movs r1, 0x2
bl GetMonData
ldr r4, =gStringVar3
bl get_unknown_box_id
lsls r0, 24
lsrs r0, 24
bl sav3_get_box_name
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldr r1, =gBattleCommunication
movs r0, 0x2
strb r0, [r1, 0x5]
_0805677E:
ldr r0, =0x000008ab
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _08056792
ldr r1, =gBattleCommunication
ldrb r0, [r1, 0x5]
adds r0, 0x1
strb r0, [r1, 0x5]
_08056792:
ldr r0, =gBattlePartyID
mov r10, r0
ldr r1, =gBankAttacker
mov r9, r1
ldrb r0, [r1]
movs r4, 0x1
eors r0, r4
lsls r0, 1
add r0, r10
ldrh r0, [r0]
movs r1, 0x64
mov r8, r1
mov r1, r8
muls r1, r0
adds r0, r1, 0
ldr r6, =gEnemyParty
adds r0, r6
movs r1, 0xB
movs r2, 0
bl GetMonData
ldr r5, =gBattleResults
strh r0, [r5, 0x28]
mov r1, r9
ldrb r0, [r1]
eors r0, r4
lsls r0, 1
add r0, r10
ldrh r0, [r0]
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r0, r6
adds r2, r5, 0
adds r2, 0x2A
movs r1, 0x2
bl GetMonData
mov r1, r9
ldrb r0, [r1]
eors r4, r0
lsls r4, 1
add r4, r10
ldrh r0, [r4]
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r0, r6
movs r1, 0x26
movs r2, 0
bl GetMonData
movs r1, 0xF
ands r0, r1
lsls r0, 2
ldrb r2, [r5, 0x5]
movs r1, 0x3D
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r5, 0x5]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkF0_copy_caught_poke
thumb_func_start atkF1_setpoke_as_caught
atkF1_setpoke_as_caught: @ 8056850
push {r4,r5,lr}
ldr r4, =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 _080568A8
ldr r3, =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 _080568C2
.pool
_080568A8:
adds r0, r5, 0
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x3
adds r2, r4, 0
bl HandleSetPokedexFlag
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_080568C2:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end atkF1_setpoke_as_caught
thumb_func_start atkF2_display_dex_info
atkF2_display_dex_info: @ 80568CC
push {r4,lr}
sub sp, 0x4
ldr r0, =gEnemyParty
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r4, r0, 16
ldr r0, =gBattleCommunication
ldrb r0, [r0]
cmp r0, 0x5
bls _080568E8
b _08056A2C
_080568E8:
lsls r0, 2
ldr r1, =_08056900
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_08056900:
.4byte _08056918
.4byte _0805692A
.4byte _08056978
.4byte _080569C8
.4byte _080569E0
.4byte _08056A18
_08056918:
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
b _08056A06
_0805692A:
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08056938
b _08056A2C
_08056938:
bl FreeAllWindowBuffers
adds r0, r4, 0
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
ldr r3, =gBattleMons
ldr r1, =gBankTarget
ldrb r2, [r1]
movs r1, 0x58
muls r2, r1
adds r1, r3, 0
adds r1, 0x54
adds r1, r2, r1
ldr r1, [r1]
adds r3, 0x48
adds r2, r3
ldr r2, [r2]
bl sub_80BFDF4
ldr r1, =gBattleCommunication
strb r0, [r1, 0x1]
b _08056A08
.pool
_08056978:
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08056A2C
ldr r0, =gMain
ldr r1, [r0, 0x4]
ldr r0, =BattleMainCB2
cmp r1, r0
bne _08056A2C
ldr r2, =gTasks
ldr r4, =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 _08056A2C
ldr r0, =vblank_cb_08078BB4
bl SetVBlankCallback
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _08056A2C
.pool
_080569C8:
bl c2_berry_program_update_menu
bl sub_8035AA4
ldr r1, =gUnknown_02022E20
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
b _08056A06
.pool
_080569E0:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _08056A2C
ldr r0, =0x0000ffff
str r1, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
movs r0, 0
bl ShowBg
movs r0, 0x3
bl ShowBg
_08056A06:
ldr r1, =gBattleCommunication
_08056A08:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _08056A2C
.pool
_08056A18:
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08056A2C
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_08056A2C:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end atkF2_display_dex_info
thumb_func_start sub_8056A3C
sub_8056A3C: @ 8056A3C
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 _08056A76
b _08056B62
_08056A76:
mov r4, r8
adds r0, r6, 0x1
str r0, [sp, 0x18]
ldr r2, [sp, 0x1C]
cmp r4, r2
bgt _08056B58
add r5, sp, 0xC
lsls r7, r6, 24
mov r9, r7
_08056A88:
ldr r0, [sp, 0x10]
cmp r6, r0
bne _08056AB4
cmp r4, r8
bne _08056A9C
ldr r0, =0x00001022
b _08056AFE
.pool
_08056A9C:
ldr r2, [sp, 0x1C]
cmp r4, r2
bne _08056AAC
ldr r0, =0x00001024
b _08056AFE
.pool
_08056AAC:
ldr r0, =0x00001023
b _08056AFE
.pool
_08056AB4:
ldr r7, [sp, 0x14]
cmp r6, r7
bne _08056AE0
cmp r4, r8
bne _08056AC8
ldr r0, =0x00001028
b _08056AFE
.pool
_08056AC8:
ldr r0, [sp, 0x1C]
cmp r4, r0
bne _08056AD8
ldr r0, =0x0000102a
b _08056AFE
.pool
_08056AD8:
ldr r0, =0x00001029
b _08056AFE
.pool
_08056AE0:
cmp r4, r8
bne _08056AEC
ldr r0, =0x00001025
b _08056AFE
.pool
_08056AEC:
ldr r2, [sp, 0x1C]
cmp r4, r2
bne _08056AFC
ldr r0, =0x00001027
b _08056AFE
.pool
_08056AFC:
ldr r0, =0x00001026
_08056AFE:
strh r0, [r5]
movs r1, 0x1
mov r0, r10
ands r0, r1
cmp r0, 0
beq _08056B0E
movs r0, 0
strh r0, [r5]
_08056B0E:
movs r0, 0x80
mov r7, r10
ands r0, r7
cmp r0, 0
beq _08056B38
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 _08056B50
.pool
_08056B38:
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
_08056B50:
adds r4, 0x1
ldr r0, [sp, 0x1C]
cmp r4, r0
ble _08056A88
_08056B58:
ldr r6, [sp, 0x18]
ldr r2, [sp, 0x14]
cmp r6, r2
bgt _08056B62
b _08056A76
_08056B62:
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8056A3C
thumb_func_start BattleCreateCursorAt
BattleCreateCursorAt: @ 8056B74
push {lr}
sub sp, 0x10
adds r3, r0, 0
add r0, sp, 0xC
movs r2, 0x1
strh r2, [r0]
movs r1, 0x2
strh r1, [r0, 0x2]
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, 0x19
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0
bl CopyBgTilemapBufferToVram
add sp, 0x10
pop {r0}
bx r0
thumb_func_end BattleCreateCursorAt
thumb_func_start BattleDestroyCursorAt
BattleDestroyCursorAt: @ 8056BAC
push {lr}
sub sp, 0x10
adds r3, r0, 0
add r0, sp, 0xC
ldr r1, =0x00001016
strh r1, [r0]
strh r1, [r0, 0x2]
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, 0x19
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0
bl CopyBgTilemapBufferToVram
add sp, 0x10
pop {r0}
bx r0
.pool
thumb_func_end BattleDestroyCursorAt
thumb_func_start atkF3_nickname_caught_poke
atkF3_nickname_caught_poke: @ 8056BEC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r0, =gBattleCommunication
ldrb r1, [r0]
adds r4, r0, 0
cmp r1, 0x4
bls _08056C04
b _08056E62
_08056C04:
lsls r0, r1, 2
ldr r1, =_08056C18
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_08056C18:
.4byte _08056C2C
.4byte _08056C60
.4byte _08056CFC
.4byte _08056DD4
.4byte _08056E2C
_08056C2C:
movs r4, 0
str r4, [sp]
movs r0, 0x18
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl sub_8056A3C
ldr r0, =gText_BattleYesNoChoice
movs r1, 0xC
bl sub_814F9EC
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
strb r4, [r1, 0x1]
movs r0, 0
bl BattleCreateCursorAt
b _08056E62
.pool
_08056C60:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08056C86
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _08056C86
movs r0, 0x5
bl PlaySE
ldrb r0, [r4, 0x1]
bl BattleDestroyCursorAt
movs r0, 0
strb r0, [r4, 0x1]
bl BattleCreateCursorAt
_08056C86:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08056CAE
ldr r4, =gBattleCommunication
ldrb r0, [r4, 0x1]
cmp r0, 0
bne _08056CAE
movs r0, 0x5
bl PlaySE
ldrb r0, [r4, 0x1]
bl BattleDestroyCursorAt
movs r0, 0x1
strb r0, [r4, 0x1]
bl BattleCreateCursorAt
_08056CAE:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08056CE0
movs r0, 0x5
bl PlaySE
ldr r1, =gBattleCommunication
ldrb r0, [r1, 0x1]
cmp r0, 0
bne _08056CF2
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
movs r0, 0x3
bl BeginFastPaletteFade
b _08056E62
.pool
_08056CE0:
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _08056CEA
b _08056E62
_08056CEA:
movs r0, 0x5
bl PlaySE
ldr r1, =gBattleCommunication
_08056CF2:
movs r0, 0x4
strb r0, [r1]
b _08056E62
.pool
_08056CFC:
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08056D0A
b _08056E62
_08056D0A:
ldr r7, =gBattlePartyID
ldr r0, =gBankAttacker
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, =gEnemyParty
mov r8, r1
add r0, r8
ldr r1, =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, =gBattleStruct
ldr r1, [r2]
adds r1, 0x6D
str r0, [sp]
ldr r0, =BattleMainCB2
str r0, [sp, 0x4]
movs r0, 0x2
adds r2, r6, 0
adds r3, r5, 0
bl DoNamingScreen
ldr r1, =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _08056E62
.pool
_08056DD4:
ldr r0, =gMain
ldr r1, [r0, 0x4]
ldr r0, =BattleMainCB2
cmp r1, r0
bne _08056E62
ldr r0, =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08056E62
ldr r2, =gBattlePartyID
ldr r0, =gBankAttacker
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, =gEnemyParty
adds r0, r1
ldr r1, =gBattleStruct
ldr r2, [r1]
adds r2, 0x6D
movs r1, 0x2
bl SetMonData
b _08056E48
.pool
_08056E2C:
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
bne _08056E48
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _08056E62
.pool
_08056E48:
ldr r3, =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]
_08056E62:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end atkF3_nickname_caught_poke
thumb_func_start atkF4_802BEF0
atkF4_802BEF0: @ 8056E78
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
ldr r0, =gBattleMoveDamage
ldr r2, [r0]
ldrh r0, [r1, 0x28]
subs r0, r2
strh r0, [r1, 0x28]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.pool
thumb_func_end atkF4_802BEF0
thumb_func_start atkF5_removeattackerstatus1
atkF5_removeattackerstatus1: @ 8056EA8
ldr r1, =gBattleMons
ldr r0, =gBankAttacker
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x4C
adds r0, r1
movs r1, 0
str r1, [r0]
ldr r1, =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.pool
thumb_func_end atkF5_removeattackerstatus1
thumb_func_start atkF6_802BF48
atkF6_802BF48: @ 8056ED0
ldr r1, =gFightStateTracker
movs r0, 0xC
strb r0, [r1]
bx lr
.pool
thumb_func_end atkF6_802BF48
thumb_func_start atkF7_802BF54
atkF7_802BF54: @ 8056EDC
ldr r1, =gFightStateTracker
movs r0, 0xC
strb r0, [r1]
ldr r1, =gCurrentMoveTurn
ldr r0, =gNoOfAllBanks
ldrb r0, [r0]
strb r0, [r1]
bx lr
.pool
thumb_func_end atkF7_802BF54
thumb_func_start sub_8056EF8
sub_8056EF8: @ 8056EF8
push {r4,r5,lr}
ldr r5, =gBattlescriptCurrInstr
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl GetBankByIdentity
ldr r4, =gActiveBank
strb r0, [r4]
movs r0, 0
bl dp01_build_cmdbuf_x09_9_9_9
ldrb r0, [r4]
bl MarkBufferBankForExecution
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8056EF8
.align 2, 0 @ Don't pad with nop.